pax_global_header00006660000000000000000000000064152436550630014523gustar00rootroot0000000000000052 comment=407a9675e6d9af1200b5f57f9ca52ec6cdacce74 kubernetes-sigs-kind-49aeee6/000077500000000000000000000000001524365506300162645ustar00rootroot00000000000000kubernetes-sigs-kind-49aeee6/.github/000077500000000000000000000000001524365506300176245ustar00rootroot00000000000000kubernetes-sigs-kind-49aeee6/.github/ISSUE_TEMPLATE/000077500000000000000000000000001524365506300220075ustar00rootroot00000000000000kubernetes-sigs-kind-49aeee6/.github/ISSUE_TEMPLATE/bug-report.md000066400000000000000000000023601524365506300244200ustar00rootroot00000000000000--- name: Bug Report about: Report a bug encountered using kind labels: kind/bug --- **What happened**: **What you expected to happen**: **How to reproduce it (as _minimally_ and precisely as possible)**: **Anything else we need to know?**: **Environment:** - kind version: (use `kind version`): - Runtime info: (use `docker info`, `podman info` or `nerdctl info`): - OS (e.g. from `/etc/os-release`): - Kubernetes version: (use `kubectl version`): - Any proxies or other special environment settings?: kubernetes-sigs-kind-49aeee6/.github/ISSUE_TEMPLATE/cleanup.md000066400000000000000000000004501524365506300237570ustar00rootroot00000000000000--- name: Cleanup about: Pay down technical debt, reduce friction, etc. labels: kind/cleanup --- **What should be cleaned up or changed**: **Why is this needed**: kubernetes-sigs-kind-49aeee6/.github/ISSUE_TEMPLATE/documentation.md000066400000000000000000000004021524365506300251760ustar00rootroot00000000000000--- name: Documentation Request about: Suggest what should be documented in kind labels: kind/documentation --- **What would you like to be documented**: **Why is this needed**: kubernetes-sigs-kind-49aeee6/.github/ISSUE_TEMPLATE/enhancement.md000066400000000000000000000003501524365506300246140ustar00rootroot00000000000000--- name: Enhancement Request about: Suggest an enhancement to kind labels: kind/feature --- **What would you like to be added**: **Why is this needed**: kubernetes-sigs-kind-49aeee6/.github/ISSUE_TEMPLATE/question.md000066400000000000000000000003651524365506300242040ustar00rootroot00000000000000--- name: Question about: Ask a question about using kind labels: kind/support --- kubernetes-sigs-kind-49aeee6/.github/actions/000077500000000000000000000000001524365506300212645ustar00rootroot00000000000000kubernetes-sigs-kind-49aeee6/.github/actions/setup-env/000077500000000000000000000000001524365506300232125ustar00rootroot00000000000000kubernetes-sigs-kind-49aeee6/.github/actions/setup-env/action.yaml000066400000000000000000000017551524365506300253630ustar00rootroot00000000000000name: "Setup environment" description: "Performs common setup operations." runs: using: "composite" steps: - name: Get go version id: golangversion run: | echo "go_version=$(cat .go-version)" >> "$GITHUB_OUTPUT" shell: bash - name: Set up Go id: go uses: actions/setup-go@cdcb36043654635271a94b9a6d1392de5bb323a7 # v5.0.1 with: go-version: ${{ steps.golangversion.outputs.go_version }} check-latest: true - name: Install kind run: sudo make install INSTALL_DIR=/usr/local/bin shell: bash - name: Install kubectl run: | curl -LO https://dl.k8s.io/release/$(curl -sL https://dl.k8s.io/release/stable.txt)/bin/linux/amd64/kubectl chmod +x ./kubectl sudo mv ./kubectl /usr/local/bin/kubectl shell: bash - name: Enable ipv4 and ipv6 forwarding run: | sudo sysctl -w net.ipv6.conf.all.forwarding=1 sudo sysctl -w net.ipv4.ip_forward=1 shell: bash kubernetes-sigs-kind-49aeee6/.github/dependabot.yml000066400000000000000000000005131524365506300224530ustar00rootroot00000000000000--- version: 2 updates: - package-ecosystem: "github-actions" directory: "/" schedule: interval: "weekly" labels: - "area/dependency" - "release-note-none" - "ok-to-test" open-pull-requests-limit: 10 groups: actions: update-types: - "minor" - "patch" kubernetes-sigs-kind-49aeee6/.github/workflows/000077500000000000000000000000001524365506300216615ustar00rootroot00000000000000kubernetes-sigs-kind-49aeee6/.github/workflows/docker.yaml000066400000000000000000000054071524365506300240220ustar00rootroot00000000000000name: Docker on: workflow_dispatch: pull_request: branches: - main paths-ignore: - 'site/**' permissions: contents: read jobs: docker: name: Docker runs-on: ubuntu-24.04 timeout-minutes: 30 strategy: fail-fast: false matrix: ipFamily: [ipv4, ipv6] deployment: [singleNode, multiNode, multiMaster] env: JOB_NAME: "docker-${{ matrix.deployment }}-${{ matrix.ipFamily }}" IP_FAMILY: ${{ matrix.ipFamily }} steps: - name: Check out code into the Go module directory uses: actions/checkout@3d3c42e5aac5ba805825da76410c181273ba90b1 # v7.0.1 - uses: ./.github/actions/setup-env - name: Create single node cluster if: ${{ matrix.deployment == 'singleNode' }} run: | cat <= 1.9.1 is required on Ubuntu 20.04.6 # https://github.com/kubernetes-sigs/kind/issues/3526 curl -Lo ./crun https://github.com/containers/crun/releases/download/1.14.3/crun-1.14.3-linux-amd64 chmod +x ./crun sudo mv ./crun /usr/bin/crun - name: Create single node cluster if: ${{ matrix.deployment == 'singleNode' }} run: | cat <> "$GITHUB_OUTPUT" - name: Set up Go id: go uses: actions/setup-go@b7ad1dad31e06c5925ef5d2fc7ad053ef454303e # v7.0.0 with: go-version: ${{ steps.golangversion.outputs.go_version }} check-latest: true - name: "Install Lima" uses: lima-vm/lima-actions/setup@55627e31b78637bf254a8b2a14da8ea7d12564e5 # v1 id: lima-actions-setup - name: "Cache ~/.cache/lima" uses: actions/cache@55cc8345863c7cc4c66a329aec7e433d2d1c52a9 # v6.1.0 with: path: ~/.cache/lima key: lima-${{ steps.lima-actions-setup.outputs.version }}-${{ matrix.template }} - name: "Start VM" # --plain is set to disable file sharing, port forwarding, built-in containerd, etc. run: limactl start --name=default --plain template://${{ matrix.template }} - name: "Initialize VM" run: | set -eux -o pipefail # Sync the current directory to /tmp/kind in the guest limactl cp -r . default:/tmp/kind # Install packages lima sudo /tmp/kind/hack/ci/init-vm.sh # Enable systemd lingering for rootless. $USER on the host may differ # from the Lima guest user (e.g. runner vs runner.guest), so derive # the username inside the VM. lima bash -c 'sudo loginctl enable-linger "$(id -un)"' # Install kind lima sudo git config --global --add safe.directory /tmp/kind lima sudo make -C /tmp/kind install INSTALL_DIR=/usr/bin - name: Set up Rootless Docker if: ${{ matrix.provider == 'docker' && matrix.rootless == 'rootless' }} run: | # Disable the rootful daemon "$HELPER" sudo systemctl disable --now docker # Install the systemd unit "$HELPER" dockerd-rootless-setuptool.sh install # Modify the client config to use the rootless daemon by default "$HELPER" docker context use rootless - name: Show provider info run: | "$HELPER" "$KIND_EXPERIMENTAL_PROVIDER" info "$HELPER" "$KIND_EXPERIMENTAL_PROVIDER" version - name: Create a cluster run: | "$HELPER" kind create cluster -v7 --wait 10m --retain - name: Get Cluster status run: | "$HELPER" kubectl wait --for=condition=ready pods --namespace=kube-system -l k8s-app=kube-dns "$HELPER" kubectl get nodes -o wide "$HELPER" kubectl get pods -A - name: Export logs if: always() run: | "$HELPER" mkdir -p /tmp/kind/logs "$HELPER" kind export logs /tmp/kind/logs || true "$HELPER" sh -c 'journalctl --no-pager --user --unit docker.service -n 50 > /tmp/kind/logs/docker-user-service.log 2>&1 || true' mkdir -p /tmp/kind/logs/lima cp -a ~/.lima/default/*.log /tmp/kind/logs/lima || true "$HELPER" tar cC /tmp/kind/logs . | tar xC /tmp/kind/logs - name: Upload logs if: always() uses: actions/upload-artifact@043fb46d1a93c77aae656e7c1c64a875d1fc6a0a # v7.0.1 with: name: kind-logs-${{ env.JOB_NAME }}-${{ github.run_id }} path: /tmp/kind/logs kubernetes-sigs-kind-49aeee6/.gitignore000066400000000000000000000003321524365506300202520ustar00rootroot00000000000000# build and test outputs /bin/ /_output/ /_artifacts/ # used for the code generators only /vendor/ # macOS .DS_Store # files generated by editors .idea/ *.iml .vscode/ *.swp *.sublime-project *.sublime-workspace *~ kubernetes-sigs-kind-49aeee6/.go-version000066400000000000000000000000071524365506300203520ustar00rootroot000000000000001.26.7 kubernetes-sigs-kind-49aeee6/CONTRIBUTING.md000066400000000000000000000024441524365506300205210ustar00rootroot00000000000000# Contributing Guidelines Welcome to Kubernetes. We are excited about the prospect of you joining our [community](https://github.com/kubernetes/community)! The Kubernetes community abides by the CNCF [code of conduct](code-of-conduct.md). Here is an excerpt: _As contributors and maintainers of this project, and in the interest of fostering an open and welcoming community, we pledge to respect all people who contribute through reporting issues, posting feature requests, updating documentation, submitting pull requests or patches, and other activities._ ## Getting Started We have full documentation on how to get started contributing here: https://kind.sigs.k8s.io/docs/contributing/getting-started/, _please_ read this! A lot of work went into this guide 🙃 ## Mentorship - [Mentoring Initiatives](https://git.k8s.io/community/mentoring) - Kubernetes has a diverse set of mentorship programs available that are always looking for volunteers! kubernetes-sigs-kind-49aeee6/LICENSE000066400000000000000000000261351524365506300173000ustar00rootroot00000000000000 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. kubernetes-sigs-kind-49aeee6/Makefile000066400000000000000000000113671524365506300177340ustar00rootroot00000000000000# Copyright 2019 The Kubernetes Authors. # # 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. # Old-skool build tools. # Simple makefile to build kind quickly and reproducibly # # Common uses: # - installing kind: `make install INSTALL_DIR=$HOME/go/bin` # - building: `make build` # - cleaning up and starting over: `make clean` # ################################################################################ # ========================== Capture Environment =============================== # get the repo root and output path REPO_ROOT:=${CURDIR} OUT_DIR=$(REPO_ROOT)/bin # record the source commit in the binary, overridable COMMIT?=$(shell git rev-parse HEAD 2>/dev/null) # count the commits since the last release COMMIT_COUNT?=$(shell git describe --tags | rev | cut -d- -f2 | rev) ################################################################################ # ========================= Setup Go With Gimme ================================ # go version to use for build etc. # setup correct go version with gimme GOTOOLCHAIN:=$(shell . hack/build/gotoolchain.sh && echo "$${GOTOOLCHAIN}") PATH:=$(shell . hack/build/setup-go.sh && echo "$${PATH}") # go1.9+ can autodetect GOROOT, but if some other tool sets it ... GOROOT:= # enable modules GO111MODULE=on # disable CGO by default for static binaries CGO_ENABLED=0 export PATH GOROOT GO111MODULE CGO_ENABLED GOTOOLCHAIN # work around broken PATH export SPACE:=$(subst ,, ) SHELL:=env PATH=$(subst $(SPACE),\$(SPACE),$(PATH)) $(SHELL) ################################################################################ # ============================== OPTIONS ======================================= # install tool INSTALL?=install # install will place binaries here, by default attempts to mimic go install INSTALL_DIR?=$(shell hack/build/goinstalldir.sh) # the output binary name, overridden when cross compiling KIND_BINARY_NAME?=kind # build flags for the kind binary # - reproducible builds: -trimpath and -ldflags=-buildid= # - smaller binaries: -s -w (strip binary and trim debugger data, but not panics) # - metadata: -X=... to bake in git commit KIND_VERSION_PKG:=sigs.k8s.io/kind/pkg/cmd/kind/version KIND_BUILD_LD_FLAGS:=-X=$(KIND_VERSION_PKG).gitCommit=$(COMMIT) -X=$(KIND_VERSION_PKG).gitCommitCount=$(COMMIT_COUNT) KIND_BUILD_FLAGS?=-trimpath -ldflags="-buildid= -s -w $(KIND_BUILD_LD_FLAGS)" ################################################################################ # ================================= Building =================================== # standard "make" target -> builds all: build # builds kind in a container, outputs to $(OUT_DIR) kind: go build -v -o "$(OUT_DIR)/$(KIND_BINARY_NAME)" $(KIND_BUILD_FLAGS) # alias for building kind build: kind # use: make install INSTALL_DIR=/usr/local/bin install: build $(INSTALL) -d $(INSTALL_DIR) $(INSTALL) "$(OUT_DIR)/$(KIND_BINARY_NAME)" "$(INSTALL_DIR)/$(KIND_BINARY_NAME)" ################################################################################ # ================================= Testing ==================================== # unit tests (hermetic) unit: MODE=unit hack/make-rules/test.sh # integration tests integration: MODE=integration hack/make-rules/test.sh # all tests test: hack/make-rules/test.sh ################################################################################ # ================================= Cleanup ==================================== # standard cleanup target clean: rm -rf "$(OUT_DIR)/" ################################################################################ # ============================== Auto-Update =================================== # update generated code, gofmt, etc. update: hack/make-rules/update/all.sh # update generated code generate: hack/make-rules/update/generated.sh # gofmt gofmt: hack/make-rules/update/gofmt.sh ################################################################################ # ================================== Linting =================================== # run linters, ensure generated code, etc. verify: hack/make-rules/verify/all.sh # code linters lint: hack/make-rules/verify/lint.sh # shell linter shellcheck: hack/make-rules/verify/shellcheck.sh ################################################################################# .PHONY: all kind build install unit clean update generate gofmt verify lint shellcheck kubernetes-sigs-kind-49aeee6/OWNERS000066400000000000000000000003051524365506300172220ustar00rootroot00000000000000# See the OWNERS docs at https://go.k8s.io/owners reviewers: - aojea - BenTheElder - stmcginnis approvers: - aojea - BenTheElder - stmcginnis emeritus_approvers: - amwat - munnerz kubernetes-sigs-kind-49aeee6/README.md000066400000000000000000000153151524365506300175500ustar00rootroot00000000000000

kind

# Please see [Our Documentation](https://kind.sigs.k8s.io/docs/user/quick-start/) for more in-depth installation etc. kind is a tool for running local Kubernetes clusters using Docker container "nodes". kind was primarily designed for testing Kubernetes itself, but may be used for local development or CI. If you have [go] and [docker], [podman] or [nerdctl] installed `go install sigs.k8s.io/kind@v0.32.0 && kind create cluster` is all you need! ![](site/static/images/kind-create-cluster.png) kind consists of: - Go [packages][packages] implementing [cluster creation][cluster package], [image build][build package], etc. - A command line interface ([`kind`][kind cli]) built on these packages. - Docker [image(s)][images] written to run systemd, Kubernetes, etc. - [`kubetest`][kubetest] integration also built on these packages (WIP) kind bootstraps each "node" with [kubeadm][kubeadm]. For more details see [the design documentation][design doc]. **NOTE**: kind is still a work in progress, see the [1.0 roadmap]. ## Installation and usage For a complete [install guide] see [the documentation here][install guide]. You can install kind with `go install sigs.k8s.io/kind@v0.32.0`. **NOTE**: please use the latest go to do this. KIND is developed with the latest stable go, see [`.go-version`](./.go-version) for the exact version we're using. This will put `kind` in `$(go env GOPATH)/bin`. If you encounter the error `kind: command not found` after installation then you may need to either add that directory to your `$PATH` as shown [here](https://golang.org/doc/code.html#GOPATH) or do a manual installation by cloning the repo and run `make build` from the repository. Without installing go, kind can be built reproducibly with docker using `make build`. Stable binaries are also available on the [releases] page. Stable releases are generally recommended for CI usage in particular. To install, download the binary for your platform from "Assets" and place this into your `$PATH`: On Linux: ```console # For AMD64 / x86_64 [ $(uname -m) = x86_64 ] && curl -Lo ./kind https://kind.sigs.k8s.io/dl/v0.32.0/kind-$(uname)-amd64 # For ARM64 [ $(uname -m) = aarch64 ] && curl -Lo ./kind https://kind.sigs.k8s.io/dl/v0.32.0/kind-$(uname)-arm64 chmod +x ./kind sudo mv ./kind /usr/local/bin/kind ``` On macOS via Homebrew: ```console brew install kind ``` On macOS via MacPorts: ```console sudo port selfupdate && sudo port install kind ``` On macOS via Bash: ```console # For Intel Macs [ $(uname -m) = x86_64 ] && curl -Lo ./kind https://kind.sigs.k8s.io/dl/v0.32.0/kind-darwin-amd64 # For M1 / ARM Macs [ $(uname -m) = arm64 ] && curl -Lo ./kind https://kind.sigs.k8s.io/dl/v0.32.0/kind-darwin-arm64 chmod +x ./kind mv ./kind /some-dir-in-your-PATH/kind ``` On Windows: ```powershell curl.exe -Lo kind-windows-amd64.exe https://kind.sigs.k8s.io/dl/v0.32.0/kind-windows-amd64 Move-Item .\kind-windows-amd64.exe c:\some-dir-in-your-PATH\kind.exe # OR via Chocolatey (https://chocolatey.org/packages/kind) choco install kind ``` To use kind, you will need to [install docker]. Once you have docker running you can create a cluster with: ```console kind create cluster ``` To delete your cluster use: ```console kind delete cluster ``` To create a cluster from Kubernetes source: - ensure that Kubernetes is cloned in `$(go env GOPATH)/src/k8s.io/kubernetes` - build a node image and create a cluster with: ```console kind build node-image kind create cluster --image kindest/node:latest ``` Multi-node clusters and other advanced features may be configured with a config file, for more usage see [the docs][user guide] or run `kind [command] --help` ## Community Please reach out for bugs, feature requests, and other issues! The maintainers of this project are reachable via: - [Kubernetes Slack] in the [#kind] channel - [filing an issue] against this repo - The Kubernetes [SIG-Testing Mailing List] Current maintainers are [@aojea], [@BenTheElder], and [@stmcginnis] - feel free to reach out if you have any questions! Pull Requests are very welcome! If you're planning a new feature, please file an issue to discuss first. Check the [issue tracker] for `help wanted` issues if you're unsure where to start, or feel free to reach out to discuss. 🙂 See also: our own [contributor guide] and the Kubernetes [community page]. ## Why kind? - kind supports multi-node (including HA) clusters - kind supports building Kubernetes release builds from source - support for make / bash or docker, in addition to pre-published builds - kind supports Linux, macOS and Windows - kind is a [CNCF certified conformant Kubernetes installer](https://landscape.cncf.io/?selected=kind) ### Code of conduct Participation in the Kubernetes community is governed by the [Kubernetes Code of Conduct]. [go]: https://golang.org/ [go-supported]: https://golang.org/doc/devel/release.html#policy [docker]: https://www.docker.com/ [podman]: https://podman.io/ [nerdctl]: https://github.com/containerd/nerdctl [community page]: https://kubernetes.io/community/ [Kubernetes Code of Conduct]: code-of-conduct.md [Go Report Card Badge]: https://goreportcard.com/badge/sigs.k8s.io/kind [Go Report Card]: https://goreportcard.com/report/sigs.k8s.io/kind [conformance tests]: https://github.com/kubernetes/community/blob/master/contributors/devel/sig-architecture/conformance-tests.md [packages]: ./pkg [cluster package]: ./pkg/cluster [build package]: ./pkg/build [kind cli]: ./main.go [images]: ./images [kubetest]: https://github.com/kubernetes/test-infra/tree/master/kubetest [kubeadm]: https://kubernetes.io/docs/reference/setup-tools/kubeadm/kubeadm/ [design doc]: https://kind.sigs.k8s.io/docs/design/initial [user guide]: https://kind.sigs.k8s.io/docs/user/quick-start [SIG-Testing Mailing List]: https://groups.google.com/forum/#!forum/kubernetes-sig-testing [issue tracker]: https://github.com/kubernetes-sigs/kind/issues [filing an issue]: https://github.com/kubernetes-sigs/kind/issues/new [Kubernetes Slack]: http://slack.k8s.io/ [#kind]: https://kubernetes.slack.com/messages/CEKK1KTN2/ [1.0 roadmap]: https://kind.sigs.k8s.io/docs/contributing/1.0-roadmap [install docker]: https://docs.docker.com/install/ [@BenTheElder]: https://github.com/BenTheElder [@munnerz]: https://github.com/munnerz [@aojea]: https://github.com/aojea [@amwat]: https://github.com/amwat [@stmcginnis]: https://github.com/stmcginnis [contributor guide]: https://kind.sigs.k8s.io/docs/contributing/getting-started [releases]: https://github.com/kubernetes-sigs/kind/releases [install guide]: https://kind.sigs.k8s.io/docs/user/quick-start/#installation [modules]: https://github.com/golang/go/wiki/Modules kubernetes-sigs-kind-49aeee6/RELEASE.md000066400000000000000000000153211524365506300176700ustar00rootroot00000000000000# kind Release Process This document describes the steps to cut a new kind release. It is intended for maintainers who have push access to the upstream repository and the staging image registry. ## Prerequisites - GNU sed (macOS: `brew install gnu-sed`) - Docker with buildx support - [`crane`](https://github.com/google/go-containerregistry/blob/main/cmd/crane/README.md) installed (for image promotion to Docker Hub) - Push access to `github.com/kubernetes-sigs/kind` - Push access to `gcr.io/k8s-staging-kind` - Push access to `kindest` on Docker Hub --- ## Phase 1 - Publish Node Images Node images must be built, tested, and promoted to Docker Hub **before** the kind release so their digest hashes are known and can be embedded in the release binary. ### 1.1 Build and push to staging Use `hack/release/push-node.sh` for Kubernetes v1.31 and later: ```bash ./hack/release/push-node.sh v1.35.0 ``` This builds `amd64` and `arm64` node images and pushes them to `gcr.io/k8s-staging-kind/node:v1.35.0`, then creates a multi-arch manifest list. You can override the registry or add architectures: ```bash REGISTRY=gcr.io/k8s-staging-kind ARCHES="amd64 arm64" ./hack/release/push-node.sh v1.35.0 ``` ### 1.2 Test with the staging image Update the default image in `pkg/apis/config/defaults/image.go` to point to the staging image with its digest, then run CI to validate: ```go const Image = "gcr.io/k8s-staging-kind/node:v1.35.0@sha256:" ``` Get the digest from the push output, or by inspecting the manifest: ```bash crane digest gcr.io/k8s-staging-kind/node:v1.35.0 ``` ### 1.3 Promote the image to Docker Hub Once testing passes, copy the image from staging to `kindest/node` on Docker Hub: ```bash crane cp \ gcr.io/k8s-staging-kind/node:v1.35.0@sha256: \ kindest/node:v1.35.0 ``` After promotion, retrieve the Docker Hub digest (it may differ from the staging digest): ```bash crane digest kindest/node:v1.35.0 ``` ### 1.4 Update the default image to the promoted version Update `pkg/apis/config/defaults/image.go` with the promoted `kindest/node` reference and its digest, then open a PR: ```go const Image = "kindest/node:v1.35.0@sha256:" ``` --- ## Phase 2 - Cut the kind Release ### 2.1 Ensure the tree is ready - The default node image (`pkg/apis/config/defaults/image.go`) should reference a promoted `kindest/node` image, not a staging image. - All CI is green on `main`. - The current alpha version in `pkg/cmd/kind/version/version.go` matches the version you are about to release (e.g., `versionCore = "0.31.0"` with `versionPreRelease = "alpha"`). ### 2.2 Run the release script ```bash ./hack/release/create.sh 0.31.0 0.32.0 ``` The two arguments are: - `0.31.0` - the version being released - `0.32.0` - the next version (the script will create a `0.32.0-alpha` pre-release) The script will: 1. Set `versionCore = "0.31.0"` and `versionPreRelease = ""` in `pkg/cmd/kind/version/version.go` 2. Commit with message `version v0.31.0` and tag `v0.31.0` 3. Build cross-platform release binaries into `bin/`: - `kind-linux-amd64`, `kind-linux-arm64` - `kind-darwin-amd64`, `kind-darwin-arm64` - `kind-windows-amd64` - `.sha256sum` file for each binary 4. Set `versionCore = "0.32.0"` and `versionPreRelease = "alpha"` 5. Commit with message `version v0.32.0-alpha` and tag `v0.32.0-alpha` At the end the script prints follow-up instructions. Continue with the steps below. ### 2.3 Push the commits as a PR ```bash git push origin HEAD ``` Open a PR with the two version commits against `main` and wait for it to merge. ### 2.4 Push the tags to upstream After the PR is merged, push both tags to the upstream repository: ```bash git push https://github.com/kubernetes-sigs/kind.git v0.31.0 git push https://github.com/kubernetes-sigs/kind.git v0.32.0-alpha ``` ### 2.5 Generate the contributor list While the PR is merging or shortly after, generate the list of contributors since the previous release to include in the GitHub release notes: ```bash LAST_VERSION_TAG=v0.30.0 GITHUB_OAUTH_TOKEN= ./hack/release/get-contributors.sh ``` The token is optional but avoids GitHub API rate limits. The output is a markdown-formatted bulleted list of GitHub usernames. ### 2.6 Create the GitHub release Go to https://github.com/kubernetes-sigs/kind/releases/new and: 1. Select the tag `v0.31.0`. 2. Set the title to `v0.31.0`. 3. Write release notes summarizing changes since the previous release. Include the contributor list generated above. 4. Upload the binaries from `bin/` as release assets: - `kind-linux-amd64` + `kind-linux-amd64.sha256sum` - `kind-linux-arm64` + `kind-linux-arm64.sha256sum` - `kind-darwin-amd64` + `kind-darwin-amd64.sha256sum` - `kind-darwin-arm64` + `kind-darwin-arm64.sha256sum` - `kind-windows-amd64` + `kind-windows-amd64.sha256sum` 5. Publish the release. --- ## Phase 3 - Update Documentation After the GitHub release is published, update the documentation to reference the new stable version. This is typically done as a separate PR immediately after the release. ### 3.1 Update README.md Replace all occurrences of the old version string (e.g., `v0.30.0`) with the new one (`v0.31.0`). The README contains several hardcoded download URLs and `go install` commands that need updating. ### 3.2 Update site/config.toml Update the `stable` parameter: ```toml [params] stable = "v0.31.0" ``` This value is used by the `{{< stableVersion >}}` shortcode throughout the website documentation, so this single change updates all version references on the site. ### 3.3 Open a PR Commit both files and open a PR. The commit message convention is: ``` bump docs to 0.31.0 ``` --- ## Summary Checklist ### Node images (before kind release) - [ ] Build and push node image(s) to staging: `./hack/release/push-node.sh vX.Y.Z` - [ ] Test with staging image in `pkg/apis/config/defaults/image.go` - [ ] Promote to Docker Hub: `crane cp gcr.io/k8s-staging-kind/node:vX.Y.Z@sha256:... kindest/node:vX.Y.Z` - [ ] Update `pkg/apis/config/defaults/image.go` to promoted `kindest/node` reference + merge PR ### kind release - [ ] Confirm `main` is green and default image is the promoted `kindest/node` image - [ ] Run `./hack/release/create.sh ` - [ ] Open PR with the two version commits, wait for merge - [ ] Push tags: `git push upstream v` and `git push upstream v-alpha` - [ ] Generate contributor list: `LAST_VERSION_TAG=v ./hack/release/get-contributors.sh` - [ ] Create GitHub release from `v` tag, upload binaries from `bin/` ### Documentation - [ ] Update `README.md` - replace all old version references - [ ] Update `site/config.toml` - set `stable = "v"` - [ ] Open docs PR and merge kubernetes-sigs-kind-49aeee6/SECURITY_CONTACTS000066400000000000000000000011251524365506300207530ustar00rootroot00000000000000# Defined below are the security contacts for this repo. # # They are the contact point for the Product Security Team to reach out # to for triaging and handling of incoming issues. # # The below names agree to abide by the # [Embargo Policy](https://github.com/kubernetes/sig-release/blob/master/security-release-process-documentation/security-release-process.md#embargo-policy) # and will be removed and replaced if they violate that agreement. # # DO NOT REPORT SECURITY VULNERABILITIES DIRECTLY TO THESE NAMES, FOLLOW THE # INSTRUCTIONS AT https://kubernetes.io/security/ BenTheElder munnerz kubernetes-sigs-kind-49aeee6/cmd/000077500000000000000000000000001524365506300170275ustar00rootroot00000000000000kubernetes-sigs-kind-49aeee6/cmd/kind/000077500000000000000000000000001524365506300177545ustar00rootroot00000000000000kubernetes-sigs-kind-49aeee6/cmd/kind/app/000077500000000000000000000000001524365506300205345ustar00rootroot00000000000000kubernetes-sigs-kind-49aeee6/cmd/kind/app/main.go000066400000000000000000000061331524365506300220120ustar00rootroot00000000000000/* Copyright 2019 The Kubernetes Authors. 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 app is the implementation of the kind application. package app import ( "io" "os" "github.com/spf13/pflag" "sigs.k8s.io/kind/pkg/cmd" "sigs.k8s.io/kind/pkg/cmd/kind" "sigs.k8s.io/kind/pkg/errors" "sigs.k8s.io/kind/pkg/exec" "sigs.k8s.io/kind/pkg/log" ) // Main is the kind main(), it will invoke Run(), if an error is returned // it will then call os.Exit func Main() { if err := Run(cmd.NewLogger(), cmd.StandardIOStreams(), os.Args[1:]); err != nil { os.Exit(1) } } // Run invokes the kind root command, returning the error. // See: sigs.k8s.io/kind/pkg/cmd/kind func Run(logger log.Logger, streams cmd.IOStreams, args []string) error { // NOTE: we handle the quiet flag here so we can fully silence cobra if checkQuiet(args) { // if we are in quiet mode, we want to suppress all status output // only streams.Out should be written to (program output) logger = log.NoopLogger{} streams.ErrOut = io.Discard } // actually run the command c := kind.NewCommand(logger, streams) c.SetArgs(args) if err := c.Execute(); err != nil { logError(logger, err) return err } return nil } // checkQuiet returns true if -q / --quiet was set in args func checkQuiet(args []string) bool { flags := pflag.NewFlagSet("persistent-quiet", pflag.ContinueOnError) flags.ParseErrorsWhitelist.UnknownFlags = true quiet := false flags.BoolVarP( &quiet, "quiet", "q", false, "silence all stderr output", ) // NOTE: pflag will error if -h / --help is specified // We don't care here. That will be handled downstream // It will also call flags.Usage so we're making that no-op flags.Usage = func() {} _ = flags.Parse(args) return quiet } // logError logs the error and the root stacktrace if there is one func logError(logger log.Logger, err error) { colorEnabled := cmd.ColorEnabled(logger) if colorEnabled { logger.Errorf("\x1b[31mERROR\x1b[0m: %v", err) } else { logger.Errorf("ERROR: %v", err) } // Display Output if the error was from running a command ... if err := exec.RunErrorForError(err); err != nil { if colorEnabled { logger.Errorf("\x1b[31mCommand Output\x1b[0m: %s", err.Output) } else { logger.Errorf("\nCommand Output: %s", err.Output) } } // TODO: stacktrace should probably be guarded by a higher level ...? if logger.V(1).Enabled() { // Then display stack trace if any (there should be one...) if trace := errors.StackTrace(err); trace != nil { if colorEnabled { logger.Errorf("\x1b[31mStack Trace\x1b[0m: %+v", trace) } else { logger.Errorf("\nStack Trace: %+v", trace) } } } } kubernetes-sigs-kind-49aeee6/cmd/kind/app/main_test.go000066400000000000000000000061201524365506300230450ustar00rootroot00000000000000/* Copyright 2019 The Kubernetes Authors. 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 app import ( "testing" "sigs.k8s.io/kind/pkg/cmd" ) func TestCheckQuiet(t *testing.T) { t.Parallel() cases := []struct { Name string Args []string ExpectQuiet bool }{ // normal cases, we expect it to be set { Name: "simply q", Args: []string{"-q"}, ExpectQuiet: true, }, { Name: "simply quiet", Args: []string{"--quiet"}, ExpectQuiet: true, }, { Name: "all quiet on the cli", Args: []string{"all", "quiet", "on", "the", "cli", "--quiet"}, ExpectQuiet: true, }, // pflag will throw an ErrHelp when -h / --help are in args even though // we don't register these as flags, checkQuiet should ignore them { Name: "with ignored help", Args: []string{"--quiet", "--help"}, ExpectQuiet: true, }, { Name: "with ignored h", Args: []string{"--quiet", "-h"}, ExpectQuiet: true, }, // not quiet for these cases ... { Name: "no args", Args: []string{}, ExpectQuiet: false, }, { Name: "loud", Args: []string{"--loud"}, ExpectQuiet: false, }, } for _, tc := range cases { tc := tc t.Run(tc.Name, func(t *testing.T) { t.Parallel() result := checkQuiet(tc.Args) if result != tc.ExpectQuiet { t.Fatalf("fooo") } }) } } func Test_CommandErrReturn(t *testing.T) { t.Parallel() cases := []struct { Name string Command string Subcommand string }{ { Name: "misspelled subcommand for build", Command: "build", Subcommand: "nod-image", }, { Name: "misspelled subcommand for completion", Command: "completion", Subcommand: "zzsh", }, { Name: "misspelled subcommand for create", Command: "create", Subcommand: "clunster", }, { Name: "misspelled subcommand for delete", Command: "delete", Subcommand: "clust", }, { Name: "misspelled subcommand for export", Command: "export", Subcommand: "kubecfg", }, { Name: "misspelled subcommand for get", Command: "get", Subcommand: "nods", }, { Name: "misspelled subcommand for load", Command: "load", Subcommand: "dokker-image", }, } for _, tc := range cases { tc := tc t.Run(tc.Name, func(t *testing.T) { t.Parallel() err := Run(cmd.NewLogger(), cmd.StandardIOStreams(), []string{tc.Command, tc.Subcommand}) if err == nil { t.Errorf("Subcommand should raise an error if not called with correct params") } }) } } kubernetes-sigs-kind-49aeee6/cmd/kind/main.go000066400000000000000000000013131524365506300212250ustar00rootroot00000000000000/* Copyright 2019 The Kubernetes Authors. 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 main is the main entrypoint for the kind cli. package main import ( "sigs.k8s.io/kind/cmd/kind/app" ) func main() { app.Main() } kubernetes-sigs-kind-49aeee6/code-of-conduct.md000066400000000000000000000002241524365506300215550ustar00rootroot00000000000000# Kubernetes Community Code of Conduct Please refer to our [Kubernetes Community Code of Conduct](https://git.k8s.io/community/code-of-conduct.md) kubernetes-sigs-kind-49aeee6/go.mod000066400000000000000000000020261524365506300173720ustar00rootroot00000000000000module sigs.k8s.io/kind // NOTE: This is the go language version, NOT the compiler version. // // This controls the *minimum* required go version and therefore available Go // language features. // // See ./.go-version for the go compiler version used when building binaries // // https://go.dev/doc/modules/gomod-ref#go go 1.17 require ( al.essio.dev/pkg/shellescape v1.5.1 github.com/BurntSushi/toml v1.4.0 github.com/evanphx/json-patch/v5 v5.6.0 github.com/mattn/go-isatty v0.0.20 github.com/pelletier/go-toml v1.9.5 github.com/pkg/errors v0.9.1 github.com/spf13/cobra v1.8.0 github.com/spf13/pflag v1.0.5 go.yaml.in/yaml/v3 v3.0.4 sigs.k8s.io/yaml v1.4.0 ) // test-only transitive deps, these are used by sigs.k8s.io/yaml's tests require ( github.com/niemeyer/pretty v0.0.0-20200227124842-a10e7caefd8e // indirect gopkg.in/check.v1 v1.0.0-20200902074654-038fdea0a05b // indirect ) require ( github.com/inconshreveable/mousetrap v1.1.0 // indirect github.com/kr/text v0.2.0 // indirect golang.org/x/sys v0.6.0 // indirect ) kubernetes-sigs-kind-49aeee6/go.sum000066400000000000000000000073161524365506300174260ustar00rootroot00000000000000al.essio.dev/pkg/shellescape v1.5.1 h1:86HrALUujYS/h+GtqoB26SBEdkWfmMI6FubjXlsXyho= al.essio.dev/pkg/shellescape v1.5.1/go.mod h1:6sIqp7X2P6mThCQ7twERpZTuigpr6KbZWtls1U8I890= github.com/BurntSushi/toml v1.4.0 h1:kuoIxZQy2WRRk1pttg9asf+WVv6tWQuBNVmK8+nqPr0= github.com/BurntSushi/toml v1.4.0/go.mod h1:ukJfTF/6rtPPRCnwkur4qwRxa8vTRFBF0uk2lLoLwho= github.com/cpuguy83/go-md2man/v2 v2.0.3/go.mod h1:tgQtvFlXSQOSOSIRvRPT7W67SCa46tRHOmNcaadrF8o= github.com/creack/pty v1.1.9/go.mod h1:oKZEueFk5CKHvIhNR5MUki03XCEU+Q6VDXinZuGJ33E= github.com/evanphx/json-patch/v5 v5.6.0 h1:b91NhWfaz02IuVxO9faSllyAtNXHMPkC5J8sJCLunww= github.com/evanphx/json-patch/v5 v5.6.0/go.mod h1:G79N1coSVB93tBe7j6PhzjmR3/2VvlbKOFpnXhI9Bw4= github.com/google/go-cmp v0.5.9 h1:O2Tfq5qg4qc4AmwVlvv0oLiVAGB7enBSJ2x2DqQFi38= github.com/google/go-cmp v0.5.9/go.mod h1:17dUlkBOakJ0+DkrSSNjCkIjxS6bF9zb3elmeNGIjoY= github.com/google/shlex v0.0.0-20191202100458-e7afc7fbc510 h1:El6M4kTTCOh6aBiKaUGG7oYTSPP8MxqL4YI3kZKwcP4= github.com/google/shlex v0.0.0-20191202100458-e7afc7fbc510/go.mod h1:pupxD2MaaD3pAXIBCelhxNneeOaAeabZDe5s4K6zSpQ= github.com/inconshreveable/mousetrap v1.1.0 h1:wN+x4NVGpMsO7ErUn/mUI3vEoE6Jt13X2s0bqwp9tc8= github.com/inconshreveable/mousetrap v1.1.0/go.mod h1:vpF70FUmC8bwa3OWnCshd2FqLfsEA9PFc4w1p2J65bw= github.com/jessevdk/go-flags v1.4.0/go.mod h1:4FA24M0QyGHXBuZZK/XkWh8h0e1EYbRYJSGM75WSRxI= 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/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/niemeyer/pretty v0.0.0-20200227124842-a10e7caefd8e h1:fD57ERR4JtEqsWbfPhv4DMiApHyliiK5xCTNVSPiaAs= github.com/niemeyer/pretty v0.0.0-20200227124842-a10e7caefd8e/go.mod h1:zD1mROLANZcx1PVRCS0qkT7pwLkGfwJo4zjcN/Tysno= github.com/pelletier/go-toml v1.9.5 h1:4yBQzkHv+7BHq2PQUZF3Mx0IYxG7LsP222s7Agd3ve8= github.com/pelletier/go-toml v1.9.5/go.mod h1:u1nR/EPcESfeI/szUZKdtJ0xRNbUoANCkoOuaOx1Y+c= github.com/pkg/errors v0.8.1/go.mod h1:bwawxfHBFNV+L2hUp1rHADufV3IMtnDRdf1r5NINEl0= github.com/pkg/errors v0.9.1 h1:FEBLx1zS214owpjy7qsBeixbURkuhQAwrK5UwLGTwt4= github.com/pkg/errors v0.9.1/go.mod h1:bwawxfHBFNV+L2hUp1rHADufV3IMtnDRdf1r5NINEl0= github.com/russross/blackfriday/v2 v2.1.0/go.mod h1:+Rmxgy9KzJVeS9/2gXHxylqXiyQDYRxCVz55jmeOWTM= github.com/spf13/cobra v1.8.0 h1:7aJaZx1B85qltLMc546zn58BxxfZdR/W22ej9CFoEf0= github.com/spf13/cobra v1.8.0/go.mod h1:WXLWApfZ71AjXPya3WOlMsY9yMs7YeiHhFVlvLyhcho= github.com/spf13/pflag v1.0.5 h1:iy+VFUOCP1a+8yFto/drg2CJ5u0yRoB7fZw3DKv/JXA= github.com/spf13/pflag v1.0.5/go.mod h1:McXfInJRrz4CZXVZOBLb0bTZqETkiAhM9Iw0y3An2Bg= go.yaml.in/yaml/v3 v3.0.4 h1:tfq32ie2Jv2UxXFdLJdh3jXuOzWiL1fo0bu/FbuKpbc= go.yaml.in/yaml/v3 v3.0.4/go.mod h1:DhzuOOF2ATzADvBadXxruRBLzYTpT36CKvDb3+aBEFg= golang.org/x/sys v0.6.0 h1:MVltZSvRTcU2ljQOhs94SXPftV6DCNnZViHeQps87pQ= golang.org/x/sys v0.6.0/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg= gopkg.in/check.v1 v0.0.0-20161208181325-20d25e280405/go.mod h1:Co6ibVJAznAaIkqp8huTwlJQCZ016jof/cbN4VW5Yz0= gopkg.in/check.v1 v1.0.0-20200902074654-038fdea0a05b h1:QRR6H1YWRnHb4Y/HeNFCTJLFVxaq6wH4YuVdsUOr75U= gopkg.in/check.v1 v1.0.0-20200902074654-038fdea0a05b/go.mod h1:Co6ibVJAznAaIkqp8huTwlJQCZ016jof/cbN4VW5Yz0= gopkg.in/yaml.v3 v3.0.1/go.mod h1:K4uyk7z7BCEPqu6E+C64Yfv1cQ7kz7rIZviUmN+EgEM= sigs.k8s.io/yaml v1.4.0 h1:Mk1wCc2gy/F0THH0TAp1QYyJNzRm2KCLy3o5ASXVI5E= sigs.k8s.io/yaml v1.4.0/go.mod h1:Ejl7/uTz7PSA4eKMyQCUTnhZYNmLIl+5c2lQPGR2BPY= kubernetes-sigs-kind-49aeee6/hack/000077500000000000000000000000001524365506300171725ustar00rootroot00000000000000kubernetes-sigs-kind-49aeee6/hack/boilerplate/000077500000000000000000000000001524365506300214745ustar00rootroot00000000000000kubernetes-sigs-kind-49aeee6/hack/boilerplate/boilerplate.Dockerfile.txt000066400000000000000000000011061524365506300266030ustar00rootroot00000000000000# Copyright The Kubernetes Authors. # # 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. kubernetes-sigs-kind-49aeee6/hack/boilerplate/boilerplate.go.txt000066400000000000000000000010651524365506300251450ustar00rootroot00000000000000/* Copyright The Kubernetes Authors. 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. */ kubernetes-sigs-kind-49aeee6/hack/boilerplate/boilerplate.sh.txt000066400000000000000000000011061524365506300251460ustar00rootroot00000000000000# Copyright The Kubernetes Authors. # # 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. kubernetes-sigs-kind-49aeee6/hack/boilerplate/verify_boilerplate.py000077500000000000000000000176231524365506300257500ustar00rootroot00000000000000#!/usr/bin/env python3 # Copyright 2015 The Kubernetes Authors. # # 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. # Verifies that all source files contain the necessary copyright boilerplate # snippet. import argparse import datetime import glob import os import re import sys def get_args(): parser = argparse.ArgumentParser() parser.add_argument( "filenames", help="list of files to check, all files if unspecified", nargs='*') rootdir = os.path.abspath('.') parser.add_argument("--rootdir", default=rootdir, help="root directory to examine") default_boilerplate_dir = os.path.join(rootdir, "hack/boilerplate") parser.add_argument("--boilerplate-dir", default=default_boilerplate_dir) parser.add_argument( '--skip', default=[ '_bin', 'external/bazel_tools', '.git', 'node_modules', '_output', 'third_party', 'vendor', 'hack/boilerplate/test', 'verify_boilerplate.py', '.python_virtual_env', ], action='append', help='Customize paths to avoid', ) return parser.parse_args() def get_refs(): refs = {} template_dir = ARGS.boilerplate_dir if not os.path.isdir(template_dir): template_dir = os.path.dirname(template_dir) for path in glob.glob(os.path.join(template_dir, "boilerplate.*.txt")): extension = os.path.basename(path).split(".")[1] # Pass the encoding parameter to avoid ascii decode error for some # platform. ref_file = open(path, 'r', encoding='utf-8') ref = ref_file.read().splitlines() ref_file.close() refs[extension] = ref return refs # given the file contents, return true if the file appears to be generated def is_generated(data): if re.search(r"^// Code generated by .*\. DO NOT EDIT\.$", data, re.MULTILINE): return True return False def file_passes(filename, refs, regexs): # pylint: disable=too-many-locals,too-many-return-statements,too-many-branches try: # Pass the encoding parameter to avoid ascii decode error for some # platform. with open(filename, 'r', encoding='utf-8') as fp: file_data = fp.read() except IOError: return False if not file_data: return True # Nothing to copyright in this empty file. basename = os.path.basename(filename) extension = file_extension(filename) if extension != "": ref = refs[extension] else: ref = refs[basename] ref = ref.copy() # remove build tags from the top of Go files if extension == "go": con = regexs["go_build_constraints"] (file_data, found) = con.subn("", file_data, 1) # remove shebang from the top of shell files if extension in ("sh", "py"): she = regexs["shebang"] (file_data, found) = she.subn("", file_data, 1) data = file_data.splitlines() # if our test file is smaller than the reference it surely fails! if len(ref) > len(data): return False # trim our file to the same number of lines as the reference file data = data[:len(ref)] # check if we encounter a 'YEAR' placeholder if the file is generated if is_generated(file_data): # pylint: disable=unused-variable for i, line in enumerate(data): if "Copyright YEAR" in line: return False return True year = regexs["year"] for datum in data: if year.search(datum): return False # Normalize "Copyright [YEAR ]" to "Copyright " to match the template. # Handles both files with a year and files with no year in the copyright line. when = regexs["date"] for idx, datum in enumerate(data): (data[idx], found) = when.subn('Copyright ', datum) if found != 0: break # if we don't match the reference at this point, fail if ref != data: return False return True def file_extension(filename): return os.path.splitext(filename)[1].split(".")[-1].lower() # even when generated by bazel we will complain about some generated files # not having the headers. since they're just generated, ignore them IGNORE_HEADERS = ['// Code generated by go-bindata.'] def has_ignored_header(pathname): # Pass the encoding parameter to avoid ascii decode error for some # platform. with open(pathname, 'r', encoding='utf-8') as myfile: data = myfile.read() for header in IGNORE_HEADERS: if data.startswith(header): return True return False def normalize_files(files): newfiles = [] for pathname in files: if any(x in pathname for x in ARGS.skip): continue newfiles.append(pathname) for idx, pathname in enumerate(newfiles): if not os.path.isabs(pathname): newfiles[idx] = os.path.join(ARGS.rootdir, pathname) return newfiles def get_files(extensions): files = [] if ARGS.filenames: files = ARGS.filenames else: for root, dirs, walkfiles in os.walk(ARGS.rootdir): # don't visit certain dirs. This is just a performance improvement # as we would prune these later in normalize_files(). But doing it # cuts down the amount of filesystem walking we do and cuts down # the size of the file list for dpath in ARGS.skip: if dpath in dirs: dirs.remove(dpath) for name in walkfiles: pathname = os.path.join(root, name) files.append(pathname) files = normalize_files(files) outfiles = [] for pathname in files: basename = os.path.basename(pathname) extension = file_extension(pathname) if extension in extensions or basename in extensions: if not has_ignored_header(pathname): outfiles.append(pathname) return outfiles def get_dates(): year_alternatives = '|'.join((str(year) for year in range(2014, 2026))) return r'Copyright (?:(?:%s) )?' % year_alternatives def get_regexs(): regexs = {} # Search for "YEAR" which exists in the boilerplate, but shouldn't in the real thing regexs["year"] = re.compile('YEAR') # dates can be any year between 2014 and the current year, company holder names can be anything regexs["date"] = re.compile(get_dates()) # strip // +build \n\n build constraints regexs["go_build_constraints"] = re.compile(r"^(//( \+build|go:build).*\n)+\n", re.MULTILINE) # strip #!.* from shell/python scripts regexs["shebang"] = re.compile(r"^(#!.*\n)\n*", re.MULTILINE) return regexs def nonconforming_lines(files): yield '%d files have incorrect boilerplate headers:' % len(files) for fp in files: yield os.path.relpath(fp, ARGS.rootdir) def main(): regexs = get_regexs() refs = get_refs() filenames = get_files(refs.keys()) nonconforming_files = [] for filename in sorted(filenames): if not file_passes(filename, refs, regexs): nonconforming_files.append(filename) if nonconforming_files: for line in nonconforming_lines(nonconforming_files): print(line) sys.exit(1) print("Verified %d files" % (len(filenames), )) if __name__ == "__main__": ARGS = get_args() main() kubernetes-sigs-kind-49aeee6/hack/build/000077500000000000000000000000001524365506300202715ustar00rootroot00000000000000kubernetes-sigs-kind-49aeee6/hack/build/README.md000066400000000000000000000000611524365506300215450ustar00rootroot00000000000000This directory contains tooling used for buildingkubernetes-sigs-kind-49aeee6/hack/build/goinstalldir.sh000077500000000000000000000024001524365506300233170ustar00rootroot00000000000000#!/bin/sh # Copyright 2019 The Kubernetes Authors. # # 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 utility prints out the golang install dir, even if go is not installed # IE it prints the directory where `go install ...` would theoretically place # binaries # if we have go, just ask go! if which go >/dev/null 2>&1; then DIR=$(go env GOBIN) if [ -n "${DIR}" ]; then echo "${DIR}" exit 0 fi DIR=$(go env GOPATH) if [ -n "${DIR}" ]; then echo "${DIR}/bin" exit 0 fi fi # mimic go behavior # check if GOBIN is set anyhow if [ -n "${GOBIN}" ]; then echo "${GOBIN}" exit 0 fi # check if GOPATH is set anyhow if [ -n "${GOPATH}" ]; then echo "${GOPATH}/bin" exit 0 fi # finally use default for no $GOPATH or $GOBIN echo "${HOME}/go/bin" kubernetes-sigs-kind-49aeee6/hack/build/gotoolchain.sh000077500000000000000000000015101524365506300231330ustar00rootroot00000000000000#!/bin/bash # Copyright 2020 The Kubernetes Authors. # # 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. # script to set GOTOOLCHAIN as needed # MUST BE RUN FROM THE REPO ROOT DIRECTORY # read go-version file unless GO_VERSION is set GO_VERSION="${GO_VERSION:-"$(cat .go-version)"}" GOTOOLCHAIN="go${GO_VERSION}" export GOTOOLCHAIN GO_VERSION kubernetes-sigs-kind-49aeee6/hack/build/init-buildx.sh000077500000000000000000000033251524365506300230630ustar00rootroot00000000000000#!/usr/bin/env bash # Copyright 2020 The Kubernetes Authors. # # 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. set -o errexit -o nounset -o pipefail # TODO: newer buildx releases ship their own qemu copies and don't need any of this # We can skip setup if the current builder already has multi-arch # AND if it isn't the docker driver, which doesn't work current_builder="$(docker buildx inspect)" # linux/amd64, linux/arm64, linux/riscv64, linux/ppc64le, linux/s390x, linux/386, linux/arm/v7, linux/arm/v6 if ! grep -q "^Driver: docker$" <<<"${current_builder}" && \ grep -q "linux/amd64" <<<"${current_builder}" && \ grep -q "linux/arm64" <<<"${current_builder}"; then exit 0 fi # Ensure qemu is in binfmt_misc # Docker desktop already has these in versions recent enough to have buildx # We only need to do this setup on linux hosts if [ "$(uname)" == 'Linux' ]; then # NOTE: this is pinned to a digest for a reason! docker run --rm --privileged tonistiigi/binfmt:qemu-v10.0.4@sha256:8f58e6214f4cc9dc83ce8f5acad1ece508eb6b20e696a8c1e9f274481982c541 --install all fi # Ensure we use a builder that can leverage it (the default on linux will not) docker buildx rm kind-builder || true docker buildx create --use --name=kind-builder kubernetes-sigs-kind-49aeee6/hack/build/setup-go.sh000077500000000000000000000033351524365506300223770ustar00rootroot00000000000000#!/bin/bash # Copyright 2020 The Kubernetes Authors. # # 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. # script to setup go version with gimme as needed # MUST BE RUN FROM THE REPO ROOT DIRECTORY # read go-version file unless GO_VERSION is set # override GOTOOLCHAIN unless set as well . ./hack/build/gotoolchain.sh # we don't actually care where the .env files are # however, GIMME_SILENT_ENV doesn't trigger re-generating a .env if it # already exists and isn't "silent" (no `go version` command in it) # so we fix that by changing where the .env is written, ensuring ours # is generated from this repo and silent. export GIMME_ENV_PREFIX=./bin/.gimme/ export GIMME_SILENT_ENV=y # only setup go if we haven't set FORCE_HOST_GO, or `go version` doesn't match if [ -n "${FORCE_HOST_GO:-}" ]; then GOTOOLCHAIN="${GOTOOLCHAIN:-local}" export GOTOOLCHAIN else GOTOOLCHAIN="go${GO_VERSION}" export GOTOOLCHAIN # go version output looks like: # go version go1.14.5 darwin/amd64 if ! (command -v go >/dev/null && [ "$(go version | cut -d' ' -f3)" = "go${GO_VERSION}" ]); then # eval because the output of this is shell to set PATH etc. eval "$(hack/third_party/gimme/gimme "${GO_VERSION}")" fi fi # force go modules export GO111MODULE=on kubernetes-sigs-kind-49aeee6/hack/ci/000077500000000000000000000000001524365506300175655ustar00rootroot00000000000000kubernetes-sigs-kind-49aeee6/hack/ci/README.md000066400000000000000000000002411524365506300210410ustar00rootroot00000000000000This directory contains glue used to test the kind repo in CI. We don't recommend reusing anything from these scripts, and intend to replace them at some point.kubernetes-sigs-kind-49aeee6/hack/ci/build-all.sh000077500000000000000000000015701524365506300217740ustar00rootroot00000000000000#!/usr/bin/env bash # Copyright 2018 The Kubernetes Authors. # # 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. # simple CI script to verify kind's own sources # TODO(bentheelder): rename / refactor. consider building kindnetd set -o errexit -o nounset -o pipefail # cd to the repo root REPO_ROOT=$(git rev-parse --show-toplevel) cd "${REPO_ROOT}" # build kind hack/release/build/cross.sh kubernetes-sigs-kind-49aeee6/hack/ci/cache-wrapper.sh000077500000000000000000000041401524365506300226440ustar00rootroot00000000000000#!/bin/bash # Copyright 2020 The Kubernetes Authors. # # 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. # USAGE: cache-wrapper.sh hack/go_container.sh some-go-command # $@ will be executed with this script wrapping cache upload / download set -o errexit -o nounset -o pipefail # options for where the cache is stored BUCKET="${BUCKET:-bentheelder-kind-ci-builds}" BRANCH="${BRANCH:-main}" CACHE_SUFFIX="${CACHE_SUFFIX:-"ci-cache/${BRANCH}/gocache.tar"}" CACHE_URL="https://storage.googleapis.com/${BUCKET}/${CACHE_SUFFIX}" CACHE_GS="gs://${BUCKET}/${CACHE_SUFFIX}" # cd to the repo root REPO_ROOT="$(cd "$(dirname "${BASH_SOURCE[0]}")/../.." && pwd -P)" cd "${REPO_ROOT}" # default to downloading cache if [ "${DOWNLOAD_CACHE:-true}" = "true" ]; then # NOTE: # - We clean the modcache because we won't be able to write to it if it exists # https://github.com/golang/go/issues/31481 # - All of the relevant go system directories are under /go in KIND's build # - See below for how the cache tarball is created hack/go_container.sh sh -c "go clean -modcache && curl -sSL ${CACHE_URL} | tar -C /go -zxf - --overwrite" fi # run the supplied command and store the exit code for later set +o errexit "$@" res=$? set -o errexit # default to not uploading cache if [ "${UPLOAD_CACHE:-false}" = "true" ]; then # We want to cache: # - XDG_CACHE_HOME / the go build cache, this is /go/cache in KIND's build # - The module cache, ~= $GOPATH/pkg/mod. this /go/pkg/mod in KIND's build hack/go_container.sh sh -c 'tar -C /go -czf - ./cache ./pkg/mod' | gsutil cp - "${CACHE_GS}" fi # preserve the exit code from our real task exit $res kubernetes-sigs-kind-49aeee6/hack/ci/e2e-k8s.sh000077500000000000000000000244531524365506300213120ustar00rootroot00000000000000#!/bin/sh # Copyright 2018 The Kubernetes Authors. # # 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. # hack script for running a kind e2e # must be run with a kubernetes checkout in $PWD (IE from the checkout) # Usage: SKIP="ginkgo skip regex" FOCUS="ginkgo focus regex" kind-e2e.sh set -o errexit -o nounset -o xtrace # Settings: # SKIP: ginkgo skip regex # FOCUS: ginkgo focus regex (defaults to [Conformance] if unset; set to "" to run all tests) # LABEL_FILTER: ginkgo label query for selecting tests (see "Spec Labels" in https://onsi.github.io/ginkgo/#filtering-specs) # # The default is to focus on conformance tests when FOCUS is unset. To run all # tests (no focus filter), explicitly set FOCUS="". Serial tests get skipped when # parallel testing is enabled. Using LABEL_FILTER instead of combining SKIP and # FOCUS is recommended (more expressive, easier to read than regexp). # # FEATURE_GATES: # JSON or YAML encoding of a string/bool map: {"FeatureGateA": true, "FeatureGateB": false} # Enables or disables feature gates in the entire cluster. # Cannot be used when GA_ONLY=true. # RUNTIME_CONFIG: # JSON or YAML encoding of a string/string (!) map: {"apia.example.com/v1alpha1": "true", "apib.example.com/v1beta1": "false"} # Enables API groups in the apiserver via --runtime-config. # Cannot be used when GA_ONLY=true. # cleanup logic for cleanup on exit CLEANED_UP=false cleanup() { if [ "$CLEANED_UP" = "true" ]; then return fi # KIND_CREATE_ATTEMPTED is true once we: kind create if [ "${KIND_CREATE_ATTEMPTED:-}" = true ]; then kind "export" logs "${ARTIFACTS}" || true kind delete cluster || true fi rm -f _output/bin/e2e.test || true # remove our tempdir, this needs to be last, or it will prevent kind delete if [ -n "${TMP_DIR:-}" ]; then rm -rf "${TMP_DIR:?}" fi CLEANED_UP=true } # setup signal handlers # shellcheck disable=SC2317 # this is not unreachable code signal_handler() { if [ -n "${GINKGO_PID:-}" ]; then kill -TERM "$GINKGO_PID" || true fi cleanup } trap signal_handler INT TERM # build kubernetes / node image, e2e binaries build() { # build the node image w/ kubernetes kind build node-image -v 1 # Ginkgo v1 is used by Kubernetes 1.24 and earlier, fallback if v2 is not available. GINKGO_SRC_DIR="vendor/github.com/onsi/ginkgo/v2/ginkgo" if [ ! -d "$GINKGO_SRC_DIR" ]; then GINKGO_SRC_DIR="vendor/github.com/onsi/ginkgo/ginkgo" fi # make sure we have e2e requirements make all WHAT="cmd/kubectl test/e2e/e2e.test ${GINKGO_SRC_DIR}" # Ensure the built kubectl is used instead of system export PATH="${PWD}/_output/bin:$PATH" } # up a cluster with kind create_cluster() { # Default Log level for all components in test clusters KIND_CLUSTER_LOG_LEVEL=${KIND_CLUSTER_LOG_LEVEL:-4} # JSON or YAML map injected into featureGates config feature_gates="${FEATURE_GATES:-{\}}" # --runtime-config argument value passed to the API server, again as a map runtime_config="${RUNTIME_CONFIG:-{\}}" # create the config file cat < "${ARTIFACTS}/kind-config.yaml" # config for 1 control plane node and 2 workers (necessary for conformance) kind: Cluster apiVersion: kind.x-k8s.io/v1alpha4 networking: ipFamily: ${IP_FAMILY:-ipv4} kubeProxyMode: ${KUBE_PROXY_MODE:-iptables} # don't pass through host search paths # TODO: possibly a reasonable default in the future for kind ... dnsSearch: [] nodes: - role: control-plane - role: worker - role: worker featureGates: ${feature_gates} runtimeConfig: ${runtime_config} kubeadmConfigPatches: # v1beta4 for the future (v1.35.0+ ?) # https://github.com/kubernetes-sigs/kind/issues/3847 # TODO: drop v1beta3 when we no longer need versions that use it - | kind: ClusterConfiguration apiVersion: kubeadm.k8s.io/v1beta4 apiServer: extraArgs: - name: "v" value: "${KIND_CLUSTER_LOG_LEVEL}" controllerManager: extraArgs: - name: "v" value: "${KIND_CLUSTER_LOG_LEVEL}" scheduler: extraArgs: - name: "v" value: "${KIND_CLUSTER_LOG_LEVEL}" --- kind: InitConfiguration apiVersion: kubeadm.k8s.io/v1beta4 nodeRegistration: kubeletExtraArgs: - name: "v" value: "${KIND_CLUSTER_LOG_LEVEL}" - name: "container-log-max-files" value: "10" - name: "container-log-max-size" value: "100Mi" --- kind: JoinConfiguration apiVersion: kubeadm.k8s.io/v1beta4 nodeRegistration: kubeletExtraArgs: - name: "v" value: "${KIND_CLUSTER_LOG_LEVEL}" # Warning: these flags appear to be load bearing / impact performance # See: https://github.com/kubernetes-sigs/kind/pull/4046 # Be careful when updating these. # Most CI jobs should not need them, but some CI jobs might. - name: "container-log-max-files" value: "10" - name: "container-log-max-size" value: "100Mi" # v1beta3 for v1.23.0 ... ? - | kind: ClusterConfiguration apiVersion: kubeadm.k8s.io/v1beta3 apiServer: extraArgs: "v": "${KIND_CLUSTER_LOG_LEVEL}" controllerManager: extraArgs: "v": "${KIND_CLUSTER_LOG_LEVEL}" scheduler: extraArgs: "v": "${KIND_CLUSTER_LOG_LEVEL}" --- kind: InitConfiguration apiVersion: kubeadm.k8s.io/v1beta3 nodeRegistration: kubeletExtraArgs: "v": "${KIND_CLUSTER_LOG_LEVEL}" "container-log-max-files": "10" "container-log-max-size": "100Mi" --- kind: JoinConfiguration apiVersion: kubeadm.k8s.io/v1beta3 nodeRegistration: kubeletExtraArgs: "v": "${KIND_CLUSTER_LOG_LEVEL}" # Warning: these flags appear to be load bearing / impact performance # See: https://github.com/kubernetes-sigs/kind/pull/4046 # Be careful when updating these. # Most CI jobs should not need them, but some CI jobs might. "container-log-max-files": "10" "container-log-max-size": "100Mi" EOF # NOTE: must match the number of workers above NUM_NODES=2 # actually create the cluster # TODO(BenTheElder): settle on verbosity for this script KIND_CREATE_ATTEMPTED=true kind create cluster \ --image=kindest/node:latest \ --retain \ --wait=1m \ -v=3 \ "--config=${ARTIFACTS}/kind-config.yaml" # debug cluster version kubectl version # Patch kube-proxy to set the verbosity level kubectl patch -n kube-system daemonset/kube-proxy \ --type='json' -p='[{"op": "add", "path": "/spec/template/spec/containers/0/command/-", "value": "--v='"${KIND_CLUSTER_LOG_LEVEL}"'" }]' } # run e2es with ginkgo-e2e.sh run_tests() { # IPv6 clusters need some CoreDNS changes in order to work in k8s CI: # 1. k8s CI doesn´t offer IPv6 connectivity, so CoreDNS should be configured # to work in an offline environment: # https://github.com/coredns/coredns/issues/2494#issuecomment-457215452 # 2. k8s CI adds following domains to resolv.conf search field: # c.k8s-prow-builds.internal google.internal. # CoreDNS should handle those domains and answer with NXDOMAIN instead of SERVFAIL # otherwise pods stops trying to resolve the domain. if [ "${IP_FAMILY:-ipv4}" = "ipv6" ]; then # Get the current config original_coredns=$(kubectl get -oyaml -n=kube-system configmap/coredns) echo "Original CoreDNS config:" echo "${original_coredns}" # Patch it fixed_coredns=$( printf '%s' "${original_coredns}" | sed \ -e 's/^.*kubernetes cluster\.local/& internal/' \ -e '/^.*upstream$/d' \ -e '/^.*fallthrough.*$/d' \ -e '/^.*forward . \/etc\/resolv.conf$/d' \ -e '/^.*loop$/d' \ ) echo "Patched CoreDNS config:" echo "${fixed_coredns}" printf '%s' "${fixed_coredns}" | kubectl apply -f - fi # ginkgo regexes and label filter SKIP="${SKIP:-}" LABEL_FILTER="${LABEL_FILTER:-}" # Only default to Conformance if FOCUS was not explicitly set. # This allows FOCUS="" to run all tests (no focus filter). if [ "${FOCUS+set}" != "set" ]; then if [ -z "${LABEL_FILTER}" ]; then FOCUS="\\[Conformance\\]" else FOCUS="" fi fi # if we set PARALLEL=true, skip serial tests set --ginkgo-parallel if [ "${PARALLEL:-false}" = "true" ]; then export GINKGO_PARALLEL=y if [ -z "${SKIP}" ]; then SKIP="\\[Serial\\]" else SKIP="\\[Serial\\]|${SKIP}" fi fi # setting this env prevents ginkgo e2e from trying to run provider setup export KUBERNETES_CONFORMANCE_TEST='y' # setting these is required to make RuntimeClass tests work ... :/ export KUBE_CONTAINER_RUNTIME=remote export KUBE_CONTAINER_RUNTIME_ENDPOINT=unix:///run/containerd/containerd.sock export KUBE_CONTAINER_RUNTIME_NAME=containerd # ginkgo can take forever to exit, so we run it in the background and save the # PID, bash will not run traps while waiting on a process, but it will while # running a builtin like `wait`, saving the PID also allows us to forward the # interrupt ./hack/ginkgo-e2e.sh \ '--provider=skeleton' "--num-nodes=${NUM_NODES}" \ "--ginkgo.focus=${FOCUS}" "--ginkgo.skip=${SKIP}" "--ginkgo.label-filter=${LABEL_FILTER}" \ "--report-dir=${ARTIFACTS}" '--disable-log-dump=true' & GINKGO_PID=$! wait "$GINKGO_PID" } main() { # create temp dir and setup cleanup TMP_DIR=$(mktemp -d) # ensure artifacts (results) directory exists when not in CI export ARTIFACTS="${ARTIFACTS:-${PWD}/_artifacts}" mkdir -p "${ARTIFACTS}" # export the KUBECONFIG to a unique path for testing KUBECONFIG="${HOME}/.kube/kind-test-config" export KUBECONFIG echo "exported KUBECONFIG=${KUBECONFIG}" # debug kind version kind version # build kubernetes build # in CI attempt to release some memory after building if [ -n "${KUBETEST_IN_DOCKER:-}" ]; then sync || true echo 1 > /proc/sys/vm/drop_caches || true fi # create the cluster and run tests res=0 create_cluster || res=$? run_tests || res=$? cleanup || res=$? exit $res } main kubernetes-sigs-kind-49aeee6/hack/ci/e2e.sh000077500000000000000000000027411524365506300206030ustar00rootroot00000000000000#!/usr/bin/env bash # Copyright 2018 The Kubernetes Authors. # # 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. # hack script for running a kind e2e # must be run with a kubernetes checkout in $PWD (IE from the checkout) # Usage: SKIP="ginkgo skip regex" FOCUS="ginkgo focus regex" kind-e2e.sh set -o errexit -o nounset -o pipefail -o xtrace REPO_ROOT="$(cd "$(dirname "${BASH_SOURCE[0]}")/../.." && pwd -P)" # our exit handler (trap) cleanup() { # remove our tempdir, this needs to be last, or it will prevent kind delete [[ -n "${TMP_DIR:-}" ]] && rm -rf "${TMP_DIR:?}" } # install kind to a tempdir GOPATH from this script's kind checkout install_kind() { mkdir -p "${TMP_DIR}/bin" make -C "${REPO_ROOT}" install INSTALL_PATH="${TMP_DIR}/bin" export PATH="${TMP_DIR}/bin:${PATH}" } main() { # create temp dir and setup cleanup TMP_DIR=$(mktemp -d) trap cleanup INT TERM EXIT # install kind install_kind # build kubernetes / e2e test "${REPO_ROOT}/hack/ci/e2e-k8s.sh" } main kubernetes-sigs-kind-49aeee6/hack/ci/init-vm.sh000077500000000000000000000044731524365506300215170ustar00rootroot00000000000000#!/bin/bash # Copyright The Kubernetes Authors. # # 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. set -eux -o pipefail # Ensure network-related modules to be loaded modprobe tap ip_tables iptable_nat ip6_tables ip6table_nat # The moby-engine package included in Fedora lacks support for rootless, # So we need to install docker-ce and docker-ce-rootless-extras from the upstream. DNF_REPO="" INSTALL_PODMAN="1" if grep -q centos /etc/os-release; then # Works with Rocky and Alma too DNF_REPO="https://download.docker.com/linux/centos/docker-ce.repo" if grep -q el8 /etc/os-release; then # podman seems to conflict with docker-ce on EL8 INSTALL_PODMAN="" fi elif grep -q fedora /etc/os-release; then DNF_REPO="https://download.docker.com/linux/fedora/docker-ce.repo" else echo >&2 "Unsupported OS" exit 1 fi DNF="dnf" if command -v dnf5 &>/dev/null; then # DNF 5 (Fedora 41 or later) DNF="dnf5" "$DNF" config-manager addrepo --from-repofile="${DNF_REPO}" else # DNF 4 "$DNF" config-manager --add-repo="${DNF_REPO}" fi "$DNF" install -y git golang make docker-ce docker-ce-rootless-extras systemctl enable --now docker if [ -n "${INSTALL_PODMAN}" ]; then "$DNF" install -y podman fi # Install kubectl GOARCH="$(uname -m | sed -e 's/aarch64/arm64/' -e 's/x86_64/amd64/')" curl -L -o /usr/bin/kubectl "https://dl.k8s.io/release/$(curl -L -s https://dl.k8s.io/release/stable.txt)/bin/linux/${GOARCH}/kubectl" chmod +x /usr/bin/kubectl # Disable SELinux enforcement in CI -- we're not testing SELinux policy and # enforcing mode causes permission denied errors with rootlesskit's detach-netns. setenforce 0 || true # Configuration for rootless: https://kind.sigs.k8s.io/docs/user/rootless/ mkdir -p "/etc/systemd/system/user@.service.d" cat <"/etc/systemd/system/user@.service.d/delegate.conf" [Service] Delegate=yes EOF systemctl daemon-reload kubernetes-sigs-kind-49aeee6/hack/ci/lima-helper.sh000077500000000000000000000014621524365506300223260ustar00rootroot00000000000000#!/usr/bin/env bash # Copyright 2021 The Kubernetes Authors. # # 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. set -o errexit -o nounset -o pipefail : "${KIND_EXPERIMENTAL_PROVIDER:=docker}" sudo=sudo [ "$ROOTLESS" = "rootless" ] && sudo= exec lima $sudo KIND_EXPERIMENTAL_PROVIDER="$KIND_EXPERIMENTAL_PROVIDER" "${@}" kubernetes-sigs-kind-49aeee6/hack/ci/push-latest-cli/000077500000000000000000000000001524365506300226035ustar00rootroot00000000000000kubernetes-sigs-kind-49aeee6/hack/ci/push-latest-cli/README.md000066400000000000000000000004301524365506300240570ustar00rootroot00000000000000This tooling is used for our automated builds. These are meant to be consumed *only* by The Kubernetes Project's CI for testing Kubernetes. These builds are currently not supported for other purposes. See github.com/kubernetes/test-infra for the automation that invokes these.kubernetes-sigs-kind-49aeee6/hack/ci/push-latest-cli/cloudbuild.yaml000066400000000000000000000005071524365506300256170ustar00rootroot00000000000000# See https://cloud.google.com/cloud-build/docs/build-config options: substitution_option: ALLOW_LOOSE steps: - name: gcr.io/k8s-staging-test-infra/krte:latest-master env: - PULL_BASE_SHA=$_PULL_BASE_SHA entrypoint: hack/ci/push-latest-cli/push-latest-cli.sh substitutions: _GIT_TAG: '12345' _PULL_BASE_SHA: 'oops' kubernetes-sigs-kind-49aeee6/hack/ci/push-latest-cli/push-latest-cli.sh000077500000000000000000000037141524365506300261650ustar00rootroot00000000000000#!/usr/bin/env bash # Copyright 2020 The Kubernetes Authors. # # 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. set -o errexit -o nounset -o pipefail set -x; # cd to the repo root REPO_ROOT="$(cd "$(dirname "${BASH_SOURCE[0]}")/../../.." &> /dev/null && pwd -P)" cd "${REPO_ROOT}" # pass through git details from prow / image builder if [ -n "${PULL_BASE_SHA:-}" ]; then export COMMIT="${PULL_BASE_SHA:?}" else COMMIT="$(git rev-parse HEAD 2>/dev/null)" export COMMIT fi # short commit is currently 8 characters SHORT_COMMIT="${COMMIT:0:8}" # we upload here BUCKET="${BUCKET:-k8s-staging-kind}" # under each of these VERSIONS=( latest "${SHORT_COMMIT}" ) # build for all platforms hack/release/build/cross.sh # upload to the bucket for f in bin/kind-*; do # make a tarball with this # TODO: eliminate e2e-k8s.sh base="$(basename "$f")" platform="${base#kind-}" tar \ -czvf "bin/${platform}.tgz" \ --transform 's#.*kind.*#kind#' \ --transform 's#.*e2e-k8s.sh#e2e-k8s.sh#' \ --transform='s#^/#./#' \ --mode='755' \ "${f}" \ "hack/ci/e2e-k8s.sh" # copy everything up to each version for version in "${VERSIONS[@]}"; do gsutil cp -P "bin/${platform}.tgz" "gs://${BUCKET}/${version}/${platform}.tgz" gsutil cp -P "$f" "gs://${BUCKET}/${version}/${base}" done done # upload the e2e script so kubernetes CI can consume it for version in "${VERSIONS[@]}"; do gsutil cp -P hack/ci/e2e-k8s.sh "gs://${BUCKET}/${version}/e2e-k8s.sh" done kubernetes-sigs-kind-49aeee6/hack/make-rules/000077500000000000000000000000001524365506300212375ustar00rootroot00000000000000kubernetes-sigs-kind-49aeee6/hack/make-rules/test.sh000077500000000000000000000041001524365506300225500ustar00rootroot00000000000000#!/usr/bin/env bash # Copyright 2019 The Kubernetes Authors. # # 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. # script to run unit / integration tests, with coverage enabled and junit xml output set -o errexit -o nounset -o pipefail # cd to the repo root and setup go REPO_ROOT="$(cd "$(dirname "${BASH_SOURCE[0]}")/../.." && pwd -P)" cd "${REPO_ROOT}" source hack/build/setup-go.sh # set to 'unit' or 'integration' to run a subset MODE="${MODE:-all}" # build gotestsum cd 'hack/tools' go build -o "${REPO_ROOT}/bin/gotestsum" gotest.tools/gotestsum cd "${REPO_ROOT}" go_test_opts=( "-coverprofile=${REPO_ROOT}/bin/${MODE}.cov" '-covermode' 'count' '-coverpkg' 'sigs.k8s.io/kind/...' ) if [[ "${MODE}" = 'unit' ]]; then go_test_opts+=('-short' '-tags=nointegration') elif [[ "${MODE}" = 'integration' ]]; then go_test_opts+=('-run' '^TestIntegration') fi # run unit tests with coverage enabled and junit output ( set -x; "${REPO_ROOT}/bin/gotestsum" --junitfile="${REPO_ROOT}/bin/${MODE}-junit.xml" \ -- "${go_test_opts[@]}" './...' ) # filter out generated files sed '/zz_generated/d' "${REPO_ROOT}/bin/${MODE}.cov" > "${REPO_ROOT}/bin/${MODE}-filtered.cov" # generate cover html go tool cover -html="${REPO_ROOT}/bin/${MODE}-filtered.cov" -o "${REPO_ROOT}/bin/${MODE}-filtered.html" # if we are in CI, copy to the artifact upload location if [[ -n "${ARTIFACTS:-}" ]]; then cp "bin/${MODE}-junit.xml" "${ARTIFACTS:?}/junit.xml" cp "${REPO_ROOT}/bin/${MODE}-filtered.cov" "${ARTIFACTS:?}/filtered.cov" cp "${REPO_ROOT}/bin/${MODE}-filtered.html" "${ARTIFACTS:?}/filtered.html" fi kubernetes-sigs-kind-49aeee6/hack/make-rules/update/000077500000000000000000000000001524365506300225215ustar00rootroot00000000000000kubernetes-sigs-kind-49aeee6/hack/make-rules/update/README.md000066400000000000000000000001201524365506300237710ustar00rootroot00000000000000This directory contains tools used to update dependencies, generated files, etc.kubernetes-sigs-kind-49aeee6/hack/make-rules/update/all.sh000077500000000000000000000016271524365506300236360ustar00rootroot00000000000000#!/usr/bin/env bash # Copyright 2018 The Kubernetes Authors. # # 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. # script to run all update scripts (except deps) set -o errexit -o nounset -o pipefail # cd to the repo root REPO_ROOT="$(cd "$(dirname "${BASH_SOURCE[0]}")/../../.." &> /dev/null && pwd -P)" cd "${REPO_ROOT}" hack/make-rules/update/deps.sh hack/make-rules/update/generated.sh hack/make-rules/update/gofmt.sh kubernetes-sigs-kind-49aeee6/hack/make-rules/update/deps.sh000077500000000000000000000020771524365506300240210ustar00rootroot00000000000000#!/usr/bin/env bash # Copyright 2018 The Kubernetes Authors. # # 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. # Runs go mod tidy, go mod vendor, and then prunes vendor # # Usage: # deps.sh set -o errexit -o nounset -o pipefail # cd to the repo root and setup go REPO_ROOT="$(cd "$(dirname "${BASH_SOURCE[0]}")/../../.." &> /dev/null && pwd -P)" cd "${REPO_ROOT}" source hack/build/setup-go.sh # tidy all modules go mod tidy cd "${REPO_ROOT}/hack/tools" go mod tidy # NOTE: kindnetd is only built for linux and uses linux APIs cd "${REPO_ROOT}/images/kindnetd" GOOS=linux go mod tidy kubernetes-sigs-kind-49aeee6/hack/make-rules/update/generated.sh000077500000000000000000000031161524365506300250170ustar00rootroot00000000000000#!/usr/bin/env bash # Copyright 2018 The Kubernetes Authors. # # 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 generate's kind, using tools from vendor (go-bindata) set -o errexit -o nounset -o pipefail # cd to the repo root and setup go REPO_ROOT="$(cd "$(dirname "${BASH_SOURCE[0]}")/../../.." &> /dev/null && pwd -P)" cd "${REPO_ROOT}" source hack/build/setup-go.sh # build the generators using the tools module cd "${REPO_ROOT}/hack/tools" go build -o "${REPO_ROOT}/bin/deepcopy-gen" k8s.io/code-generator/cmd/deepcopy-gen # go back to the root cd "${REPO_ROOT}" # turn off module mode before running the generators # https://github.com/kubernetes/code-generator/issues/69 # we also need to populate vendor # run the generators bin/deepcopy-gen --output-file zz_generated.deepcopy.go --go-header-file hack/boilerplate/boilerplate.go.txt ./pkg/internal/apis/config/ bin/deepcopy-gen --output-file zz_generated.deepcopy.go --go-header-file hack/boilerplate/boilerplate.go.txt ./pkg/apis/config/v1alpha4 # set module mode back, return to repo root and gofmt to ensure we format generated code make gofmt kubernetes-sigs-kind-49aeee6/hack/make-rules/update/gofmt.sh000077500000000000000000000016231524365506300241760ustar00rootroot00000000000000#!/bin/bash # Copyright 2018 The Kubernetes Authors. # # 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. # script to run gofmt over our code (not vendor) set -o errexit -o nounset -o pipefail # cd to the repo root and setup go REPO_ROOT="$(cd "$(dirname "${BASH_SOURCE[0]}")/../../.." &> /dev/null && pwd -P)" cd "${REPO_ROOT}" source hack/build/setup-go.sh find . -name '*.go' -type f -print0 | xargs -0 gofmt -s -w kubernetes-sigs-kind-49aeee6/hack/make-rules/verify/000077500000000000000000000000001524365506300225435ustar00rootroot00000000000000kubernetes-sigs-kind-49aeee6/hack/make-rules/verify/README.md000066400000000000000000000001121524365506300240140ustar00rootroot00000000000000This directory contains tools to verify the state and quality of the repo.kubernetes-sigs-kind-49aeee6/hack/make-rules/verify/all.sh000077500000000000000000000032711524365506300236550ustar00rootroot00000000000000#!/usr/bin/env bash # Copyright 2018 The Kubernetes Authors. # # 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. set -o errexit -o nounset -o pipefail # cd to the repo root REPO_ROOT="$(cd "$(dirname "${BASH_SOURCE[0]}")/../../.." &> /dev/null && pwd -P)" cd "${REPO_ROOT}" # exit code, if a script fails we'll set this to 1 res=0 # run all verify scripts, optionally skipping any of them if [[ "${VERIFY_LINT:-true}" == "true" ]]; then echo "verifying lints ..." hack/make-rules/verify/lint.sh || res=1 cd "${REPO_ROOT}" fi if [[ "${VERIFY_GENERATED:-true}" == "true" ]]; then echo "verifying generated ..." hack/make-rules/verify/generated.sh || res=1 cd "${REPO_ROOT}" fi if [[ "${VERIFY_SHELLCHECK:-true}" == "true" ]]; then echo "verifying shellcheck ..." hack/make-rules/verify/shellcheck.sh || res=1 cd "${REPO_ROOT}" fi if [[ "${VERIFY_BOILERPLATE:-true}" == "true" ]]; then echo "verifying boilerplate ..." hack/make-rules/verify/boilerplate.sh || res=1 cd "${REPO_ROOT}" fi # exit based on verify scripts if [[ "${res}" = 0 ]]; then echo "" echo "All verify checks passed, congrats!" else echo "" echo "One or more verify checks failed! See output above..." fi exit "${res}" kubernetes-sigs-kind-49aeee6/hack/make-rules/verify/boilerplate.sh000077500000000000000000000015321524365506300254050ustar00rootroot00000000000000#!/usr/bin/env bash # Copyright The Kubernetes Authors. # # 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. set -o errexit -o nounset -o pipefail REPO_ROOT="$(cd "$(dirname "${BASH_SOURCE[0]}")/../../.." &> /dev/null && pwd -P)" cd "${REPO_ROOT}" hack/boilerplate/verify_boilerplate.py --rootdir "${REPO_ROOT}" --boilerplate-dir "${REPO_ROOT}/hack/boilerplate" kubernetes-sigs-kind-49aeee6/hack/make-rules/verify/generated.sh000077500000000000000000000042421524365506300250420ustar00rootroot00000000000000#!/usr/bin/env bash # Copyright 2018 The Kubernetes Authors. # # 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. set -o errexit -o nounset -o pipefail # cd to the repo root and setup go REPO_ROOT="$(cd "$(dirname "${BASH_SOURCE[0]}")/../../.." &> /dev/null && pwd -P)" cd "${REPO_ROOT}" source hack/build/setup-go.sh # place to stick temp binaries BINDIR="${REPO_ROOT}/bin" mkdir -p "${BINDIR}" # TMP_REPO is used in make_temp_repo_copy TMP_REPO="$(TMPDIR="${BINDIR}" mktemp -d "${BINDIR}/verify-deps.XXXXX")" # exit trap cleanup for TMP_REPO cleanup() { if [[ -n "${TMP_REPO}" ]]; then rm -rf "${TMP_REPO}" fi } # copies repo into a temp root saved to TMP_REPO make_temp_repo_copy() { # we need to copy everything but bin (and the old _output) (which is .gitignore anyhow) find . \ -mindepth 1 -maxdepth 1 \ \( \ -type d -path "./.git" -o \ -type d -path "./bin" -o \ -type d -path "./_output" \ \) -prune -o \ -exec bash -c 'cp -r "${0}" "${1}/${0}" >/dev/null 2>&1' {} "${TMP_REPO}" \; } main() { trap cleanup EXIT # copy repo root into tempdir under ./_output make_temp_repo_copy # run generated code update script cd "${TMP_REPO}" REPO_ROOT="${TMP_REPO}" make generate # make sure the temp repo has no changes relative to the real repo diff=$(diff -Nupr \ -x ".git" \ -x "bin" \ -x "_output" \ -x "vendor" \ "${REPO_ROOT}" "${TMP_REPO}" 2>/dev/null || true) if [[ -n "${diff}" ]]; then echo "unexpectedly dirty working directory after hack/update/generated.sh" >&2 echo "" >&2 echo "${diff}" >&2 echo "" >&2 echo "please run make generate" >&2 exit 1 fi } main kubernetes-sigs-kind-49aeee6/hack/make-rules/verify/lint.sh000077500000000000000000000024211524365506300240470ustar00rootroot00000000000000#!/usr/bin/env bash # Copyright 2019 The Kubernetes Authors. # # 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. # script to run linters set -o errexit -o nounset -o pipefail # cd to the repo root and setup go REPO_ROOT="$(cd "$(dirname "${BASH_SOURCE[0]}")/../../.." &> /dev/null && pwd -P)" cd "${REPO_ROOT}" source hack/build/setup-go.sh # build golangci-lint cd "${REPO_ROOT}/hack/tools" go build -o "${REPO_ROOT}"/bin/golangci-lint github.com/golangci/golangci-lint/v2/cmd/golangci-lint cd "${REPO_ROOT}" # first for the repo in general "${REPO_ROOT}"/bin/golangci-lint --config "${REPO_ROOT}/hack/tools/.golangci.yml" run ./... # then for kindnetd module cd "${REPO_ROOT}/images/kindnetd" GOOS=linux "${REPO_ROOT}"/bin/golangci-lint --config "${REPO_ROOT}/hack/tools/.golangci.yml" run ./... kubernetes-sigs-kind-49aeee6/hack/make-rules/verify/shellcheck.sh000077500000000000000000000064351524365506300252170ustar00rootroot00000000000000#!/usr/bin/env bash # Copyright 2019 The Kubernetes Authors. # # 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. # CI script to run shellcheck set -o errexit set -o nounset set -o pipefail # cd to the repo root REPO_ROOT="$(cd "$(dirname "${BASH_SOURCE[0]}")/../../.." &> /dev/null && pwd -P)" cd "${REPO_ROOT}" # required version for this script, if not installed on the host we will # use the official docker image instead. keep this in sync with SHELLCHECK_IMAGE SHELLCHECK_VERSION="0.9.0" # upstream shellcheck latest stable image as of October 23rd, 2019 SHELLCHECK_IMAGE='docker.io/koalaman/shellcheck-alpine:v0.9.0@sha256:e19ed93c22423970d56568e171b4512c9244fc75dd9114045016b4a0073ac4b7' DOCKER="${DOCKER:-docker}" # detect if the host machine has the required shellcheck version installed # if so, we will use that instead. HAVE_SHELLCHECK=false if which shellcheck &>/dev/null; then detected_version="$(shellcheck --version | grep 'version: .*')" if [[ "${detected_version}" = "version: ${SHELLCHECK_VERSION}" ]]; then HAVE_SHELLCHECK=true fi fi # Find all shell scripts excluding: # - Anything git-ignored - No need to lint untracked files. # - ./.git/* - Ignore anything in the git object store. # - ./vendor/* - Ignore vendored contents. # - ./bin/* - No need to lint output directories. all_shell_scripts=() while IFS=$'\n' read -r script; do git check-ignore -q "$script" || all_shell_scripts+=("$script"); done < <(grep -irl '#!.*sh' . | grep -Ev '(^\./\.git/)|(^\./vendor/)|(^\./hack/third_party/)|(^\./images/.*/scripts/third_party/)|(^\./bin/)|(\.go$)|(\.py$)') # common arguments we'll pass to shellcheck SHELLCHECK_OPTIONS=( # allow following sourced files that are not specified in the command, # we need this because we specify one file at a time in order to trivially # detect which files are failing '--external-sources' # disabled lint codes # 2330 - disabled due to https://github.com/koalaman/shellcheck/issues/1162 '--exclude=2230' # 2126 - disabled because grep -c exits error when there are zero matches, # unlike grep | wc -l '--exclude=2126' # set colorized output '--color=auto' ) # actually shellcheck # tell the user which we've selected and lint all scripts # The shellcheck errors are printed to stdout by default, hence they need to be redirected # to stderr in order to be well parsed for Junit representation by juLog function res=0 if ${HAVE_SHELLCHECK}; then >&2 echo "Using host shellcheck ${SHELLCHECK_VERSION} binary." shellcheck "${SHELLCHECK_OPTIONS[@]}" "${all_shell_scripts[@]}" >&2 || res=$? else >&2 echo "Using shellcheck ${SHELLCHECK_VERSION} docker image." "${DOCKER}" run \ --rm -v "${REPO_ROOT}:${REPO_ROOT}" -w "${REPO_ROOT}" \ "${SHELLCHECK_IMAGE}" \ shellcheck "${SHELLCHECK_OPTIONS[@]}" "${all_shell_scripts[@]}" >&2 || res=$? fi exit $res kubernetes-sigs-kind-49aeee6/hack/release/000077500000000000000000000000001524365506300206125ustar00rootroot00000000000000kubernetes-sigs-kind-49aeee6/hack/release/build/000077500000000000000000000000001524365506300217115ustar00rootroot00000000000000kubernetes-sigs-kind-49aeee6/hack/release/build/README.md000066400000000000000000000001161524365506300231660ustar00rootroot00000000000000This directory contains temporary tooling used to make releasing kind easier. kubernetes-sigs-kind-49aeee6/hack/release/build/cross.sh000077500000000000000000000036041524365506300234040ustar00rootroot00000000000000#!/usr/bin/env bash # Copyright 2018 The Kubernetes Authors. # # 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. # simple script to build binaries for release set -o errexit -o nounset -o pipefail # cd to the repo root and setup go REPO_ROOT="$(cd "$(dirname "${BASH_SOURCE[0]}")/../../.." &> /dev/null && pwd -P)" cd "${REPO_ROOT}" source hack/build/setup-go.sh # controls the number of concurrent builds PARALLELISM=${PARALLELISM:-6} echo "Building in parallel for:" # What we do here: # - use xargs to build in parallel (-P) while collecting a combined exit code # - use cat to supply the individual args to xargs (one line each) # - use env -S to split the line into environment variables and execute # - ... the build # NOTE: the binary name needs to be in single quotes so we delay evaluating # GOOS / GOARCH # NOTE: disable SC2016 because we _intend_ for these to evaluate later # shellcheck disable=SC2016 if xargs -0 -n1 -P "${PARALLELISM}" bash -c 'eval $0; make build KIND_BINARY_NAME=kind-${GOOS}-${GOARCH}'; then echo "Cross build passed!" 1>&2 else echo "Cross build failed!" 1>&2 exit 1 fi < <(cat < "$f".sha256sum; done kubernetes-sigs-kind-49aeee6/hack/release/build/push-node.sh000077500000000000000000000055251524365506300241610ustar00rootroot00000000000000#!/usr/bin/env bash # Copyright 2018 The Kubernetes Authors. # # 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. set -o errexit -o nounset -o pipefail REGISTRY="${REGISTRY:-gcr.io/k8s-staging-kind}" IMAGE_NAME="${IMAGE_NAME:-node}" # cd to the repo root REPO_ROOT="$(cd "$(dirname "${BASH_SOURCE[0]}")/../../.." &> /dev/null && pwd -P)" cd "${REPO_ROOT}" # ensure we have up to date kind make build # path to kubernetes sources KUBEROOT="${KUBEROOT:-"$(go env GOPATH)"/src/k8s.io/kubernetes}" # ensure we have qemu setup so we can run cross-arch images # TODO: dedupe specifying this image? docker run --rm --privileged tonistiigi/binfmt:qemu-v7.0.0-28@sha256:66e11bea77a5ea9d6f0fe79b57cd2b189b5d15b93a2bdb925be22949232e4e55 --install all # NOTE: adding platforms is costly in terms of build time # we will consider expanding this in the future, for now the aim is to prove # multi-arch and enable developers working on commonly available hardware # Other users are free to build their own images on additional platforms using # their own time and resources. Please see our docs. ARCHES="${ARCHES:-amd64 arm64}" IFS=" " read -r -a __arches__ <<< "$ARCHES" set -x # ensure clean build (cd "${KUBEROOT}" && make clean) # get kubernetes version version_line="$(cd "${KUBEROOT}"; ./hack/print-workspace-status.sh | grep 'STABLE_DOCKER_TAG')" kube_version="${version_line#"STABLE_DOCKER_TAG "}" # kubernetes build option(s) GOFLAGS="${GOFLAGS:-}" if [ -z "${GOFLAGS}" ]; then # TODO: dockerless only applies to < 1.24, the version selection here is brittle case "${kube_version}" in v1.1[0-8].*) GOFLAGS="-tags=providerless" ;; *) GOFLAGS="-tags=providerless,dockerless" ;; esac fi export GOFLAGS # build for each arch IMAGE="${REGISTRY}/${IMAGE_NAME}:${kube_version}" images=() for arch in "${__arches__[@]}"; do image="${REGISTRY}/${IMAGE_NAME}-${arch}:${kube_version}" "${REPO_ROOT}/bin/kind" build node-image --image="${image}" --arch="${arch}" "${KUBEROOT}" images+=("${image}") done # combine to manifest list tagged with kubernetes version # images must be pushed to be referenced by docker manifest # we push only after all builds have succeeded for image in "${images[@]}"; do docker push "${image}" done docker manifest rm "${IMAGE}" || true docker manifest create "${IMAGE}" "${images[@]}" docker manifest push "${IMAGE}" kubernetes-sigs-kind-49aeee6/hack/release/create.sh000077500000000000000000000047371524365506300224270ustar00rootroot00000000000000#!/usr/bin/env bash # Copyright 2018 The Kubernetes Authors. # # 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. # creates a release and following pre-release commit for `kind` # builds binaries between the commits # Use like: create.sh # EG: create.sh 0.3.0 0.4.0 set -o errexit -o nounset -o pipefail UPSTREAM='https://github.com/kubernetes-sigs/kind.git' # cd to the repo root REPO_ROOT="$(cd "$(dirname "${BASH_SOURCE[0]}")/../.." && pwd -P)" cd "${REPO_ROOT}" # check for arguments if [ "$#" -ne 2 ]; then echo "Usage: create.sh release-version next-prerelease-version" exit 1 fi # darwin is great SED="sed" if which gsed &>/dev/null; then SED="gsed" fi if ! (${SED} --version 2>&1 | grep -q GNU); then echo "!!! GNU sed is required. If on OS X, use 'brew install gnu-sed'." >&2 exit 1 fi VERSION_FILE="./pkg/cmd/kind/version/version.go" # update core version in go code to $1 and pre-release version to $2 set_version() { ${SED} -i "s/versionCore = .*/versionCore = \"${1}\"/" "${VERSION_FILE}" ${SED} -i "s/versionPreRelease = .*/versionPreRelease = \"${2}\"/" "${VERSION_FILE}" echo "Updated ${VERSION_FILE} for ${1}" } # make a commit denoting the version ($1) make_commit() { git add "${VERSION_FILE}" git commit -m "version ${1}" echo "Created commit for ${1}" } # add a git tag with $1 add_tag() { git tag "${1}" echo "Tagged ${1}" } # create the first version, tag and build it set_version "${1}" "" make_commit "v${1}" add_tag "v${1}" echo "Building ..." make clean && ./hack/release/build/cross.sh # update to the second version set_version "${2}" "alpha" make_commit "v${2}-alpha" add_tag "v${2}-alpha" # print follow-up instructions echo "" echo "Created commits for v${1} and v${2}, you should now:" echo " - git push" echo " - File a PR with these pushed commits" echo " - Merge the PR" echo " - git push ${UPSTREAM} v${1}" echo " - git push ${UPSTREAM} v${2}-alpha" echo " - Create a GitHub release from the pushed tag v${1}" kubernetes-sigs-kind-49aeee6/hack/release/get-contributors.sh000077500000000000000000000035271524365506300244720ustar00rootroot00000000000000#!/usr/bin/env bash # Copyright 2020 The Kubernetes Authors. # # 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. # inputs are: # - LAST_VERSION_TAG -- This is the version to get commits since # like: LAST_VERSION_TAG="v0.8.1" # - GITHUB_OATH_TOKEN -- used to avoid hitting API rate limits ORG="kubernetes-sigs" REPO="kind" # query git for contributors since the tag contributors=() while IFS='' read -r line; do contributors+=("$line"); done < <(git log --format="%aN <%aE>" "${LAST_VERSION_TAG:?}.." | sort | uniq) # query github for usernames and output bulleted list contributor_logins=() for contributor in "${contributors[@]}"; do # get a commit for this author commit_for_contributor="$(git log --author="${contributor}" --pretty=format:"%H" -1)" # lookup the commit info to get the login contributor_logins+=("$(curl \ -sG \ ${GITHUB_OAUTH_TOKEN:+-H "Authorization: Bearer ${GITHUB_OAUTH_TOKEN:?}"} \ --data-urlencode "q=${contributor}" \ "https://api.github.com/repos/${ORG}/${REPO}/commits/${commit_for_contributor}" \ | jq -r .author.login )") done echo "Contributors since ${LAST_VERSION_TAG}:" # echo sorted formatted list while IFS='' read -r contributor_login; do echo "- @${contributor_login}" done < <(for c in "${contributor_logins[@]}"; do echo "$c"; done | LC_COLLATE=C sort --ignore-case | uniq) kubernetes-sigs-kind-49aeee6/hack/release/push-node.sh000077500000000000000000000045611524365506300230610ustar00rootroot00000000000000#!/usr/bin/env bash # Copyright 2024 The Kubernetes Authors. # # 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 script replaces hack/release/build/push-node.sh for Kubernetes v1.31+ # usage: push-node.sh v1.32.0 set -o errexit -o nounset -o pipefail REGISTRY="${REGISTRY:-gcr.io/k8s-staging-kind}" IMAGE_NAME="${IMAGE_NAME:-node}" # cd to the repo root REPO_ROOT="$(cd "$(dirname "${BASH_SOURCE[0]}")/../.." &> /dev/null && pwd -P)" cd "${REPO_ROOT}" VERSION="${1:-}" if [[ -z "${VERSION}" ]]; then echo >&2 "version argument not supplied, looking up current stable ..." VERSION="$(curl -sL https://dl.k8s.io/release/stable.txt)" fi echo >&2 "will build node image for Kubernetes ${VERSION} ..." # ensure we have up to date kind echo >&2 "building kind ..." make build hack/build/init-buildx.sh # NOTE: adding platforms is costly in terms of build time # we will consider expanding this in the future, for now the aim is to prove # multi-arch and enable developers working on commonly available hardware # Other users are free to build their own images on additional platforms using # their own time and resources. Please see our docs. ARCHES="${ARCHES:-amd64 arm64}" IFS=" " read -r -a __arches__ <<< "$ARCHES" set -x # build for each arch IMAGE="${REGISTRY}/${IMAGE_NAME}:${VERSION}" images=() for arch in "${__arches__[@]}"; do image="${REGISTRY}/${IMAGE_NAME}-${arch}:${VERSION}" echo >&2 "building ${image} ..." "${REPO_ROOT}/bin/kind" build node-image --image="${image}" --arch="${arch}" "${VERSION}" images+=("${image}") done # combine to manifest list tagged with kubernetes version # images must be pushed to be referenced by docker manifest # we push only after all builds have succeeded for image in "${images[@]}"; do docker push "${image}" done docker manifest rm "${IMAGE}" || true docker manifest create "${IMAGE}" "${images[@]}" docker manifest push "${IMAGE}" kubernetes-sigs-kind-49aeee6/hack/third_party/000077500000000000000000000000001524365506300215235ustar00rootroot00000000000000kubernetes-sigs-kind-49aeee6/hack/third_party/gimme/000077500000000000000000000000001524365506300226215ustar00rootroot00000000000000kubernetes-sigs-kind-49aeee6/hack/third_party/gimme/LICENSE000066400000000000000000000021021524365506300236210ustar00rootroot00000000000000The MIT License (MIT) Copyright (c) 2015-2018 gimme contributors 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. kubernetes-sigs-kind-49aeee6/hack/third_party/gimme/README.md000066400000000000000000000002171524365506300241000ustar00rootroot00000000000000# gimme This is an unmodified copy of [gimme], so we don't have to download it from the internet. [gimme]: https://github.com/travis-ci/gimmekubernetes-sigs-kind-49aeee6/hack/third_party/gimme/gimme000077500000000000000000000662441524365506300236610ustar00rootroot00000000000000#!/usr/bin/env bash # vim:noexpandtab:ts=2:sw=2: # #+ Usage: $(basename $0) [flags] [go-version] [version-prefix] #+ - #+ Version: ${GIMME_VERSION} #+ Copyright: ${GIMME_COPYRIGHT} #+ License URL: ${GIMME_LICENSE_URL} #+ - #+ Install go! There are multiple types of installations available, with 'auto' being the default. #+ If either 'auto' or 'binary' is specified as GIMME_TYPE, gimme will first check for an existing #+ go installation. This behavior may be disabled by providing '-f/--force/force' as first positional #+ argument. #+ - #+ Option flags: #+ -h --help help - show this help text and exit #+ -V --version version - show the version only and exit #+ -f --force force - remove the existing go installation if present prior to install #+ -l --list list - list installed go versions and exit #+ -k --known known - list known go versions and exit #+ --force-known-update - when used with --known, ignores the cache and updates #+ -r --resolve resolve - resolve a version specifier to a version, show that and exit #+ - #+ Influential env vars: #+ - #+ GIMME_GO_VERSION - version to install (*REQUIRED*, may be given as first positional arg) #+ GIMME_VERSION_PREFIX - prefix for installed versions (default '${GIMME_VERSION_PREFIX}', #+ may be given as second positional arg) #+ GIMME_ARCH - arch to install (default '${GIMME_ARCH}') #+ GIMME_BINARY_OSX - darwin-specific binary suffix (default '${GIMME_BINARY_OSX}') #+ GIMME_ENV_PREFIX - prefix for env files (default '${GIMME_ENV_PREFIX}') #+ GIMME_GO_GIT_REMOTE - git remote for git-based install (default '${GIMME_GO_GIT_REMOTE}') #+ GIMME_OS - os to install (default '${GIMME_OS}') #+ GIMME_TMP - temp directory (default '${GIMME_TMP}') #+ GIMME_TYPE - install type to perform ('auto', 'binary', 'source', or 'git') #+ (default '${GIMME_TYPE}') #+ GIMME_INSTALL_RACE - install race directory after compile if non-empty. #+ If the install type is 'binary', this option is ignored. #+ GIMME_DEBUG - enable tracing if non-empty #+ GIMME_NO_ENV_ALIAS - disable creation of env 'alias' file when os and arch match host #+ GIMME_SILENT_ENV - omit the 'go version' line from env file #+ GIMME_CGO_ENABLED - enable build of cgo support #+ GIMME_CC_FOR_TARGET - cross compiler for cgo support #+ GIMME_DOWNLOAD_BASE - override base URL dir for download (default '${GIMME_DOWNLOAD_BASE}') #+ GIMME_LIST_KNOWN - override base URL for known go versions (default '${GIMME_LIST_KNOWN}') #+ GIMME_KNOWN_CACHE_MAX - seconds the cache for --known is valid for (default '${GIMME_KNOWN_CACHE_MAX}') #+ - # set -e shopt -s nullglob shopt -s dotglob shopt -s extglob set -o pipefail [[ ${GIMME_DEBUG} ]] && set -x readonly GIMME_VERSION="v1.5.4" readonly GIMME_COPYRIGHT="Copyright (c) 2015-2020 gimme contributors" readonly GIMME_LICENSE_URL="https://raw.githubusercontent.com/travis-ci/gimme/${GIMME_VERSION}/LICENSE" export GIMME_VERSION export GIMME_COPYRIGHT export GIMME_LICENSE_URL program_name="$(basename "$0")" # shellcheck disable=SC1117 warn() { printf >&2 "%s: %s\n" "${program_name}" "${*}"; } die() { warn "$@" exit 1 } # We don't want to go around hitting Google's servers with requests for # files named HEAD@{date}.tar so we only try binary/source downloads if # it looks like a plausible name to us. # We don't need to support 0. releases of Go. # We don't support 5 digit major-versions of Go (limit back-tracking in RE). # We don't support very long versions # (both to avoid annoying download server operators with attacks and # because regexp backtracking can be pathological). # Per _assert_version_given we do assume 2.0 not 2 ALLOWED_UPSTREAM_VERSION_RE='^[1-9][0-9]{0,3}(\.[0-9][0-9a-zA-Z_-]{0,9})+$' # # The main path which allowed these to leak upstream before has been closed # but a valid git repo tag or branch-name will still reach the point of # being _tried_ upstream. # _do_curl "url" "file" _do_curl() { mkdir -p "$(dirname "${2}")" if command -v curl >/dev/null; then curl -sSLf "${1}" -o "${2}" 2>/dev/null return fi if command -v wget >/dev/null; then wget -q "${1}" -O "${2}" 2>/dev/null return fi if command -v fetch >/dev/null; then fetch -q "${1}" -o "${2}" 2>/dev/null return fi echo >&2 'error: no curl, wget, or fetch found' exit 1 } # _sha256sum "file" _sha256sum() { if command -v sha256sum &>/dev/null; then sha256sum "$@" elif command -v gsha256sum &>/dev/null; then gsha256sum "$@" else shasum -a 256 "$@" fi } # sort versions, handling 1.10 after 1.9, not before 1.2 # FreeBSD sort has --version-sort, none of the others do # Looks like --general-numeric-sort is the safest; checked macOS 10.12.6, FreeBSD 10.3, Ubuntu Trusty if sort --version-sort /dev/null; then _version_sort() { sort --version-sort; } else _version_sort() { # If we go to four-digit minor or patch versions, then extend the padding here # (but in such a world, perhaps --version-sort will have become standard by then?) sed -E 's/\.([0-9](\.|$))/.00\1/g; s/\.([0-9][0-9](\.|$))/.0\1/g' | sort --general-numeric-sort | sed 's/\.00*/./g' } fi # _do_curls "file" "url" ["url"...] _do_curls() { f="${1}" shift if _sha256sum -c "${f}.sha256" &>/dev/null; then return 0 fi for url in "${@}"; do if _do_curl "${url}" "${f}"; then if _do_curl "${url}.sha256" "${f}.sha256"; then echo "$(cat "${f}.sha256") ${f}" >"${f}.sha256.tmp" mv "${f}.sha256.tmp" "${f}.sha256" if ! _sha256sum -c "${f}.sha256" &>/dev/null; then warn "sha256sum failed for '${f}'" warn 'continuing to next candidate URL' continue fi fi return fi done rm -f "${f}" return 1 } # _binary "version" "file.tar.gz" "arch" _binary() { local version=${1} local file=${2} local arch=${3} urls=( "${GIMME_DOWNLOAD_BASE}/go${version}.${GIMME_OS}-${arch}.tar.gz" ) if [[ "${GIMME_OS}" == 'darwin' && "${GIMME_BINARY_OSX}" ]]; then urls=( "${GIMME_DOWNLOAD_BASE}/go${version}.${GIMME_OS}-${arch}-${GIMME_BINARY_OSX}.tar.gz" "${urls[@]}" ) fi if [ "${arch}" = 'arm' ]; then # attempt "armv6l" vs just "arm" first (since that's what's officially published) urls=( "${GIMME_DOWNLOAD_BASE}/go${version}.${GIMME_OS}-${arch}v6l.tar.gz" # go1.6beta2 & go1.6rc1 "${GIMME_DOWNLOAD_BASE}/go${version}.${GIMME_OS}-${arch}6.tar.gz" # go1.6beta1 "${urls[@]}" ) fi if [ "${GIMME_OS}" = 'windows' ]; then urls=( "${GIMME_DOWNLOAD_BASE}/go${version}.${GIMME_OS}-${arch}.zip" ) fi _do_curls "${file}" "${urls[@]}" } # _source "version" "file.src.tar.gz" _source() { urls=( "${GIMME_DOWNLOAD_BASE}/go${1}.src.tar.gz" "https://github.com/golang/go/archive/go${1}.tar.gz" ) _do_curls "${2}" "${urls[@]}" } # _fetch "dir" _fetch() { mkdir -p "$(dirname "${1}")" if [[ -d "${1}/.git" ]]; then ( cd "${1}" git remote set-url origin "${GIMME_GO_GIT_REMOTE}" git fetch -q --all && git fetch -q --tags ) return fi git clone -q "${GIMME_GO_GIT_REMOTE}" "${1}" } # _checkout "version" "dir" # NB: might emit a "renamed version" on stdout _checkout() { local spec="${1:?}" godir="${2:?}" # We are called twice, once during validation that a version was given and # later during build. We don't want to fetch twice, so we are fetching # during the validation only, in the caller. if [[ "${spec}" =~ ^[0-9a-f]{6,}$ ]]; then # We always treat this as a commit sha, whether instead of doing # branch tests etc. It looks like a commit sha and the Go maintainers # aren't daft enough to use pure hex for a tag or branch. git -C "$godir" reset -q --hard "${spec}" || return 1 return 0 fi # If spec looks like HEAD^{something} or HEAD^^^ then trying # origin/$spec would succeed but we'd write junk to the filesystem, # propagating annoying characters out. local retval probe_named disallow rev probe_named=1 disallow='[@^~:{}]' if [[ "${spec}" =~ $disallow ]]; then probe_named=0 [[ "${spec}" != "@" ]] || spec="HEAD" fi try_spec() { git -C "${godir}" reset -q --hard "$@" -- 2>/dev/null; } retval=1 if ((probe_named)); then retval=0 try_spec "origin/${spec}" || try_spec "origin/go${spec}" || { [[ "${spec}" == "tip" ]] && try_spec origin/master; } || try_spec "refs/tags/${spec}" || try_spec "refs/tags/go${spec}" || retval=1 fi if ((retval)); then retval=0 # We're about to reset anyway, if we succeed, so we should reset to a # known state before parsing what might be relative specs try_spec origin/master && rev="$(git -C "${godir}" rev-parse --verify -q "${spec}^{object}")" && try_spec "${rev}" && git -C "${godir}" rev-parse --verify -q --short=12 "${rev}" || retval=1 # that rev-parse prints to stdout, so we can affect the version seen fi unset -f try_spec return $retval } # _extract "file.tar.gz" "dir" _extract() { mkdir -p "${2}" if [[ "${1}" == *.tar.gz ]]; then tar -xf "${1}" -C "${2}" --strip-components 1 else unzip -q "${1}" -d "${2}" mv "${2}"/go/* "${2}" rmdir "${2}"/go fi } # _setup_bootstrap _setup_bootstrap() { local versions=("1.18" "1.17" "1.16" "1.15" "1.14" "1.13" "1.12" "1.11" "1.10" "1.9" "1.8" "1.7" "1.6" "1.5" "1.4") # try existing for v in "${versions[@]}"; do for candidate in "${GIMME_ENV_PREFIX}/go${v}"*".env"; do if [ -s "${candidate}" ]; then # shellcheck source=/dev/null GOROOT_BOOTSTRAP="$(source "${candidate}" 2>/dev/null && go env GOROOT)" export GOROOT_BOOTSTRAP return 0 fi done done # try binary for v in "${versions[@]}"; do if [ -n "$(_try_binary "${v}" "${GIMME_HOSTARCH}")" ]; then export GOROOT_BOOTSTRAP="${GIMME_VERSION_PREFIX}/go${v}.${GIMME_OS}.${GIMME_HOSTARCH}" return 0 fi done echo >&2 "Unable to setup go bootstrap from existing or binary" return 1 } # _compile "dir" _compile() { ( if grep -q GOROOT_BOOTSTRAP "${1}/src/make.bash" &>/dev/null; then _setup_bootstrap || return 1 fi cd "${1}" if [[ -d .git ]]; then git clean -dfx -q fi cd src export GOOS="${GIMME_OS}" GOARCH="${GIMME_ARCH}" export CGO_ENABLED="${GIMME_CGO_ENABLED}" export CC_FOR_TARGET="${GIMME_CC_FOR_TARGET}" local make_log="${1}/make.${GOOS}.${GOARCH}.log" if [[ "${GIMME_DEBUG}" -ge "2" ]]; then ./make.bash -v 2>&1 | tee "${make_log}" 1>&2 || return 1 else ./make.bash &>"${make_log}" || return 1 fi ) } _try_install_race() { if [[ ! "${GIMME_INSTALL_RACE}" ]]; then return 0 fi "${1}/bin/go" install -race std } _can_compile() { cat >"${GIMME_TMP}/test.go" <<'EOF' package main import "os" func main() { os.Exit(0) } EOF "${1}/bin/go" run "${GIMME_TMP}/test.go" } # _env "dir" _env() { [[ -d "${1}/bin" && -x "${1}/bin/go" ]] || return 1 # if we try to run a Darwin binary on Linux, we need to fail so 'auto' can fallback to cross-compiling from source # automatically GOROOT="${1}" GOFLAGS="" "${1}/bin/go" version &>/dev/null || return 1 # https://twitter.com/davecheney/status/431581286918934528 # we have to GOROOT sometimes because we use official release binaries in unofficial locations :( # # Issue 87 leads to: # No, we should _always_ set GOROOT when using official release binaries, and sanest to just always set it. # The "avoid setting it" is _only_ for people using official releases in official locations. # Tools like `gimme` are the reason that GOROOT-in-env exists. echo if [[ "$(GOROOT="${1}" "${1}/bin/go" env GOHOSTOS)" == "${GIMME_OS}" ]]; then echo 'unset GOOS;' else echo 'export GOOS="'"${GIMME_OS}"'";' fi if [[ "$(GOROOT="${1}" "${1}/bin/go" env GOHOSTARCH)" == "${GIMME_ARCH}" ]]; then echo 'unset GOARCH;' else echo 'export GOARCH="'"${GIMME_ARCH}"'";' fi echo "export GOROOT='${1}';" # shellcheck disable=SC2016 echo 'export PATH="'"${1}/bin"':${PATH}";' if [[ -z "${GIMME_SILENT_ENV}" ]]; then echo 'go version >&2;' fi echo } # _env_alias "dir" "env-file" _env_alias() { if [[ "${GIMME_NO_ENV_ALIAS}" ]]; then echo "${2}" return fi if [[ "$(GOROOT="${1}" "${1}/bin/go" env GOHOSTOS)" == "${GIMME_OS}" && "$(GOROOT="${1}" "${1}/bin/go" env GOHOSTARCH)" == "${GIMME_ARCH}" ]]; then # GIMME_GO_VERSION might be a branch, which can contain '/' local dest="${GIMME_ENV_PREFIX}/go${GIMME_GO_VERSION//\//__}.env" cp "${2}" "${dest}" ln -sf "${dest}" "${GIMME_ENV_PREFIX}/latest.env" echo "${dest}" else echo "${2}" fi } _try_existing() { case "${1}" in binary) local existing_ver="${GIMME_VERSION_PREFIX}/go${GIMME_GO_VERSION}.${GIMME_OS}.${GIMME_ARCH}" local existing_env="${GIMME_ENV_PREFIX}/go${GIMME_GO_VERSION}.${GIMME_OS}.${GIMME_ARCH}.env" ;; source) local existing_ver="${GIMME_VERSION_PREFIX}/go${GIMME_GO_VERSION}.src" local existing_env="${GIMME_ENV_PREFIX}/go${GIMME_GO_VERSION}.src.env" ;; *) _try_existing binary || _try_existing source return $? ;; esac if [[ -x "${existing_ver}/bin/go" && -s "${existing_env}" ]]; then # newer envs have existing semi-colon at end of line, because newer gimme # puts them there; envs created before that change lack those semi-colons # and should gain them, to make it easier for people using eval without # double-quoting the command substition. sed -e 's/\([^;]\)$/\1;/' <"${existing_env}" # gimme is the corner-case where GOROOT _should_ be overriden, since if the # ancilliary tooling's system-internal DefaultGoroot exists, and GOROOT is # unset, then it will be used and the wrong golang will be picked up. # Lots of old installs won't have GOROOT; munge it from $PATH if grep -qs '^unset GOROOT' -- "${existing_env}"; then sed -n -e 's/^export PATH="\(.*\)\/bin:.*$/export GOROOT='"'"'\1'"'"';/p' <"${existing_env}" echo fi # Export the same variables whether building new or using existing echo "export GIMME_ENV='${existing_env}';" return fi return 1 } # _try_binary "version" "arch" _try_binary() { local version=${1} local arch=${2} local bin_tgz="${GIMME_TMP}/go${version}.${GIMME_OS}.${arch}.tar.gz" local bin_dir="${GIMME_VERSION_PREFIX}/go${version}.${GIMME_OS}.${arch}" local bin_env="${GIMME_ENV_PREFIX}/go${version}.${GIMME_OS}.${arch}.env" [[ "${version}" =~ ${ALLOWED_UPSTREAM_VERSION_RE} ]] || return 1 if [ "${GIMME_OS}" = 'windows' ]; then bin_tgz=${bin_tgz%.tar.gz}.zip fi _binary "${version}" "${bin_tgz}" "${arch}" || return 1 _extract "${bin_tgz}" "${bin_dir}" || return 1 _env "${bin_dir}" | tee "${bin_env}" || return 1 echo "export GIMME_ENV=\"$(_env_alias "${bin_dir}" "${bin_env}")\"" } _try_source() { local src_tgz="${GIMME_TMP}/go${GIMME_GO_VERSION}.src.tar.gz" local src_dir="${GIMME_VERSION_PREFIX}/go${GIMME_GO_VERSION}.src" local src_env="${GIMME_ENV_PREFIX}/go${GIMME_GO_VERSION}.src.env" [[ "${GIMME_GO_VERSION}" =~ ${ALLOWED_UPSTREAM_VERSION_RE} ]] || return 1 _source "${GIMME_GO_VERSION}" "${src_tgz}" || return 1 _extract "${src_tgz}" "${src_dir}" || return 1 _compile "${src_dir}" || return 1 _try_install_race "${src_dir}" || return 1 _env "${src_dir}" | tee "${src_env}" || return 1 echo "export GIMME_ENV=\"$(_env_alias "${src_dir}" "${src_env}")\"" } # We do _not_ try to use any version caching with _try_existing(), but instead # build afresh each time. We don't want to deal with someone moving the repo # to other-version, doing an install, then resetting it back to # last-version-we-saw and thus introducing conflicts. # # If you want to re-use a built-at-spec version, then avoid moving the repo # and source the generated .env manually. # Note that the env will just refer to the 'go' directory, so it's not safe # to reuse anyway. _try_git() { local git_dir="${GIMME_VERSION_PREFIX}/go" local git_env="${GIMME_ENV_PREFIX}/go.git.${GIMME_OS}.${GIMME_ARCH}.env" local resolved_sha # Any tags should have been resolved when we asserted that we were # given a version, so no need to handle that here. _checkout "${GIMME_GO_VERSION}" "${git_dir}" >/dev/null || return 1 _compile "${git_dir}" || return 1 _try_install_race "${git_dir}" || return 1 _env "${git_dir}" | tee "${git_env}" || return 1 echo "export GIMME_ENV=\"$(_env_alias "${git_dir}" "${git_env}")\"" } _wipe_version() { local env_file="${GIMME_ENV_PREFIX}/go${1}.${GIMME_OS}.${GIMME_ARCH}.env" if [[ -s "${env_file}" ]]; then rm -rf "$(awk -F\" '/GOROOT/ { print $2 }' "${env_file}")" rm -f "${env_file}" fi } _list_versions() { if [ ! -d "${GIMME_VERSION_PREFIX}" ]; then return 0 fi local current_version current_version="$(go env GOROOT 2>/dev/null)" current_version="${current_version##*/go}" current_version="${current_version%%.${GIMME_OS}.*}" # 1.1 1.10 1.2 is bad; zsh has `setopt numeric_glob_sort` but bash # doesn't appear to have anything like that. for d in "${GIMME_VERSION_PREFIX}/go"*".${GIMME_OS}."*; do local cleaned="${d##*/go}" cleaned="${cleaned%%.${GIMME_OS}.*}" echo "${cleaned}" done | _version_sort | while read -r cleaned; do echo -en "${cleaned}" if [[ "${cleaned}" == "${current_version}" ]]; then echo -en ' <= current' >&2 fi echo done } _update_remote_known_list_if_needed() { # shellcheck disable=SC1117 local exp="go([[:alnum:]\.]*)\.src.*" # :alnum: catches beta versions too local list="${GIMME_VERSION_PREFIX}/known-versions.txt" local dlfile="${GIMME_TMP}/known-dl" if [[ -e "${list}" ]] && ! ((force_known_update)) && ! _file_older_than_secs "${list}" "${GIMME_KNOWN_CACHE_MAX}"; then echo "${list}" return 0 fi [[ -d "${GIMME_VERSION_PREFIX:?}" ]] || mkdir -p -- "${GIMME_VERSION_PREFIX}" _do_curl "${GIMME_LIST_KNOWN}" "${dlfile}" while read -r line; do if [[ "${line}" =~ ${exp} ]]; then echo "${BASH_REMATCH[1]}" fi done <"${dlfile}" | _version_sort | uniq >"${list}.new" rm -f "${list}" &>/dev/null mv "${list}.new" "${list}" rm -f "${dlfile}" echo "${list}" return 0 } _list_known() { local knownfile knownfile="$(_update_remote_known_list_if_needed)" ( _list_versions 2>/dev/null cat -- "${knownfile}" ) | grep . | _version_sort | uniq } # For the "invoked on commandline" case, we want to always pass unknown # strings through, so that we can be a uniqueness filter, but for unknown # names we want to exit with a value other than 1, so we document that # we'll exit 2. For use by other functions, 2 is as good as 1. _resolve_version() { case "${1}" in stable) _get_curr_stable return 0 ;; oldstable) _get_old_stable return 0 ;; tip) echo "tip" return 0 ;; *.x) true ;; *) echo "${1}" local GIMME_GO_VERSION="$1" local ASSERT_ABORT='return' if _assert_version_given 2>/dev/null; then return 0 fi warn "version specifier '${1}' unknown" return 2 ;; esac # We have a .x suffix local base="${1%.x}" local ver last='' known known="$(_update_remote_known_list_if_needed)" # will be version-sorted if [[ ! "${base}" =~ ^[0-9.]+$ ]]; then warn "resolve pattern '${base}.x' invalid for .x finding" return 2 fi # The `.x` is optional; "1.10" matches "1.10.x" local search="^${base//./\\.}(\\.[0-9.]+)?\$" # avoid regexp attacks while read -r ver; do [[ "${ver}" =~ $search ]] || continue last="${ver}" done <"$known" if [[ -n "${last}" ]]; then echo "${last}" return 0 fi echo "${1}" warn "given '${1}' but no release for '${base}' found" return 2 } _realpath() { # shellcheck disable=SC2005 [ -d "$1" ] && echo "$(cd "$1" && pwd)" || echo "$(cd "$(dirname "$1")" && pwd)/$(basename "$1")" } _get_curr_stable() { local stable="${GIMME_VERSION_PREFIX}/stable" if _file_older_than_secs "${stable}" 86400; then _update_stable "${stable}" fi cat "${stable}" } _get_old_stable() { local oldstable="${GIMME_VERSION_PREFIX}/oldstable" if _file_older_than_secs "${oldstable}" 86400; then _update_oldstable "${oldstable}" fi cat "${oldstable}" } _update_stable() { local stable="${1}" local url="https://golang.org/VERSION?m=text" _do_curl "${url}" "${stable}" sed -i.old -e 's/^go\(.*\)/\1/' "${stable}" rm -f "${stable}.old" } _update_oldstable() { local oldstable="${1}" local oldstable_x oldstable_x=$(_get_curr_stable | awk -F. '{ $2--; print $1 "." $2 "." "x" }') _resolve_version "${oldstable_x}" >"${oldstable}" } _last_mod_timestamp() { local filename="${1}" case "${GIMME_HOSTOS}" in darwin | *bsd) stat -f %m "${filename}" ;; linux) stat -c %Y "${filename}" ;; esac } _file_older_than_secs() { local file="${1}" local age_secs="${2}" local ts # if the file does not exist, we return true, as the cache needs updating ts="$(_last_mod_timestamp "${file}" 2>/dev/null)" || return 0 ((($(date +%s) - ts) > age_secs)) } _assert_version_given() { # By the time we're called, aliases such as "stable" must have been resolved # but we could be a reference in git. # # Versions can include suffices such as in "1.8beta2", so our assumption is that # there will always be a minor present; the first public release was "1.0" so # we assume "2.0" not "2". if [[ -z "${GIMME_GO_VERSION}" ]]; then echo >&2 'error: no GIMME_GO_VERSION supplied' echo >&2 " ex: GIMME_GO_VERSION=1.4.1 ${0} ${*}" echo >&2 " ex: ${0} 1.4.1 ${*}" ${ASSERT_ABORT:-exit} 1 fi # Note: _resolve_version calls back to us (_assert_version_given), but # only for cases where the version does not end with .x, so this should # be safe. # This should be untangled. PRs accepted, good starter project. if [[ "${GIMME_GO_VERSION}" == *.x ]]; then GIMME_GO_VERSION="$(_resolve_version "${GIMME_GO_VERSION}")" || ${ASSERT_ABORT:-exit} 1 fi if [[ "${GIMME_GO_VERSION}" == +([[:digit:]]).+([[:digit:]])* ]]; then return 0 fi # Here we resolve symbolic references. If we don't, then we get some # random git tag name being accepted as valid and then we try to # curl garbage from upstream. if [[ "${GIMME_TYPE}" == "auto" || "${GIMME_TYPE}" == "git" ]]; then local git_dir="${GIMME_VERSION_PREFIX}/go" local resolved_sha _fetch "${git_dir}" if resolved_sha="$(_checkout "${GIMME_GO_VERSION}" "${git_dir}")"; then if [[ -n "${resolved_sha}" ]]; then # Break our normal silence, this one really needs to be seen on stderr # always; auditability and knowing what version of Go you got wins. warn "resolved '${GIMME_GO_VERSION}' to '${resolved_sha}'" GIMME_GO_VERSION="${resolved_sha}" fi return 0 fi fi echo >&2 'error: GIMME_GO_VERSION not recognized as valid' echo >&2 " got: ${GIMME_GO_VERSION}" ${ASSERT_ABORT:-exit} 1 } _exclude_from_backups() { # Please avoid anything which requires elevated privileges or is obnoxious # enough to offend the invoker case "${GIMME_HOSTOS}" in darwin) # Darwin: Time Machine is "standard", we can add others. The default # mechanism is sticky, as an attribute on the dir, requires no # privileges, is idempotent (and doesn't support -- to end flags). tmutil addexclusion "$@" ;; esac } _versint() { IFS=" " read -r -a args <<<"${1//[^0-9]/ }" printf '1%03d%03d%03d%03d' "${args[@]}" } _to_goarch() { case "${1}" in aarch64) echo "arm64" ;; *) echo "${1}" ;; esac } : "${GIMME_OS:=$(uname -s | tr '[:upper:]' '[:lower:]')}" : "${GIMME_HOSTOS:=$(uname -s | tr '[:upper:]' '[:lower:]')}" : "${GIMME_ARCH:=$(_to_goarch "$(uname -m)")}" : "${GIMME_HOSTARCH:=$(_to_goarch "$(uname -m)")}" : "${GIMME_ENV_PREFIX:=${HOME}/.gimme/envs}" : "${GIMME_VERSION_PREFIX:=${HOME}/.gimme/versions}" : "${GIMME_TMP:=${TMPDIR:-/tmp}/gimme}" : "${GIMME_GO_GIT_REMOTE:=https://github.com/golang/go.git}" : "${GIMME_TYPE:=auto}" # 'auto', 'binary', 'source', or 'git' : "${GIMME_BINARY_OSX:=osx10.8}" : "${GIMME_DOWNLOAD_BASE:=https://dl.google.com/go}" : "${GIMME_LIST_KNOWN:=https://golang.org/dl}" : "${GIMME_KNOWN_CACHE_MAX:=10800}" # The version prefix must be an absolute path case "${GIMME_VERSION_PREFIX}" in /*) true ;; *) echo >&2 " Fixing GIMME_VERSION_PREFIX from relative: $GIMME_VERSION_PREFIX" GIMME_VERSION_PREFIX="$(pwd)/${GIMME_VERSION_PREFIX}" echo >&2 " to: $GIMME_VERSION_PREFIX" ;; esac case "${GIMME_OS}" in mingw* | msys_nt*) # Minimalist GNU for Windows GIMME_OS='windows' if [ "${GIMME_ARCH}" = 'i686' ]; then GIMME_ARCH="386" else GIMME_ARCH="amd64" fi ;; esac force_install=0 force_known_update=0 while [[ $# -gt 0 ]]; do case "${1}" in -h | --help | help | wat) _old_ifs="$IFS" IFS=';' awk '/^#\+ / { sub(/^#\+ /, "", $0) ; sub(/-$/, "", $0) ; print $0 }' "$0" | while read -r line; do eval "echo \"$line\"" done IFS="$_old_ifs" exit 0 ;; -V | --version | version) echo "${GIMME_VERSION}" exit 0 ;; -r | --resolve | resolve) # The normal mkdir of versions is below; we don't want to move it up # to where we create files just if asked our version; thus # _resolve_version has to mkdir the versions dir itself. if [[ $# -ge 2 ]]; then _resolve_version "${2}" elif [[ -n "${GIMME_GO_VERSION:-}" ]]; then _resolve_version "${GIMME_GO_VERSION}" else die "resolve must be given a version to resolve" fi exit $? ;; -l | --list | list) _list_versions exit 0 ;; -k | --known | known) _list_known exit 0 ;; -f | --force | force) force_install=1 ;; --force-known-update | force-known-update) force_known_update=1 ;; -i | install) true # ignore a dummy argument ;; *) break ;; esac shift done if [[ -n "${1}" ]]; then GIMME_GO_VERSION="${1}" fi if [[ -n "${2}" ]]; then GIMME_VERSION_PREFIX="${2}" fi case "${GIMME_ARCH}" in x86_64) GIMME_ARCH=amd64 ;; x86) GIMME_ARCH=386 ;; arm64) if [[ "${GIMME_GO_VERSION}" != master && "$(_versint "${GIMME_GO_VERSION}")" < "$(_versint 1.5)" ]]; then echo >&2 "error: ${GIMME_ARCH} is not supported by this go version" echo >&2 "try go1.5 or newer" exit 1 fi if [[ "${GIMME_HOSTOS}" == "linux" && "${GIMME_HOSTARCH}" != "${GIMME_ARCH}" ]]; then : "${GIMME_CC_FOR_TARGET:="aarch64-linux-gnu-gcc"}" fi ;; arm*) GIMME_ARCH=arm ;; esac case "${GIMME_HOSTARCH}" in x86_64) GIMME_HOSTARCH=amd64 ;; x86) GIMME_HOSTARCH=386 ;; arm64) ;; arm*) GIMME_HOSTARCH=arm ;; esac case "${GIMME_GO_VERSION}" in stable) GIMME_GO_VERSION=$(_get_curr_stable) ;; oldstable) GIMME_GO_VERSION=$(_get_old_stable) ;; esac _assert_version_given "$@" ((force_install)) && _wipe_version "${GIMME_GO_VERSION}" unset GOARCH unset GOBIN unset GOOS unset GOPATH unset GOROOT unset CGO_ENABLED unset CC_FOR_TARGET # GO111MODULE breaks build of Go itself unset GO111MODULE mkdir -p "${GIMME_VERSION_PREFIX}" "${GIMME_ENV_PREFIX}" # The envs dir stays small and provides a record of what had been installed # whereas the versions dir grows by hundreds of MB per version and is not # intended to support local modifications (as that subverts the point of gimme) # _and_ is a cache, so we're unilaterally declaring that the contents of # the versions dir should be excluded from system backups. _exclude_from_backups "${GIMME_VERSION_PREFIX}" GIMME_VERSION_PREFIX="$(_realpath "${GIMME_VERSION_PREFIX}")" GIMME_ENV_PREFIX="$(_realpath "${GIMME_ENV_PREFIX}")" if ! case "${GIMME_TYPE}" in binary) _try_existing binary || _try_binary "${GIMME_GO_VERSION}" "${GIMME_ARCH}" ;; source) _try_existing source || _try_source || _try_git ;; git) _try_git ;; auto) _try_existing || _try_binary "${GIMME_GO_VERSION}" "${GIMME_ARCH}" || _try_source || _try_git ;; *) echo >&2 "I don't know how to '${GIMME_TYPE}'." echo >&2 " Try 'auto', 'binary', 'source', or 'git'." exit 1 ;; esac; then echo >&2 "I don't have any idea what to do with '${GIMME_GO_VERSION}'." echo >&2 " (using download type '${GIMME_TYPE}')" exit 1 fi kubernetes-sigs-kind-49aeee6/hack/tools/000077500000000000000000000000001524365506300203325ustar00rootroot00000000000000kubernetes-sigs-kind-49aeee6/hack/tools/.golangci.yml000066400000000000000000000027161524365506300227240ustar00rootroot00000000000000version: "2" run: timeout: 3m linters: default: none enable: - errcheck - govet - ineffassign - staticcheck - gochecknoinits - revive # replaces golint for now - misspell - unparam settings: staticcheck: checks: - all revive: rules: - name: var-naming arguments: - [] - [] - - skip-package-name-checks: true exclusions: presets: - std-error-handling - common-false-positives rules: # this requires renaming all unused parameters, we'd rather leave a preferred # placeholder name in place when implementing an interface etc. # we can revisit this later, right now it's generating a lot of new warnings # after upgrading golangci-lint - linters: - revive text: "^unused-parameter: .*" # Not all package docstrings add value, so we do not want to enforce it - linters: - revive text: "package-comments: should have a package comment" - linters: - staticcheck text: "ST1000: at least one file in a package should have a package comment" - linters: - staticcheck path: pkg/cmd text: "ST1005: error strings should not be capitalized" - linters: - staticcheck path: images/kindnetd/cmd text: "ST1005: error strings should not be capitalized" formatters: enable: - gofmt kubernetes-sigs-kind-49aeee6/hack/tools/README.md000066400000000000000000000001701524365506300216070ustar00rootroot00000000000000This directory contains a stub go module used to track version of development tools like the Kubernetes code generators.kubernetes-sigs-kind-49aeee6/hack/tools/go.mod000066400000000000000000000257541524365506300214550ustar00rootroot00000000000000module sigs.k8s.io/kind/hack/tools go 1.25.0 require ( github.com/golangci/golangci-lint/v2 v2.11.3 gotest.tools/gotestsum v1.12.0 k8s.io/code-generator v0.31.0 ) require ( 4d63.com/gocheckcompilerdirectives v1.3.0 // indirect 4d63.com/gochecknoglobals v0.2.2 // indirect codeberg.org/chavacava/garif v0.2.0 // indirect codeberg.org/polyfloyd/go-errorlint v1.9.0 // indirect dev.gaijin.team/go/exhaustruct/v4 v4.0.0 // indirect dev.gaijin.team/go/golib v0.6.0 // indirect github.com/4meepo/tagalign v1.4.3 // indirect github.com/Abirdcfly/dupword v0.1.7 // indirect github.com/AdminBenni/iota-mixing v1.0.0 // indirect github.com/AlwxSin/noinlineerr v1.0.5 // indirect github.com/Antonboom/errname v1.1.1 // indirect github.com/Antonboom/nilnil v1.1.1 // indirect github.com/Antonboom/testifylint v1.6.4 // indirect github.com/BurntSushi/toml v1.6.0 // indirect github.com/Djarvur/go-err113 v0.1.1 // indirect github.com/Masterminds/semver/v3 v3.4.0 // indirect github.com/MirrexOne/unqueryvet v1.5.4 // indirect github.com/OpenPeeDeeP/depguard/v2 v2.2.1 // indirect github.com/alecthomas/chroma/v2 v2.23.1 // indirect github.com/alecthomas/go-check-sumtype v0.3.1 // indirect github.com/alexkohler/nakedret/v2 v2.0.6 // indirect github.com/alexkohler/prealloc v1.1.0 // indirect github.com/alfatraining/structtag v1.0.0 // indirect github.com/alingse/asasalint v0.0.11 // indirect github.com/alingse/nilnesserr v0.2.0 // indirect github.com/ashanbrown/forbidigo/v2 v2.3.0 // indirect github.com/ashanbrown/makezero/v2 v2.1.0 // indirect github.com/aymanbagabas/go-osc52/v2 v2.0.1 // indirect github.com/beorn7/perks v1.0.1 // indirect github.com/bitfield/gotestdox v0.2.2 // indirect github.com/bkielbasa/cyclop v1.2.3 // indirect github.com/blizzy78/varnamelen v0.8.0 // indirect github.com/bombsimon/wsl/v4 v4.7.0 // indirect github.com/bombsimon/wsl/v5 v5.6.0 // indirect github.com/breml/bidichk v0.3.3 // indirect github.com/breml/errchkjson v0.4.1 // indirect github.com/butuzov/ireturn v0.4.0 // indirect github.com/butuzov/mirror v1.3.0 // indirect github.com/catenacyber/perfsprint v0.10.1 // indirect github.com/ccojocar/zxcvbn-go v1.0.4 // indirect github.com/cespare/xxhash/v2 v2.3.0 // indirect github.com/charithe/durationcheck v0.0.11 // indirect github.com/charmbracelet/colorprofile v0.2.3-0.20250311203215-f60798e515dc // indirect github.com/charmbracelet/lipgloss v1.1.0 // indirect github.com/charmbracelet/x/ansi v0.10.1 // indirect github.com/charmbracelet/x/cellbuf v0.0.13-0.20250311204145-2c3ea96c31dd // indirect github.com/charmbracelet/x/term v0.2.1 // indirect github.com/ckaznocha/intrange v0.3.1 // indirect github.com/curioswitch/go-reassign v0.3.0 // indirect github.com/daixiang0/gci v0.13.7 // indirect github.com/dave/dst v0.27.3 // indirect github.com/davecgh/go-spew v1.1.2-0.20180830191138-d8f796af33cc // indirect github.com/denis-tingaikin/go-header v0.5.0 // indirect github.com/dlclark/regexp2 v1.11.5 // indirect github.com/dnephin/pflag v1.0.7 // indirect github.com/ettle/strcase v0.2.0 // indirect github.com/fatih/color v1.18.0 // indirect github.com/fatih/structtag v1.2.0 // indirect github.com/firefart/nonamedreturns v1.0.6 // indirect github.com/fsnotify/fsnotify v1.7.0 // indirect github.com/fzipp/gocyclo v0.6.0 // indirect github.com/ghostiam/protogetter v0.3.20 // indirect github.com/go-critic/go-critic v0.14.3 // indirect github.com/go-logr/logr v1.4.3 // indirect github.com/go-toolsmith/astcast v1.1.0 // indirect github.com/go-toolsmith/astcopy v1.1.0 // indirect github.com/go-toolsmith/astequal v1.2.0 // indirect github.com/go-toolsmith/astfmt v1.1.0 // indirect github.com/go-toolsmith/astp v1.1.0 // indirect github.com/go-toolsmith/strparse v1.1.0 // indirect github.com/go-toolsmith/typep v1.1.0 // indirect github.com/go-viper/mapstructure/v2 v2.5.0 // indirect github.com/go-xmlfmt/xmlfmt v1.1.3 // indirect github.com/gobwas/glob v0.2.3 // indirect github.com/godoc-lint/godoc-lint v0.11.2 // indirect github.com/gofrs/flock v0.13.0 // indirect github.com/golang/protobuf v1.5.4 // indirect github.com/golangci/asciicheck v0.5.0 // indirect github.com/golangci/dupl v0.0.0-20250308024227-f665c8d69b32 // indirect github.com/golangci/go-printf-func-name v0.1.1 // indirect github.com/golangci/gofmt v0.0.0-20250106114630-d62b90e6713d // indirect github.com/golangci/golines v0.15.0 // indirect github.com/golangci/misspell v0.8.0 // indirect github.com/golangci/plugin-module-register v0.1.2 // indirect github.com/golangci/revgrep v0.8.0 // indirect github.com/golangci/swaggoswag v0.0.0-20250504205917-77f2aca3143e // indirect github.com/golangci/unconvert v0.0.0-20250410112200-a129a6e6413e // indirect github.com/google/go-cmp v0.7.0 // indirect github.com/google/shlex v0.0.0-20191202100458-e7afc7fbc510 // indirect github.com/gordonklaus/ineffassign v0.2.0 // indirect github.com/gostaticanalysis/analysisutil v0.7.1 // indirect github.com/gostaticanalysis/comment v1.5.0 // indirect github.com/gostaticanalysis/forcetypeassert v0.2.0 // indirect github.com/gostaticanalysis/nilerr v0.1.2 // indirect github.com/hashicorp/go-immutable-radix/v2 v2.1.0 // indirect github.com/hashicorp/go-version v1.8.0 // indirect github.com/hashicorp/golang-lru/v2 v2.0.7 // indirect github.com/hashicorp/hcl v1.0.0 // indirect github.com/hexops/gotextdiff v1.0.3 // indirect github.com/inconshreveable/mousetrap v1.1.0 // indirect github.com/jgautheron/goconst v1.8.2 // indirect github.com/jingyugao/rowserrcheck v1.1.1 // indirect github.com/jjti/go-spancheck v0.6.5 // indirect github.com/julz/importas v0.2.0 // indirect github.com/karamaru-alpha/copyloopvar v1.2.2 // indirect github.com/kisielk/errcheck v1.10.0 // indirect github.com/kkHAIKE/contextcheck v1.1.6 // indirect github.com/kulti/thelper v0.7.1 // indirect github.com/kunwardeep/paralleltest v1.0.15 // indirect github.com/lasiar/canonicalheader v1.1.2 // indirect github.com/ldez/exptostd v0.4.5 // indirect github.com/ldez/gomoddirectives v0.8.0 // indirect github.com/ldez/grignotin v0.10.1 // indirect github.com/ldez/structtags v0.6.1 // indirect github.com/ldez/tagliatelle v0.7.2 // indirect github.com/ldez/usetesting v0.5.0 // indirect github.com/leonklingele/grouper v1.1.2 // indirect github.com/lucasb-eyer/go-colorful v1.2.0 // indirect github.com/macabu/inamedparam v0.2.0 // indirect github.com/magiconair/properties v1.8.6 // indirect github.com/manuelarte/embeddedstructfieldcheck v0.4.0 // indirect github.com/manuelarte/funcorder v0.5.0 // indirect github.com/maratori/testableexamples v1.0.1 // indirect github.com/maratori/testpackage v1.1.2 // indirect github.com/matoous/godox v1.1.0 // indirect github.com/mattn/go-colorable v0.1.14 // indirect github.com/mattn/go-isatty v0.0.20 // indirect github.com/mattn/go-runewidth v0.0.16 // indirect github.com/matttproud/golang_protobuf_extensions v1.0.1 // indirect github.com/mgechev/revive v1.15.0 // indirect github.com/mitchellh/go-homedir v1.1.0 // indirect github.com/mitchellh/mapstructure v1.5.0 // indirect github.com/moricho/tparallel v0.3.2 // indirect github.com/muesli/termenv v0.16.0 // indirect github.com/nakabonne/nestif v0.3.1 // indirect github.com/nishanths/exhaustive v0.12.0 // indirect github.com/nishanths/predeclared v0.2.2 // indirect github.com/nunnatsa/ginkgolinter v0.23.0 // indirect github.com/pelletier/go-toml v1.9.5 // indirect github.com/pelletier/go-toml/v2 v2.2.4 // indirect github.com/pmezard/go-difflib v1.0.0 // indirect github.com/prometheus/client_golang v1.12.1 // indirect github.com/prometheus/client_model v0.2.0 // indirect github.com/prometheus/common v0.32.1 // indirect github.com/prometheus/procfs v0.7.3 // indirect github.com/quasilyte/go-ruleguard v0.4.5 // indirect github.com/quasilyte/go-ruleguard/dsl v0.3.23 // indirect github.com/quasilyte/gogrep v0.5.0 // indirect github.com/quasilyte/regex/syntax v0.0.0-20210819130434-b3f0c404a727 // indirect github.com/quasilyte/stdinfo v0.0.0-20220114132959-f7386bf02567 // indirect github.com/raeperd/recvcheck v0.2.0 // indirect github.com/rivo/uniseg v0.4.7 // indirect github.com/rogpeppe/go-internal v1.14.1 // indirect github.com/ryancurrah/gomodguard v1.4.1 // indirect github.com/ryanrolds/sqlclosecheck v0.5.1 // indirect github.com/sanposhiho/wastedassign/v2 v2.1.0 // indirect github.com/santhosh-tekuri/jsonschema/v6 v6.0.2 // indirect github.com/sashamelentyev/interfacebloat v1.1.0 // indirect github.com/sashamelentyev/usestdlibvars v1.29.0 // indirect github.com/securego/gosec/v2 v2.24.8-0.20260309165252-619ce2117e08 // indirect github.com/sirupsen/logrus v1.9.4 // indirect github.com/sivchari/containedctx v1.0.3 // indirect github.com/sonatard/noctx v0.5.0 // indirect github.com/sourcegraph/go-diff v0.7.0 // indirect github.com/spf13/afero v1.15.0 // indirect github.com/spf13/cast v1.5.0 // indirect github.com/spf13/cobra v1.10.2 // indirect github.com/spf13/jwalterweatherman v1.1.0 // indirect github.com/spf13/pflag v1.0.10 // indirect github.com/spf13/viper v1.12.0 // indirect github.com/ssgreg/nlreturn/v2 v2.2.1 // indirect github.com/stbenjam/no-sprintf-host-port v0.3.1 // indirect github.com/stretchr/objx v0.5.2 // indirect github.com/stretchr/testify v1.11.1 // indirect github.com/subosito/gotenv v1.4.1 // indirect github.com/tetafro/godot v1.5.4 // indirect github.com/timakin/bodyclose v0.0.0-20241222091800-1db5c5ca4d67 // indirect github.com/timonwong/loggercheck v0.11.0 // indirect github.com/tomarrell/wrapcheck/v2 v2.12.0 // indirect github.com/tommy-muehle/go-mnd/v2 v2.5.1 // indirect github.com/ultraware/funlen v0.2.0 // indirect github.com/ultraware/whitespace v0.2.0 // indirect github.com/uudashr/gocognit v1.2.1 // indirect github.com/uudashr/iface v1.4.1 // indirect github.com/xen0n/gosmopolitan v1.3.0 // indirect github.com/xo/terminfo v0.0.0-20220910002029-abceb7e1c41e // indirect github.com/yagipy/maintidx v1.0.0 // indirect github.com/yeya24/promlinter v0.3.0 // indirect github.com/ykadowak/zerologlint v0.1.5 // indirect gitlab.com/bosi/decorder v0.4.2 // indirect go-simpler.org/musttag v0.14.0 // indirect go-simpler.org/sloglint v0.11.1 // indirect go.augendre.info/arangolint v0.4.0 // indirect go.augendre.info/fatcontext v0.9.0 // indirect go.uber.org/multierr v1.10.0 // indirect go.uber.org/zap v1.27.0 // indirect go.yaml.in/yaml/v3 v3.0.4 // indirect golang.org/x/exp/typeparams v0.0.0-20260209203927-2842357ff358 // indirect golang.org/x/mod v0.33.0 // indirect golang.org/x/sync v0.20.0 // indirect golang.org/x/sys v0.41.0 // indirect golang.org/x/term v0.39.0 // indirect golang.org/x/text v0.34.0 // indirect golang.org/x/tools v0.42.0 // indirect google.golang.org/protobuf v1.36.8 // indirect gopkg.in/ini.v1 v1.67.0 // indirect gopkg.in/yaml.v2 v2.4.0 // indirect gopkg.in/yaml.v3 v3.0.1 // indirect honnef.co/go/tools v0.7.0 // indirect k8s.io/gengo/v2 v2.0.0-20240228010128-51d4e06bde70 // indirect k8s.io/klog/v2 v2.130.1 // indirect mvdan.cc/gofumpt v0.9.2 // indirect mvdan.cc/unparam v0.0.0-20251027182757-5beb8c8f8f15 // indirect ) kubernetes-sigs-kind-49aeee6/hack/tools/go.sum000066400000000000000000003025031524365506300214700ustar00rootroot000000000000004d63.com/gocheckcompilerdirectives v1.3.0 h1:Ew5y5CtcAAQeTVKUVFrE7EwHMrTO6BggtEj8BZSjZ3A= 4d63.com/gocheckcompilerdirectives v1.3.0/go.mod h1:ofsJ4zx2QAuIP/NO/NAh1ig6R1Fb18/GI7RVMwz7kAY= 4d63.com/gochecknoglobals v0.2.2 h1:H1vdnwnMaZdQW/N+NrkT1SZMTBmcwHe9Vq8lJcYYTtU= 4d63.com/gochecknoglobals v0.2.2/go.mod h1:lLxwTQjL5eIesRbvnzIP3jZtG140FnTdz+AlMa+ogt0= cloud.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.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/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/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/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= codeberg.org/chavacava/garif v0.2.0 h1:F0tVjhYbuOCnvNcU3YSpO6b3Waw6Bimy4K0mM8y6MfY= codeberg.org/chavacava/garif v0.2.0/go.mod h1:P2BPbVbT4QcvLZrORc2T29szK3xEOlnl0GiPTJmEqBQ= codeberg.org/polyfloyd/go-errorlint v1.9.0 h1:VkdEEmA1VBpH6ecQoMR4LdphVI3fA4RrCh2an7YmodI= codeberg.org/polyfloyd/go-errorlint v1.9.0/go.mod h1:GPRRu2LzVijNn4YkrZYJfatQIdS+TrcK8rL5Xs24qw8= dev.gaijin.team/go/exhaustruct/v4 v4.0.0 h1:873r7aNneqoBB3IaFIzhvt2RFYTuHgmMjoKfwODoI1Y= dev.gaijin.team/go/exhaustruct/v4 v4.0.0/go.mod h1:aZ/k2o4Y05aMJtiux15x8iXaumE88YdiB0Ai4fXOzPI= dev.gaijin.team/go/golib v0.6.0 h1:v6nnznFTs4bppib/NyU1PQxobwDHwCXXl15P7DV5Zgo= dev.gaijin.team/go/golib v0.6.0/go.mod h1:uY1mShx8Z/aNHWDyAkZTkX+uCi5PdX7KsG1eDQa2AVE= dmitri.shuralyov.com/gpu/mtl v0.0.0-20190408044501-666a987793e9/go.mod h1:H6x//7gZCb22OMCxBHrMx7a5I7Hp++hsVxbQ4BYO7hU= github.com/4meepo/tagalign v1.4.3 h1:Bnu7jGWwbfpAie2vyl63Zup5KuRv21olsPIha53BJr8= github.com/4meepo/tagalign v1.4.3/go.mod h1:00WwRjiuSbrRJnSVeGWPLp2epS5Q/l4UEy0apLLS37c= github.com/Abirdcfly/dupword v0.1.7 h1:2j8sInznrje4I0CMisSL6ipEBkeJUJAmK1/lfoNGWrQ= github.com/Abirdcfly/dupword v0.1.7/go.mod h1:K0DkBeOebJ4VyOICFdppB23Q0YMOgVafM0zYW0n9lF4= github.com/AdminBenni/iota-mixing v1.0.0 h1:Os6lpjG2dp/AE5fYBPAA1zfa2qMdCAWwPMCgpwKq7wo= github.com/AdminBenni/iota-mixing v1.0.0/go.mod h1:i4+tpAaB+qMVIV9OK3m4/DAynOd5bQFaOu+2AhtBCNY= github.com/AlwxSin/noinlineerr v1.0.5 h1:RUjt63wk1AYWTXtVXbSqemlbVTb23JOSRiNsshj7TbY= github.com/AlwxSin/noinlineerr v1.0.5/go.mod h1:+QgkkoYrMH7RHvcdxdlI7vYYEdgeoFOVjU9sUhw/rQc= github.com/Antonboom/errname v1.1.1 h1:bllB7mlIbTVzO9jmSWVWLjxTEbGBVQ1Ff/ClQgtPw9Q= github.com/Antonboom/errname v1.1.1/go.mod h1:gjhe24xoxXp0ScLtHzjiXp0Exi1RFLKJb0bVBtWKCWQ= github.com/Antonboom/nilnil v1.1.1 h1:9Mdr6BYd8WHCDngQnNVV0b554xyisFioEKi30sksufQ= github.com/Antonboom/nilnil v1.1.1/go.mod h1:yCyAmSw3doopbOWhJlVci+HuyNRuHJKIv6V2oYQa8II= github.com/Antonboom/testifylint v1.6.4 h1:gs9fUEy+egzxkEbq9P4cpcMB6/G0DYdMeiFS87UiqmQ= github.com/Antonboom/testifylint v1.6.4/go.mod h1:YO33FROXX2OoUfwjz8g+gUxQXio5i9qpVy7nXGbxDD4= github.com/BurntSushi/toml v0.3.1/go.mod h1:xHWCNGjB5oqiDr8zfno3MHue2Ht5sIBksp03qcyfWMU= github.com/BurntSushi/toml v1.6.0 h1:dRaEfpa2VI55EwlIW72hMRHdWouJeRF7TPYhI+AUQjk= github.com/BurntSushi/toml v1.6.0/go.mod h1:ukJfTF/6rtPPRCnwkur4qwRxa8vTRFBF0uk2lLoLwho= github.com/BurntSushi/xgb v0.0.0-20160522181843-27f122750802/go.mod h1:IVnqGOEym/WlBOVXweHU+Q+/VP0lqqI8lqeDx9IjBqo= github.com/Djarvur/go-err113 v0.1.1 h1:eHfopDqXRwAi+YmCUas75ZE0+hoBHJ2GQNLYRSxao4g= github.com/Djarvur/go-err113 v0.1.1/go.mod h1:IaWJdYFLg76t2ihfflPZnM1LIQszWOsFDh2hhhAVF6k= github.com/Masterminds/semver/v3 v3.4.0 h1:Zog+i5UMtVoCU8oKka5P7i9q9HgrJeGzI9SA1Xbatp0= github.com/Masterminds/semver/v3 v3.4.0/go.mod h1:4V+yj/TJE1HU9XfppCwVMZq3I84lprf4nC11bSS5beM= github.com/MirrexOne/unqueryvet v1.5.4 h1:38QOxShO7JmMWT+eCdDMbcUgGCOeJphVkzzRgyLJgsQ= github.com/MirrexOne/unqueryvet v1.5.4/go.mod h1:fs9Zq6eh1LRIhsDIsxf9PONVUjYdFHdtkHIgZdJnyPU= github.com/OpenPeeDeeP/depguard/v2 v2.2.1 h1:vckeWVESWp6Qog7UZSARNqfu/cZqvki8zsuj3piCMx4= github.com/OpenPeeDeeP/depguard/v2 v2.2.1/go.mod h1:q4DKzC4UcVaAvcfd41CZh0PWpGgzrVxUYBlgKNGquUo= github.com/alecthomas/assert/v2 v2.11.0 h1:2Q9r3ki8+JYXvGsDyBXwH3LcJ+WK5D0gc5E8vS6K3D0= github.com/alecthomas/assert/v2 v2.11.0/go.mod h1:Bze95FyfUr7x34QZrjL+XP+0qgp/zg8yS+TtBj1WA3k= github.com/alecthomas/chroma/v2 v2.23.1 h1:nv2AVZdTyClGbVQkIzlDm/rnhk1E9bU9nXwmZ/Vk/iY= github.com/alecthomas/chroma/v2 v2.23.1/go.mod h1:NqVhfBR0lte5Ouh3DcthuUCTUpDC9cxBOfyMbMQPs3o= github.com/alecthomas/go-check-sumtype v0.3.1 h1:u9aUvbGINJxLVXiFvHUlPEaD7VDULsrxJb4Aq31NLkU= github.com/alecthomas/go-check-sumtype v0.3.1/go.mod h1:A8TSiN3UPRw3laIgWEUOHHLPa6/r9MtoigdlP5h3K/E= github.com/alecthomas/repr v0.5.2 h1:SU73FTI9D1P5UNtvseffFSGmdNci/O6RsqzeXJtP0Qs= github.com/alecthomas/repr v0.5.2/go.mod h1:Fr0507jx4eOXV7AlPV6AVZLYrLIuIeSOWtW57eE/O/4= github.com/alecthomas/template v0.0.0-20160405071501-a0175ee3bccc/go.mod h1:LOuyumcjzFXgccqObfd/Ljyb9UuFJ6TxHnclSeseNhc= github.com/alecthomas/template v0.0.0-20190718012654-fb15b899a751/go.mod h1:LOuyumcjzFXgccqObfd/Ljyb9UuFJ6TxHnclSeseNhc= github.com/alecthomas/units v0.0.0-20151022065526-2efee857e7cf/go.mod h1:ybxpYRFXyAe+OPACYpWeL0wqObRcbAqCMya13uyzqw0= github.com/alecthomas/units v0.0.0-20190717042225-c3de453c63f4/go.mod h1:ybxpYRFXyAe+OPACYpWeL0wqObRcbAqCMya13uyzqw0= github.com/alecthomas/units v0.0.0-20190924025748-f65c72e2690d/go.mod h1:rBZYJk541a8SKzHPHnH3zbiI+7dagKZ0cgpgrD7Fyho= github.com/alexkohler/nakedret/v2 v2.0.6 h1:ME3Qef1/KIKr3kWX3nti3hhgNxw6aqN5pZmQiFSsuzQ= github.com/alexkohler/nakedret/v2 v2.0.6/go.mod h1:l3RKju/IzOMQHmsEvXwkqMDzHHvurNQfAgE1eVmT40Q= github.com/alexkohler/prealloc v1.1.0 h1:cKGRBqlXw5iyQGLYhrXrDlcHxugXpTq4tQ5c91wkf8M= github.com/alexkohler/prealloc v1.1.0/go.mod h1:fT39Jge3bQrfA7nPMDngUfvUbQGQeJyGQnR+913SCig= github.com/alfatraining/structtag v1.0.0 h1:2qmcUqNcCoyVJ0up879K614L9PazjBSFruTB0GOFjCc= github.com/alfatraining/structtag v1.0.0/go.mod h1:p3Xi5SwzTi+Ryj64DqjLWz7XurHxbGsq6y3ubePJPus= github.com/alingse/asasalint v0.0.11 h1:SFwnQXJ49Kx/1GghOFz1XGqHYKp21Kq1nHad/0WQRnw= github.com/alingse/asasalint v0.0.11/go.mod h1:nCaoMhw7a9kSJObvQyVzNTPBDbNpdocqrSP7t/cW5+I= github.com/alingse/nilnesserr v0.2.0 h1:raLem5KG7EFVb4UIDAXgrv3N2JIaffeKNtcEXkEWd/w= github.com/alingse/nilnesserr v0.2.0/go.mod h1:1xJPrXonEtX7wyTq8Dytns5P2hNzoWymVUIaKm4HNFg= github.com/ashanbrown/forbidigo/v2 v2.3.0 h1:OZZDOchCgsX5gvToVtEBoV2UWbFfI6RKQTir2UZzSxo= github.com/ashanbrown/forbidigo/v2 v2.3.0/go.mod h1:5p6VmsG5/1xx3E785W9fouMxIOkvY2rRV9nMdWadd6c= github.com/ashanbrown/makezero/v2 v2.1.0 h1:snuKYMbqosNokUKm+R6/+vOPs8yVAi46La7Ck6QYSaE= github.com/ashanbrown/makezero/v2 v2.1.0/go.mod h1:aEGT/9q3S8DHeE57C88z2a6xydvgx8J5hgXIGWgo0MY= github.com/aymanbagabas/go-osc52/v2 v2.0.1 h1:HwpRHbFMcZLEVr42D4p7XBqjyuxQH5SMiErDT4WkJ2k= github.com/aymanbagabas/go-osc52/v2 v2.0.1/go.mod h1:uYgXzlJ7ZpABp8OJ+exZzJJhRNQ2ASbcXHWsFqH8hp8= github.com/beorn7/perks v0.0.0-20180321164747-3a771d992973/go.mod h1:Dwedo/Wpr24TaqPxmxbtue+5NUziq4I4S80YR8gNf3Q= github.com/beorn7/perks v1.0.0/go.mod h1:KWe93zE9D1o94FZ5RNwFwVgaQK1VOXiVxmqh+CedLV8= github.com/beorn7/perks v1.0.1 h1:VlbKKnNfV8bJzeqoa4cOKqO6bYr3WgKZxO8Z16+hsOM= github.com/beorn7/perks v1.0.1/go.mod h1:G2ZrVWU2WbWT9wwq4/hrbKbnv/1ERSJQ0ibhJ6rlkpw= github.com/bitfield/gotestdox v0.2.2 h1:x6RcPAbBbErKLnapz1QeAlf3ospg8efBsedU93CDsnE= github.com/bitfield/gotestdox v0.2.2/go.mod h1:D+gwtS0urjBrzguAkTM2wodsTQYFHdpx8eqRJ3N+9pY= github.com/bkielbasa/cyclop v1.2.3 h1:faIVMIGDIANuGPWH031CZJTi2ymOQBULs9H21HSMa5w= github.com/bkielbasa/cyclop v1.2.3/go.mod h1:kHTwA9Q0uZqOADdupvcFJQtp/ksSnytRMe8ztxG8Fuo= github.com/blizzy78/varnamelen v0.8.0 h1:oqSblyuQvFsW1hbBHh1zfwrKe3kcSj0rnXkKzsQ089M= github.com/blizzy78/varnamelen v0.8.0/go.mod h1:V9TzQZ4fLJ1DSrjVDfl89H7aMnTvKkApdHeyESmyR7k= github.com/bombsimon/wsl/v4 v4.7.0 h1:1Ilm9JBPRczjyUs6hvOPKvd7VL1Q++PL8M0SXBDf+jQ= github.com/bombsimon/wsl/v4 v4.7.0/go.mod h1:uV/+6BkffuzSAVYD+yGyld1AChO7/EuLrCF/8xTiapg= github.com/bombsimon/wsl/v5 v5.6.0 h1:4z+/sBqC5vUmSp1O0mS+czxwH9+LKXtCWtHH9rZGQL8= github.com/bombsimon/wsl/v5 v5.6.0/go.mod h1:Uqt2EfrMj2NV8UGoN1f1Y3m0NpUVCsUdrNCdet+8LvU= github.com/breml/bidichk v0.3.3 h1:WSM67ztRusf1sMoqH6/c4OBCUlRVTKq+CbSeo0R17sE= github.com/breml/bidichk v0.3.3/go.mod h1:ISbsut8OnjB367j5NseXEGGgO/th206dVa427kR8YTE= github.com/breml/errchkjson v0.4.1 h1:keFSS8D7A2T0haP9kzZTi7o26r7kE3vymjZNeNDRDwg= github.com/breml/errchkjson v0.4.1/go.mod h1:a23OvR6Qvcl7DG/Z4o0el6BRAjKnaReoPQFciAl9U3s= github.com/butuzov/ireturn v0.4.0 h1:+s76bF/PfeKEdbG8b54aCocxXmi0wvYdOVsWxVO7n8E= github.com/butuzov/ireturn v0.4.0/go.mod h1:ghI0FrCmap8pDWZwfPisFD1vEc56VKH4NpQUxDHta70= github.com/butuzov/mirror v1.3.0 h1:HdWCXzmwlQHdVhwvsfBb2Au0r3HyINry3bDWLYXiKoc= github.com/butuzov/mirror v1.3.0/go.mod h1:AEij0Z8YMALaq4yQj9CPPVYOyJQyiexpQEQgihajRfI= github.com/catenacyber/perfsprint v0.10.1 h1:u7Riei30bk46XsG8nknMhKLXG9BcXz3+3tl/WpKm0PQ= github.com/catenacyber/perfsprint v0.10.1/go.mod h1:DJTGsi/Zufpuus6XPGJyKOTMELe347o6akPvWG9Zcsc= github.com/ccojocar/zxcvbn-go v1.0.4 h1:FWnCIRMXPj43ukfX000kvBZvV6raSxakYr1nzyNrUcc= github.com/ccojocar/zxcvbn-go v1.0.4/go.mod h1:3GxGX+rHmueTUMvm5ium7irpyjmm7ikxYFOSJB21Das= github.com/census-instrumentation/opencensus-proto v0.2.1/go.mod h1:f6KPmirojxKA12rnyqOA5BBL4O983OfeGPqjHWSTneU= github.com/cespare/xxhash/v2 v2.1.1/go.mod h1:VGX0DQ3Q6kWi7AoAeZDth3/j3BFtOZR5XLFGgcrjCOs= github.com/cespare/xxhash/v2 v2.1.2/go.mod h1:VGX0DQ3Q6kWi7AoAeZDth3/j3BFtOZR5XLFGgcrjCOs= 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/charithe/durationcheck v0.0.11 h1:g1/EX1eIiKS57NTWsYtHDZ/APfeXKhye1DidBcABctk= github.com/charithe/durationcheck v0.0.11/go.mod h1:x5iZaixRNl8ctbM+3B2RrPG5t856TxRyVQEnbIEM2X4= github.com/charmbracelet/colorprofile v0.2.3-0.20250311203215-f60798e515dc h1:4pZI35227imm7yK2bGPcfpFEmuY1gc2YSTShr4iJBfs= github.com/charmbracelet/colorprofile v0.2.3-0.20250311203215-f60798e515dc/go.mod h1:X4/0JoqgTIPSFcRA/P6INZzIuyqdFY5rm8tb41s9okk= github.com/charmbracelet/lipgloss v1.1.0 h1:vYXsiLHVkK7fp74RkV7b2kq9+zDLoEU4MZoFqR/noCY= github.com/charmbracelet/lipgloss v1.1.0/go.mod h1:/6Q8FR2o+kj8rz4Dq0zQc3vYf7X+B0binUUBwA0aL30= github.com/charmbracelet/x/ansi v0.10.1 h1:rL3Koar5XvX0pHGfovN03f5cxLbCF2YvLeyz7D2jVDQ= github.com/charmbracelet/x/ansi v0.10.1/go.mod h1:3RQDQ6lDnROptfpWuUVIUG64bD2g2BgntdxH0Ya5TeE= github.com/charmbracelet/x/cellbuf v0.0.13-0.20250311204145-2c3ea96c31dd h1:vy0GVL4jeHEwG5YOXDmi86oYw2yuYUGqz6a8sLwg0X8= github.com/charmbracelet/x/cellbuf v0.0.13-0.20250311204145-2c3ea96c31dd/go.mod h1:xe0nKWGd3eJgtqZRaN9RjMtK7xUYchjzPr7q6kcvCCs= github.com/charmbracelet/x/term v0.2.1 h1:AQeHeLZ1OqSXhrAWpYUtZyX1T3zVxfpZuEQMIQaGIAQ= github.com/charmbracelet/x/term v0.2.1/go.mod h1:oQ4enTYFV7QN4m0i9mzHrViD7TQKvNEEkHUMCmsxdUg= 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/ckaznocha/intrange v0.3.1 h1:j1onQyXvHUsPWujDH6WIjhyH26gkRt/txNlV7LspvJs= github.com/ckaznocha/intrange v0.3.1/go.mod h1:QVepyz1AkUoFQkpEqksSYpNpUo3c5W7nWh/s6SHIJJk= 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/cpuguy83/go-md2man/v2 v2.0.6/go.mod h1:oOW0eioCTA6cOiMLiUPZOpcVxMig6NIQQ7OS05n1F4g= github.com/curioswitch/go-reassign v0.3.0 h1:dh3kpQHuADL3cobV/sSGETA8DOv457dwl+fbBAhrQPs= github.com/curioswitch/go-reassign v0.3.0/go.mod h1:nApPCCTtqLJN/s8HfItCcKV0jIPwluBOvZP+dsJGA88= github.com/daixiang0/gci v0.13.7 h1:+0bG5eK9vlI08J+J/NWGbWPTNiXPG4WhNLJOkSxWITQ= github.com/daixiang0/gci v0.13.7/go.mod h1:812WVN6JLFY9S6Tv76twqmNqevN0pa3SX3nih0brVzQ= github.com/dave/dst v0.27.3 h1:P1HPoMza3cMEquVf9kKy8yXsFirry4zEnWOdYPOoIzY= github.com/dave/dst v0.27.3/go.mod h1:jHh6EOibnHgcUW3WjKHisiooEkYwqpHLBSX1iOBhEyc= github.com/dave/jennifer v1.7.1 h1:B4jJJDHelWcDhlRQxWeo0Npa/pYKBLrirAQoTN45txo= github.com/dave/jennifer v1.7.1/go.mod h1:nXbxhEmQfOZhWml3D1cDK5M1FLnMSozpbFN/m3RmGZc= github.com/davecgh/go-spew v1.1.0/go.mod h1:J7Y8YcW2NihsgmVo/mv3lAwl/skON4iLHjSsI+c5H38= github.com/davecgh/go-spew v1.1.1/go.mod h1:J7Y8YcW2NihsgmVo/mv3lAwl/skON4iLHjSsI+c5H38= github.com/davecgh/go-spew v1.1.2-0.20180830191138-d8f796af33cc h1:U9qPSI2PIWSS1VwoXQT9A3Wy9MM3WgvqSxFWenqJduM= github.com/davecgh/go-spew v1.1.2-0.20180830191138-d8f796af33cc/go.mod h1:J7Y8YcW2NihsgmVo/mv3lAwl/skON4iLHjSsI+c5H38= github.com/denis-tingaikin/go-header v0.5.0 h1:SRdnP5ZKvcO9KKRP1KJrhFR3RrlGuD+42t4429eC9k8= github.com/denis-tingaikin/go-header v0.5.0/go.mod h1:mMenU5bWrok6Wl2UsZjy+1okegmwQ3UgWl4V1D8gjlY= github.com/dlclark/regexp2 v1.11.5 h1:Q/sSnsKerHeCkc/jSTNq1oCm7KiVgUMZRDUoRu0JQZQ= github.com/dlclark/regexp2 v1.11.5/go.mod h1:DHkYz0B9wPfa6wondMfaivmHpzrQ3v9q8cnmRbL6yW8= github.com/dnephin/pflag v1.0.7 h1:oxONGlWxhmUct0YzKTgrpQv9AUA1wtPBn7zuSjJqptk= github.com/dnephin/pflag v1.0.7/go.mod h1:uxE91IoWURlOiTUIA8Mq5ZZkAv3dPUfZNaT80Zm7OQE= 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/protoc-gen-validate v0.1.0/go.mod h1:iSmxcyjqTsJpI2R4NaDN7+kN2VEUnK/pcBlmesArF7c= github.com/ettle/strcase v0.2.0 h1:fGNiVF21fHXpX1niBgk0aROov1LagYsOwV/xqKDKR/Q= github.com/ettle/strcase v0.2.0/go.mod h1:DajmHElDSaX76ITe3/VHVyMin4LWSJN5Z909Wp+ED1A= github.com/fatih/color v1.15.0/go.mod h1:0h5ZqXfHYED7Bhv2ZJamyIOUej9KtShiJESRwBDUSsw= github.com/fatih/color v1.16.0/go.mod h1:fL2Sau1YI5c0pdGEVCbKQbLXB6edEj1ZgiY4NijnWvE= github.com/fatih/color v1.18.0 h1:S8gINlzdQ840/4pfAwic/ZE0djQEH3wM94VfqLTZcOM= github.com/fatih/color v1.18.0/go.mod h1:4FelSpRwEGDpQ12mAdzqdOukCy4u8WUtOY6lkT/6HfU= github.com/fatih/structtag v1.2.0 h1:/OdNE99OxoI/PqaW/SuSK9uxxT3f/tcSZgon/ssNSx4= github.com/fatih/structtag v1.2.0/go.mod h1:mBJUNpUnHmRKrKlQQlmCrh5PuhftFbNv8Ys4/aAZl94= github.com/firefart/nonamedreturns v1.0.6 h1:vmiBcKV/3EqKY3ZiPxCINmpS431OcE1S47AQUwhrg8E= github.com/firefart/nonamedreturns v1.0.6/go.mod h1:R8NisJnSIpvPWheCq0mNRXJok6D8h7fagJTF8EMEwCo= github.com/frankban/quicktest v1.14.3 h1:FJKSZTDHjyhriyC81FLQ0LY93eSai0ZyR/ZIkd3ZUKE= github.com/frankban/quicktest v1.14.3/go.mod h1:mgiwOwqx65TmIk1wJ6Q7wvnVMocbUorkibMOrVTHZps= 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/fzipp/gocyclo v0.6.0 h1:lsblElZG7d3ALtGMx9fmxeTKZaLLpU8mET09yN4BBLo= github.com/fzipp/gocyclo v0.6.0/go.mod h1:rXPyn8fnlpa0R2csP/31uerbiVBugk5whMdlyaLkLoA= github.com/ghostiam/protogetter v0.3.20 h1:oW7OPFit2FxZOpmMRPP9FffU4uUpfeE/rEdE1f+MzD0= github.com/ghostiam/protogetter v0.3.20/go.mod h1:FjIu5Yfs6FT391m+Fjp3fbAYJ6rkL/J6ySpZBfnODuI= github.com/go-critic/go-critic v0.14.3 h1:5R1qH2iFeo4I/RJU8vTezdqs08Egi4u5p6vOESA0pog= github.com/go-critic/go-critic v0.14.3/go.mod h1:xwntfW6SYAd7h1OqDzmN6hBX/JxsEKl5up/Y2bsxgVQ= 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-kit/kit v0.8.0/go.mod h1:xBxKIO96dXMWWy0MnWVtmwkA9/13aqxPnvrjFYMA2as= github.com/go-kit/kit v0.9.0/go.mod h1:xBxKIO96dXMWWy0MnWVtmwkA9/13aqxPnvrjFYMA2as= github.com/go-kit/log v0.1.0/go.mod h1:zbhenjAZHb184qTLMA9ZjW7ThYL0H2mk7Q6pNt4vbaY= github.com/go-logfmt/logfmt v0.3.0/go.mod h1:Qt1PoO58o5twSAckw1HlFXLmHsOX5/0LbT9GBnD5lWE= github.com/go-logfmt/logfmt v0.4.0/go.mod h1:3RMwSq7FuexP4Kalkev3ejPJsZTpXXBr9+V4qmtdjCk= github.com/go-logfmt/logfmt v0.5.0/go.mod h1:wCYkCAKZfumFQihp8CzCvQ3paCTfi41vtzG1KdI/P7A= github.com/go-logr/logr v1.4.3 h1:CjnDlHq8ikf6E492q6eKboGOC0T8CDaOvkHCIg8idEI= github.com/go-logr/logr v1.4.3/go.mod h1:9T104GzyrTigFIr8wt5mBrctHMim0Nb2HLGrmQ40KvY= github.com/go-quicktest/qt v1.101.0 h1:O1K29Txy5P2OK0dGo59b7b0LR6wKfIhttaAhHUyn7eI= github.com/go-quicktest/qt v1.101.0/go.mod h1:14Bz/f7NwaXPtdYEgzsx46kqSxVwTbzVZsDC26tQJow= github.com/go-stack/stack v1.8.0/go.mod h1:v0f6uXyyMGvRgIKkXu+yp6POWl0qKG85gN/melR3HDY= github.com/go-task/slim-sprig/v3 v3.0.0 h1:sUs3vkvUymDpBKi3qH1YSqBQk9+9D/8M2mN1vB6EwHI= github.com/go-task/slim-sprig/v3 v3.0.0/go.mod h1:W848ghGpv3Qj3dhTPRyJypKRiqCdHZiAzKg9hl15HA8= github.com/go-toolsmith/astcast v1.1.0 h1:+JN9xZV1A+Re+95pgnMgDboWNVnIMMQXwfBwLRPgSC8= github.com/go-toolsmith/astcast v1.1.0/go.mod h1:qdcuFWeGGS2xX5bLM/c3U9lewg7+Zu4mr+xPwZIB4ZU= github.com/go-toolsmith/astcopy v1.1.0 h1:YGwBN0WM+ekI/6SS6+52zLDEf8Yvp3n2seZITCUBt5s= github.com/go-toolsmith/astcopy v1.1.0/go.mod h1:hXM6gan18VA1T/daUEHCFcYiW8Ai1tIwIzHY6srfEAw= github.com/go-toolsmith/astequal v1.0.3/go.mod h1:9Ai4UglvtR+4up+bAD4+hCj7iTo4m/OXVTSLnCyTAx4= github.com/go-toolsmith/astequal v1.1.0/go.mod h1:sedf7VIdCL22LD8qIvv7Nn9MuWJruQA/ysswh64lffQ= github.com/go-toolsmith/astequal v1.2.0 h1:3Fs3CYZ1k9Vo4FzFhwwewC3CHISHDnVUPC4x0bI2+Cw= github.com/go-toolsmith/astequal v1.2.0/go.mod h1:c8NZ3+kSFtFY/8lPso4v8LuJjdJiUFVnSuU3s0qrrDY= github.com/go-toolsmith/astfmt v1.1.0 h1:iJVPDPp6/7AaeLJEruMsBUlOYCmvg0MoCfJprsOmcco= github.com/go-toolsmith/astfmt v1.1.0/go.mod h1:OrcLlRwu0CuiIBp/8b5PYF9ktGVZUjlNMV634mhwuQ4= github.com/go-toolsmith/astp v1.1.0 h1:dXPuCl6u2llURjdPLLDxJeZInAeZ0/eZwFJmqZMnpQA= github.com/go-toolsmith/astp v1.1.0/go.mod h1:0T1xFGz9hicKs8Z5MfAqSUitoUYS30pDMsRVIDHs8CA= github.com/go-toolsmith/pkgload v1.2.2 h1:0CtmHq/02QhxcF7E9N5LIFcYFsMR5rdovfqTtRKkgIk= github.com/go-toolsmith/pkgload v1.2.2/go.mod h1:R2hxLNRKuAsiXCo2i5J6ZQPhnPMOVtU+f0arbFPWCus= github.com/go-toolsmith/strparse v1.0.0/go.mod h1:YI2nUKP9YGZnL/L1/DLFBfixrcjslWct4wyljWhSRy8= github.com/go-toolsmith/strparse v1.1.0 h1:GAioeZUK9TGxnLS+qfdqNbA4z0SSm5zVNtCQiyP2Bvw= github.com/go-toolsmith/strparse v1.1.0/go.mod h1:7ksGy58fsaQkGQlY8WVoBFNyEPMGuJin1rfoPS4lBSQ= github.com/go-toolsmith/typep v1.1.0 h1:fIRYDyF+JywLfqzyhdiHzRop/GQDxxNhLGQ6gFUNHus= github.com/go-toolsmith/typep v1.1.0/go.mod h1:fVIw+7zjdsMxDA3ITWnH1yOiw1rnTQKCsF/sk2H/qig= github.com/go-viper/mapstructure/v2 v2.5.0 h1:vM5IJoUAy3d7zRSVtIwQgBj7BiWtMPfmPEgAXnvj1Ro= github.com/go-viper/mapstructure/v2 v2.5.0/go.mod h1:oJDH3BJKyqBA2TXFhDsKDGDTlndYOZ6rGS0BRZIxGhM= github.com/go-xmlfmt/xmlfmt v1.1.3 h1:t8Ey3Uy7jDSEisW2K3somuMKIpzktkWptA0iFCnRUWY= github.com/go-xmlfmt/xmlfmt v1.1.3/go.mod h1:aUCEOzzezBEjDBbFBoSiya/gduyIiWYRP6CnSFIV8AM= 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/godoc-lint/godoc-lint v0.11.2 h1:Bp0FkJWoSdNsBikdNgIcgtaoo+xz6I/Y9s5WSBQUeeM= github.com/godoc-lint/godoc-lint v0.11.2/go.mod h1:iVpGdL1JCikNH2gGeAn3Hh+AgN5Gx/I/cxV+91L41jo= github.com/gofrs/flock v0.13.0 h1:95JolYOvGMqeH31+FC7D2+uULf6mG61mEZ/A8dRYMzw= github.com/gofrs/flock v0.13.0/go.mod h1:jxeyy9R1auM5S6JYDBhDt+E2TCo7DkratH4Pgi8P+Z0= github.com/gogo/protobuf v1.1.1/go.mod h1:r8qH/GZQm5c6nD/R0oafs1akxWv10x8SbQlK7atdtwQ= 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/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.0/go.mod h1:FsONVRAS9T7sI+LIUmWTfcYkHO4aIWwzhcaSAoJOfIk= github.com/golang/protobuf v1.5.2/go.mod h1:XVQd3VNwM+JqD3oG2Ue2ip4fOMUkwXdXDdiuN0vRsmY= github.com/golang/protobuf v1.5.4 h1:i7eJL8qZTpSEXOPTxNKhASYpMn+8e5Q6AdndVa1dWek= github.com/golang/protobuf v1.5.4/go.mod h1:lnTiLA8Wa4RWRcIUkrtSVa5nRhsEGBg48fD6rSs7xps= github.com/golangci/asciicheck v0.5.0 h1:jczN/BorERZwK8oiFBOGvlGPknhvq0bjnysTj4nUfo0= github.com/golangci/asciicheck v0.5.0/go.mod h1:5RMNAInbNFw2krqN6ibBxN/zfRFa9S6tA1nPdM0l8qQ= github.com/golangci/dupl v0.0.0-20250308024227-f665c8d69b32 h1:WUvBfQL6EW/40l6OmeSBYQJNSif4O11+bmWEz+C7FYw= github.com/golangci/dupl v0.0.0-20250308024227-f665c8d69b32/go.mod h1:NUw9Zr2Sy7+HxzdjIULge71wI6yEg1lWQr7Evcu8K0E= github.com/golangci/go-printf-func-name v0.1.1 h1:hIYTFJqAGp1iwoIfsNTpoq1xZAarogrvjO9AfiW3B4U= github.com/golangci/go-printf-func-name v0.1.1/go.mod h1:Es64MpWEZbh0UBtTAICOZiB+miW53w/K9Or/4QogJss= github.com/golangci/gofmt v0.0.0-20250106114630-d62b90e6713d h1:viFft9sS/dxoYY0aiOTsLKO2aZQAPT4nlQCsimGcSGE= github.com/golangci/gofmt v0.0.0-20250106114630-d62b90e6713d/go.mod h1:ivJ9QDg0XucIkmwhzCDsqcnxxlDStoTl89jDMIoNxKY= github.com/golangci/golangci-lint/v2 v2.11.3 h1:ySX1GtLwlwOEzcLKJifI/aIVesrcHDno+5mrro8rWes= github.com/golangci/golangci-lint/v2 v2.11.3/go.mod h1:HmDEVZuxz77cNLumPfNNHAFyMX/b7IbA0tpmAbwiVfo= github.com/golangci/golines v0.15.0 h1:Qnph25g8Y1c5fdo1X7GaRDGgnMHgnxh4Gk4VfPTtRx0= github.com/golangci/golines v0.15.0/go.mod h1:AZjXd23tbHMpowhtnGlj9KCNsysj72aeZVVHnVcZx10= github.com/golangci/misspell v0.8.0 h1:qvxQhiE2/5z+BVRo1kwYA8yGz+lOlu5Jfvtx2b04Jbg= github.com/golangci/misspell v0.8.0/go.mod h1:WZyyI2P3hxPY2UVHs3cS8YcllAeyfquQcKfdeE9AFVg= github.com/golangci/plugin-module-register v0.1.2 h1:e5WM6PO6NIAEcij3B053CohVp3HIYbzSuP53UAYgOpg= github.com/golangci/plugin-module-register v0.1.2/go.mod h1:1+QGTsKBvAIvPvoY/os+G5eoqxWn70HYDm2uvUyGuVw= github.com/golangci/revgrep v0.8.0 h1:EZBctwbVd0aMeRnNUsFogoyayvKHyxlV3CdUA46FX2s= github.com/golangci/revgrep v0.8.0/go.mod h1:U4R/s9dlXZsg8uJmaR1GrloUr14D7qDl8gi2iPXJH8k= github.com/golangci/swaggoswag v0.0.0-20250504205917-77f2aca3143e h1:ai0EfmVYE2bRA5htgAG9r7s3tHsfjIhN98WshBTJ9jM= github.com/golangci/swaggoswag v0.0.0-20250504205917-77f2aca3143e/go.mod h1:Vrn4B5oR9qRwM+f54koyeH3yzphlecwERs0el27Fr/s= github.com/golangci/unconvert v0.0.0-20250410112200-a129a6e6413e h1:gD6P7NEo7Eqtt0ssnqSJNNndxe69DOQ24A5h7+i3KpM= github.com/golangci/unconvert v0.0.0-20250410112200-a129a6e6413e/go.mod h1:h+wZwLjUTJnm/P2rwlbJdRPZXOzaT36/FwnPnY2inzc= 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.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.8/go.mod h1:17dUlkBOakJ0+DkrSSNjCkIjxS6bF9zb3elmeNGIjoY= github.com/google/go-cmp v0.5.9/go.mod h1:17dUlkBOakJ0+DkrSSNjCkIjxS6bF9zb3elmeNGIjoY= github.com/google/go-cmp v0.6.0/go.mod h1:17dUlkBOakJ0+DkrSSNjCkIjxS6bF9zb3elmeNGIjoY= github.com/google/go-cmp v0.7.0 h1:wk8382ETsv4JYUZwIsn6YpYiWiBsYLSJiTsyBybVuN8= github.com/google/go-cmp v0.7.0/go.mod h1:pXiqmnSA92OHEEa9HXL2W4E7lf9JzCmGVUdgjX3N/iU= github.com/google/gofuzz v1.0.0/go.mod h1:dBl0BpW6vV/+mYPU4Po3pmUjxk6FQPldtuIdl/M65Eg= 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/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-20260115054156-294ebfa9ad83 h1:z2ogiKUYzX5Is6zr/vP9vJGqPwcdqsWjOt+V8J7+bTc= github.com/google/pprof v0.0.0-20260115054156-294ebfa9ad83/go.mod h1:MxpfABSjhmINe3F1It9d+8exIHFvUqtLIRCdOGNXqiI= github.com/google/renameio v0.1.0/go.mod h1:KWCgfxg9yswjAJkECMjeO8J8rahYeXnNhOm40UhjYkI= github.com/google/shlex v0.0.0-20191202100458-e7afc7fbc510 h1:El6M4kTTCOh6aBiKaUGG7oYTSPP8MxqL4YI3kZKwcP4= github.com/google/shlex v0.0.0-20191202100458-e7afc7fbc510/go.mod h1:pupxD2MaaD3pAXIBCelhxNneeOaAeabZDe5s4K6zSpQ= 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/gordonklaus/ineffassign v0.2.0 h1:Uths4KnmwxNJNzq87fwQQDDnbNb7De00VOk9Nu0TySs= github.com/gordonklaus/ineffassign v0.2.0/go.mod h1:TIpymnagPSexySzs7F9FnO1XFTy8IT3a59vmZp5Y9Lw= github.com/gostaticanalysis/analysisutil v0.7.1 h1:ZMCjoue3DtDWQ5WyU16YbjbQEQ3VuzwxALrpYd+HeKk= github.com/gostaticanalysis/analysisutil v0.7.1/go.mod h1:v21E3hY37WKMGSnbsw2S/ojApNWb6C1//mXO48CXbVc= github.com/gostaticanalysis/comment v1.4.2/go.mod h1:KLUTGDv6HOCotCH8h2erHKmpci2ZoR8VPu34YA2uzdM= github.com/gostaticanalysis/comment v1.5.0 h1:X82FLl+TswsUMpMh17srGRuKaaXprTaytmEpgnKIDu8= github.com/gostaticanalysis/comment v1.5.0/go.mod h1:V6eb3gpCv9GNVqb6amXzEUX3jXLVK/AdA+IrAMSqvEc= github.com/gostaticanalysis/forcetypeassert v0.2.0 h1:uSnWrrUEYDr86OCxWa4/Tp2jeYDlogZiZHzGkWFefTk= github.com/gostaticanalysis/forcetypeassert v0.2.0/go.mod h1:M5iPavzE9pPqWyeiVXSFghQjljW1+l/Uke3PXHS6ILY= github.com/gostaticanalysis/nilerr v0.1.2 h1:S6nk8a9N8g062nsx63kUkF6AzbHGw7zzyHMcpu52xQU= github.com/gostaticanalysis/nilerr v0.1.2/go.mod h1:A19UHhoY3y8ahoL7YKz6sdjDtduwTSI4CsymaC2htPA= github.com/gostaticanalysis/testutil v0.3.1-0.20210208050101-bfb5c8eec0e4/go.mod h1:D+FIZ+7OahH3ePw/izIEeH5I06eKs1IKI4Xr64/Am3M= github.com/gostaticanalysis/testutil v0.5.0 h1:Dq4wT1DdTwTGCQQv3rl3IvD5Ld0E6HiY+3Zh0sUGqw8= github.com/gostaticanalysis/testutil v0.5.0/go.mod h1:OLQSbuM6zw2EvCcXTz1lVq5unyoNft372msDY0nY5Hs= github.com/hashicorp/go-immutable-radix/v2 v2.1.0 h1:CUW5RYIcysz+D3B+l1mDeXrQ7fUvGGCwJfdASSzbrfo= github.com/hashicorp/go-immutable-radix/v2 v2.1.0/go.mod h1:hgdqLXA4f6NIjRVisM1TJ9aOJVNRqKZj+xDGF6m7PBw= github.com/hashicorp/go-uuid v1.0.3 h1:2gKiV6YVmrJ1i2CKKa9obLvRieoRGviZFL26PcT/Co8= github.com/hashicorp/go-uuid v1.0.3/go.mod h1:6SBZvOh/SIDV7/2o3Jml5SYk/TvGqwFJ/bN7x4byOro= github.com/hashicorp/go-version v1.2.1/go.mod h1:fltr4n8CU8Ke44wwGCBoEymUuxUHl09ZGVZPK5anwXA= github.com/hashicorp/go-version v1.8.0 h1:KAkNb1HAiZd1ukkxDFGmokVZe1Xy9HG6NUp+bPle2i4= github.com/hashicorp/go-version v1.8.0/go.mod h1:fltr4n8CU8Ke44wwGCBoEymUuxUHl09ZGVZPK5anwXA= 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/hashicorp/hcl v1.0.0 h1:0Anlzjpi4vEasTeNFn2mLJgTSwt0+6sfsiTG8qcWGx4= github.com/hashicorp/hcl v1.0.0/go.mod h1:E5yfLk+7swimpb2L/Alb/PJmXilQ/rhwaUYs4T20WEQ= 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/inconshreveable/mousetrap v1.1.0 h1:wN+x4NVGpMsO7ErUn/mUI3vEoE6Jt13X2s0bqwp9tc8= github.com/inconshreveable/mousetrap v1.1.0/go.mod h1:vpF70FUmC8bwa3OWnCshd2FqLfsEA9PFc4w1p2J65bw= github.com/jgautheron/goconst v1.8.2 h1:y0XF7X8CikZ93fSNT6WBTb/NElBu9IjaY7CCYQrCMX4= github.com/jgautheron/goconst v1.8.2/go.mod h1:A0oxgBCHy55NQn6sYpO7UdnA9p+h7cPtoOZUmvNIako= github.com/jingyugao/rowserrcheck v1.1.1 h1:zibz55j/MJtLsjP1OF4bSdgXxwL1b+Vn7Tjzq7gFzUs= github.com/jingyugao/rowserrcheck v1.1.1/go.mod h1:4yvlZSDb3IyDTUZJUmpZfm2Hwok+Dtp+nu2qOq+er9c= github.com/jjti/go-spancheck v0.6.5 h1:lmi7pKxa37oKYIMScialXUK6hP3iY5F1gu+mLBPgYB8= github.com/jjti/go-spancheck v0.6.5/go.mod h1:aEogkeatBrbYsyW6y5TgDfihCulDYciL1B7rG2vSsrU= github.com/jpillora/backoff v1.0.0/go.mod h1:J/6gKK9jxlEcS3zixgDgUAsiuZ7yrSoa/FX5e0EB2j4= github.com/json-iterator/go v1.1.6/go.mod h1:+SdeFBvtyEkXs7REEP0seUULqWtbJapLOCVDaaPEHmU= github.com/json-iterator/go v1.1.10/go.mod h1:KdQUCv79m/52Kvf8AW2vK1V8akMuk1QjK/uOdHXbAo4= github.com/json-iterator/go v1.1.11/go.mod h1:KdQUCv79m/52Kvf8AW2vK1V8akMuk1QjK/uOdHXbAo4= github.com/json-iterator/go v1.1.12/go.mod h1:e30LSqwooZae/UwlEbR2852Gd8hjQvJoHmT4TnhNGBo= 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/julienschmidt/httprouter v1.2.0/go.mod h1:SYymIcj16QtmaHHD7aYtjjsJG7VTCxuUUipMqKk8s4w= github.com/julienschmidt/httprouter v1.3.0/go.mod h1:JR6WtHb+2LUe8TCKY3cZOxFyyO8IZAc4RVcycCCAKdM= github.com/julz/importas v0.2.0 h1:y+MJN/UdL63QbFJHws9BVC5RpA2iq0kpjrFajTGivjQ= github.com/julz/importas v0.2.0/go.mod h1:pThlt589EnCYtMnmhmRYY/qn9lCf/frPOK+WMx3xiJY= github.com/karamaru-alpha/copyloopvar v1.2.2 h1:yfNQvP9YaGQR7VaWLYcfZUlRP2eo2vhExWKxD/fP6q0= github.com/karamaru-alpha/copyloopvar v1.2.2/go.mod h1:oY4rGZqZ879JkJMtX3RRkcXRkmUvH0x35ykgaKgsgJY= github.com/kisielk/errcheck v1.10.0 h1:Lvs/YAHP24YKg08LA8oDw2z9fJVme090RAXd90S+rrw= github.com/kisielk/errcheck v1.10.0/go.mod h1:kQxWMMVZgIkDq7U8xtG/n2juOjbLgZtedi0D+/VL/i8= github.com/kisielk/gotool v1.0.0/go.mod h1:XhKaO+MFFWcvkIS/tQcRk01m1F5IRFswLeQ+oQHNcck= github.com/kkHAIKE/contextcheck v1.1.6 h1:7HIyRcnyzxL9Lz06NGhiKvenXq7Zw6Q0UQu/ttjfJCE= github.com/kkHAIKE/contextcheck v1.1.6/go.mod h1:3dDbMRNBFaq8HFXWC1JyvDSPm43CmE6IuHam8Wr0rkg= github.com/konsorten/go-windows-terminal-sequences v1.0.1/go.mod h1:T0+1ngSBFLxvqU3pZ+m/2kptfBszLMUkC4ZK/EgS/cQ= github.com/konsorten/go-windows-terminal-sequences v1.0.3/go.mod h1:T0+1ngSBFLxvqU3pZ+m/2kptfBszLMUkC4ZK/EgS/cQ= github.com/kr/logfmt v0.0.0-20140226030751-b84e30acd515/go.mod h1:+0opPa2QZZtGFBFZlji/RkVcI2GknAs/DXo4wKdlNEc= github.com/kr/pretty v0.1.0/go.mod h1:dAy3ld7l9f0ibDNOQOHHMYYIIbhfbHSm3C4ZsoJORNo= 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/kulti/thelper v0.7.1 h1:fI8QITAoFVLx+y+vSyuLBP+rcVIB8jKooNSCT2EiI98= github.com/kulti/thelper v0.7.1/go.mod h1:NsMjfQEy6sd+9Kfw8kCP61W1I0nerGSYSFnGaxQkcbs= github.com/kunwardeep/paralleltest v1.0.15 h1:ZMk4Qt306tHIgKISHWFJAO1IDQJLc6uDyJMLyncOb6w= github.com/kunwardeep/paralleltest v1.0.15/go.mod h1:di4moFqtfz3ToSKxhNjhOZL+696QtJGCFe132CbBLGk= github.com/lasiar/canonicalheader v1.1.2 h1:vZ5uqwvDbyJCnMhmFYimgMZnJMjwljN5VGY0VKbMXb4= github.com/lasiar/canonicalheader v1.1.2/go.mod h1:qJCeLFS0G/QlLQ506T+Fk/fWMa2VmBUiEI2cuMK4djI= github.com/ldez/exptostd v0.4.5 h1:kv2ZGUVI6VwRfp/+bcQ6Nbx0ghFWcGIKInkG/oFn1aQ= github.com/ldez/exptostd v0.4.5/go.mod h1:QRjHRMXJrCTIm9WxVNH6VW7oN7KrGSht69bIRwvdFsM= github.com/ldez/gomoddirectives v0.8.0 h1:JqIuTtgvFC2RdH1s357vrE23WJF2cpDCPFgA/TWDGpk= github.com/ldez/gomoddirectives v0.8.0/go.mod h1:jutzamvZR4XYJLr0d5Honycp4Gy6GEg2mS9+2YX3F1Q= github.com/ldez/grignotin v0.10.1 h1:keYi9rYsgbvqAZGI1liek5c+jv9UUjbvdj3Tbn5fn4o= github.com/ldez/grignotin v0.10.1/go.mod h1:UlDbXFCARrXbWGNGP3S5vsysNXAPhnSuBufpTEbwOas= github.com/ldez/structtags v0.6.1 h1:bUooFLbXx41tW8SvkfwfFkkjPYvFFs59AAMgVg6DUBk= github.com/ldez/structtags v0.6.1/go.mod h1:YDxVSgDy/MON6ariaxLF2X09bh19qL7MtGBN5MrvbdY= github.com/ldez/tagliatelle v0.7.2 h1:KuOlL70/fu9paxuxbeqlicJnCspCRjH0x8FW+NfgYUk= github.com/ldez/tagliatelle v0.7.2/go.mod h1:PtGgm163ZplJfZMZ2sf5nhUT170rSuPgBimoyYtdaSI= github.com/ldez/usetesting v0.5.0 h1:3/QtzZObBKLy1F4F8jLuKJiKBjjVFi1IavpoWbmqLwc= github.com/ldez/usetesting v0.5.0/go.mod h1:Spnb4Qppf8JTuRgblLrEWb7IE6rDmUpGvxY3iRrzvDQ= github.com/leonklingele/grouper v1.1.2 h1:o1ARBDLOmmasUaNDesWqWCIFH3u7hoFlM84YrjT3mIY= github.com/leonklingele/grouper v1.1.2/go.mod h1:6D0M/HVkhs2yRKRFZUoGjeDy7EZTfFBE9gl4kjmIGkA= github.com/lucasb-eyer/go-colorful v1.2.0 h1:1nnpGOrhyZZuNyfu1QjKiUICQ74+3FNCN69Aj6K7nkY= github.com/lucasb-eyer/go-colorful v1.2.0/go.mod h1:R4dSotOR9KMtayYi1e77YzuveK+i7ruzyGqttikkLy0= github.com/macabu/inamedparam v0.2.0 h1:VyPYpOc10nkhI2qeNUdh3Zket4fcZjEWe35poddBCpE= github.com/macabu/inamedparam v0.2.0/go.mod h1:+Pee9/YfGe5LJ62pYXqB89lJ+0k5bsR8Wgz/C0Zlq3U= github.com/magiconair/properties v1.8.6 h1:5ibWZ6iY0NctNGWo87LalDlEZ6R41TqbbDamhfG/Qzo= github.com/magiconair/properties v1.8.6/go.mod h1:y3VJvCyxH9uVvJTWEGAELF3aiYNyPKd5NZ3oSwXrF60= github.com/manuelarte/embeddedstructfieldcheck v0.4.0 h1:3mAIyaGRtjK6EO9E73JlXLtiy7ha80b2ZVGyacxgfww= github.com/manuelarte/embeddedstructfieldcheck v0.4.0/go.mod h1:z8dFSyXqp+fC6NLDSljRJeNQJJDWnY7RoWFzV3PC6UM= github.com/manuelarte/funcorder v0.5.0 h1:llMuHXXbg7tD0i/LNw8vGnkDTHFpTnWqKPI85Rknc+8= github.com/manuelarte/funcorder v0.5.0/go.mod h1:Yt3CiUQthSBMBxjShjdXMexmzpP8YGvGLjrxJNkO2hA= github.com/maratori/testableexamples v1.0.1 h1:HfOQXs+XgfeRBJ+Wz0XfH+FHnoY9TVqL6Fcevpzy4q8= github.com/maratori/testableexamples v1.0.1/go.mod h1:XE2F/nQs7B9N08JgyRmdGjYVGqxWwClLPCGSQhXQSrQ= github.com/maratori/testpackage v1.1.2 h1:ffDSh+AgqluCLMXhM19f/cpvQAKygKAJXFl9aUjmbqs= github.com/maratori/testpackage v1.1.2/go.mod h1:8F24GdVDFW5Ew43Et02jamrVMNXLUNaOynhDssITGfc= github.com/matoous/godox v1.1.0 h1:W5mqwbyWrwZv6OQ5Z1a/DHGMOvXYCBP3+Ht7KMoJhq4= github.com/matoous/godox v1.1.0/go.mod h1:jgE/3fUXiTurkdHOLT5WEkThTSuE7yxHv5iWPa80afs= github.com/matryer/is v1.4.0 h1:sosSmIWwkYITGrxZ25ULNDeKiMNzFSr4V/eqBQP0PeE= github.com/matryer/is v1.4.0/go.mod h1:8I/i5uYgLzgsgEloJE1U6xx5HkBQpAZvepWuujKwMRU= github.com/mattn/go-colorable v0.1.13/go.mod h1:7S9/ev0klgBDR4GtXTXX8a3vIGJpMovkB8vQcUbaXHg= github.com/mattn/go-colorable v0.1.14 h1:9A9LHSqF/7dyVVX6g0U9cwm9pG3kP9gSzcuIPHPsaIE= github.com/mattn/go-colorable v0.1.14/go.mod h1:6LmQG8QLFO4G5z1gPvYEzlUgJ2wF+stgPZH1UqBm1s8= github.com/mattn/go-isatty v0.0.16/go.mod h1:kYGgaQfpe5nmfYZH+SKPsOc2e4SrIfOl2e/yFXSvRLM= github.com/mattn/go-isatty v0.0.17/go.mod h1:kYGgaQfpe5nmfYZH+SKPsOc2e4SrIfOl2e/yFXSvRLM= github.com/mattn/go-isatty v0.0.19/go.mod h1:W+V8PltTTMOvKvAeJH7IuucS94S2C6jfK/D7dTCTo3Y= 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.16 h1:E5ScNMtiwvlvB5paMFdw9p4kSQzbXFikJ5SQO6TULQc= github.com/mattn/go-runewidth v0.0.16/go.mod h1:Jdepj2loyihRzMpdS35Xk/zdY8IAYHsh153qUoGf23w= github.com/matttproud/golang_protobuf_extensions v1.0.1 h1:4hp9jkHxhMHkqkrB3Ix0jegS5sx/RkqARlsWZ6pIwiU= github.com/matttproud/golang_protobuf_extensions v1.0.1/go.mod h1:D8He9yQNgCq6Z5Ld7szi9bcBfOoFv/3dc6xSMkL2PC0= github.com/mgechev/revive v1.15.0 h1:vJ0HzSBzfNyPbHKolgiFjHxLek9KUijhqh42yGoqZ8Q= github.com/mgechev/revive v1.15.0/go.mod h1:LlAKO3QQe9OJ0pVZzI2GPa8CbXGZ/9lNpCGvK4T/a8A= github.com/mitchellh/go-homedir v1.1.0 h1:lukF9ziXFxDFPkA1vsr5zpc1XuPDn/wFntq5mG+4E0Y= github.com/mitchellh/go-homedir v1.1.0/go.mod h1:SfyaCUpYCn1Vlf4IUYiD9fPX4A5wJrkLzIz1N1q0pr0= github.com/mitchellh/mapstructure v1.5.0 h1:jeMsZIYE/09sWLaz43PL7Gy6RuMjD2eJVyuac5Z2hdY= github.com/mitchellh/mapstructure v1.5.0/go.mod h1:bFUtVrKA4DC2yAKiSyO/QUcy7e+RRV2QTWOzhPopBRo= github.com/modern-go/concurrent v0.0.0-20180228061459-e0a39a4cb421/go.mod h1:6dJC0mAP4ikYIbvyc7fijjWJddQyLn8Ig3JB5CqoB9Q= github.com/modern-go/concurrent v0.0.0-20180306012644-bacd9c7ef1dd/go.mod h1:6dJC0mAP4ikYIbvyc7fijjWJddQyLn8Ig3JB5CqoB9Q= github.com/modern-go/reflect2 v0.0.0-20180701023420-4b7aa43c6742/go.mod h1:bx2lNnkwVCuqBIxFjflWJWanXIb3RllmbCylyMrvgv0= github.com/modern-go/reflect2 v1.0.1/go.mod h1:bx2lNnkwVCuqBIxFjflWJWanXIb3RllmbCylyMrvgv0= github.com/modern-go/reflect2 v1.0.2/go.mod h1:yWuevngMOJpCy52FWWMvUC8ws7m/LJsjYzDa0/r8luk= github.com/moricho/tparallel v0.3.2 h1:odr8aZVFA3NZrNybggMkYO3rgPRcqjeQUlBBFVxKHTI= github.com/moricho/tparallel v0.3.2/go.mod h1:OQ+K3b4Ln3l2TZveGCywybl68glfLEwFGqvnjok8b+U= github.com/muesli/termenv v0.16.0 h1:S5AlUN9dENB57rsbnkPyfdGuWIlkmzJjbFf0Tf5FWUc= github.com/muesli/termenv v0.16.0/go.mod h1:ZRfOIKPFDYQoDFF4Olj7/QJbW60Ol/kL1pU3VfY/Cnk= github.com/mwitkow/go-conntrack v0.0.0-20161129095857-cc309e4a2223/go.mod h1:qRWi+5nqEBWmkhHvq77mSJWrCKwh8bxhgT7d/eI7P4U= github.com/mwitkow/go-conntrack v0.0.0-20190716064945-2f068394615f/go.mod h1:qRWi+5nqEBWmkhHvq77mSJWrCKwh8bxhgT7d/eI7P4U= github.com/nakabonne/nestif v0.3.1 h1:wm28nZjhQY5HyYPx+weN3Q65k6ilSBxDb8v5S81B81U= github.com/nakabonne/nestif v0.3.1/go.mod h1:9EtoZochLn5iUprVDmDjqGKPofoUEBL8U4Ngq6aY7OE= github.com/nishanths/exhaustive v0.12.0 h1:vIY9sALmw6T/yxiASewa4TQcFsVYZQQRUQJhKRf3Swg= github.com/nishanths/exhaustive v0.12.0/go.mod h1:mEZ95wPIZW+x8kC4TgC+9YCUgiST7ecevsVDTgc2obs= github.com/nishanths/predeclared v0.2.2 h1:V2EPdZPliZymNAn79T8RkNApBjMmVKh5XRpLm/w98Vk= github.com/nishanths/predeclared v0.2.2/go.mod h1:RROzoN6TnGQupbC+lqggsOlcgysk3LMK/HI84Mp280c= github.com/nunnatsa/ginkgolinter v0.23.0 h1:x3o4DGYOWbBMP/VdNQKgSj+25aJKx2Pe6lHr8gBcgf8= github.com/nunnatsa/ginkgolinter v0.23.0/go.mod h1:9qN1+0akwXEccwV1CAcCDfcoBlWXHB+ML9884pL4SZ4= github.com/onsi/ginkgo/v2 v2.28.1 h1:S4hj+HbZp40fNKuLUQOYLDgZLwNUVn19N3Atb98NCyI= github.com/onsi/ginkgo/v2 v2.28.1/go.mod h1:CLtbVInNckU3/+gC8LzkGUb9oF+e8W8TdUsxPwvdOgE= github.com/onsi/gomega v1.39.1 h1:1IJLAad4zjPn2PsnhH70V4DKRFlrCzGBNrNaru+Vf28= github.com/onsi/gomega v1.39.1/go.mod h1:hL6yVALoTOxeWudERyfppUcZXjMwIMLnuSfruD2lcfg= github.com/otiai10/copy v1.2.0/go.mod h1:rrF5dJ5F0t/EWSYODDu4j9/vEeYHMkc8jt0zJChqQWw= github.com/otiai10/copy v1.14.0 h1:dCI/t1iTdYGtkvCuBG2BgR6KZa83PTclw4U5n2wAllU= github.com/otiai10/copy v1.14.0/go.mod h1:ECfuL02W+/FkTWZWgQqXPWZgW9oeKCSQ5qVfSc4qc4w= github.com/otiai10/curr v0.0.0-20150429015615-9b4961190c95/go.mod h1:9qAhocn7zKJG+0mI8eUu6xqkFDYS2kb2saOteoSB3cE= github.com/otiai10/curr v1.0.0/go.mod h1:LskTG5wDwr8Rs+nNQ+1LlxRjAtTZZjtJW4rMXl6j4vs= github.com/otiai10/mint v1.3.0/go.mod h1:F5AjcsTsWUqX+Na9fpHb52P8pcRX2CI6A3ctIT91xUo= github.com/otiai10/mint v1.3.1/go.mod h1:/yxELlJQ0ufhjUwhshSj+wFjZ78CnZ48/1wtmBH1OTc= github.com/pelletier/go-toml v1.9.5 h1:4yBQzkHv+7BHq2PQUZF3Mx0IYxG7LsP222s7Agd3ve8= github.com/pelletier/go-toml v1.9.5/go.mod h1:u1nR/EPcESfeI/szUZKdtJ0xRNbUoANCkoOuaOx1Y+c= github.com/pelletier/go-toml/v2 v2.2.4 h1:mye9XuhQ6gvn5h28+VilKrrPoQVanw5PMw/TB0t5Ec4= github.com/pelletier/go-toml/v2 v2.2.4/go.mod h1:2gIqNv+qfxSVS7cM2xJQKtLSTLUE9V8t9Stt+h56mCY= github.com/pkg/errors v0.8.0/go.mod h1:bwawxfHBFNV+L2hUp1rHADufV3IMtnDRdf1r5NINEl0= github.com/pkg/errors v0.8.1/go.mod h1:bwawxfHBFNV+L2hUp1rHADufV3IMtnDRdf1r5NINEl0= github.com/pkg/errors v0.9.1/go.mod h1:bwawxfHBFNV+L2hUp1rHADufV3IMtnDRdf1r5NINEl0= 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/prometheus/client_golang v0.9.1/go.mod h1:7SWBe2y4D6OKWSNQJUaRYU/AaXPKyh/dDVn+NZz0KFw= github.com/prometheus/client_golang v1.0.0/go.mod h1:db9x61etRT2tGnBNRi70OPL5FsnadC4Ky3P0J6CfImo= github.com/prometheus/client_golang v1.7.1/go.mod h1:PY5Wy2awLA44sXw4AOSfFBetzPP4j5+D6mVACh+pe2M= github.com/prometheus/client_golang v1.11.0/go.mod h1:Z6t4BnS23TR94PD6BsDNk8yVqroYurpAkEiz0P2BEV0= github.com/prometheus/client_golang v1.12.1 h1:ZiaPsmm9uiBeaSMRznKsCDNtPCS0T3JVDGF+06gjBzk= github.com/prometheus/client_golang v1.12.1/go.mod h1:3Z9XVyYiZYEO+YQWt3RD2R3jrbd179Rt297l4aS6nDY= github.com/prometheus/client_model v0.0.0-20180712105110-5c3871d89910/go.mod h1:MbSGuTsp3dbXC40dX6PRTWyKYBIrTGTE9sqQNg2J8bo= github.com/prometheus/client_model v0.0.0-20190129233127-fd36f4220a90/go.mod h1:xMI15A0UPsDsEKsMN9yxemIoYk6Tm2C1GtYGdfGttqA= github.com/prometheus/client_model v0.0.0-20190812154241-14fe0d1b01d4/go.mod h1:xMI15A0UPsDsEKsMN9yxemIoYk6Tm2C1GtYGdfGttqA= github.com/prometheus/client_model v0.2.0 h1:uq5h0d+GuxiXLJLNABMgp2qUWDPiLvgCzz2dUR+/W/M= github.com/prometheus/client_model v0.2.0/go.mod h1:xMI15A0UPsDsEKsMN9yxemIoYk6Tm2C1GtYGdfGttqA= github.com/prometheus/common v0.4.1/go.mod h1:TNfzLD0ON7rHzMJeJkieUDPYmFC7Snx/y86RQel1bk4= github.com/prometheus/common v0.10.0/go.mod h1:Tlit/dnDKsSWFlCLTWaA1cyBgKHSMdTB80sz/V91rCo= github.com/prometheus/common v0.26.0/go.mod h1:M7rCNAaPfAosfx8veZJCuw84e35h3Cfd9VFqTh1DIvc= github.com/prometheus/common v0.32.1 h1:hWIdL3N2HoUx3B8j3YN9mWor0qhY/NlEKZEaXxuIRh4= github.com/prometheus/common v0.32.1/go.mod h1:vu+V0TpY+O6vW9J44gczi3Ap/oXXR10b+M/gUGO4Hls= github.com/prometheus/procfs v0.0.0-20181005140218-185b4288413d/go.mod h1:c3At6R/oaqEKCNdg8wHV1ftS6bRYblBhIjjI8uT2IGk= github.com/prometheus/procfs v0.0.2/go.mod h1:TjEm7ze935MbeOT/UhFTIMYKhuLP4wbCsTZCD3I8kEA= github.com/prometheus/procfs v0.1.3/go.mod h1:lV6e/gmhEcM9IjHGsFOCxxuZ+z1YqCvr4OA4YeYWdaU= github.com/prometheus/procfs v0.6.0/go.mod h1:cz+aTbrPOrUb4q7XlbU9ygM+/jj0fzG6c1xBZuNvfVA= github.com/prometheus/procfs v0.7.3 h1:4jVXhlkAyzOScmCkXBTOLRLTz8EeU+eyjrwB/EPq0VU= github.com/prometheus/procfs v0.7.3/go.mod h1:cz+aTbrPOrUb4q7XlbU9ygM+/jj0fzG6c1xBZuNvfVA= github.com/quasilyte/go-ruleguard v0.4.5 h1:AGY0tiOT5hJX9BTdx/xBdoCubQUAE2grkqY2lSwvZcA= github.com/quasilyte/go-ruleguard v0.4.5/go.mod h1:Vl05zJ538vcEEwu16V/Hdu7IYZWyKSwIy4c88Ro1kRE= github.com/quasilyte/go-ruleguard/dsl v0.3.23 h1:lxjt5B6ZCiBeeNO8/oQsegE6fLeCzuMRoVWSkXC4uvY= github.com/quasilyte/go-ruleguard/dsl v0.3.23/go.mod h1:KeCP03KrjuSO0H1kTuZQCWlQPulDV6YMIXmpQss17rU= github.com/quasilyte/gogrep v0.5.0 h1:eTKODPXbI8ffJMN+W2aE0+oL0z/nh8/5eNdiO34SOAo= github.com/quasilyte/gogrep v0.5.0/go.mod h1:Cm9lpz9NZjEoL1tgZ2OgeUKPIxL1meE7eo60Z6Sk+Ng= github.com/quasilyte/regex/syntax v0.0.0-20210819130434-b3f0c404a727 h1:TCg2WBOl980XxGFEZSS6KlBGIV0diGdySzxATTWoqaU= github.com/quasilyte/regex/syntax v0.0.0-20210819130434-b3f0c404a727/go.mod h1:rlzQ04UMyJXu/aOvhd8qT+hvDrFpiwqp8MRXDY9szc0= github.com/quasilyte/stdinfo v0.0.0-20220114132959-f7386bf02567 h1:M8mH9eK4OUR4lu7Gd+PU1fV2/qnDNfzT635KRSObncs= github.com/quasilyte/stdinfo v0.0.0-20220114132959-f7386bf02567/go.mod h1:DWNGW8A4Y+GyBgPuaQJuWiy0XYftx4Xm/y5Jqk9I6VQ= github.com/raeperd/recvcheck v0.2.0 h1:GnU+NsbiCqdC2XX5+vMZzP+jAJC5fht7rcVTAhX74UI= github.com/raeperd/recvcheck v0.2.0/go.mod h1:n04eYkwIR0JbgD73wT8wL4JjPC3wm0nFtzBnWNocnYU= github.com/rivo/uniseg v0.2.0/go.mod h1:J6wj4VEh+S6ZtnVlnTBMWIodfgj8LQOQFoIToxlJtxc= github.com/rivo/uniseg v0.4.7 h1:WUdvkW8uEhrYfLC4ZzdpI2ztxP1I582+49Oc5Mq64VQ= github.com/rivo/uniseg v0.4.7/go.mod h1:FN3SvrM+Zdj16jyLfmOkMNblXMcoc8DfTHruCPUcx88= github.com/rogpeppe/go-internal v1.3.0/go.mod h1:M8bDsm7K2OlrFYOpmOWEs/qY81heoFRclV5y23lUDJ4= github.com/rogpeppe/go-internal v1.11.0/go.mod h1:ddIwULY96R17DhadqLgMfk9H9tvdUzkipdSkR5nkCZA= github.com/rogpeppe/go-internal v1.14.1 h1:UQB4HGPB6osV0SQTLymcB4TgvyWu6ZyliaW0tI/otEQ= github.com/rogpeppe/go-internal v1.14.1/go.mod h1:MaRKkUm5W0goXpeCfT7UZI6fk/L7L7so1lCWt35ZSgc= github.com/russross/blackfriday/v2 v2.1.0/go.mod h1:+Rmxgy9KzJVeS9/2gXHxylqXiyQDYRxCVz55jmeOWTM= github.com/ryancurrah/gomodguard v1.4.1 h1:eWC8eUMNZ/wM/PWuZBv7JxxqT5fiIKSIyTvjb7Elr+g= github.com/ryancurrah/gomodguard v1.4.1/go.mod h1:qnMJwV1hX9m+YJseXEBhd2s90+1Xn6x9dLz11ualI1I= github.com/ryanrolds/sqlclosecheck v0.5.1 h1:dibWW826u0P8jNLsLN+En7+RqWWTYrjCB9fJfSfdyCU= github.com/ryanrolds/sqlclosecheck v0.5.1/go.mod h1:2g3dUjoS6AL4huFdv6wn55WpLIDjY7ZgUR4J8HOO/XQ= github.com/sanposhiho/wastedassign/v2 v2.1.0 h1:crurBF7fJKIORrV85u9UUpePDYGWnwvv3+A96WvwXT0= github.com/sanposhiho/wastedassign/v2 v2.1.0/go.mod h1:+oSmSC+9bQ+VUAxA66nBb0Z7N8CK7mscKTDYC6aIek4= github.com/santhosh-tekuri/jsonschema/v6 v6.0.2 h1:KRzFb2m7YtdldCEkzs6KqmJw4nqEVZGK7IN2kJkjTuQ= github.com/santhosh-tekuri/jsonschema/v6 v6.0.2/go.mod h1:JXeL+ps8p7/KNMjDQk3TCwPpBy0wYklyWTfbkIzdIFU= github.com/sashamelentyev/interfacebloat v1.1.0 h1:xdRdJp0irL086OyW1H/RTZTr1h/tMEOsumirXcOJqAw= github.com/sashamelentyev/interfacebloat v1.1.0/go.mod h1:+Y9yU5YdTkrNvoX0xHc84dxiN1iBi9+G8zZIhPVoNjQ= github.com/sashamelentyev/usestdlibvars v1.29.0 h1:8J0MoRrw4/NAXtjQqTHrbW9NN+3iMf7Knkq057v4XOQ= github.com/sashamelentyev/usestdlibvars v1.29.0/go.mod h1:8PpnjHMk5VdeWlVb4wCdrB8PNbLqZ3wBZTZWkrpZZL8= github.com/securego/gosec/v2 v2.24.8-0.20260309165252-619ce2117e08 h1:AoLtJX4WUtZkhhUUMFy3GgecAALp/Mb4S1iyQOA2s0U= github.com/securego/gosec/v2 v2.24.8-0.20260309165252-619ce2117e08/go.mod h1:+XLCJiRE95ga77XInNELh2M6zQP+PdqiT9Zpm0D9Wpk= github.com/sergi/go-diff v1.2.0 h1:XU+rvMAioB0UC3q1MFrIQy4Vo5/4VsRDQQXHsEya6xQ= github.com/sergi/go-diff v1.2.0/go.mod h1:STckp+ISIX8hZLjrqAeVduY0gWCT9IjLuqbuNXdaHfM= github.com/shurcooL/go v0.0.0-20180423040247-9e1955d9fb6e/go.mod h1:TDJrrUr11Vxrven61rcy3hJMUqaf/CLWYhHNPmT14Lk= github.com/shurcooL/go-goon v0.0.0-20170922171312-37c2f522c041/go.mod h1:N5mDOmsrJOB+vfqUK+7DmDyjhSLIIBnXo9lvZJj3MWQ= github.com/sirupsen/logrus v1.2.0/go.mod h1:LxeOpSwHxABJmUn/MG1IvRgCAasNZTLOkJPxbbu5VWo= github.com/sirupsen/logrus v1.4.2/go.mod h1:tLMulIdttU9McNUspp0xgXVQah82FyeX6MwdIuYE2rE= github.com/sirupsen/logrus v1.6.0/go.mod h1:7uNnSEd1DgxDLC74fIahvMZmmYsHGZGEOFrfsX/uA88= github.com/sirupsen/logrus v1.9.4 h1:TsZE7l11zFCLZnZ+teH4Umoq5BhEIfIzfRDZ1Uzql2w= github.com/sirupsen/logrus v1.9.4/go.mod h1:ftWc9WdOfJ0a92nsE2jF5u5ZwH8Bv2zdeOC42RjbV2g= github.com/sivchari/containedctx v1.0.3 h1:x+etemjbsh2fB5ewm5FeLNi5bUjK0V8n0RB+Wwfd0XE= github.com/sivchari/containedctx v1.0.3/go.mod h1:c1RDvCbnJLtH4lLcYD/GqwiBSSf4F5Qk0xld2rBqzJ4= github.com/sonatard/noctx v0.5.0 h1:e/jdaqAsuWVOKQ0P6NWiIdDNHmHT5SwuuSfojFjzwrw= github.com/sonatard/noctx v0.5.0/go.mod h1:64XdbzFb18XL4LporKXp8poqZtPKbCrqQ402CV+kJas= github.com/sourcegraph/go-diff v0.7.0 h1:9uLlrd5T46OXs5qpp8L/MTltk0zikUGi0sNNyCpA8G0= github.com/sourcegraph/go-diff v0.7.0/go.mod h1:iBszgVvyxdc8SFZ7gm69go2KDdt3ag071iBaWPF6cjs= github.com/spf13/afero v1.15.0 h1:b/YBCLWAJdFWJTN9cLhiXXcD7mzKn9Dm86dNnfyQw1I= github.com/spf13/afero v1.15.0/go.mod h1:NC2ByUVxtQs4b3sIUphxK0NioZnmxgyCrfzeuq8lxMg= github.com/spf13/cast v1.5.0 h1:rj3WzYc11XZaIZMPKmwP96zkFEnnAmV8s6XbB2aY32w= github.com/spf13/cast v1.5.0/go.mod h1:SpXXQ5YoyJw6s3/6cMTQuxvgRl3PCJiyaX9p6b155UU= github.com/spf13/cobra v1.10.2 h1:DMTTonx5m65Ic0GOoRY2c16WCbHxOOw6xxezuLaBpcU= github.com/spf13/cobra v1.10.2/go.mod h1:7C1pvHqHw5A4vrJfjNwvOdzYu0Gml16OCs2GRiTUUS4= github.com/spf13/jwalterweatherman v1.1.0 h1:ue6voC5bR5F8YxI5S67j9i582FU4Qvo2bmqnqMYADFk= github.com/spf13/jwalterweatherman v1.1.0/go.mod h1:aNWZUN0dPAAO/Ljvb5BEdw96iTZ0EXowPYD95IqWIGo= github.com/spf13/pflag v1.0.5/go.mod h1:McXfInJRrz4CZXVZOBLb0bTZqETkiAhM9Iw0y3An2Bg= github.com/spf13/pflag v1.0.9/go.mod h1:McXfInJRrz4CZXVZOBLb0bTZqETkiAhM9Iw0y3An2Bg= github.com/spf13/pflag v1.0.10 h1:4EBh2KAYBwaONj6b2Ye1GiHfwjqyROoF4RwYO+vPwFk= github.com/spf13/pflag v1.0.10/go.mod h1:McXfInJRrz4CZXVZOBLb0bTZqETkiAhM9Iw0y3An2Bg= github.com/spf13/viper v1.12.0 h1:CZ7eSOd3kZoaYDLbXnmzgQI5RlciuXBMA+18HwHRfZQ= github.com/spf13/viper v1.12.0/go.mod h1:b6COn30jlNxbm/V2IqWiNWkJ+vZNiMNksliPCiuKtSI= github.com/ssgreg/nlreturn/v2 v2.2.1 h1:X4XDI7jstt3ySqGU86YGAURbxw3oTDPK9sPEi6YEwQ0= github.com/ssgreg/nlreturn/v2 v2.2.1/go.mod h1:E/iiPB78hV7Szg2YfRgyIrk1AD6JVMTRkkxBiELzh2I= github.com/stbenjam/no-sprintf-host-port v0.3.1 h1:AyX7+dxI4IdLBPtDbsGAyqiTSLpCP9hWRrXQDU4Cm/g= github.com/stbenjam/no-sprintf-host-port v0.3.1/go.mod h1:ODbZesTCHMVKthBHskvUUexdcNHAQRXk9NpSsL8p/HQ= github.com/stretchr/objx v0.1.0/go.mod h1:HFkY916IF+rwdDfMAkV7OtwuqBVzrE8GR6GFx+wExME= github.com/stretchr/objx v0.1.1/go.mod h1:HFkY916IF+rwdDfMAkV7OtwuqBVzrE8GR6GFx+wExME= github.com/stretchr/objx v0.5.2 h1:xuMeJ0Sdp5ZMRXx/aWO6RZxdr3beISkG5/G/aIRr3pY= github.com/stretchr/objx v0.5.2/go.mod h1:FRsXN1f5AsAjCGJKqEizvkpNtU+EGNCLh3NxZ/8L+MA= github.com/stretchr/testify v1.2.2/go.mod h1:a8OnRcib4nhh0OaRAV+Yts87kKdq0PP7pXfy6kDkUVs= github.com/stretchr/testify v1.3.0/go.mod h1:M5WIy9Dh21IEIfnGCwXGc5bZfKNJtfHm1UVUgZn+9EI= github.com/stretchr/testify v1.4.0/go.mod h1:j7eGeouHqKxXV5pUuKE4zz7dFj8WfuZ+81PSLYec5m4= github.com/stretchr/testify v1.11.1 h1:7s2iGBzp5EwR7/aIZr8ao5+dra3wiQyKjjFuvgVKu7U= github.com/stretchr/testify v1.11.1/go.mod h1:wZwfW3scLgRK+23gO65QZefKpKQRnfz6sD981Nm4B6U= github.com/subosito/gotenv v1.4.1 h1:jyEFiXpy21Wm81FBN71l9VoMMV8H8jG+qIK3GCpY6Qs= github.com/subosito/gotenv v1.4.1/go.mod h1:ayKnFf/c6rvx/2iiLrJUk1e6plDbT3edrFNGqEflhK0= github.com/tenntenn/modver v1.0.1 h1:2klLppGhDgzJrScMpkj9Ujy3rXPUspSjAcev9tSEBgA= github.com/tenntenn/modver v1.0.1/go.mod h1:bePIyQPb7UeioSRkw3Q0XeMhYZSMx9B8ePqg6SAMGH0= github.com/tenntenn/text/transform v0.0.0-20200319021203-7eef512accb3 h1:f+jULpRQGxTSkNYKJ51yaw6ChIqO+Je8UqsTKN/cDag= github.com/tenntenn/text/transform v0.0.0-20200319021203-7eef512accb3/go.mod h1:ON8b8w4BN/kE1EOhwT0o+d62W65a6aPw1nouo9LMgyY= github.com/tetafro/godot v1.5.4 h1:u1ww+gqpRLiIA16yF2PV1CV1n/X3zhyezbNXC3E14Sg= github.com/tetafro/godot v1.5.4/go.mod h1:eOkMrVQurDui411nBY2FA05EYH01r14LuWY/NrVDVcU= github.com/timakin/bodyclose v0.0.0-20241222091800-1db5c5ca4d67 h1:9LPGD+jzxMlnk5r6+hJnar67cgpDIz/iyD+rfl5r2Vk= github.com/timakin/bodyclose v0.0.0-20241222091800-1db5c5ca4d67/go.mod h1:mkjARE7Yr8qU23YcGMSALbIxTQ9r9QBVahQOBRfU460= github.com/timonwong/loggercheck v0.11.0 h1:jdaMpYBl+Uq9mWPXv1r8jc5fC3gyXx4/WGwTnnNKn4M= github.com/timonwong/loggercheck v0.11.0/go.mod h1:HEAWU8djynujaAVX7QI65Myb8qgfcZ1uKbdpg3ZzKl8= github.com/tomarrell/wrapcheck/v2 v2.12.0 h1:H/qQ1aNWz/eeIhxKAFvkfIA+N7YDvq6TWVFL27Of9is= github.com/tomarrell/wrapcheck/v2 v2.12.0/go.mod h1:AQhQuZd0p7b6rfW+vUwHm5OMCGgp63moQ9Qr/0BpIWo= github.com/tommy-muehle/go-mnd/v2 v2.5.1 h1:NowYhSdyE/1zwK9QCLeRb6USWdoif80Ie+v+yU8u1Zw= github.com/tommy-muehle/go-mnd/v2 v2.5.1/go.mod h1:WsUAkMJMYww6l/ufffCD3m+P7LEvr8TnZn9lwVDlgzw= github.com/ultraware/funlen v0.2.0 h1:gCHmCn+d2/1SemTdYMiKLAHFYxTYz7z9VIDRaTGyLkI= github.com/ultraware/funlen v0.2.0/go.mod h1:ZE0q4TsJ8T1SQcjmkhN/w+MceuatI6pBFSxxyteHIJA= github.com/ultraware/whitespace v0.2.0 h1:TYowo2m9Nfj1baEQBjuHzvMRbp19i+RCcRYrSWoFa+g= github.com/ultraware/whitespace v0.2.0/go.mod h1:XcP1RLD81eV4BW8UhQlpaR+SDc2givTvyI8a586WjW8= github.com/uudashr/gocognit v1.2.1 h1:CSJynt5txTnORn/DkhiB4mZjwPuifyASC8/6Q0I/QS4= github.com/uudashr/gocognit v1.2.1/go.mod h1:acaubQc6xYlXFEMb9nWX2dYBzJ/bIjEkc1zzvyIZg5Q= github.com/uudashr/iface v1.4.1 h1:J16Xl1wyNX9ofhpHmQ9h9gk5rnv2A6lX/2+APLTo0zU= github.com/uudashr/iface v1.4.1/go.mod h1:pbeBPlbuU2qkNDn0mmfrxP2X+wjPMIQAy+r1MBXSXtg= github.com/xen0n/gosmopolitan v1.3.0 h1:zAZI1zefvo7gcpbCOrPSHJZJYA9ZgLfJqtKzZ5pHqQM= github.com/xen0n/gosmopolitan v1.3.0/go.mod h1:rckfr5T6o4lBtM1ga7mLGKZmLxswUoH1zxHgNXOsEt4= github.com/xo/terminfo v0.0.0-20220910002029-abceb7e1c41e h1:JVG44RsyaB9T2KIHavMF/ppJZNG9ZpyihvCd0w101no= github.com/xo/terminfo v0.0.0-20220910002029-abceb7e1c41e/go.mod h1:RbqR21r5mrJuqunuUZ/Dhy/avygyECGrLceyNeo4LiM= github.com/yagipy/maintidx v1.0.0 h1:h5NvIsCz+nRDapQ0exNv4aJ0yXSI0420omVANTv3GJM= github.com/yagipy/maintidx v1.0.0/go.mod h1:0qNf/I/CCZXSMhsRsrEPDZ+DkekpKLXAJfsTACwgXLk= github.com/yeya24/promlinter v0.3.0 h1:JVDbMp08lVCP7Y6NP3qHroGAO6z2yGKQtS5JsjqtoFs= github.com/yeya24/promlinter v0.3.0/go.mod h1:cDfJQQYv9uYciW60QT0eeHlFodotkYZlL+YcPQN+mW4= github.com/ykadowak/zerologlint v0.1.5 h1:Gy/fMz1dFQN9JZTPjv1hxEk+sRWm05row04Yoolgdiw= github.com/ykadowak/zerologlint v0.1.5/go.mod h1:KaUskqF3e/v59oPmdq1U1DnKcuHokl2/K1U4pmIELKg= 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.1/go.mod h1:mwnBkeHKe2W/ZEtQ+71ViKU8L12m81fl3OWwC1Zlc8k= github.com/yuin/goldmark v1.4.13/go.mod h1:6yULJ656Px+3vBD8DxQVa3kxgyrAnzto9xy5taEt/CY= gitlab.com/bosi/decorder v0.4.2 h1:qbQaV3zgwnBZ4zPMhGLW4KZe7A7NwxEhJx39R3shffo= gitlab.com/bosi/decorder v0.4.2/go.mod h1:muuhHoaJkA9QLcYHq4Mj8FJUwDZ+EirSHRiaTcTf6T8= go-simpler.org/assert v0.9.0 h1:PfpmcSvL7yAnWyChSjOz6Sp6m9j5lyK8Ok9pEL31YkQ= go-simpler.org/assert v0.9.0/go.mod h1:74Eqh5eI6vCK6Y5l3PI8ZYFXG4Sa+tkr70OIPJAUr28= go-simpler.org/musttag v0.14.0 h1:XGySZATqQYSEV3/YTy+iX+aofbZZllJaqwFWs+RTtSo= go-simpler.org/musttag v0.14.0/go.mod h1:uP8EymctQjJ4Z1kUnjX0u2l60WfUdQxCwSNKzE1JEOE= go-simpler.org/sloglint v0.11.1 h1:xRbPepLT/MHPTCA6TS/wNfZrDzkGvCCqUv4Bdwc3H7s= go-simpler.org/sloglint v0.11.1/go.mod h1:2PowwiCOK8mjiF+0KGifVOT8ZsCNiFzvfyJeJOIt8MQ= go.augendre.info/arangolint v0.4.0 h1:xSCZjRoS93nXazBSg5d0OGCi9APPLNMmmLrC995tR50= go.augendre.info/arangolint v0.4.0/go.mod h1:l+f/b4plABuFISuKnTGD4RioXiCCgghv2xqst/xOvAA= go.augendre.info/fatcontext v0.9.0 h1:Gt5jGD4Zcj8CDMVzjOJITlSb9cEch54hjRRlN3qDojE= go.augendre.info/fatcontext v0.9.0/go.mod h1:L94brOAT1OOUNue6ph/2HnwxoNlds9aXDF2FcUntbNw= 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.uber.org/goleak v1.3.0 h1:2K3zAYmnTNqV73imy9J1T3WC+gmCePx2hEGkimedGto= go.uber.org/goleak v1.3.0/go.mod h1:CoHD4mav9JJNrW/WLlf7HGZPjdw8EucARQHekz1X6bE= go.uber.org/multierr v1.10.0 h1:S0h4aNzvfcFsC3dRF1jLoaov7oRaKqRGC/pUEJ2yvPQ= go.uber.org/multierr v1.10.0/go.mod h1:20+QtiLqy0Nd6FdQB9TLXag12DsQkrbs3htMFfDN80Y= go.uber.org/zap v1.27.0 h1:aJMhYGrd5QSmlpLMr2MftRKl7t8J8PTZPA732ud/XR8= go.uber.org/zap v1.27.0/go.mod h1:GB2qFLM7cTU87MWRP2mPIjqfIDnGu+VIO4V/SdhGo2E= go.yaml.in/yaml/v3 v3.0.4 h1:tfq32ie2Jv2UxXFdLJdh3jXuOzWiL1fo0bu/FbuKpbc= go.yaml.in/yaml/v3 v3.0.4/go.mod h1:DhzuOOF2ATzADvBadXxruRBLzYTpT36CKvDb3+aBEFg= golang.org/x/crypto v0.0.0-20180904163835-0709b304e793/go.mod h1:6SG95UA2DQfeDnfUPMdvaQW0Q7yPrPDi9nlGo2tz2b4= 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-20210921155107-089bfa567519/go.mod h1:GvvjBRRGRdwPK5ydBHafDWAxML/pGHZbMvKqRZ5+Abc= golang.org/x/crypto v0.1.0/go.mod h1:RecgLatLF4+eUMCP1PoPZQb+cVrJcOPbHkTkbkB9sbw= golang.org/x/crypto v0.11.0/go.mod h1:xgJhtzW8F9jGdVFWZESrid1U1bjeNy4zgy5cRr/CIio= golang.org/x/crypto v0.13.0/go.mod h1:y6Z2r+Rw4iayiXXAIxJIDAJ1zMW4yaTpebo8fPOliYc= golang.org/x/crypto v0.14.0/go.mod h1:MVFd36DqK4CsrnJYDkBA3VC4m2GkXAM0PvzMCn4JQf4= golang.org/x/crypto v0.19.0/go.mod h1:Iy9bg/ha4yyC70EfRS8jz+B6ybOBKMaSxLj6P6oBDfU= golang.org/x/crypto v0.21.0/go.mod h1:0BP7YvVV9gBbVKyeTG0Gyn+gZm94bibOW5BjDEYAOMs= 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-20250620022241-b7579e27df2b h1:M2rDM6z3Fhozi9O7NWsxAkg/yqS/lQJ6PmkyIV3YP+o= golang.org/x/exp v0.0.0-20250620022241-b7579e27df2b/go.mod h1:3//PLf8L/X+8b4vuAfHzxeRUl04Adcb341+IGKfnqS8= golang.org/x/exp/typeparams v0.0.0-20220428152302-39d4317da171/go.mod h1:AbB0pIl9nAr9wVwH+Z2ZpaocVmF5I4GyWCDIsVjR0bk= golang.org/x/exp/typeparams v0.0.0-20230203172020-98cc5a0785f9/go.mod h1:AbB0pIl9nAr9wVwH+Z2ZpaocVmF5I4GyWCDIsVjR0bk= golang.org/x/exp/typeparams v0.0.0-20260209203927-2842357ff358 h1:qWFG1Dj7TBjOjOvhEOkmyGPVoquqUKnIU0lEVLp8xyk= golang.org/x/exp/typeparams v0.0.0-20260209203927-2842357ff358/go.mod h1:4Mzdyp/6jzw9auFDJ3OMF5qksa7UvPnzKqTVGcb04ms= 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/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/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.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.20220106191415-9b9b3d81d5e3/go.mod h1:3p9vT2HGsQu2K1YbXdKPJLVgG5VJdoTa1poYQBtP1AY= golang.org/x/mod v0.6.0-dev.0.20220419223038-86c51ed26bb4/go.mod h1:jJ57K6gSWd91VN4djpZkiMVwK6gcyfeH4XE8wZrZaV4= golang.org/x/mod v0.6.0/go.mod h1:4mET923SAdbXp2ki8ey+zGs1SLqsuM2Y0uvdZR/fUNI= golang.org/x/mod v0.8.0/go.mod h1:iBbtSCu2XBx23ZKBPSOrRkjjQPZFPuis4dIYUhu/chs= golang.org/x/mod v0.9.0/go.mod h1:iBbtSCu2XBx23ZKBPSOrRkjjQPZFPuis4dIYUhu/chs= golang.org/x/mod v0.12.0/go.mod h1:iBbtSCu2XBx23ZKBPSOrRkjjQPZFPuis4dIYUhu/chs= golang.org/x/mod v0.13.0/go.mod h1:hTbmBsO62+eylJbnUtE2MGJUyE7QWk4xUqPFrRgJ+7c= golang.org/x/mod v0.15.0/go.mod h1:hTbmBsO62+eylJbnUtE2MGJUyE7QWk4xUqPFrRgJ+7c= golang.org/x/mod v0.16.0/go.mod h1:hTbmBsO62+eylJbnUtE2MGJUyE7QWk4xUqPFrRgJ+7c= golang.org/x/mod v0.33.0 h1:tHFzIWbBifEmbwtGz65eaWyGiGZatSrT9prnU8DbVL8= golang.org/x/mod v0.33.0/go.mod h1:swjeQEj+6r7fODbD2cqrnje9PnziFuw4bmLbBZFrQ5w= 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-20181114220301-adae6a3d119a/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-20190613194153-d28f0bde5980/go.mod h1:z5CRVTTTmAJ677TzLLGU+0bjPO0LkuOLi4/5GtJWs/s= 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-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-20210525063256-abc453219eb5/go.mod h1:9nx3DQGgdP8bBQD5qxJ1jj9UTztislL4KSBs9R2vV5Y= golang.org/x/net v0.0.0-20211015210444-4f30a5c0130f/go.mod h1:9nx3DQGgdP8bBQD5qxJ1jj9UTztislL4KSBs9R2vV5Y= golang.org/x/net v0.0.0-20220722155237-a158d28d115b/go.mod h1:XRhObCWvk6IyKnWLug+ECip1KBveYUHfp+8e9klMJ9c= golang.org/x/net v0.1.0/go.mod h1:Cx3nUiGt4eDBEyega/BKRp+/AlGL8hYe7U9odMt2Cco= 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.12.0/go.mod h1:zEVYFnQC7m/vmpQFELhcD1EWkZlX69l4oqgmer6hfKA= golang.org/x/net v0.15.0/go.mod h1:idbUs1IY1+zTqbi8yxTbhexhEEk5ur9LInksu6HrEpk= golang.org/x/net v0.16.0/go.mod h1:NxSsAGuq816PNPmqtQdLE42eU2Fs7NoRIZrHJAlaCOE= golang.org/x/net v0.21.0/go.mod h1:bIjVDfnllIU7BJ2DNgfnXvpSvtn8VRwhlsaeUTyUS44= golang.org/x/net v0.22.0/go.mod h1:JKghWKKOSdJwpW2GEx0Ja7fmaKnMsbu+MWVZTokSYmg= golang.org/x/net v0.51.0 h1:94R/GTO7mt3/4wIKpcR5gkGmRLOuE/2hNGeWq/GBIFo= golang.org/x/net v0.51.0/go.mod h1:aamm+2QF5ogm02fjy5Bb7CQ0WMt1/WVM7FtyaTLlA9Y= 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-20210514164344-f6687ab2804c/go.mod h1:KelEdhl1UZF7XfJ4dDtk6s++YSgaE7mD/BuKKDLBl4A= 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.4.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.20.0 h1:e0PTpb7pjO8GAtTs2dQ6jYa5BWYlMuX047Dco/pItO4= golang.org/x/sync v0.20.0/go.mod h1:9xrNwdLfx4jkKbNva9FpL6vEN7evnE43NNNJQ2LF3+0= golang.org/x/sys v0.0.0-20180830151530-49385e6e1522/go.mod h1:STP8DvDyc/dI5b8T5hshtkjS+E42TnysNCUPdjciGhY= golang.org/x/sys v0.0.0-20180905080454-ebe1bf3edb33/go.mod h1:STP8DvDyc/dI5b8T5hshtkjS+E42TnysNCUPdjciGhY= golang.org/x/sys v0.0.0-20181116152217-5ac8a444bdc5/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-20190422165155-953cdadca894/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-20200106162015-b016eb3dc98e/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-20200615200032-f1bc736245b1/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= golang.org/x/sys v0.0.0-20200625212154-ddb9806d33ae/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= golang.org/x/sys v0.0.0-20200803210538-64077c9b5642/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-20210124154548-22da62e12c0c/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-20210510120138-977fb7262007/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg= golang.org/x/sys v0.0.0-20210603081109-ebe580a85c40/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-20211019181941-9d821ace8654/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg= golang.org/x/sys v0.0.0-20211105183446-c75c47738b0c/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg= golang.org/x/sys v0.0.0-20220114195835-da31bd327af9/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-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.4.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.10.0/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg= golang.org/x/sys v0.12.0/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg= golang.org/x/sys v0.13.0/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg= golang.org/x/sys v0.14.0/go.mod h1:/VUhepiaJMQUp4+oa/7Zr1D23ma6VTLIYjOOTFZPUcA= golang.org/x/sys v0.17.0/go.mod h1:/VUhepiaJMQUp4+oa/7Zr1D23ma6VTLIYjOOTFZPUcA= golang.org/x/sys v0.18.0/go.mod h1:/VUhepiaJMQUp4+oa/7Zr1D23ma6VTLIYjOOTFZPUcA= golang.org/x/sys v0.41.0 h1:Ivj+2Cp/ylzLiEU89QhWblYnOE9zerudt9Ftecq2C6k= golang.org/x/sys v0.41.0/go.mod h1:OgkHotnGiDImocRcuBABYBEXf8A9a87e/uXjp9XT3ks= golang.org/x/telemetry v0.0.0-20240228155512-f48c80bd79b2/go.mod h1:TeRTkGYfJXctD9OcfyVLyj2J3IxLnKwHJR8f4D8a3YE= 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.1.0/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.10.0/go.mod h1:lpqdcUyK/oCiQxvxVrppt5ggO2KCZ5QblwqPnfZ6d5o= golang.org/x/term v0.12.0/go.mod h1:owVbMEjm3cBLCHdkQu9b1opXd4ETQWc3BhuQGKgXgvU= golang.org/x/term v0.13.0/go.mod h1:LTmsnFJwVN6bCy1rVCoS+qHT1HhALEFxKncY3WNNh4U= golang.org/x/term v0.17.0/go.mod h1:lLRBjIVuehSbZlaOtGMbcMncT+aqLLLmKrsjNrUguwk= golang.org/x/term v0.18.0/go.mod h1:ILwASektA3OnRv7amZ1xhE/KTR+u50pbXfZ03+6Nx58= golang.org/x/term v0.39.0 h1:RclSuaJf32jOqZz74CkPA9qFuVTX7vhLlpfj/IGWlqY= golang.org/x/term v0.39.0/go.mod h1:yxzUCTP/U+FzoxfdKmLaA0RV1WgE0VY7hXBwKtY/4ww= 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.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.4.0/go.mod h1:mrYo+phRRbMaCq/xk9113O4dZlRixOauAjOtrjsXDZ8= 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.11.0/go.mod h1:TvPlkZtksWOMsz7fbANvkp4WM8x/WCo/om8BMLbz+aE= 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.34.0 h1:oL/Qq0Kdaqxa1KbNeMKwQq0reLCCaFtqu2eNuSeNHbk= golang.org/x/text v0.34.0/go.mod h1:homfLqTYRFyVYemLBFl5GgL/DWEiH5wcsQ5gSh1yziA= 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/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-20200329025819-fd4102a86c65/go.mod h1:Sl4aGygMT6LrqrWclx+PTx3U+LnKx/seiNR+3G19Ar8= 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-20200724022722-7017fd6b1305/go.mod h1:njjCfa9FT2d7l9Bc6FUM5FLjQPp3cFF28FI3qnDFljA= 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.1.1-0.20210205202024-ef80cdb6ec6d/go.mod h1:9bzcO0MWcOuT0tm1iBGzDVPshzfwoVvREIui8C+MHqU= golang.org/x/tools v0.1.1-0.20210302220138-2ac05c832e1a/go.mod h1:9bzcO0MWcOuT0tm1iBGzDVPshzfwoVvREIui8C+MHqU= golang.org/x/tools v0.1.1/go.mod h1:o0xws9oXOQQZyjljx8fwUC0k7L1pTE6eaCbjGeHmOkk= golang.org/x/tools v0.1.10/go.mod h1:Uh6Zz+xoGYZom868N8YTex3t7RhtHDBrE8Gzo9bV56E= golang.org/x/tools v0.1.12/go.mod h1:hNGJHUnrk76NpqgfD5Aqm5Crs+Hm0VOH/i9J2+nxYbc= golang.org/x/tools v0.2.0/go.mod h1:y4OqIKeOV/fWJetJ8bXPU1sEVniLMIyDAZWeHdV+NTA= golang.org/x/tools v0.6.0/go.mod h1:Xwgl3UAJ/d3gWutnCtw505GrjyAbvKui8lOU390QaIU= golang.org/x/tools v0.11.0/go.mod h1:anzJrxPjNtfgiYQYirP2CPGzGLxrH2u2QBhn6Bf3qY8= golang.org/x/tools v0.13.0/go.mod h1:HvlwmtVNQAhOuCjW7xxvovg8wbNq7LwfXh/k7wXUl58= golang.org/x/tools v0.14.0/go.mod h1:uYBEerGOWcJyEORxN+Ek8+TT266gXkNlHdJBwexUsBg= golang.org/x/tools v0.19.0/go.mod h1:qoJWxmGSIBmAeriMx19ogtrEPrGtDbPK634QFIcLAhc= golang.org/x/tools v0.42.0 h1:uNgphsn75Tdz5Ji2q36v/nsFSfR/9BRFvqhGBaJGd5k= golang.org/x/tools v0.42.0/go.mod h1:Ma6lCIwGZvHK6XtgbswSoWroEkhugApmsXyrUmBhfr0= golang.org/x/tools/go/expect v0.1.1-deprecated h1:jpBZDwmgPhXsKZC6WhL20P4b/wmnpsEAGHaNy0n/rJM= golang.org/x/tools/go/expect v0.1.1-deprecated/go.mod h1:eihoPOH+FgIqa3FpoTwguz/bVUSGBlGQU67vpBeOrBY= golang.org/x/tools/go/packages/packagestest v0.1.1-deprecated h1:1h2MnaIAIXISqTFKdENegdpAgUXz6NrPEsbIeWaBRvM= golang.org/x/tools/go/packages/packagestest v0.1.1-deprecated/go.mod h1:RVAQXBGNv1ib0J382/DPCRS/BPnsGebyM1Gj5VSDpG8= 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= 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/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/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/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/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.26.0-rc.1/go.mod h1:jlhhOSvTdKEhbULTjvd4ARK9grFBp09yW+WbY/TyQbw= google.golang.org/protobuf v1.26.0/go.mod h1:9q0QmTI4eRPtz6boOQmLYwt+qCgq0jsYwAQnmE0givc= google.golang.org/protobuf v1.36.8 h1:xHScyCOEuuwZEc6UtSOvPbAT4zRh0xcNRYekJwfqyMc= google.golang.org/protobuf v1.36.8/go.mod h1:fuxRtAxBytpl4zzqUh6/eyUujkJdNiuEkXntxiD/uRU= gopkg.in/alecthomas/kingpin.v2 v2.2.6/go.mod h1:FMv+mEhP44yOT+4EoQTLFTRgOQ1FBLkstjWtayDeSgw= 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-20190902080502-41f04d3bba15/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/ini.v1 v1.67.0 h1:Dgnx+6+nfE+IfzjUEISNeydPJh9AXNNsWbGP9KzCsOA= gopkg.in/ini.v1 v1.67.0/go.mod h1:pNLf8WUiyNEtQjuu5G5vTm06TEv9tsIgeAvK8hOrP4k= gopkg.in/yaml.v2 v2.2.1/go.mod h1:hI93XBmqTisBFMUTm0b8Fm+jr3Dg1NNxqwp+5A1VGuI= gopkg.in/yaml.v2 v2.2.2/go.mod h1:hI93XBmqTisBFMUTm0b8Fm+jr3Dg1NNxqwp+5A1VGuI= gopkg.in/yaml.v2 v2.2.4/go.mod h1:hI93XBmqTisBFMUTm0b8Fm+jr3Dg1NNxqwp+5A1VGuI= gopkg.in/yaml.v2 v2.2.5/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.1 h1:fxVm/GzAzEWqLHuvctI91KS9hhNmmWOoWu0XTYJS7CA= gopkg.in/yaml.v3 v3.0.1/go.mod h1:K4uyk7z7BCEPqu6E+C64Yfv1cQ7kz7rIZviUmN+EgEM= gotest.tools/gotestsum v1.12.0 h1:CmwtaGDkHxrZm4Ib0Vob89MTfpc3GrEFMJKovliPwGk= gotest.tools/gotestsum v1.12.0/go.mod h1:fAvqkSptospfSbQw26CTYzNwnsE/ztqLeyhP0h67ARY= gotest.tools/v3 v3.5.1 h1:EENdUnS3pdur5nybKYIh2Vfgc8IUNBjxDPSjtiJcOzU= gotest.tools/v3 v3.5.1/go.mod h1:isy3WKz7GK6uNw/sbHzfKBLvlvXwUyV06n6brMxxopU= 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= honnef.co/go/tools v0.7.0 h1:w6WUp1VbkqPEgLz4rkBzH/CSU6HkoqNLp6GstyTx3lU= honnef.co/go/tools v0.7.0/go.mod h1:pm29oPxeP3P82ISxZDgIYeOaf9ta6Pi0EWvCFoLG2vc= k8s.io/code-generator v0.31.0 h1:w607nrMi1KeDKB3/F/J4lIoOgAwc+gV9ZKew4XRfMp8= k8s.io/code-generator v0.31.0/go.mod h1:84y4w3es8rOJOUUP1rLsIiGlO1JuEaPFXQPA9e/K6U0= k8s.io/gengo/v2 v2.0.0-20240228010128-51d4e06bde70 h1:NGrVE502P0s0/1hudf8zjgwki1X/TByhmAoILTarmzo= k8s.io/gengo/v2 v2.0.0-20240228010128-51d4e06bde70/go.mod h1:VH3AT8AaQOqiGjMF9p0/IM1Dj+82ZwjfxUP1IxaHE+8= k8s.io/klog/v2 v2.130.1 h1:n9Xl7H1Xvksem4KFG4PYbdQCQxqc/tTUyrgXaOhHSzk= k8s.io/klog/v2 v2.130.1/go.mod h1:3Jpz1GvMt720eyJH1ckRHK1EDfpxISzJ7I9OYgaDtPE= mvdan.cc/gofumpt v0.9.2 h1:zsEMWL8SVKGHNztrx6uZrXdp7AX8r421Vvp23sz7ik4= mvdan.cc/gofumpt v0.9.2/go.mod h1:iB7Hn+ai8lPvofHd9ZFGVg2GOr8sBUw1QUWjNbmIL/s= mvdan.cc/unparam v0.0.0-20251027182757-5beb8c8f8f15 h1:ssMzja7PDPJV8FStj7hq9IKiuiKhgz9ErWw+m68e7DI= mvdan.cc/unparam v0.0.0-20251027182757-5beb8c8f8f15/go.mod h1:4M5MMXl2kW6fivUT6yRGpLLPNfuGtU2Z0cPvFquGDYU= 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= kubernetes-sigs-kind-49aeee6/hack/tools/tools.go000066400000000000000000000017271524365506300220300ustar00rootroot00000000000000//go:build tools // +build tools /* Copyright The Kubernetes Authors. 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 tools is used to track binary dependencies with go modules // https://github.com/golang/go/wiki/Modules#how-can-i-track-tool-dependencies-for-a-module package tools import ( // linter(s) _ "github.com/golangci/golangci-lint/v2/cmd/golangci-lint" // kubernetes code generators _ "k8s.io/code-generator/cmd/deepcopy-gen" // test runner _ "gotest.tools/gotestsum" ) kubernetes-sigs-kind-49aeee6/images/000077500000000000000000000000001524365506300175315ustar00rootroot00000000000000kubernetes-sigs-kind-49aeee6/images/Makefile.common.in000066400000000000000000000035511524365506300230710ustar00rootroot00000000000000# Copyright 2020 The Kubernetes Authors. # # 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. # shared makefile for all images # get image name from directory we're building IMAGE_NAME?=$(notdir $(CURDIR)) # docker image registry, default to upstream REGISTRY?=gcr.io/k8s-staging-kind # for appending build-meta like "_containerd-v1.7.1" TAG_SUFFIX?= # tag based on date-sha TAG?=$(shell echo "$$(date +v%Y%m%d)-$$(git log --pretty=format:'%h' -n 1)") # the full image tag IMAGE?=$(REGISTRY)/$(IMAGE_NAME):$(TAG)$(TAG_SUFFIX) # Go version to use, respected by images that build go binaries GO_VERSION=$(shell cat $(CURDIR)/../../.go-version | head -n1) # build with buildx PLATFORMS?=linux/amd64,linux/arm64 OUTPUT?= PROGRESS=auto EXTRA_BUILD_OPT?= build: ensure-buildx docker buildx build $(if $(PLATFORMS),--platform=$(PLATFORMS),) $(OUTPUT) --progress=$(PROGRESS) -t ${IMAGE} --pull --build-arg GO_VERSION=$(GO_VERSION) $(EXTRA_BUILD_OPT) . # push the cross built image push: OUTPUT=--push push: build # quick can be used to do a build that will be imported into the local docker # for sanity checking before doing a cross build push # cross builds cannot be imported locally at the moment # https://github.com/docker/buildx/issues/59 quick: PLATFORMS= quick: OUTPUT=--load quick: build # enable buildx ensure-buildx: ./../../hack/build/init-buildx.sh .PHONY: push build quick ensure-buildx kubernetes-sigs-kind-49aeee6/images/base/000077500000000000000000000000001524365506300204435ustar00rootroot00000000000000kubernetes-sigs-kind-49aeee6/images/base/Dockerfile000066400000000000000000000265141524365506300224450ustar00rootroot00000000000000# Copyright 2018 The Kubernetes Authors. # # 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. # kind node base image # # For systemd + docker configuration used below, see the following references: # https://systemd.io/CONTAINER_INTERFACE/ # start from debian slim, this image is reasonably small as a starting point # for a kubernetes node image, it doesn't contain much (anything?) we don't need # this stage will install basic files and packages ARG BASE_IMAGE=debian:trixie-slim FROM $BASE_IMAGE AS base # copy in static files # all scripts and directories are 0755 (rwx r-x r-x) # all non-scripts are 0644 (rw- r-- r--) COPY --chmod=0755 files/usr/local/bin/* /usr/local/bin/ COPY --chmod=0644 files/kind/ /kind/ # COPY only applies to files, not the directory itself, so the permissions are # fixed in RUN below with a chmod. COPY --chmod=0755 files/kind/bin/ /kind/bin/ COPY --chmod=0644 files/LICENSES/* /LICENSES/* COPY --chmod=0644 files/etc/* /etc/ COPY --chmod=0644 files/etc/containerd/* /etc/containerd/ COPY --chmod=0644 files/etc/default/* /etc/default/ COPY --chmod=0644 files/etc/sysctl.d/* /etc/sysctl.d/ COPY --chmod=0644 files/etc/systemd/system/* /etc/systemd/system/ COPY --chmod=0644 files/etc/systemd/system/kubelet.service.d/* /etc/systemd/system/kubelet.service.d/ # Install dependencies, first from apt, then from release tarballs. # NOTE: we use one RUN to minimize layers. # # The base image already has a basic userspace + apt but we need to install more packages. # Packages installed are broken down into (each on a line): # - packages needed to run services (systemd) # - packages needed for kubernetes components # - packages needed for networked backed storage with kubernetes # - packages used by kubernetes storage e2e tests # - packages needed by the container runtime # - misc packages kind uses itself # - packages that provide semi-core kubernetes functionality # After installing packages we cleanup by: # - removing unwanted systemd services # - disabling kmsg in journald (these log entries would be confusing) # # Then we install containerd from our nightly build infrastructure, as this # build for multiple architectures and allows us to upgrade to patched releases # more quickly. # # Next we download and extract crictl and CNI plugin binaries from upstream. # # Next we ensure the /etc/kubernetes/manifests directory exists. Normally # a kubeadm debian / rpm package would ensure that this exists but we install # freshly built binaries directly when we build the node image. # # Finally we adjust tempfiles cleanup to be 1 minute after "boot" instead of 15m # This is plenty after we've done initial setup for a node, but before we are # likely to try to export logs etc. RUN chmod 755 /kind /kind/bin && \ echo "Installing Packages ..." \ && DEBIAN_FRONTEND=noninteractive clean-install \ systemd \ conntrack iptables nftables iproute2 ethtool util-linux mount kmod \ libseccomp2 pigz fuse-overlayfs \ nfs-common open-iscsi \ e2fsprogs \ bash ca-certificates curl jq procps \ && find /lib/systemd/system/sysinit.target.wants/ -name "systemd-tmpfiles-setup.service" -delete \ && rm -f /lib/systemd/system/multi-user.target.wants/* \ && rm -f /etc/systemd/system/*.wants/* \ && rm -f /lib/systemd/system/local-fs.target.wants/* \ && rm -f /lib/systemd/system/sockets.target.wants/*udev* \ && rm -f /lib/systemd/system/sockets.target.wants/*initctl* \ && rm -f /lib/systemd/system/basic.target.wants/* \ && echo "ReadKMsg=no" >> /etc/systemd/journald.conf \ && ln -s /usr/lib/systemd/systemd /sbin/init # NOTE: systemd-binfmt.service will register things into binfmt_misc which is kernel-global RUN echo "Enabling / Disabling services ... " \ && systemctl enable kubelet.service \ && systemctl enable containerd.service \ && systemctl enable undo-mount-hacks.service \ && systemctl mask systemd-binfmt.service RUN echo "Ensuring /etc/kubernetes/manifests" \ && mkdir -p /etc/kubernetes/manifests # shared stage to setup go version for building binaries # NOTE we will be cross-compiling for performance reasons # This is also why we start again FROM the same base image but a different # platform and only the files needed for building # We will copy the built binaries from later stages to the final stage(s) FROM --platform=$BUILDPLATFORM $BASE_IMAGE AS go-build COPY --chmod=0755 files/usr/local/bin/* /usr/local/bin/ COPY --chmod=0755 scripts/third_party/gimme/gimme /usr/local/bin/ COPY --chmod=0755 scripts/target-cc /usr/local/bin/ # tools needed at build-time only # first ensure we can install packages for both architectures RUN dpkg --add-architecture arm64 && dpkg --add-architecture amd64 \ && clean-install bash ca-certificates curl git make pkg-config \ build-essential crossbuild-essential-amd64 crossbuild-essential-arm64 \ libseccomp-dev:amd64 libseccomp-dev:arm64 # set by makefile to .go-version ARG GO_VERSION RUN eval "$(gimme "${GO_VERSION}")" \ && export GOTOOLCHAIN="go${GO_VERSION}" \ && GOBIN=/usr/local/bin go install github.com/google/go-licenses@latest # stage for building containerd FROM go-build AS build-containerd ARG TARGETARCH GO_VERSION ARG CONTAINERD_VERSION="v2.3.4" ARG CONTAINERD_CLONE_URL="https://github.com/containerd/containerd" # we don't build with optional snapshotters, we never select any of these # they're not ideal inside kind anyhow, and we save some disk space ARG BUILDTAGS="no_aufs no_zfs no_btrfs no_devmapper" RUN git clone --filter=tree:0 "${CONTAINERD_CLONE_URL}" /containerd \ && cd /containerd \ && git checkout "${CONTAINERD_VERSION}" \ && eval "$(gimme "${GO_VERSION}")" \ && export GOTOOLCHAIN="go${GO_VERSION}" \ && export GOARCH=$TARGETARCH && export CC=$(target-cc) && export CGO_ENABLED=1 \ && make bin/ctr bin/containerd bin/containerd-shim-runc-v2 \ && GOARCH=$TARGETARCH go-licenses save --save_path=/_LICENSES \ ./cmd/ctr ./cmd/containerd ./cmd/containerd-shim-runc-v2 # stage for building runc FROM go-build AS build-runc ARG TARGETARCH GO_VERSION ARG RUNC_VERSION="v1.4.3" ARG RUNC_CLONE_URL="https://github.com/opencontainers/runc" RUN git clone --filter=tree:0 "${RUNC_CLONE_URL}" /runc \ && cd /runc \ && git checkout "${RUNC_VERSION}" \ && eval "$(gimme "${GO_VERSION}")" \ && export GOTOOLCHAIN="go${GO_VERSION}" \ && export GOARCH=$TARGETARCH && export CC=$(target-cc) && export CGO_ENABLED=1 \ && make runc \ && GOARCH=$TARGETARCH go-licenses save --save_path=/_LICENSES . # stage for building crictl FROM go-build AS build-crictl ARG TARGETARCH GO_VERSION ARG CRI_TOOLS_CLONE_URL="https://github.com/kubernetes-sigs/cri-tools" ARG CRICTL_VERSION="v1.36.0" RUN git clone --filter=tree:0 "${CRI_TOOLS_CLONE_URL}" /cri-tools \ && cd /cri-tools \ && git checkout "${CRICTL_VERSION}" \ && eval "$(gimme "${GO_VERSION}")" \ && export GOTOOLCHAIN="go${GO_VERSION}" \ && export GOARCH=$TARGETARCH && export CC=$(target-cc) && export CGO_ENABLED=0 \ && make BUILD_BIN_PATH=./build crictl \ && GOARCH=$TARGETARCH go-licenses save --save_path=/_LICENSES ./cmd/crictl # stage for building cni-plugins FROM go-build AS build-cni ARG TARGETARCH GO_VERSION ARG CNI_PLUGINS_VERSION="v1.9.1" ARG CNI_PLUGINS_CLONE_URL="https://github.com/containernetworking/plugins" RUN git clone --filter=tree:0 "${CNI_PLUGINS_CLONE_URL}" /cni-plugins \ && cd /cni-plugins \ && git checkout "${CNI_PLUGINS_VERSION}" \ && eval "$(gimme "${GO_VERSION}")" \ && export GOTOOLCHAIN="go${GO_VERSION}" \ && mkdir ./bin \ && export GOARCH=$TARGETARCH && export CC=$(target-cc) && export CGO_ENABLED=0 \ && go build -o ./bin/host-local -mod=vendor ./plugins/ipam/host-local \ && go build -o ./bin/loopback -mod=vendor ./plugins/main/loopback \ && go build -o ./bin/ptp -mod=vendor ./plugins/main/ptp \ && go build -o ./bin/portmap -mod=vendor ./plugins/meta/portmap \ && GOARCH=$TARGETARCH go-licenses save --save_path=/_LICENSES \ ./plugins/ipam/host-local \ ./plugins/main/loopback ./plugins/main/ptp \ ./plugins/meta/portmap # stage for building containerd-fuse-overlayfs FROM go-build AS build-fuse-overlayfs ARG TARGETARCH GO_VERSION ARG CONTAINERD_FUSE_OVERLAYFS_VERSION="v2.1.7" ARG CONTAINERD_FUSE_OVERLAYFS_CLONE_URL="https://github.com/containerd/fuse-overlayfs-snapshotter" RUN git clone --filter=tree:0 "${CONTAINERD_FUSE_OVERLAYFS_CLONE_URL}" /fuse-overlayfs-snapshotter \ && cd /fuse-overlayfs-snapshotter \ && git checkout "${CONTAINERD_FUSE_OVERLAYFS_VERSION}" \ && eval "$(gimme "${GO_VERSION}")" \ && export GOTOOLCHAIN="go${GO_VERSION}" \ && export GOARCH=$TARGETARCH && export CC=$(target-cc) && export CGO_ENABLED=1 \ && make bin/containerd-fuse-overlayfs-grpc \ && GOARCH=$TARGETARCH go-licenses save --save_path=/_LICENSES ./cmd/containerd-fuse-overlayfs-grpc # build final image layout from other stages FROM base AS build # copy over containerd build and install COPY --from=build-containerd /containerd/bin/containerd /usr/local/bin/ COPY --from=build-containerd /containerd/bin/ctr /usr/local/bin/ COPY --from=build-containerd /containerd/bin/containerd-shim-runc-v2 /usr/local/bin/ RUN ctr oci spec \ | jq '.hooks.createContainer[.hooks.createContainer| length] |= . + {"path": "/kind/bin/mount-product-files.sh"}' \ | jq 'del(.process.rlimits)' \ > /etc/containerd/cri-base.json \ && containerd --version COPY --from=build-containerd /_LICENSES/* /LICENSES/ # copy over runc build and install COPY --from=build-runc /runc/runc /usr/local/sbin/runc RUN runc --version COPY --from=build-runc /_LICENSES/* /LICENSES/ # copy over crictl build and install COPY --from=build-crictl /cri-tools/build/crictl /usr/local/bin/ COPY --from=build-crictl /_LICENSES/* /LICENSES/ # copy over CNI plugins build and install RUN mkdir -p /opt/cni/bin COPY --from=build-cni /cni-plugins/bin/host-local /opt/cni/bin/ COPY --from=build-cni /cni-plugins/bin/loopback /opt/cni/bin/ COPY --from=build-cni /cni-plugins/bin/ptp /opt/cni/bin/ COPY --from=build-cni /cni-plugins/bin/portmap /opt/cni/bin/ COPY --from=build-cni /_LICENSES/* /LICENSES/ # copy over containerd-fuse-overlayfs and install COPY --from=build-fuse-overlayfs /fuse-overlayfs-snapshotter/bin/containerd-fuse-overlayfs-grpc /usr/local/bin/ COPY --from=build-fuse-overlayfs /_LICENSES/* /LICENSES/ # squash down to one compressed layer, without any lingering whiteout files etc FROM scratch COPY --from=build / / # add metadata, must be done after the squashing # first tell systemd that it is in docker (it will check for the container env) # https://systemd.io/CONTAINER_INTERFACE/ ENV container=docker # systemd exits on SIGRTMIN+3, not SIGTERM (which re-executes it) # https://bugzilla.redhat.com/show_bug.cgi?id=1201657 STOPSIGNAL SIGRTMIN+3 # NOTE: this is *only* for documentation, the entrypoint is overridden later ENTRYPOINT [ "/usr/local/bin/entrypoint", "/sbin/init" ] kubernetes-sigs-kind-49aeee6/images/base/Makefile000066400000000000000000000011641524365506300221050ustar00rootroot00000000000000# Copyright 2020 The Kubernetes Authors. # # 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. include $(CURDIR)/../Makefile.common.in kubernetes-sigs-kind-49aeee6/images/base/README.md000066400000000000000000000021061524365506300217210ustar00rootroot00000000000000 # images/base This directory contains sources for building the `kind` base "node" image. The image can be built with `make quick`. ## Maintenance This image needs to do a number of unusual things to support running systemd, nested containers, and Kubernetes. All of what we do and why we do it is documented inline in the [Dockerfile](./Dockerfile). If you make any changes to this image, please continue to document exactly why we do what we do, citing upstream documentation where possible. See also [`pkg/cluster`](./../../pkg/cluster) for logic that interacts with this image. ## Alternate Sources Kind frequently picks up new releases of dependent projects including containerd, runc, cni, and crictl. If you choose to use the provided Dockerfile but use build arguments to specify a different base image or application version for dependencies, be aware that you may possibly encounter bugs and undesired behavior. ## Design See [base-image](https://kind.sigs.k8s.io/docs/design/base-image/) for more design details. kubernetes-sigs-kind-49aeee6/images/base/cloudbuild.yaml000066400000000000000000000004051524365506300234540ustar00rootroot00000000000000# See https://cloud.google.com/cloud-build/docs/build-config options: substitution_option: ALLOW_LOOSE machineType: E2_HIGHCPU_32 steps: - name: gcr.io/k8s-staging-test-infra/gcb-docker-gcloud:latest entrypoint: make args: ['-C', 'images/base', 'push'] kubernetes-sigs-kind-49aeee6/images/base/files/000077500000000000000000000000001524365506300215455ustar00rootroot00000000000000kubernetes-sigs-kind-49aeee6/images/base/files/LICENSES/000077500000000000000000000000001524365506300227525ustar00rootroot00000000000000kubernetes-sigs-kind-49aeee6/images/base/files/LICENSES/README.txt000066400000000000000000000002641524365506300244520ustar00rootroot00000000000000This directory contains license files and notices from binaries built for this image and the dependencies of those binaries, as collected by https://github.com/google/go-licenses. kubernetes-sigs-kind-49aeee6/images/base/files/etc/000077500000000000000000000000001524365506300223205ustar00rootroot00000000000000kubernetes-sigs-kind-49aeee6/images/base/files/etc/containerd/000077500000000000000000000000001524365506300244465ustar00rootroot00000000000000kubernetes-sigs-kind-49aeee6/images/base/files/etc/containerd/config.toml000066400000000000000000000033131524365506300266100ustar00rootroot00000000000000# explicitly use v2 config format version = 2 [proxy_plugins] # fuse-overlayfs is used for rootless [proxy_plugins."fuse-overlayfs"] type = "snapshot" address = "/run/containerd-fuse-overlayfs.sock" [plugins."io.containerd.grpc.v1.cri".containerd] # save disk space when using a single snapshotter discard_unpacked_layers = true # explicitly use default snapshotter so we can sed it in entrypoint snapshotter = "overlayfs" # explicit default here, as we're configuring it below default_runtime_name = "runc" [plugins."io.containerd.grpc.v1.cri".containerd.runtimes.runc] # set default runtime handler to v2, which has a per-pod shim runtime_type = "io.containerd.runc.v2" # Generated by "ctr oci spec" and modified at base container to mount poduct_uuid base_runtime_spec = "/etc/containerd/cri-base.json" [plugins."io.containerd.grpc.v1.cri".containerd.runtimes.runc.options] # use systemd cgroup by default SystemdCgroup = true # Setup a runtime with the magic name ("test-handler") used for Kubernetes # runtime class tests ... [plugins."io.containerd.grpc.v1.cri".containerd.runtimes.test-handler] # same settings as runc runtime_type = "io.containerd.runc.v2" base_runtime_spec = "/etc/containerd/cri-base.json" [plugins."io.containerd.grpc.v1.cri".containerd.runtimes.test-handler.options] SystemdCgroup = true [plugins."io.containerd.grpc.v1.cri"] # use fixed sandbox image sandbox_image = "registry.k8s.io/pause:3.10" # allow hugepages controller to be missing # see https://github.com/containerd/cri/pull/1501 tolerate_missing_hugepages_controller = true # restrict_oom_score_adj needs to be true when running inside UserNS (rootless) restrict_oom_score_adj = false kubernetes-sigs-kind-49aeee6/images/base/files/etc/crictl.yaml000066400000000000000000000000701524365506300244610ustar00rootroot00000000000000runtime-endpoint: unix:///run/containerd/containerd.sockkubernetes-sigs-kind-49aeee6/images/base/files/etc/default/000077500000000000000000000000001524365506300237445ustar00rootroot00000000000000kubernetes-sigs-kind-49aeee6/images/base/files/etc/default/kubelet000066400000000000000000000001051524365506300253160ustar00rootroot00000000000000KUBELET_EXTRA_ARGS=--runtime-cgroups=/system.slice/containerd.servicekubernetes-sigs-kind-49aeee6/images/base/files/etc/sysctl.d/000077500000000000000000000000001524365506300240635ustar00rootroot00000000000000kubernetes-sigs-kind-49aeee6/images/base/files/etc/sysctl.d/10-network-magic.conf000066400000000000000000000027641524365506300277300ustar00rootroot00000000000000# Do not consider loopback addresses as martian source or destination while routing # - Docker with custom networks uses an embedded DNS server with address 172.0.0.11 # - Kubernetes pods mount the node resolv.conf, so they can't use a loopack address # that is only reachable from the node. # # KIND rewrites the well-known docker DNS address 127.0.0.11 by a non-loopback address. # The DNS traffic coming from a pod will have to route to a localhost address to be NATed, # hence we have to enable route_localnet or pods DNS will not work. # Kubernetes mitigates the possible security issue caused by enabling this option. # ref: https://nvd.nist.gov/vuln/detail/CVE-2020-8558 net.ipv4.conf.all.route_localnet=1 # The global kernel parameter net.ipv4.conf.all.arp_ignore governs the # conditions under which ARP requests will be accepted or ignored. This global # setting will override any individual interface settings. Some host systems # might set this global parameter to a more restrictive setting of 2 (or # greater). Specifically, in mode 2, the system ignores ARP requests directed to # /32 addresses (this is what kindnet assigns to its veth interfaces) because # the request originates from a different subnet. This behavior breaks routing # for kindnet (specifically the ptp plugin), so we opinionatedly set this to 0 # when kindnet is in use to ensure proper networking. # # For more information see: # https://www.kernel.org/doc/html/latest/networking/ip-sysctl.html#arp_ignore net.ipv4.conf.all.arp_ignore=0 kubernetes-sigs-kind-49aeee6/images/base/files/etc/sysctl.d/10-network-security.conf000066400000000000000000000002341524365506300305050ustar00rootroot00000000000000# Turn on Source Address Verification in all interfaces to # prevent some spoofing attacks. net.ipv4.conf.default.rp_filter=1 net.ipv4.conf.all.rp_filter=1 kubernetes-sigs-kind-49aeee6/images/base/files/etc/systemd/000077500000000000000000000000001524365506300240105ustar00rootroot00000000000000kubernetes-sigs-kind-49aeee6/images/base/files/etc/systemd/system/000077500000000000000000000000001524365506300253345ustar00rootroot00000000000000kubernetes-sigs-kind-49aeee6/images/base/files/etc/systemd/system/containerd-fuse-overlayfs.service000066400000000000000000000004531524365506300340160ustar00rootroot00000000000000[Unit] Description=containerd fuse-overlayfs snapshotter PartOf=containerd.service [Service] ExecStart=/usr/local/bin/containerd-fuse-overlayfs-grpc /run/containerd-fuse-overlayfs.sock /var/lib/containerd-fuse-overlayfs Type=notify Restart=always RestartSec=1 [Install] WantedBy=multi-user.target kubernetes-sigs-kind-49aeee6/images/base/files/etc/systemd/system/containerd.service000066400000000000000000000013621524365506300310460ustar00rootroot00000000000000# derived containerd systemd service file from the official: # https://github.com/containerd/containerd/blob/master/containerd.service [Unit] Description=containerd container runtime Documentation=https://containerd.io After=network.target local-fs.target # disable rate limiting StartLimitIntervalSec=0 [Service] ExecStartPre=-/sbin/modprobe overlay ExecStart=/usr/local/bin/containerd Type=notify Delegate=yes KillMode=process Restart=always RestartSec=1 # Having non-zero Limit*s causes performance problems due to accounting overhead # in the kernel. We recommend using cgroups to do container-local accounting. LimitNPROC=infinity LimitCORE=infinity LimitNOFILE=infinity TasksMax=infinity OOMScoreAdjust=-999 [Install] WantedBy=multi-user.target kubernetes-sigs-kind-49aeee6/images/base/files/etc/systemd/system/kubelet.service000066400000000000000000000015561524365506300303600ustar00rootroot00000000000000# slightly modified from: # https://github.com/kubernetes/kubernetes/blob/ba8fcafaf8c502a454acd86b728c857932555315/build/debs/kubelet.service [Unit] Description=kubelet: The Kubernetes Node Agent Documentation=http://kubernetes.io/docs/ # NOTE: kind deviates from upstream here to avoid crashlooping # This does *not* support altering the kubelet config path though. # We intend to upstream this change but first need to solve the upstream # Packaging problem (all kubernetes versions use the same files out of tree). ConditionPathExists=/var/lib/kubelet/config.yaml [Service] ExecStart=/usr/bin/kubelet Restart=always StartLimitInterval=0 # NOTE: kind deviates from upstream here with a lower RestartSec RestartSec=1s # And by adding the [Service] lines below CPUAccounting=true MemoryAccounting=true Slice=kubelet.slice KillMode=process [Install] WantedBy=multi-user.target kubernetes-sigs-kind-49aeee6/images/base/files/etc/systemd/system/kubelet.service.d/000077500000000000000000000000001524365506300306505ustar00rootroot00000000000000kubernetes-sigs-kind-49aeee6/images/base/files/etc/systemd/system/kubelet.service.d/10-kubeadm.conf000066400000000000000000000017661524365506300333570ustar00rootroot00000000000000# https://github.com/kubernetes/kubernetes/blob/ba8fcafaf8c502a454acd86b728c857932555315/build/debs/10-kubeadm.conf # Note: This dropin only works with kubeadm and kubelet v1.11+ [Service] Environment="KUBELET_KUBECONFIG_ARGS=--bootstrap-kubeconfig=/etc/kubernetes/bootstrap-kubelet.conf --kubeconfig=/etc/kubernetes/kubelet.conf" Environment="KUBELET_CONFIG_ARGS=--config=/var/lib/kubelet/config.yaml" # This is a file that "kubeadm init" and "kubeadm join" generates at runtime, populating the KUBELET_KUBEADM_ARGS variable dynamically EnvironmentFile=-/var/lib/kubelet/kubeadm-flags.env # This is a file that the user can use for overrides of the kubelet args as a last resort. Preferably, the user should use # the .NodeRegistration.KubeletExtraArgs object in the configuration files instead. KUBELET_EXTRA_ARGS should be sourced from this file. EnvironmentFile=-/etc/default/kubelet ExecStart= ExecStart=/usr/bin/kubelet $KUBELET_KUBECONFIG_ARGS $KUBELET_CONFIG_ARGS $KUBELET_KUBEADM_ARGS $KUBELET_EXTRA_ARGS kubernetes-sigs-kind-49aeee6/images/base/files/etc/systemd/system/kubelet.service.d/11-kind.conf000066400000000000000000000014271524365506300326670ustar00rootroot00000000000000# kind specific additions go in this file [Service] # On cgroup v1, the /kubelet cgroup is created in the entrypoint script before running systemd. # On cgroup v2, the /kubelet cgroup is created here. (See the comments in the entrypoint script for the reason.) ExecStartPre=/bin/sh -euc "if [ -f /sys/fs/cgroup/cgroup.controllers ]; then /kind/bin/create-kubelet-cgroup-v2.sh; fi" # on WSL2 (and potentially other distros without systemd) /sys/fs/cgroup/systemd is created after the entrypoint, during /sbin/init. # This eventually leads to kubelet failing to start, see: https://github.com/kubernetes-sigs/kind/issues/2323 ExecStartPre=/bin/sh -euc "if [ ! -f /sys/fs/cgroup/cgroup.controllers ] && [ ! -d /sys/fs/cgroup/systemd/kubelet ]; then mkdir -p /sys/fs/cgroup/systemd/kubelet; fi" kubernetes-sigs-kind-49aeee6/images/base/files/etc/systemd/system/kubelet.slice000066400000000000000000000002011524365506300300010ustar00rootroot00000000000000[Unit] Description=slice used to run Kubernetes / Kubelet Before=slices.target [Slice] MemoryAccounting=true CPUAccounting=true kubernetes-sigs-kind-49aeee6/images/base/files/etc/systemd/system/undo-mount-hacks.service000066400000000000000000000003151524365506300321110ustar00rootroot00000000000000[Unit] Description=Undo KIND mount hacks After=slices.target Before=containerd.service kubelet.service [Service] Type=oneshot ExecStart=/kind/bin/undo-mount-hacks.sh [Install] WantedBy=multi-user.target kubernetes-sigs-kind-49aeee6/images/base/files/kind/000077500000000000000000000000001524365506300224725ustar00rootroot00000000000000kubernetes-sigs-kind-49aeee6/images/base/files/kind/README.txt000066400000000000000000000002731524365506300241720ustar00rootroot00000000000000This directory is reserved for KIND [^1] internal purposes. Modifying or depending on the contents of this directory is NOT supported. Here be dragons. [^1]: https://kind.sigs.k8s.io/ kubernetes-sigs-kind-49aeee6/images/base/files/kind/bin/000077500000000000000000000000001524365506300232425ustar00rootroot00000000000000kubernetes-sigs-kind-49aeee6/images/base/files/kind/bin/create-kubelet-cgroup-v2.sh000077500000000000000000000037171524365506300303270ustar00rootroot00000000000000#!/bin/bash # Copyright 2021 The Kubernetes Authors. # # 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. set -o errexit set -o nounset set -o pipefail if [[ ! -f "/sys/fs/cgroup/cgroup.controllers" ]]; then echo 'ERROR: this script should not be called on cgroup v1 hosts' >&2 exit 1 fi # NOTE: we can't use `test -s` because cgroup.procs is not a regular file. if grep -qv '^0$' /sys/fs/cgroup/cgroup.procs ; then echo 'ERROR: this script needs /sys/fs/cgroup/cgroup.procs to be empty (for writing the top-level cgroup.subtree_control)' >&2 # So, this script needs to be called after launching systemd. # This script cannot be called from /usr/local/bin/entrypoint. exit 1 fi ensure_subtree_control() { local group=$1 # When cgroup.controllers is like "cpu cpuset memory io pids", # cgroup.subtree_control is written with "+cpu +cpuset +memory +io +pids" . sed -e 's/ / +/g' -e 's/^/+/' <"/sys/fs/cgroup/$group/cgroup.controllers" >"/sys/fs/cgroup/$group/cgroup.subtree_control" } # kubelet requires all the controllers (including hugetlb) in /sys/fs/cgroup/cgroup.controllers to be available in # /sys/fs/cgroup/kubelet/cgroup.subtree_control. # # We need to update the top-level cgroup.subtree_controllers as well, because hugetlb is not present in the file by default. ensure_subtree_control / mkdir -p /sys/fs/cgroup/kubelet ensure_subtree_control /kubelet # again for kubelet.slice for systemd cgroup driver mkdir -p /sys/fs/cgroup/kubelet.slice ensure_subtree_control /kubelet.slice kubernetes-sigs-kind-49aeee6/images/base/files/kind/bin/mount-product-files.sh000077500000000000000000000046271524365506300275320ustar00rootroot00000000000000#!/bin/bash # Copyright 2021 The Kubernetes Authors. # # 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 script is a createContainer hook [1] that replicates the functionality from entrypoint script to mount product_name and product_uuid but from a product_name and product_uuid copied into the contianer rootfs to prevent all the containers from bind mounting the same file. Sharing the same bind mount between all the containers increases the latency accessing the container, preventing it from accessing in some cases. # # [1] https://github.com/opencontainers/runtime-spec/blob/master/config.md#createcontainer-hooks set -o errexit set -o nounset set -o pipefail # Explicitly set PATH so as not to be inherited from the container # We have no reason to be using any binary from the container, and the # container PATH may lack normal "host" (kind node container in this case) # system paths. # # See: https://github.com/kubernetes-sigs/kind/issues/2551 # # All of the binaries this script needs are in /usr/bin currently, but this is # the full normal PATH for this image with pretty standard linux paths. export PATH='/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/sbin:/bin' # The bundle represents the dir path to container filesystem, container runtime state [1] is # passed to the hook's stdin # # [1] https://github.com/opencontainers/runtime-spec/blob/master/runtime.md#state # bundle=$(jq -r .bundle) cp /kind/product_* "${bundle:?}/rootfs/" if [[ -f /sys/class/dmi/id/product_name ]]; then mount -o ro,bind "${bundle:?}"/rootfs/product_name "${bundle:?}"/rootfs/sys/class/dmi/id/product_name fi if [[ -f /sys/class/dmi/id/product_uuid ]]; then mount -o ro,bind "${bundle:?}"/rootfs/product_uuid "${bundle:?}"/rootfs/sys/class/dmi/id/product_uuid fi if [[ -f /sys/devices/virtual/dmi/id/product_uuid ]]; then mount -o ro,bind "${bundle:?}"/rootfs/product_uuid "${bundle:?}"/rootfs/sys/devices/virtual/dmi/id/product_uuid fi kubernetes-sigs-kind-49aeee6/images/base/files/kind/bin/undo-mount-hacks.sh000077500000000000000000000015321524365506300267760ustar00rootroot00000000000000#!/bin/bash # Copyright 2023 The Kubernetes Authors. # # 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. set -o errexit set -o nounset set -o pipefail # don't run on cgroups v2 if [[ -f "/sys/fs/cgroup/cgroup.controllers" ]]; then exit 0 fi # on cgroups v1 we want to undo bind mounting over this to hide misc # see entrypoint umount /proc/cgroups || true kubernetes-sigs-kind-49aeee6/images/base/files/usr/000077500000000000000000000000001524365506300223565ustar00rootroot00000000000000kubernetes-sigs-kind-49aeee6/images/base/files/usr/local/000077500000000000000000000000001524365506300234505ustar00rootroot00000000000000kubernetes-sigs-kind-49aeee6/images/base/files/usr/local/bin/000077500000000000000000000000001524365506300242205ustar00rootroot00000000000000kubernetes-sigs-kind-49aeee6/images/base/files/usr/local/bin/clean-install000077500000000000000000000022161524365506300266750ustar00rootroot00000000000000#!/bin/sh # Copyright 2017 The Kubernetes Authors. # # 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. # A script encapsulating a common Dockerimage pattern for installing packages # and then cleaning up the unnecessary install artifacts. # e.g. clean-install iptables ebtables conntrack set -o errexit if [ $# = 0 ]; then echo >&2 "No packages specified" exit 1 fi apt-get update apt-get upgrade -y apt-get install -y --no-install-recommends "$@" apt-get clean -y rm -rf \ /var/cache/debconf/* \ /var/lib/apt/lists/* \ /var/log/* \ /tmp/* \ /var/tmp/* \ /usr/share/doc/* \ /usr/share/doc-base/* \ /usr/share/man/* \ /usr/share/local/* kubernetes-sigs-kind-49aeee6/images/base/files/usr/local/bin/entrypoint000077500000000000000000000575541524365506300264010ustar00rootroot00000000000000#!/bin/bash # Copyright 2019 The Kubernetes Authors. # # 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. set -o errexit set -o nounset set -o pipefail # logging helpers log_info() { echo "INFO: $1" >&2 } log_warn() { echo "WARN: $1" >&2 } log_error() { echo "ERROR: $1" >&2 } # If /proc/self/uid_map 4294967295 mappings, we are in the initial user namespace, i.e. the host. # Otherwise we are in a non-initial user namespace. # https://github.com/opencontainers/runc/blob/v1.0.0-rc92/libcontainer/system/linux.go#L109-L118 userns="" if grep -Eqv "0[[:space:]]+0[[:space:]]+4294967295" /proc/self/uid_map; then userns="1" log_info 'running in a user namespace (experimental)' fi grep_allow_nomatch() { # grep exits 0 on match, 1 on no match, 2 on error grep "$@" || [[ $? == 1 ]] } # regex_escape_ip converts IP address string $1 to a regex-escaped literal regex_escape_ip(){ sed -e 's#\.#\\.#g' -e 's#\[#\\[#g' -e 's#\]#\\]#g' <<<"$1" } validate_userns() { if [[ -z "${userns}" ]]; then return fi local nofile_hard nofile_hard="$(ulimit -Hn)" local nofile_hard_expected="64000" if [[ "${nofile_hard}" -lt "${nofile_hard_expected}" ]]; then log_warn "UserNS: expected RLIMIT_NOFILE to be at least ${nofile_hard_expected}, got ${nofile_hard}" fi if [[ -f "/sys/fs/cgroup/cgroup.controllers" ]]; then for f in cpu memory pids; do if ! grep -qw $f /sys/fs/cgroup/cgroup.controllers; then log_error "UserNS: $f controller needs to be delegated" exit 1 fi done fi } overlayfs_preferrable() { if [[ -z "$userns" ]]; then # If we are outside userns, we can always assume overlayfs is preferrable return 0 fi # Debian 10 and 11 supports overlayfs in userns with a "permit_mount_in_userns" kernel patch, # but known to be unstable, so we avoid using it https://github.com/moby/moby/issues/42302 if [[ -e "/sys/module/overlay/parameters/permit_mounts_in_userns" ]]; then log_info "UserNS: kernel seems supporting overlayfs with permit_mounts_in_userns, but avoiding due to instability." return 1 fi # Check overlayfs availability, by attempting to mount it. # # Overlayfs inside userns is known to be available for the following environments: # - Kernel >= 5.11 (but 5.11 and 5.12 have issues on SELinux hosts. Fixed in 5.13.) # - Ubuntu kernel # - Debian kernel (but avoided due to instability, see the /sys/module/overlay/... check above) # - Sysbox tmp=$(mktemp -d) mkdir -p "${tmp}/l" "${tmp}/u" "${tmp}/w" "${tmp}/m" if ! mount -t overlay -o lowerdir="${tmp}/l,upperdir=${tmp}/u,workdir=${tmp}/w" overlay "${tmp}/m"; then log_info "UserNS: kernel does not seem to support overlayfs." rm -rf "${tmp}" return 1 fi umount "${tmp}/m" rm -rf "${tmp}" # Detect whether SELinux is Enforcing (or Permitted) by grepping /proc/self/attr/current . # Note that we cannot use `getenforce` command here because /sys/fs/selinux is typically not mounted for containers. if grep -q "_t:" "/proc/self/attr/current"; then # When the kernel is before v5.13 and SELinux is enforced, fuse-overlayfs might be safer, so we print a warning (but not an error). # https://github.com/torvalds/linux/commit/7fa2e79a6bb924fa4b2de5766dab31f0f47b5ab6 log_warn "UserNS: SELinux might be Enforcing. If you see an error related to overlayfs, try setting \`KIND_EXPERIMENTAL_CONTAINERD_SNAPSHOTTER=fuse-overlayfs\` ." fi return 0 } configure_containerd() { local snapshotter=${KIND_EXPERIMENTAL_CONTAINERD_SNAPSHOTTER:-} # if we have not already overridden the snapshotter, attempt to auto select if [[ -z "$snapshotter" ]]; then # we need to switch to 'native' or 'fuse-overlayfs' on zfs container_filesystem="$(stat -f -c %T /kind)" if [[ "$container_filesystem" == 'zfs' ]]; then # we do not use the ZFS snapshotter because of skew issues vs the host snapshotter="native" # fuse should imply fuse-overlayfs, we should switch to fuse-overlayfs (or native) elif [[ "$container_filesystem" == 'fuseblk' ]]; then snapshotter="fuse-overlayfs" # Otherwise use fuse-overlayfs if overlayfs is not preferrable # https://github.com/kubernetes-sigs/kind/issues/2275 elif [[ -n "$userns" ]] && ! overlayfs_preferrable; then snapshotter="fuse-overlayfs" fi fi # handle userns (rootless) if [[ -n "$userns" ]]; then # enable restrict_oom_score_adj sed -i 's/restrict_oom_score_adj = false/restrict_oom_score_adj = true/' /etc/containerd/config.toml fi # if we've overridden or auto-selected the snapshotter vs the default, update containerd if [[ -n "$snapshotter" ]]; then log_info "changing snapshotter from \"overlayfs\" to \"$snapshotter\"" sed -i "s/snapshotter = \"overlayfs\"/snapshotter = \"$snapshotter\"/" /etc/containerd/config.toml if [[ "$snapshotter" = "fuse-overlayfs" ]]; then log_info 'enabling containerd-fuse-overlayfs service' systemctl enable containerd-fuse-overlayfs fi fi } configure_proxy() { # ensure all processes receive the proxy settings by default # https://www.freedesktop.org/software/systemd/man/systemd-system.conf.html mkdir -p /etc/systemd/system.conf.d/ cat </etc/systemd/system.conf.d/proxy-default-environment.conf [Manager] DefaultEnvironment="HTTP_PROXY=${HTTP_PROXY:-}" "HTTPS_PROXY=${HTTPS_PROXY:-}" "NO_PROXY=${NO_PROXY:-}" EOF } fix_mount() { log_info 'ensuring we can execute mount/umount even with userns-remap' # necessary only when userns-remap is enabled on the host, but harmless # The binary /bin/mount should be owned by root and have the setuid bit chown root:root "$(which mount)" "$(which umount)" chmod -s "$(which mount)" "$(which umount)" # This is a workaround to an AUFS bug that might cause `Text file # busy` on `mount` command below. See more details in # https://github.com/moby/moby/issues/9547 if [[ "$(stat -f -c %T "$(which mount)")" == 'aufs' ]]; then log_info 'detected aufs, calling sync' sync fi log_info 'remounting /sys read-only' # systemd-in-a-container should have read only /sys # https://systemd.io/CONTAINER_INTERFACE/ # however, we need other things from `docker run --privileged` ... # and this flag also happens to make /sys rw, amongst other things # # This step is ignored when running inside UserNS, because it fails with EACCES. if ! mount -o remount,ro /sys; then if [[ -n "$userns" ]]; then log_info 'UserNS: ignoring mount fail' else exit 1 fi fi log_info 'making mounts shared' # for mount propagation mount --make-rshared / } # helper used by mount_kubelet_cgroup_root mount_kubelet_cgroup_root_subsystem() { local cgroup_root=$1 local subsystem=$2 if [ -z "${cgroup_root}" ]; then return 0 fi mkdir -p "${subsystem}/${cgroup_root}" if [ "${subsystem}" == "/sys/fs/cgroup/cpuset" ]; then # This is needed. Otherwise, assigning process to the cgroup # (or any nested cgroup) would result in ENOSPC. cat "${subsystem}/cpuset.cpus" > "${subsystem}/${cgroup_root}/cpuset.cpus" cat "${subsystem}/cpuset.mems" > "${subsystem}/${cgroup_root}/cpuset.mems" fi # We need to perform a self bind mount here because otherwise, # systemd might delete the cgroup unintentionally before the # kubelet starts. mount --bind "${subsystem}/${cgroup_root}" "${subsystem}/${cgroup_root}" } # helper used by fix_cgroup mount_kubelet_cgroup_root() { local cgroup_subsystems=$1 echo "${cgroup_subsystems}" | while IFS= read -r subsystem; do mount_kubelet_cgroup_root_subsystem /kubelet "${subsystem}" mount_kubelet_cgroup_root_subsystem /kubelet.slice "${subsystem}" done # workaround for hosts not running systemd # we only do this for kubelet.slice because it's not relevant when not using # the systemd cgroup driver if [[ ! "${cgroup_subsystems}" = */sys/fs/cgroup/systemd* ]]; then mount_kubelet_cgroup_root_subsystem /kubelet.slice /sys/fs/cgroup/systemd fi } # helper for cgroups v1, to eliminate the misc cgroup # see: https://github.com/kubernetes-sigs/kind/issues/3223 # basically: this cgroup is not very useful for us, and until recently wasn't # supported by runc on cgroups v1 anyhow. # on cgroupsv2 we can leave it, but on v1 the mismatch in support from container # nesting causes problems remove_misc_controller() { local misc_controller='/sys/fs/cgroup/misc' if [[ ! -d $misc_controller ]]; then return 0 fi log_info "removing misc controller" umount $misc_controller || log_warn "failed umount $misc_controller" rmdir $misc_controller || log_warn "failed rmdir $misc_controller" # systemd will discover misc controller is available here and re-mount it # we will pretend it isn't available with a bind mount # this mount will be removed by undo-mount-hacks.service grep -v 'misc' /proc/cgroups >/kind/fake-cgroups mount --bind /kind/fake-cgroups /proc/cgroups } fix_cgroup() { if [[ -f "/sys/fs/cgroup/cgroup.controllers" ]]; then log_info 'detected cgroup v2' # Both Docker and Podman enable CgroupNS on cgroup v2 hosts by default. # # So mostly we do not need to mess around with the cgroup path stuff, # however, we still need to create the "/kubelet" cgroup at least. # (Otherwise kubelet fails with `cgroup-root ["kubelet"] doesn't exist` error, see #1969) # # The "/kubelet" cgroup is created in ExecStartPre of the kubeadm service. # # [FAQ: Why not create "/kubelet" cgroup here?] # We can't create the cgroup with controllers here, because /sys/fs/cgroup/cgroup.subtree_control is empty. # And yet we can't write controllers to /sys/fs/cgroup/cgroup.subtree_control by ourselves either, because # /sys/fs/cgroup/cgroup.procs is not empty at this moment. # # After switching from this entrypoint script to systemd, systemd evacuates the processes in the root # group to "/init.scope" group, so we can write the root subtree_control and create "/kubelet" cgroup. return fi log_info 'detected cgroup v1' # We're looking for the cgroup-path for the cpu controller for the # current process. this tells us what cgroup-path the container is in. local current_cgroup current_cgroup=$(grep -E '^[^:]*:([^:]*,)?cpu(,[^,:]*)?:.*' /proc/self/cgroup | cut -d: -f3) if [ "$current_cgroup" = "/" ]; then log_info 'detected cgroupns' # we don't need or want the misc controller, see comments on this function remove_misc_controller # kubelet will try to manage cgroups / pods that are not owned by it when # "nesting" clusters, unless we instruct it to use a different cgroup root. # We do this, and when doing so we must fixup this alternative root # currently this is hardcoded to be /kubelet # under systemd cgroup driver, kubelet appends .slice local cgroup_subsystems cgroup_subsystems=$(findmnt -lun -o source,target -t cgroup | grep -F "${current_cgroup}" | awk '{print $2}') mount --make-rprivate /sys/fs/cgroup mount_kubelet_cgroup_root "${cgroup_subsystems}" return fi # NOTE The rest of this function deals with the unfortunate situation of # cgroup v1 with no cgroupns enabled. One fine day every user will have # cgroupns enabled (or switch or cgroup v2 which has it enabled by default). # Once that happens, this function can be removed completely. log_warn 'cgroupns not enabled! Please use cgroup v2, or cgroup v1 with cgroupns enabled.' # See: https://d2iq.com/blog/running-kind-inside-a-kubernetes-cluster-for-continuous-integration # Capture initial state before modifying # # Then we collect the subsystems that are active on our current process. # We assume the cpu controller is in use on all node containers, # and other controllers use the same sub-path. # # See: https://man7.org/linux/man-pages/man7/cgroups.7.html log_info 'fixing cgroup mounts for all subsystems' local cgroup_subsystems cgroup_subsystems=$(findmnt -lun -o source,target -t cgroup | grep -F "${current_cgroup}" | awk '{print $2}') # Unmount the cgroup subsystems that are not known to runtime used to # run the container we are in. Those subsystems are not properly scoped # (i.e. the root cgroup is exposed, rather than something like docker/xxxx). # In case a runtime (which is aware of more subsystems -- such as rdma, # misc, or unified) is used inside the container, it may create cgroups for # these subsystems, and as they are not scoped, they will leak to the host # and thus will become non-removable. # # See https://github.com/kubernetes/kubernetes/issues/109182 local unsupported_cgroups unsupported_cgroups=$(findmnt -lun -o source,target -t cgroup | grep_allow_nomatch -v -F "${current_cgroup}" | awk '{print $2}') if [ -n "$unsupported_cgroups" ]; then local mnt echo "$unsupported_cgroups" | while IFS= read -r mnt; do log_info "unmounting and removing $mnt" umount "$mnt" || log_warn "failed to unmount $mnt" rmdir "$mnt" || log_warn "failed to rmdir $mnt" done fi # always remove misc on v1, see comments on this function remove_misc_controller # For each cgroup subsystem, Docker does a bind mount from the current # cgroup to the root of the cgroup subsystem. For instance: # /sys/fs/cgroup/memory/docker/ -> /sys/fs/cgroup/memory # # This will confuse Kubelet and cadvisor and will dump the following error # messages in kubelet log: # `summary_sys_containers.go:47] Failed to get system container stats for ".../kubelet.service"` # # This is because `/proc//cgroup` is not affected by the bind mount. # The following is a workaround to recreate the original cgroup # environment by doing another bind mount for each subsystem. local cgroup_mounts # xref: https://github.com/kubernetes/minikube/pull/9508 # Example inputs: # # Docker: /docker/562a56986a84b3cd38d6a32ac43fdfcc8ad4d2473acf2839cbf549273f35c206 /sys/fs/cgroup/devices rw,nosuid,nodev,noexec,relatime shared:143 master:23 - cgroup devices rw,devices # podman: /libpod_parent/libpod-73a4fb9769188ae5dc51cb7e24b9f2752a4af7b802a8949f06a7b2f2363ab0e9 ... # Cloud Shell: /kubepods/besteffort/pod3d6beaa3004913efb68ce073d73494b0/accdf94879f0a494f317e9a0517f23cdd18b35ff9439efd0175f17bbc56877c4 /sys/fs/cgroup/memory rw,nosuid,nodev,noexec,relatime master:19 - cgroup cgroup rw,memory # GitHub actions #9304: /actions_job/0924fbbcf7b18d2a00c171482b4600747afc367a9dfbeac9d6b14b35cda80399 /sys/fs/cgroup/memory rw,nosuid,nodev,noexec,relatime shared:263 master:24 - cgroup cgroup rw,memory cgroup_mounts=$(grep -E -o '/[[:alnum:]].* /sys/fs/cgroup.*.*cgroup' /proc/self/mountinfo || true) if [[ -n "${cgroup_mounts}" ]]; then local mount_root mount_root=$(head -n 1 <<<"${cgroup_mounts}" | cut -d' ' -f1) for mount_point in $(echo "${cgroup_mounts}" | cut -d' ' -f 2); do # bind mount each mount_point to mount_point + mount_root # mount --bind /sys/fs/cgroup/cpu /sys/fs/cgroup/cpu/docker/fb07bb6daf7730a3cb14fc7ff3e345d1e47423756ce54409e66e01911bab2160 local target="${mount_point}${mount_root}" if ! findmnt "${target}"; then mkdir -p "${target}" mount --bind "${mount_point}" "${target}" fi done fi # kubelet will try to manage cgroups / pods that are not owned by it when # "nesting" clusters, unless we instruct it to use a different cgroup root. # We do this, and when doing so we must fixup this alternative root # currently this is hardcoded to be /kubelet # under systemd cgroup driver, kubelet appends .slice mount --make-rprivate /sys/fs/cgroup cgroup_subsystems=$(findmnt -lun -o source,target -t cgroup | grep -F "${current_cgroup}" | awk '{print $2}') mount_kubelet_cgroup_root "${cgroup_subsystems}" } fix_machine_id() { # Deletes the machine-id embedded in the node image and generates a new one. # This is necessary because both kubelet and other components like weave net # use machine-id internally to distinguish nodes. log_info 'clearing and regenerating /etc/machine-id' rm -f /etc/machine-id systemd-machine-id-setup } fix_product_name() { # this is a small fix to hide the underlying hardware and fix issue #426 # https://github.com/kubernetes-sigs/kind/issues/426 if [[ -f /sys/class/dmi/id/product_name ]]; then log_info 'faking /sys/class/dmi/id/product_name to be "kind"' echo 'kind' > /kind/product_name mount -o ro,bind /kind/product_name /sys/class/dmi/id/product_name fi } fix_product_uuid() { # The system UUID is usually read from DMI via sysfs, the problem is that # in the kind case this means that all (container) nodes share the same # system/product uuid, as they share the same DMI. # Note: The UUID is read from DMI, this tool is overwriting the sysfs files # which should fix the attached issue, but this workaround does not address # the issue if a tool is reading directly from DMI. # https://github.com/kubernetes-sigs/kind/issues/1027 [[ ! -f /kind/product_uuid ]] && cat /proc/sys/kernel/random/uuid > /kind/product_uuid if [[ -f /sys/class/dmi/id/product_uuid ]]; then log_info 'faking /sys/class/dmi/id/product_uuid to be random' mount -o ro,bind /kind/product_uuid /sys/class/dmi/id/product_uuid fi if [[ -f /sys/devices/virtual/dmi/id/product_uuid ]]; then log_info 'faking /sys/devices/virtual/dmi/id/product_uuid as well' mount -o ro,bind /kind/product_uuid /sys/devices/virtual/dmi/id/product_uuid fi } select_iptables() { # based on: https://github.com/kubernetes-sigs/iptables-wrappers/blob/97b01f43a8e8db07840fc4b95e833a37c0d36b12/iptables-wrapper-installer.sh local mode num_legacy_lines num_nft_lines num_legacy_lines=$( (iptables-legacy-save || true; ip6tables-legacy-save || true) 2>/dev/null | grep -c '^-' || true) num_nft_lines=$( (timeout 5 sh -c "iptables-nft-save; ip6tables-nft-save" || true) 2>/dev/null | grep -c '^-' || true) if [ "${num_legacy_lines}" -ge "${num_nft_lines}" ]; then mode=legacy else mode=nft fi log_info "setting iptables to detected mode: ${mode}" update-alternatives --set iptables "/usr/sbin/iptables-${mode}" > /dev/null update-alternatives --set ip6tables "/usr/sbin/ip6tables-${mode}" > /dev/null } fix_certificate() { local apiserver_crt_file="/etc/kubernetes/pki/apiserver.crt" local apiserver_key_file="/etc/kubernetes/pki/apiserver.key" # Skip if this Node doesn't run kube-apiserver if [[ ! -f ${apiserver_crt_file} ]] || [[ ! -f ${apiserver_key_file} ]]; then return fi # Deletes the certificate for kube-apiserver and generates a new one. # This is necessary because the old one doesn't match the current IP. log_info 'clearing and regenerating the certificate for serving the Kubernetes API' rm -f ${apiserver_crt_file} ${apiserver_key_file} kubeadm init phase certs apiserver --config /kind/kubeadm.conf } enable_network_magic(){ # well-known docker embedded DNS is at 127.0.0.11:53 local docker_embedded_dns_ip='127.0.0.11' # first we need to detect an IP to use for reaching the docker host local docker_host_ip docker_host_ip="$( (head -n1 <(timeout 5 getent ahostsv4 'host.docker.internal') | cut -d' ' -f1) || true)" # if the ip doesn't exist or is a loopback address use the default gateway if [[ -z "${docker_host_ip}" ]] || [[ $docker_host_ip =~ ^127\.[0-9]+\.[0-9]+\.[0-9]+$ ]]; then docker_host_ip=$(ip -4 route show default | cut -d' ' -f3) fi # patch docker's iptables rules to switch out the DNS IP iptables-save \ | sed \ `# switch docker DNS DNAT rules to our chosen IP` \ -e "s/-d ${docker_embedded_dns_ip}/-d ${docker_host_ip}/g" \ `# we need to also apply these rules to non-local traffic (from pods)` \ -e 's/-A OUTPUT \(.*\) -j DOCKER_OUTPUT/\0\n-A PREROUTING \1 -j DOCKER_OUTPUT/' \ `# switch docker DNS SNAT rules rules to our chosen IP` \ -e "s/--to-source :53/--to-source ${docker_host_ip}:53/g"\ `# nftables incompatibility between 1.8.8 and 1.8.7 omit the --dport flag on DNAT rules` \ `# ensure --dport on DNS rules, due to https://github.com/kubernetes-sigs/kind/issues/3054` \ -e "s/p -j DNAT --to-destination ${docker_embedded_dns_ip}/p --dport 53 -j DNAT --to-destination ${docker_embedded_dns_ip}/g" \ | iptables-restore # now we can ensure that DNS is configured to use our IP cp /etc/resolv.conf /etc/resolv.conf.original replaced="$(sed -e "s/${docker_embedded_dns_ip}/${docker_host_ip}/g" /etc/resolv.conf.original)" if [[ "${KIND_DNS_SEARCH+x}" == "" ]]; then # No DNS search set, just pass through as is echo "$replaced" >/etc/resolv.conf elif [[ -z "$KIND_DNS_SEARCH" ]]; then # Empty search - remove all current search clauses echo "$replaced" | grep -v "^search" >/etc/resolv.conf else # Search set - remove all current search clauses, and add the configured search { echo "search $KIND_DNS_SEARCH"; echo "$replaced" | grep -v "^search"; } >/etc/resolv.conf fi local files_to_update=( /etc/kubernetes/manifests/etcd.yaml /etc/kubernetes/manifests/kube-apiserver.yaml /etc/kubernetes/manifests/kube-controller-manager.yaml /etc/kubernetes/manifests/kube-scheduler.yaml /etc/kubernetes/controller-manager.conf /etc/kubernetes/scheduler.conf /etc/kubernetes/kubelet.conf /kind/kubeadm.conf /var/lib/kubelet/kubeadm-flags.env ) local should_fix_certificate=false # fixup IPs in manifests ... curr_ipv4="$( (head -n1 <(timeout 5 getent ahostsv4 "$(hostname)") | cut -d' ' -f1) || true)" log_info "detected IPv4 address: ${curr_ipv4}" if [ -f /kind/old-ipv4 ]; then old_ipv4=$(cat /kind/old-ipv4) log_info "detected old IPv4 address: ${old_ipv4}" # sanity check that we have a current address if [[ -z $curr_ipv4 ]]; then log_error "have an old IPv4 address but no current IPv4 address (!)" exit 1 fi if [[ "${old_ipv4}" != "${curr_ipv4}" ]]; then should_fix_certificate=true sed_ipv4_command="s#\b$(regex_escape_ip "${old_ipv4}")\b#${curr_ipv4}#g" for f in "${files_to_update[@]}"; do # kubernetes manifests are only present on control-plane nodes if [[ -f "$f" ]]; then sed -i "${sed_ipv4_command}" "$f" fi done fi fi if [[ -n $curr_ipv4 ]]; then echo -n "${curr_ipv4}" >/kind/old-ipv4 fi # do IPv6 curr_ipv6="$( (head -n1 <(timeout 5 getent ahostsv6 "$(hostname)") | cut -d' ' -f1) || true)" log_info "detected IPv6 address: ${curr_ipv6}" if [ -f /kind/old-ipv6 ]; then old_ipv6=$(cat /kind/old-ipv6) log_info "detected old IPv6 address: ${old_ipv6}" # sanity check that we have a current address if [[ -z $curr_ipv6 ]]; then log_error "have an old IPv6 address but no current IPv6 address (!)" fi if [[ "${old_ipv6}" != "${curr_ipv6}" ]]; then should_fix_certificate=true sed_ipv6_command="s#\b$(regex_escape_ip "${old_ipv6}")\b#${curr_ipv6}#g" for f in "${files_to_update[@]}"; do # kubernetes manifests are only present on control-plane nodes if [[ -f "$f" ]]; then sed -i "${sed_ipv6_command}" "$f" fi done fi fi if [[ -n $curr_ipv6 ]]; then echo -n "${curr_ipv6}" >/kind/old-ipv6 fi if $should_fix_certificate; then fix_certificate fi } # validate state validate_userns # run pre-init fixups # NOTE: it's important that we do configure* first in this order to avoid races configure_containerd configure_proxy fix_mount fix_cgroup fix_machine_id fix_product_name fix_product_uuid select_iptables enable_network_magic # we want the command (expected to be systemd) to be PID1, so exec to it log_info 'starting init' exec "$@" kubernetes-sigs-kind-49aeee6/images/base/scripts/000077500000000000000000000000001524365506300221325ustar00rootroot00000000000000kubernetes-sigs-kind-49aeee6/images/base/scripts/target-cc000077500000000000000000000015001524365506300237250ustar00rootroot00000000000000#!/usr/bin/env bash # Copyright 2023 The Kubernetes Authors. # # 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 script maps buildx TARGETARCH to $CC set -o errexit -o nounset -o pipefail case $TARGETARCH in arm64) echo -n 'aarch64-linux-gnu-gcc' ;; amd64) echo -n 'x86_64-linux-gnu-gcc' ;; *) exit 1 ;; esac kubernetes-sigs-kind-49aeee6/images/base/scripts/third_party/000077500000000000000000000000001524365506300244635ustar00rootroot00000000000000kubernetes-sigs-kind-49aeee6/images/base/scripts/third_party/gimme/000077500000000000000000000000001524365506300255615ustar00rootroot00000000000000kubernetes-sigs-kind-49aeee6/images/base/scripts/third_party/gimme/LICENSE000066400000000000000000000021021524365506300265610ustar00rootroot00000000000000The MIT License (MIT) Copyright (c) 2015-2018 gimme contributors 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. kubernetes-sigs-kind-49aeee6/images/base/scripts/third_party/gimme/README.md000066400000000000000000000002171524365506300270400ustar00rootroot00000000000000# gimme This is an unmodified copy of [gimme], so we don't have to download it from the internet. [gimme]: https://github.com/travis-ci/gimmekubernetes-sigs-kind-49aeee6/images/base/scripts/third_party/gimme/gimme000077500000000000000000000662441524365506300266210ustar00rootroot00000000000000#!/usr/bin/env bash # vim:noexpandtab:ts=2:sw=2: # #+ Usage: $(basename $0) [flags] [go-version] [version-prefix] #+ - #+ Version: ${GIMME_VERSION} #+ Copyright: ${GIMME_COPYRIGHT} #+ License URL: ${GIMME_LICENSE_URL} #+ - #+ Install go! There are multiple types of installations available, with 'auto' being the default. #+ If either 'auto' or 'binary' is specified as GIMME_TYPE, gimme will first check for an existing #+ go installation. This behavior may be disabled by providing '-f/--force/force' as first positional #+ argument. #+ - #+ Option flags: #+ -h --help help - show this help text and exit #+ -V --version version - show the version only and exit #+ -f --force force - remove the existing go installation if present prior to install #+ -l --list list - list installed go versions and exit #+ -k --known known - list known go versions and exit #+ --force-known-update - when used with --known, ignores the cache and updates #+ -r --resolve resolve - resolve a version specifier to a version, show that and exit #+ - #+ Influential env vars: #+ - #+ GIMME_GO_VERSION - version to install (*REQUIRED*, may be given as first positional arg) #+ GIMME_VERSION_PREFIX - prefix for installed versions (default '${GIMME_VERSION_PREFIX}', #+ may be given as second positional arg) #+ GIMME_ARCH - arch to install (default '${GIMME_ARCH}') #+ GIMME_BINARY_OSX - darwin-specific binary suffix (default '${GIMME_BINARY_OSX}') #+ GIMME_ENV_PREFIX - prefix for env files (default '${GIMME_ENV_PREFIX}') #+ GIMME_GO_GIT_REMOTE - git remote for git-based install (default '${GIMME_GO_GIT_REMOTE}') #+ GIMME_OS - os to install (default '${GIMME_OS}') #+ GIMME_TMP - temp directory (default '${GIMME_TMP}') #+ GIMME_TYPE - install type to perform ('auto', 'binary', 'source', or 'git') #+ (default '${GIMME_TYPE}') #+ GIMME_INSTALL_RACE - install race directory after compile if non-empty. #+ If the install type is 'binary', this option is ignored. #+ GIMME_DEBUG - enable tracing if non-empty #+ GIMME_NO_ENV_ALIAS - disable creation of env 'alias' file when os and arch match host #+ GIMME_SILENT_ENV - omit the 'go version' line from env file #+ GIMME_CGO_ENABLED - enable build of cgo support #+ GIMME_CC_FOR_TARGET - cross compiler for cgo support #+ GIMME_DOWNLOAD_BASE - override base URL dir for download (default '${GIMME_DOWNLOAD_BASE}') #+ GIMME_LIST_KNOWN - override base URL for known go versions (default '${GIMME_LIST_KNOWN}') #+ GIMME_KNOWN_CACHE_MAX - seconds the cache for --known is valid for (default '${GIMME_KNOWN_CACHE_MAX}') #+ - # set -e shopt -s nullglob shopt -s dotglob shopt -s extglob set -o pipefail [[ ${GIMME_DEBUG} ]] && set -x readonly GIMME_VERSION="v1.5.4" readonly GIMME_COPYRIGHT="Copyright (c) 2015-2020 gimme contributors" readonly GIMME_LICENSE_URL="https://raw.githubusercontent.com/travis-ci/gimme/${GIMME_VERSION}/LICENSE" export GIMME_VERSION export GIMME_COPYRIGHT export GIMME_LICENSE_URL program_name="$(basename "$0")" # shellcheck disable=SC1117 warn() { printf >&2 "%s: %s\n" "${program_name}" "${*}"; } die() { warn "$@" exit 1 } # We don't want to go around hitting Google's servers with requests for # files named HEAD@{date}.tar so we only try binary/source downloads if # it looks like a plausible name to us. # We don't need to support 0. releases of Go. # We don't support 5 digit major-versions of Go (limit back-tracking in RE). # We don't support very long versions # (both to avoid annoying download server operators with attacks and # because regexp backtracking can be pathological). # Per _assert_version_given we do assume 2.0 not 2 ALLOWED_UPSTREAM_VERSION_RE='^[1-9][0-9]{0,3}(\.[0-9][0-9a-zA-Z_-]{0,9})+$' # # The main path which allowed these to leak upstream before has been closed # but a valid git repo tag or branch-name will still reach the point of # being _tried_ upstream. # _do_curl "url" "file" _do_curl() { mkdir -p "$(dirname "${2}")" if command -v curl >/dev/null; then curl -sSLf "${1}" -o "${2}" 2>/dev/null return fi if command -v wget >/dev/null; then wget -q "${1}" -O "${2}" 2>/dev/null return fi if command -v fetch >/dev/null; then fetch -q "${1}" -o "${2}" 2>/dev/null return fi echo >&2 'error: no curl, wget, or fetch found' exit 1 } # _sha256sum "file" _sha256sum() { if command -v sha256sum &>/dev/null; then sha256sum "$@" elif command -v gsha256sum &>/dev/null; then gsha256sum "$@" else shasum -a 256 "$@" fi } # sort versions, handling 1.10 after 1.9, not before 1.2 # FreeBSD sort has --version-sort, none of the others do # Looks like --general-numeric-sort is the safest; checked macOS 10.12.6, FreeBSD 10.3, Ubuntu Trusty if sort --version-sort /dev/null; then _version_sort() { sort --version-sort; } else _version_sort() { # If we go to four-digit minor or patch versions, then extend the padding here # (but in such a world, perhaps --version-sort will have become standard by then?) sed -E 's/\.([0-9](\.|$))/.00\1/g; s/\.([0-9][0-9](\.|$))/.0\1/g' | sort --general-numeric-sort | sed 's/\.00*/./g' } fi # _do_curls "file" "url" ["url"...] _do_curls() { f="${1}" shift if _sha256sum -c "${f}.sha256" &>/dev/null; then return 0 fi for url in "${@}"; do if _do_curl "${url}" "${f}"; then if _do_curl "${url}.sha256" "${f}.sha256"; then echo "$(cat "${f}.sha256") ${f}" >"${f}.sha256.tmp" mv "${f}.sha256.tmp" "${f}.sha256" if ! _sha256sum -c "${f}.sha256" &>/dev/null; then warn "sha256sum failed for '${f}'" warn 'continuing to next candidate URL' continue fi fi return fi done rm -f "${f}" return 1 } # _binary "version" "file.tar.gz" "arch" _binary() { local version=${1} local file=${2} local arch=${3} urls=( "${GIMME_DOWNLOAD_BASE}/go${version}.${GIMME_OS}-${arch}.tar.gz" ) if [[ "${GIMME_OS}" == 'darwin' && "${GIMME_BINARY_OSX}" ]]; then urls=( "${GIMME_DOWNLOAD_BASE}/go${version}.${GIMME_OS}-${arch}-${GIMME_BINARY_OSX}.tar.gz" "${urls[@]}" ) fi if [ "${arch}" = 'arm' ]; then # attempt "armv6l" vs just "arm" first (since that's what's officially published) urls=( "${GIMME_DOWNLOAD_BASE}/go${version}.${GIMME_OS}-${arch}v6l.tar.gz" # go1.6beta2 & go1.6rc1 "${GIMME_DOWNLOAD_BASE}/go${version}.${GIMME_OS}-${arch}6.tar.gz" # go1.6beta1 "${urls[@]}" ) fi if [ "${GIMME_OS}" = 'windows' ]; then urls=( "${GIMME_DOWNLOAD_BASE}/go${version}.${GIMME_OS}-${arch}.zip" ) fi _do_curls "${file}" "${urls[@]}" } # _source "version" "file.src.tar.gz" _source() { urls=( "${GIMME_DOWNLOAD_BASE}/go${1}.src.tar.gz" "https://github.com/golang/go/archive/go${1}.tar.gz" ) _do_curls "${2}" "${urls[@]}" } # _fetch "dir" _fetch() { mkdir -p "$(dirname "${1}")" if [[ -d "${1}/.git" ]]; then ( cd "${1}" git remote set-url origin "${GIMME_GO_GIT_REMOTE}" git fetch -q --all && git fetch -q --tags ) return fi git clone -q "${GIMME_GO_GIT_REMOTE}" "${1}" } # _checkout "version" "dir" # NB: might emit a "renamed version" on stdout _checkout() { local spec="${1:?}" godir="${2:?}" # We are called twice, once during validation that a version was given and # later during build. We don't want to fetch twice, so we are fetching # during the validation only, in the caller. if [[ "${spec}" =~ ^[0-9a-f]{6,}$ ]]; then # We always treat this as a commit sha, whether instead of doing # branch tests etc. It looks like a commit sha and the Go maintainers # aren't daft enough to use pure hex for a tag or branch. git -C "$godir" reset -q --hard "${spec}" || return 1 return 0 fi # If spec looks like HEAD^{something} or HEAD^^^ then trying # origin/$spec would succeed but we'd write junk to the filesystem, # propagating annoying characters out. local retval probe_named disallow rev probe_named=1 disallow='[@^~:{}]' if [[ "${spec}" =~ $disallow ]]; then probe_named=0 [[ "${spec}" != "@" ]] || spec="HEAD" fi try_spec() { git -C "${godir}" reset -q --hard "$@" -- 2>/dev/null; } retval=1 if ((probe_named)); then retval=0 try_spec "origin/${spec}" || try_spec "origin/go${spec}" || { [[ "${spec}" == "tip" ]] && try_spec origin/master; } || try_spec "refs/tags/${spec}" || try_spec "refs/tags/go${spec}" || retval=1 fi if ((retval)); then retval=0 # We're about to reset anyway, if we succeed, so we should reset to a # known state before parsing what might be relative specs try_spec origin/master && rev="$(git -C "${godir}" rev-parse --verify -q "${spec}^{object}")" && try_spec "${rev}" && git -C "${godir}" rev-parse --verify -q --short=12 "${rev}" || retval=1 # that rev-parse prints to stdout, so we can affect the version seen fi unset -f try_spec return $retval } # _extract "file.tar.gz" "dir" _extract() { mkdir -p "${2}" if [[ "${1}" == *.tar.gz ]]; then tar -xf "${1}" -C "${2}" --strip-components 1 else unzip -q "${1}" -d "${2}" mv "${2}"/go/* "${2}" rmdir "${2}"/go fi } # _setup_bootstrap _setup_bootstrap() { local versions=("1.18" "1.17" "1.16" "1.15" "1.14" "1.13" "1.12" "1.11" "1.10" "1.9" "1.8" "1.7" "1.6" "1.5" "1.4") # try existing for v in "${versions[@]}"; do for candidate in "${GIMME_ENV_PREFIX}/go${v}"*".env"; do if [ -s "${candidate}" ]; then # shellcheck source=/dev/null GOROOT_BOOTSTRAP="$(source "${candidate}" 2>/dev/null && go env GOROOT)" export GOROOT_BOOTSTRAP return 0 fi done done # try binary for v in "${versions[@]}"; do if [ -n "$(_try_binary "${v}" "${GIMME_HOSTARCH}")" ]; then export GOROOT_BOOTSTRAP="${GIMME_VERSION_PREFIX}/go${v}.${GIMME_OS}.${GIMME_HOSTARCH}" return 0 fi done echo >&2 "Unable to setup go bootstrap from existing or binary" return 1 } # _compile "dir" _compile() { ( if grep -q GOROOT_BOOTSTRAP "${1}/src/make.bash" &>/dev/null; then _setup_bootstrap || return 1 fi cd "${1}" if [[ -d .git ]]; then git clean -dfx -q fi cd src export GOOS="${GIMME_OS}" GOARCH="${GIMME_ARCH}" export CGO_ENABLED="${GIMME_CGO_ENABLED}" export CC_FOR_TARGET="${GIMME_CC_FOR_TARGET}" local make_log="${1}/make.${GOOS}.${GOARCH}.log" if [[ "${GIMME_DEBUG}" -ge "2" ]]; then ./make.bash -v 2>&1 | tee "${make_log}" 1>&2 || return 1 else ./make.bash &>"${make_log}" || return 1 fi ) } _try_install_race() { if [[ ! "${GIMME_INSTALL_RACE}" ]]; then return 0 fi "${1}/bin/go" install -race std } _can_compile() { cat >"${GIMME_TMP}/test.go" <<'EOF' package main import "os" func main() { os.Exit(0) } EOF "${1}/bin/go" run "${GIMME_TMP}/test.go" } # _env "dir" _env() { [[ -d "${1}/bin" && -x "${1}/bin/go" ]] || return 1 # if we try to run a Darwin binary on Linux, we need to fail so 'auto' can fallback to cross-compiling from source # automatically GOROOT="${1}" GOFLAGS="" "${1}/bin/go" version &>/dev/null || return 1 # https://twitter.com/davecheney/status/431581286918934528 # we have to GOROOT sometimes because we use official release binaries in unofficial locations :( # # Issue 87 leads to: # No, we should _always_ set GOROOT when using official release binaries, and sanest to just always set it. # The "avoid setting it" is _only_ for people using official releases in official locations. # Tools like `gimme` are the reason that GOROOT-in-env exists. echo if [[ "$(GOROOT="${1}" "${1}/bin/go" env GOHOSTOS)" == "${GIMME_OS}" ]]; then echo 'unset GOOS;' else echo 'export GOOS="'"${GIMME_OS}"'";' fi if [[ "$(GOROOT="${1}" "${1}/bin/go" env GOHOSTARCH)" == "${GIMME_ARCH}" ]]; then echo 'unset GOARCH;' else echo 'export GOARCH="'"${GIMME_ARCH}"'";' fi echo "export GOROOT='${1}';" # shellcheck disable=SC2016 echo 'export PATH="'"${1}/bin"':${PATH}";' if [[ -z "${GIMME_SILENT_ENV}" ]]; then echo 'go version >&2;' fi echo } # _env_alias "dir" "env-file" _env_alias() { if [[ "${GIMME_NO_ENV_ALIAS}" ]]; then echo "${2}" return fi if [[ "$(GOROOT="${1}" "${1}/bin/go" env GOHOSTOS)" == "${GIMME_OS}" && "$(GOROOT="${1}" "${1}/bin/go" env GOHOSTARCH)" == "${GIMME_ARCH}" ]]; then # GIMME_GO_VERSION might be a branch, which can contain '/' local dest="${GIMME_ENV_PREFIX}/go${GIMME_GO_VERSION//\//__}.env" cp "${2}" "${dest}" ln -sf "${dest}" "${GIMME_ENV_PREFIX}/latest.env" echo "${dest}" else echo "${2}" fi } _try_existing() { case "${1}" in binary) local existing_ver="${GIMME_VERSION_PREFIX}/go${GIMME_GO_VERSION}.${GIMME_OS}.${GIMME_ARCH}" local existing_env="${GIMME_ENV_PREFIX}/go${GIMME_GO_VERSION}.${GIMME_OS}.${GIMME_ARCH}.env" ;; source) local existing_ver="${GIMME_VERSION_PREFIX}/go${GIMME_GO_VERSION}.src" local existing_env="${GIMME_ENV_PREFIX}/go${GIMME_GO_VERSION}.src.env" ;; *) _try_existing binary || _try_existing source return $? ;; esac if [[ -x "${existing_ver}/bin/go" && -s "${existing_env}" ]]; then # newer envs have existing semi-colon at end of line, because newer gimme # puts them there; envs created before that change lack those semi-colons # and should gain them, to make it easier for people using eval without # double-quoting the command substition. sed -e 's/\([^;]\)$/\1;/' <"${existing_env}" # gimme is the corner-case where GOROOT _should_ be overriden, since if the # ancilliary tooling's system-internal DefaultGoroot exists, and GOROOT is # unset, then it will be used and the wrong golang will be picked up. # Lots of old installs won't have GOROOT; munge it from $PATH if grep -qs '^unset GOROOT' -- "${existing_env}"; then sed -n -e 's/^export PATH="\(.*\)\/bin:.*$/export GOROOT='"'"'\1'"'"';/p' <"${existing_env}" echo fi # Export the same variables whether building new or using existing echo "export GIMME_ENV='${existing_env}';" return fi return 1 } # _try_binary "version" "arch" _try_binary() { local version=${1} local arch=${2} local bin_tgz="${GIMME_TMP}/go${version}.${GIMME_OS}.${arch}.tar.gz" local bin_dir="${GIMME_VERSION_PREFIX}/go${version}.${GIMME_OS}.${arch}" local bin_env="${GIMME_ENV_PREFIX}/go${version}.${GIMME_OS}.${arch}.env" [[ "${version}" =~ ${ALLOWED_UPSTREAM_VERSION_RE} ]] || return 1 if [ "${GIMME_OS}" = 'windows' ]; then bin_tgz=${bin_tgz%.tar.gz}.zip fi _binary "${version}" "${bin_tgz}" "${arch}" || return 1 _extract "${bin_tgz}" "${bin_dir}" || return 1 _env "${bin_dir}" | tee "${bin_env}" || return 1 echo "export GIMME_ENV=\"$(_env_alias "${bin_dir}" "${bin_env}")\"" } _try_source() { local src_tgz="${GIMME_TMP}/go${GIMME_GO_VERSION}.src.tar.gz" local src_dir="${GIMME_VERSION_PREFIX}/go${GIMME_GO_VERSION}.src" local src_env="${GIMME_ENV_PREFIX}/go${GIMME_GO_VERSION}.src.env" [[ "${GIMME_GO_VERSION}" =~ ${ALLOWED_UPSTREAM_VERSION_RE} ]] || return 1 _source "${GIMME_GO_VERSION}" "${src_tgz}" || return 1 _extract "${src_tgz}" "${src_dir}" || return 1 _compile "${src_dir}" || return 1 _try_install_race "${src_dir}" || return 1 _env "${src_dir}" | tee "${src_env}" || return 1 echo "export GIMME_ENV=\"$(_env_alias "${src_dir}" "${src_env}")\"" } # We do _not_ try to use any version caching with _try_existing(), but instead # build afresh each time. We don't want to deal with someone moving the repo # to other-version, doing an install, then resetting it back to # last-version-we-saw and thus introducing conflicts. # # If you want to re-use a built-at-spec version, then avoid moving the repo # and source the generated .env manually. # Note that the env will just refer to the 'go' directory, so it's not safe # to reuse anyway. _try_git() { local git_dir="${GIMME_VERSION_PREFIX}/go" local git_env="${GIMME_ENV_PREFIX}/go.git.${GIMME_OS}.${GIMME_ARCH}.env" local resolved_sha # Any tags should have been resolved when we asserted that we were # given a version, so no need to handle that here. _checkout "${GIMME_GO_VERSION}" "${git_dir}" >/dev/null || return 1 _compile "${git_dir}" || return 1 _try_install_race "${git_dir}" || return 1 _env "${git_dir}" | tee "${git_env}" || return 1 echo "export GIMME_ENV=\"$(_env_alias "${git_dir}" "${git_env}")\"" } _wipe_version() { local env_file="${GIMME_ENV_PREFIX}/go${1}.${GIMME_OS}.${GIMME_ARCH}.env" if [[ -s "${env_file}" ]]; then rm -rf "$(awk -F\" '/GOROOT/ { print $2 }' "${env_file}")" rm -f "${env_file}" fi } _list_versions() { if [ ! -d "${GIMME_VERSION_PREFIX}" ]; then return 0 fi local current_version current_version="$(go env GOROOT 2>/dev/null)" current_version="${current_version##*/go}" current_version="${current_version%%.${GIMME_OS}.*}" # 1.1 1.10 1.2 is bad; zsh has `setopt numeric_glob_sort` but bash # doesn't appear to have anything like that. for d in "${GIMME_VERSION_PREFIX}/go"*".${GIMME_OS}."*; do local cleaned="${d##*/go}" cleaned="${cleaned%%.${GIMME_OS}.*}" echo "${cleaned}" done | _version_sort | while read -r cleaned; do echo -en "${cleaned}" if [[ "${cleaned}" == "${current_version}" ]]; then echo -en ' <= current' >&2 fi echo done } _update_remote_known_list_if_needed() { # shellcheck disable=SC1117 local exp="go([[:alnum:]\.]*)\.src.*" # :alnum: catches beta versions too local list="${GIMME_VERSION_PREFIX}/known-versions.txt" local dlfile="${GIMME_TMP}/known-dl" if [[ -e "${list}" ]] && ! ((force_known_update)) && ! _file_older_than_secs "${list}" "${GIMME_KNOWN_CACHE_MAX}"; then echo "${list}" return 0 fi [[ -d "${GIMME_VERSION_PREFIX:?}" ]] || mkdir -p -- "${GIMME_VERSION_PREFIX}" _do_curl "${GIMME_LIST_KNOWN}" "${dlfile}" while read -r line; do if [[ "${line}" =~ ${exp} ]]; then echo "${BASH_REMATCH[1]}" fi done <"${dlfile}" | _version_sort | uniq >"${list}.new" rm -f "${list}" &>/dev/null mv "${list}.new" "${list}" rm -f "${dlfile}" echo "${list}" return 0 } _list_known() { local knownfile knownfile="$(_update_remote_known_list_if_needed)" ( _list_versions 2>/dev/null cat -- "${knownfile}" ) | grep . | _version_sort | uniq } # For the "invoked on commandline" case, we want to always pass unknown # strings through, so that we can be a uniqueness filter, but for unknown # names we want to exit with a value other than 1, so we document that # we'll exit 2. For use by other functions, 2 is as good as 1. _resolve_version() { case "${1}" in stable) _get_curr_stable return 0 ;; oldstable) _get_old_stable return 0 ;; tip) echo "tip" return 0 ;; *.x) true ;; *) echo "${1}" local GIMME_GO_VERSION="$1" local ASSERT_ABORT='return' if _assert_version_given 2>/dev/null; then return 0 fi warn "version specifier '${1}' unknown" return 2 ;; esac # We have a .x suffix local base="${1%.x}" local ver last='' known known="$(_update_remote_known_list_if_needed)" # will be version-sorted if [[ ! "${base}" =~ ^[0-9.]+$ ]]; then warn "resolve pattern '${base}.x' invalid for .x finding" return 2 fi # The `.x` is optional; "1.10" matches "1.10.x" local search="^${base//./\\.}(\\.[0-9.]+)?\$" # avoid regexp attacks while read -r ver; do [[ "${ver}" =~ $search ]] || continue last="${ver}" done <"$known" if [[ -n "${last}" ]]; then echo "${last}" return 0 fi echo "${1}" warn "given '${1}' but no release for '${base}' found" return 2 } _realpath() { # shellcheck disable=SC2005 [ -d "$1" ] && echo "$(cd "$1" && pwd)" || echo "$(cd "$(dirname "$1")" && pwd)/$(basename "$1")" } _get_curr_stable() { local stable="${GIMME_VERSION_PREFIX}/stable" if _file_older_than_secs "${stable}" 86400; then _update_stable "${stable}" fi cat "${stable}" } _get_old_stable() { local oldstable="${GIMME_VERSION_PREFIX}/oldstable" if _file_older_than_secs "${oldstable}" 86400; then _update_oldstable "${oldstable}" fi cat "${oldstable}" } _update_stable() { local stable="${1}" local url="https://golang.org/VERSION?m=text" _do_curl "${url}" "${stable}" sed -i.old -e 's/^go\(.*\)/\1/' "${stable}" rm -f "${stable}.old" } _update_oldstable() { local oldstable="${1}" local oldstable_x oldstable_x=$(_get_curr_stable | awk -F. '{ $2--; print $1 "." $2 "." "x" }') _resolve_version "${oldstable_x}" >"${oldstable}" } _last_mod_timestamp() { local filename="${1}" case "${GIMME_HOSTOS}" in darwin | *bsd) stat -f %m "${filename}" ;; linux) stat -c %Y "${filename}" ;; esac } _file_older_than_secs() { local file="${1}" local age_secs="${2}" local ts # if the file does not exist, we return true, as the cache needs updating ts="$(_last_mod_timestamp "${file}" 2>/dev/null)" || return 0 ((($(date +%s) - ts) > age_secs)) } _assert_version_given() { # By the time we're called, aliases such as "stable" must have been resolved # but we could be a reference in git. # # Versions can include suffices such as in "1.8beta2", so our assumption is that # there will always be a minor present; the first public release was "1.0" so # we assume "2.0" not "2". if [[ -z "${GIMME_GO_VERSION}" ]]; then echo >&2 'error: no GIMME_GO_VERSION supplied' echo >&2 " ex: GIMME_GO_VERSION=1.4.1 ${0} ${*}" echo >&2 " ex: ${0} 1.4.1 ${*}" ${ASSERT_ABORT:-exit} 1 fi # Note: _resolve_version calls back to us (_assert_version_given), but # only for cases where the version does not end with .x, so this should # be safe. # This should be untangled. PRs accepted, good starter project. if [[ "${GIMME_GO_VERSION}" == *.x ]]; then GIMME_GO_VERSION="$(_resolve_version "${GIMME_GO_VERSION}")" || ${ASSERT_ABORT:-exit} 1 fi if [[ "${GIMME_GO_VERSION}" == +([[:digit:]]).+([[:digit:]])* ]]; then return 0 fi # Here we resolve symbolic references. If we don't, then we get some # random git tag name being accepted as valid and then we try to # curl garbage from upstream. if [[ "${GIMME_TYPE}" == "auto" || "${GIMME_TYPE}" == "git" ]]; then local git_dir="${GIMME_VERSION_PREFIX}/go" local resolved_sha _fetch "${git_dir}" if resolved_sha="$(_checkout "${GIMME_GO_VERSION}" "${git_dir}")"; then if [[ -n "${resolved_sha}" ]]; then # Break our normal silence, this one really needs to be seen on stderr # always; auditability and knowing what version of Go you got wins. warn "resolved '${GIMME_GO_VERSION}' to '${resolved_sha}'" GIMME_GO_VERSION="${resolved_sha}" fi return 0 fi fi echo >&2 'error: GIMME_GO_VERSION not recognized as valid' echo >&2 " got: ${GIMME_GO_VERSION}" ${ASSERT_ABORT:-exit} 1 } _exclude_from_backups() { # Please avoid anything which requires elevated privileges or is obnoxious # enough to offend the invoker case "${GIMME_HOSTOS}" in darwin) # Darwin: Time Machine is "standard", we can add others. The default # mechanism is sticky, as an attribute on the dir, requires no # privileges, is idempotent (and doesn't support -- to end flags). tmutil addexclusion "$@" ;; esac } _versint() { IFS=" " read -r -a args <<<"${1//[^0-9]/ }" printf '1%03d%03d%03d%03d' "${args[@]}" } _to_goarch() { case "${1}" in aarch64) echo "arm64" ;; *) echo "${1}" ;; esac } : "${GIMME_OS:=$(uname -s | tr '[:upper:]' '[:lower:]')}" : "${GIMME_HOSTOS:=$(uname -s | tr '[:upper:]' '[:lower:]')}" : "${GIMME_ARCH:=$(_to_goarch "$(uname -m)")}" : "${GIMME_HOSTARCH:=$(_to_goarch "$(uname -m)")}" : "${GIMME_ENV_PREFIX:=${HOME}/.gimme/envs}" : "${GIMME_VERSION_PREFIX:=${HOME}/.gimme/versions}" : "${GIMME_TMP:=${TMPDIR:-/tmp}/gimme}" : "${GIMME_GO_GIT_REMOTE:=https://github.com/golang/go.git}" : "${GIMME_TYPE:=auto}" # 'auto', 'binary', 'source', or 'git' : "${GIMME_BINARY_OSX:=osx10.8}" : "${GIMME_DOWNLOAD_BASE:=https://dl.google.com/go}" : "${GIMME_LIST_KNOWN:=https://golang.org/dl}" : "${GIMME_KNOWN_CACHE_MAX:=10800}" # The version prefix must be an absolute path case "${GIMME_VERSION_PREFIX}" in /*) true ;; *) echo >&2 " Fixing GIMME_VERSION_PREFIX from relative: $GIMME_VERSION_PREFIX" GIMME_VERSION_PREFIX="$(pwd)/${GIMME_VERSION_PREFIX}" echo >&2 " to: $GIMME_VERSION_PREFIX" ;; esac case "${GIMME_OS}" in mingw* | msys_nt*) # Minimalist GNU for Windows GIMME_OS='windows' if [ "${GIMME_ARCH}" = 'i686' ]; then GIMME_ARCH="386" else GIMME_ARCH="amd64" fi ;; esac force_install=0 force_known_update=0 while [[ $# -gt 0 ]]; do case "${1}" in -h | --help | help | wat) _old_ifs="$IFS" IFS=';' awk '/^#\+ / { sub(/^#\+ /, "", $0) ; sub(/-$/, "", $0) ; print $0 }' "$0" | while read -r line; do eval "echo \"$line\"" done IFS="$_old_ifs" exit 0 ;; -V | --version | version) echo "${GIMME_VERSION}" exit 0 ;; -r | --resolve | resolve) # The normal mkdir of versions is below; we don't want to move it up # to where we create files just if asked our version; thus # _resolve_version has to mkdir the versions dir itself. if [[ $# -ge 2 ]]; then _resolve_version "${2}" elif [[ -n "${GIMME_GO_VERSION:-}" ]]; then _resolve_version "${GIMME_GO_VERSION}" else die "resolve must be given a version to resolve" fi exit $? ;; -l | --list | list) _list_versions exit 0 ;; -k | --known | known) _list_known exit 0 ;; -f | --force | force) force_install=1 ;; --force-known-update | force-known-update) force_known_update=1 ;; -i | install) true # ignore a dummy argument ;; *) break ;; esac shift done if [[ -n "${1}" ]]; then GIMME_GO_VERSION="${1}" fi if [[ -n "${2}" ]]; then GIMME_VERSION_PREFIX="${2}" fi case "${GIMME_ARCH}" in x86_64) GIMME_ARCH=amd64 ;; x86) GIMME_ARCH=386 ;; arm64) if [[ "${GIMME_GO_VERSION}" != master && "$(_versint "${GIMME_GO_VERSION}")" < "$(_versint 1.5)" ]]; then echo >&2 "error: ${GIMME_ARCH} is not supported by this go version" echo >&2 "try go1.5 or newer" exit 1 fi if [[ "${GIMME_HOSTOS}" == "linux" && "${GIMME_HOSTARCH}" != "${GIMME_ARCH}" ]]; then : "${GIMME_CC_FOR_TARGET:="aarch64-linux-gnu-gcc"}" fi ;; arm*) GIMME_ARCH=arm ;; esac case "${GIMME_HOSTARCH}" in x86_64) GIMME_HOSTARCH=amd64 ;; x86) GIMME_HOSTARCH=386 ;; arm64) ;; arm*) GIMME_HOSTARCH=arm ;; esac case "${GIMME_GO_VERSION}" in stable) GIMME_GO_VERSION=$(_get_curr_stable) ;; oldstable) GIMME_GO_VERSION=$(_get_old_stable) ;; esac _assert_version_given "$@" ((force_install)) && _wipe_version "${GIMME_GO_VERSION}" unset GOARCH unset GOBIN unset GOOS unset GOPATH unset GOROOT unset CGO_ENABLED unset CC_FOR_TARGET # GO111MODULE breaks build of Go itself unset GO111MODULE mkdir -p "${GIMME_VERSION_PREFIX}" "${GIMME_ENV_PREFIX}" # The envs dir stays small and provides a record of what had been installed # whereas the versions dir grows by hundreds of MB per version and is not # intended to support local modifications (as that subverts the point of gimme) # _and_ is a cache, so we're unilaterally declaring that the contents of # the versions dir should be excluded from system backups. _exclude_from_backups "${GIMME_VERSION_PREFIX}" GIMME_VERSION_PREFIX="$(_realpath "${GIMME_VERSION_PREFIX}")" GIMME_ENV_PREFIX="$(_realpath "${GIMME_ENV_PREFIX}")" if ! case "${GIMME_TYPE}" in binary) _try_existing binary || _try_binary "${GIMME_GO_VERSION}" "${GIMME_ARCH}" ;; source) _try_existing source || _try_source || _try_git ;; git) _try_git ;; auto) _try_existing || _try_binary "${GIMME_GO_VERSION}" "${GIMME_ARCH}" || _try_source || _try_git ;; *) echo >&2 "I don't know how to '${GIMME_TYPE}'." echo >&2 " Try 'auto', 'binary', 'source', or 'git'." exit 1 ;; esac; then echo >&2 "I don't have any idea what to do with '${GIMME_GO_VERSION}'." echo >&2 " (using download type '${GIMME_TYPE}')" exit 1 fi kubernetes-sigs-kind-49aeee6/images/kindnetd/000077500000000000000000000000001524365506300213315ustar00rootroot00000000000000kubernetes-sigs-kind-49aeee6/images/kindnetd/Dockerfile000066400000000000000000000031511524365506300233230ustar00rootroot00000000000000# Copyright 2019 The Kubernetes Authors. # # 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. # first stage build kindnetd binary # NOTE: the actual go version will be overridden FROM --platform=$BUILDPLATFORM docker.io/library/golang:latest WORKDIR /go/src COPY --chmod=0755 scripts/third_party/gimme/gimme /usr/local/bin/ # make deps fetching cacheable COPY go.mod go.sum ./ # set by makefile to .go-version ARG GO_VERSION RUN eval "$(gimme "${GO_VERSION}")" \ && export GOTOOLCHAIN="go${GO_VERSION}" \ && go mod download \ && GOBIN=/usr/local/bin go install github.com/google/go-licenses@latest # build COPY . . ARG TARGETARCH RUN eval "$(gimme "${GO_VERSION}")" \ && export GOTOOLCHAIN="go${GO_VERSION}" \ && CGO_ENABLED=0 GOARCH=$TARGETARCH go build -o ./kindnetd ./cmd/kindnetd \ && GOARCH=$TARGETARCH go-licenses save --save_path=/_LICENSES ./cmd/kindnetd # build real kindnetd image FROM registry.k8s.io/build-image/distroless-iptables:v0.8.7 COPY --from=0 --chown=root:root ./go/src/kindnetd /bin/kindnetd COPY --from=0 /_LICENSES/* /LICENSES/ COPY --chmod=0644 files/LICENSES/* /LICENSES/* CMD ["/bin/kindnetd"] kubernetes-sigs-kind-49aeee6/images/kindnetd/LICENSE000066400000000000000000000261351524365506300223450ustar00rootroot00000000000000 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. kubernetes-sigs-kind-49aeee6/images/kindnetd/Makefile000066400000000000000000000000471524365506300227720ustar00rootroot00000000000000include $(CURDIR)/../Makefile.common.inkubernetes-sigs-kind-49aeee6/images/kindnetd/README.md000066400000000000000000000016741524365506300226200ustar00rootroot00000000000000# kindnetd `kindnetd` is a simple networking daemon with the following responsibilities: - IP masquerade (of traffic leaving the nodes that is headed out of the cluster) - Ensuring netlink routes to pod CIDRs via the host node IP for each - Ensuring a simple CNI config based on the standard [ptp] / [host-local] [plugins] and the node's pod CIDR kindnetd is based on [aojea/kindnet] which is in turn based on [leblancd/kube-v6-test]. We use this to implement KIND's standard CNI / cluster networking configuration. ## Building cd to this directory on mac / linux with docker installed and run `make quick`. To push an image run `make push`. [ptp]: https://www.cni.dev/plugins/current/main/ptp/ [host-local]: https://www.cni.dev/plugins/current/ipam/host-local/ [plugins]: https://github.com/containernetworking/plugins [aojea/kindnet]: https://github.com/aojea/kindnet [leblancd/kube-v6-test]: https://github.com/leblancd/kube-v6-test/tree/master kubernetes-sigs-kind-49aeee6/images/kindnetd/cloudbuild.yaml000066400000000000000000000004111524365506300243370ustar00rootroot00000000000000# See https://cloud.google.com/cloud-build/docs/build-config options: substitution_option: ALLOW_LOOSE machineType: E2_HIGHCPU_32 steps: - name: gcr.io/k8s-staging-test-infra/gcb-docker-gcloud:latest entrypoint: make args: ['-C', 'images/kindnetd', 'push'] kubernetes-sigs-kind-49aeee6/images/kindnetd/cmd/000077500000000000000000000000001524365506300220745ustar00rootroot00000000000000kubernetes-sigs-kind-49aeee6/images/kindnetd/cmd/kindnetd/000077500000000000000000000000001524365506300236745ustar00rootroot00000000000000kubernetes-sigs-kind-49aeee6/images/kindnetd/cmd/kindnetd/cni.go000066400000000000000000000101231524365506300247710ustar00rootroot00000000000000/* Copyright 2019 The Kubernetes Authors. 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 main import ( "errors" "fmt" "io" stdnet "net" "os" "reflect" "text/template" corev1 "k8s.io/api/core/v1" ) /* cni config management */ // CNIConfigInputs is supplied to the CNI config template type CNIConfigInputs struct { PodCIDRs []string DefaultRoutes []string Mtu int } // ComputeCNIConfigInputs computes the template inputs for CNIConfigWriter func ComputeCNIConfigInputs(node *corev1.Node) CNIConfigInputs { defaultRoutes := []string{"0.0.0.0/0", "::/0"} // check if is a dualstack cluster if len(node.Spec.PodCIDRs) > 1 { return CNIConfigInputs{ PodCIDRs: node.Spec.PodCIDRs, DefaultRoutes: defaultRoutes, } } // the cluster is single stack // we use the legacy node.Spec.PodCIDR for backwards compatibility podCIDRs := []string{node.Spec.PodCIDR} // This is a single stack cluster defaultRoute := defaultRoutes[:1] if isIPv6CIDRString(podCIDRs[0]) { defaultRoute = defaultRoutes[1:] } return CNIConfigInputs{ PodCIDRs: podCIDRs, DefaultRoutes: defaultRoute, } } // computeBridgeMTU finds the mtu for the eth0 interface // otherwise it defaults to ptp default behavior of being set by kernel func computeBridgeMTU() (int, error) { interfaces, err := stdnet.Interfaces() if err != nil { return 0, err } for _, inter := range interfaces { if inter.Name == "eth0" { return inter.MTU, nil } } return 0, errors.New("Found no eth0 device") } // cniConfigPath is where kindnetd will write the computed CNI config const cniConfigPath = "/etc/cni/net.d/10-kindnet.conflist" const cniConfigTemplate = ` { "cniVersion": "0.3.1", "name": "kindnet", "plugins": [ { "type": "ptp", "ipMasq": false, "ipam": { "type": "host-local", "dataDir": "/run/cni-ipam-state", "routes": [ {{$first := true}} {{- range $route := .DefaultRoutes}} {{if $first}}{{$first = false}}{{else}},{{end}} { "dst": "{{ $route }}" } {{- end}} ], "ranges": [ {{$first := true}} {{- range $cidr := .PodCIDRs}} {{if $first}}{{$first = false}}{{else}},{{end}} [ { "subnet": "{{ $cidr }}" } ] {{- end}} ] } {{if .Mtu}}, "mtu": {{ .Mtu }} {{end}} }, { "type": "portmap", "capabilities": { "portMappings": true } } ] } ` // CNIConfigWriter no-ops re-writing config with the same inputs // NOTE: should only be called from a single goroutine type CNIConfigWriter struct { path string lastInputs CNIConfigInputs mtu int } // Write will write the config based on func (c *CNIConfigWriter) Write(inputs CNIConfigInputs) error { inputs.Mtu = c.mtu if reflect.DeepEqual(inputs, c.lastInputs) { return nil } // use an extension not recognized by CNI to write the contents initially // https://github.com/containerd/go-cni/blob/891c2a41e18144b2d7921f971d6c9789a68046b2/opts.go#L170 // then we can rename to atomically make the file appear f, err := os.Create(c.path + ".temp") if err != nil { return err } // actually write the config if err := writeCNIConfig(f, cniConfigTemplate, inputs); err != nil { f.Close() os.Remove(f.Name()) return err } _ = f.Sync() _ = f.Close() // then we can rename to the target config path if err := os.Rename(f.Name(), c.path); err != nil { return err } // we're safely done now, record the inputs c.lastInputs = inputs return nil } func writeCNIConfig(w io.Writer, rawTemplate string, data CNIConfigInputs) error { t, err := template.New("cni-json").Parse(rawTemplate) if err != nil { return fmt.Errorf("failed to parse cni template: %w", err) } return t.Execute(w, &data) } kubernetes-sigs-kind-49aeee6/images/kindnetd/cmd/kindnetd/main.go000066400000000000000000000306261524365506300251560ustar00rootroot00000000000000/* Copyright 2019 The Kubernetes Authors. 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 main is the main entrypoint for kindnetd. package main import ( "context" "flag" "fmt" "net" "os" "os/signal" "strings" "syscall" "time" "golang.org/x/sys/unix" "sigs.k8s.io/kube-network-policies/pkg/api" "sigs.k8s.io/kube-network-policies/pkg/dataplane" "sigs.k8s.io/kube-network-policies/pkg/networkpolicy" "sigs.k8s.io/kube-network-policies/pkg/podinfo" corev1 "k8s.io/api/core/v1" "k8s.io/apimachinery/pkg/labels" "k8s.io/apimachinery/pkg/util/sets" "k8s.io/client-go/informers" "k8s.io/client-go/kubernetes" "k8s.io/client-go/rest" "k8s.io/klog/v2" ) const ( probeTCPtimeout = 1 * time.Second ) // kindnetd is a simple networking daemon to complete kind's CNI implementation // kindnetd will ensure routes to the other node's PodCIDR via their InternalIP // kindnetd will ensure pod to pod communication will not be masquerade // kindnetd will also write a templated cni config supplied with PodCIDR // // input envs: // - HOST_IP: should be populated by downward API // - POD_IP: should be populated by downward API // - CNI_CONFIG_TEMPLATE: the cni .conflist template, run with {{ .PodCIDR }} // - CONTROL_PLANE_ENDPOINT: control-plane endpoint format host:port // TODO: improve logging & error handling // IPFamily defines kindnet networking operating model type IPFamily string const ( // IPv4Family sets IPFamily to ipv4 IPv4Family IPFamily = "ipv4" // IPv6Family sets IPFamily to ipv6 IPv6Family IPFamily = "ipv6" // DualStackFamily sets ClusterIPFamily to DualStack DualStackFamily IPFamily = "dualstack" ) func main() { // enable logging klog.InitFlags(nil) _ = flag.Set("logtostderr", "true") flag.Parse() // create a Kubernetes client config, err := rest.InClusterConfig() if err != nil { panic(err.Error()) } // use protobuf to improve performance config.AcceptContentTypes = "application/vnd.kubernetes.protobuf,application/json" config.ContentType = "application/vnd.kubernetes.protobuf" // override the internal apiserver endpoint to avoid // waiting for kube-proxy to install the services rules. // If the endpoint is not reachable, fallback the internal endpoint controlPlaneEndpoint := os.Getenv("CONTROL_PLANE_ENDPOINT") if controlPlaneEndpoint != "" { // check that the apiserver is reachable before continue // to fail fast and avoid waiting until the client operations timeout var ok bool for i := 0; i < 5; i++ { ok = probeTCP(controlPlaneEndpoint, probeTCPtimeout) if ok { config.Host = "https://" + controlPlaneEndpoint break } klog.Infof("apiserver not reachable, attempt %d ... retrying", i) time.Sleep(time.Second * time.Duration(i)) } } // create the clientset to connect the apiserver clientset, err := kubernetes.NewForConfig(config) if err != nil { panic(err.Error()) } klog.Infof("connected to apiserver: %s", config.Host) // trap Ctrl+C and call cancel on the context ctx := context.Background() ctx, cancel := context.WithCancel(ctx) // Enable signal handler signalCh := make(chan os.Signal, 2) defer func() { close(signalCh) cancel() }() signal.Notify(signalCh, os.Interrupt, unix.SIGINT) go func() { select { case <-signalCh: klog.Infof("Exiting: received signal") cancel() case <-ctx.Done(): } }() informersFactory := informers.NewSharedInformerFactory(clientset, 0) nodeInformer := informersFactory.Core().V1().Nodes() nodeLister := nodeInformer.Lister() // obtain the host and pod ip addresses // if both ips are different we are not using the host network hostIP, podIP := os.Getenv("HOST_IP"), os.Getenv("POD_IP") klog.Infof("hostIP = %s\npodIP = %s\n", hostIP, podIP) if hostIP != podIP { klog.Warningf( "hostIP(= %q) != podIP(= %q) but must be running with host network: ", hostIP, podIP, ) } mtu, err := computeBridgeMTU() klog.Infof("setting mtu %d for CNI \n", mtu) if err != nil { klog.Infof("Failed to get MTU size from interface eth0, using kernel default MTU size error:%v", err) } // used to track if the cni config inputs changed and write the config cniConfigWriter := &CNIConfigWriter{ path: cniConfigPath, mtu: mtu, } // enforce ip masquerade rules podSubnetEnv := os.Getenv("POD_SUBNET") if podSubnetEnv == "" { panic("missing environment variable POD_SUBNET") } podSubnetEnv = strings.TrimSpace(podSubnetEnv) podSubnets := strings.Split(podSubnetEnv, ",") clusterIPv4Subnets, clusterIPv6Subnets := splitCIDRs(podSubnets) // detect the cluster IP family based on the Cluster CIDR aka PodSubnet var ipFamily IPFamily if len(clusterIPv4Subnets) > 0 && len(clusterIPv6Subnets) > 0 { ipFamily = DualStackFamily } else if len(clusterIPv6Subnets) > 0 { ipFamily = IPv6Family } else if len(clusterIPv4Subnets) > 0 { ipFamily = IPv4Family } else { panic(fmt.Sprintf("podSubnets ClusterCIDR/Pod_Subnet: %v", podSubnetEnv)) } klog.Infof("kindnetd IP family: %q", ipFamily) // create an ipMasqAgent for IPv4 if len(clusterIPv4Subnets) > 0 { klog.Infof("noMask IPv4 subnets: %v", clusterIPv4Subnets) masqAgentIPv4, err := NewIPMasqAgent(false, clusterIPv4Subnets) if err != nil { panic(err.Error()) } go func() { if err := masqAgentIPv4.SyncRulesForever(ctx, time.Second*60); err != nil { panic(err) } }() } // create an ipMasqAgent for IPv6 if len(clusterIPv6Subnets) > 0 { klog.Infof("noMask IPv6 subnets: %v", clusterIPv6Subnets) masqAgentIPv6, err := NewIPMasqAgent(true, clusterIPv6Subnets) if err != nil { panic(err.Error()) } go func() { if err := masqAgentIPv6.SyncRulesForever(ctx, time.Second*60); err != nil { panic(err) } }() } // setup nodes reconcile function, closes over arguments reconcileNodes := makeNodesReconciler(cniConfigWriter, hostIP, ipFamily) // network policies // on kind nodes the hostname matches the node name nodeName, err := os.Hostname() if err != nil { klog.Fatalf("couldn't determine hostname: %v", err) } cfg := dataplane.Config{ FailOpen: true, QueueID: 101, NetfilterBug1766Fix: true, NFTableName: "kindnet-network-policies", } podInformer := informersFactory.Core().V1().Pods() informerResolver, err := podinfo.NewInformerResolver(podInformer.Informer()) if err != nil { klog.Infof("Error creating informer resolver: %v, skipping network policies", err) } else { podInfoProvider := podinfo.NewInformerProvider( podInformer, informersFactory.Core().V1().Namespaces(), nodeInformer, []podinfo.IPResolver{informerResolver}, ) stdNetPolEvaluator := networkpolicy.NewStandardNetworkPolicy( nodeName, informersFactory.Core().V1().Namespaces(), podInformer, informersFactory.Networking().V1().NetworkPolicies(), ) policyEngine := networkpolicy.NewPolicyEngine( podInfoProvider, []api.PolicyEvaluator{stdNetPolEvaluator}, ) networkPolicyController, err := dataplane.NewController( policyEngine, cfg, ) if err != nil { klog.Infof("Error creating network policy controller: %v, skipping network policies", err) } else { go func() { _ = networkPolicyController.Run(ctx) }() } } // main control loop informersFactory.Start(ctx.Done()) ticker := time.NewTicker(10 * time.Second) defer ticker.Stop() for { var nodes []*corev1.Node var err error for i := 0; i < 5; i++ { nodes, err = nodeLister.List(labels.Everything()) if err == nil { break } klog.Infof("Failed to get nodes, retrying after error: %v", err) time.Sleep(time.Second * time.Duration(i)) } if err != nil { panic("Reached maximum retries obtaining node list: " + err.Error()) } // reconcile the nodes with retries for i := 0; i < 5; i++ { err = reconcileNodes(nodes) if err == nil { break } klog.Infof("Failed to reconcile routes, retrying after error: %v", err) time.Sleep(time.Second * time.Duration(i)) } if err != nil { panic("Maximum retries reconciling node routes: " + err.Error()) } // rate limit select { case <-ctx.Done(): // grace period to cleanup resources time.Sleep(1 * time.Second) return case <-ticker.C: } } } // nodeNodesReconciler returns a reconciliation func for nodes func makeNodesReconciler(cniConfig *CNIConfigWriter, hostIP string, ipFamily IPFamily) func([]*corev1.Node) error { // reconciles a node reconcileNode := func(node *corev1.Node) error { // first get this node's IPs // we don't support more than one IP address per IP family for simplification nodeIPs := internalIPs(node) klog.Infof("Handling node with IPs: %v\n", nodeIPs) // This is our node. We don't need to add routes, // but we might need to update the cni config if nodeIPs.Has(hostIP) { klog.Info("handling current node\n") // compute the current cni config inputs if err := cniConfig.Write( ComputeCNIConfigInputs(node), ); err != nil { return err } // we're done handling this node return nil } // This is another node. Add routes to the POD subnets in the other nodes // don't do anything unless there is a non-empty PodCIDR var podCIDRs []string if ipFamily == DualStackFamily { podCIDRs = node.Spec.PodCIDRs } else if node.Spec.PodCIDR != "" { podCIDRs = []string{node.Spec.PodCIDR} } if len(podCIDRs) == 0 { fmt.Printf("Node %v has no CIDR, ignoring\n", node.Name) return nil } klog.Infof("Node %v has CIDR %s \n", node.Name, podCIDRs) podCIDRsv4, podCIDRsv6 := splitCIDRs(podCIDRs) // obtain the PodCIDR gateway var nodeIPv4, nodeIPv6 string for _, ip := range nodeIPs.UnsortedList() { if isIPv6String(ip) { nodeIPv6 = ip } else { nodeIPv4 = ip } } if nodeIPv4 != "" && len(podCIDRsv4) > 0 { if err := syncRoute(nodeIPv4, podCIDRsv4); err != nil { return err } } if nodeIPv6 != "" && len(podCIDRsv6) > 0 { if err := syncRoute(nodeIPv6, podCIDRsv6); err != nil { return err } } return nil } // return a reconciler for all the nodes return func(nodes []*corev1.Node) error { for _, node := range nodes { if err := reconcileNode(node); err != nil { return err } } return nil } } // internalIPs returns the internal IP addresses for node func internalIPs(node *corev1.Node) sets.Set[string] { ips := sets.New[string]() // check the node.Status.Addresses for _, address := range node.Status.Addresses { if address.Type == "InternalIP" { ips.Insert(address.Address) } } return ips } // splitCIDRs given a slice of strings with CIDRs it returns 2 slice of strings per IP family // The order returned is always v4 v6 func splitCIDRs(cidrs []string) ([]string, []string) { var v4subnets, v6subnets []string for _, subnet := range cidrs { if isIPv6CIDRString(subnet) { v6subnets = append(v6subnets, subnet) } else { v4subnets = append(v4subnets, subnet) } } return v4subnets, v6subnets } // Modified from agnhost connect command in k/k // https://github.com/kubernetes/kubernetes/blob/c241a237f9a635286c76c20d07b103a663b1cfa4/test/images/agnhost/connect/connect.go#L66 func probeTCP(address string, timeout time.Duration) bool { klog.Infof("probe TCP address %s", address) if _, err := net.ResolveTCPAddr("tcp", address); err != nil { klog.Warningf("DNS problem %s: %v", address, err) return false } conn, err := net.DialTimeout("tcp", address, timeout) if err == nil { conn.Close() return true } if opErr, ok := err.(*net.OpError); ok { if opErr.Timeout() { klog.Warningf("TIMEOUT %s", address) } else if syscallErr, ok := opErr.Err.(*os.SyscallError); ok { if syscallErr.Err == syscall.ECONNREFUSED { klog.Warningf("REFUSED %s", address) } } return false } klog.Warningf("OTHER %s: %v", address, err) return false } // isIPv6String returns if ip is IPv6. func isIPv6String(ip string) bool { netIP := net.ParseIP(ip) return netIP != nil && netIP.To4() == nil } // isIPv6CIDRString returns if cidr is IPv6. // This assumes cidr is a valid CIDR. func isIPv6CIDRString(cidr string) bool { ip, _, _ := net.ParseCIDR(cidr) return ip != nil && ip.To4() == nil } kubernetes-sigs-kind-49aeee6/images/kindnetd/cmd/kindnetd/masq.go000066400000000000000000000072771524365506300252010ustar00rootroot00000000000000/* Copyright 2019 The Kubernetes Authors. 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 main import ( "context" "errors" "fmt" "time" "github.com/coreos/go-iptables/iptables" ) // NewIPMasqAgent returns a new IPMasqAgent func NewIPMasqAgent(ipv6 bool, noMasqueradeCIDRs []string) (*IPMasqAgent, error) { protocol := iptables.ProtocolIPv4 if ipv6 { protocol = iptables.ProtocolIPv6 } ipt, err := iptables.NewWithProtocol(protocol) if err != nil { return nil, err } // TODO: validate cidrs return &IPMasqAgent{ iptables: ipt, masqChain: masqChainName, noMasqueradeCIDRs: noMasqueradeCIDRs, }, nil } // IPMasqAgent is based on https://github.com/kubernetes-incubator/ip-masq-agent // but collapsed into kindnetd and made ipv6 aware in an opinionated and simplified // fashion using "github.com/coreos/go-iptables" type IPMasqAgent struct { iptables *iptables.IPTables masqChain string noMasqueradeCIDRs []string } // SyncRulesForever syncs ip masquerade rules forever // these rules only needs to be installed once, but we run it periodically to check that are // not deleted by an external program. It fails if can't sync the rules during 3 iterations func (ma *IPMasqAgent) SyncRulesForever(ctx context.Context, interval time.Duration) error { var errs []error ticker := time.NewTicker(interval) defer ticker.Stop() for { if err := ma.SyncRules(); err != nil { errs = append(errs, fmt.Errorf("failed to synchronize rules at %s: %v", time.Now(), err)) if len(errs) > 3 { return fmt.Errorf("Can't synchronize rules after 3 attempts: %w", err) } } else { errs = errs[:0] } select { case <-ctx.Done(): return errors.Join(errs...) case <-ticker.C: } } } // name of nat chain for iptables masquerade rules const masqChainName = "KIND-MASQ-AGENT" // SyncRules syncs ip masquerade rules func (ma *IPMasqAgent) SyncRules() error { // make sure our custom chain for non-masquerade exists exists := false chains, err := ma.iptables.ListChains("nat") if err != nil { return fmt.Errorf("failed to list chains: %v", err) } for _, ch := range chains { if ch == ma.masqChain { exists = true break } } if !exists { if err = ma.iptables.NewChain("nat", ma.masqChain); err != nil { return err } } // Packets to this network should not be masquerade, pods should be able to talk to other pods for _, cidr := range ma.noMasqueradeCIDRs { if err := ma.iptables.AppendUnique("nat", ma.masqChain, "-d", cidr, "-j", "RETURN", "-m", "comment", "--comment", "kind-masq-agent: local traffic is not subject to MASQUERADE"); err != nil { return err } } // Masquerade all the other traffic if err := ma.iptables.AppendUnique("nat", ma.masqChain, "-j", "MASQUERADE", "-m", "comment", "--comment", "kind-masq-agent: outbound traffic is subject to MASQUERADE (must be last in chain)"); err != nil { return err } // Send all non-LOCAL destination traffic to our custom KIND-MASQ-AGENT chain return ma.iptables.AppendUnique("nat", "POSTROUTING", "-m", "addrtype", "!", "--dst-type", "LOCAL", "-j", ma.masqChain, "-m", "comment", "--comment", "kind-masq-agent: ensure nat POSTROUTING directs all non-LOCAL destination traffic to our custom KIND-MASQ-AGENT chain") } kubernetes-sigs-kind-49aeee6/images/kindnetd/cmd/kindnetd/routes.go000066400000000000000000000034211524365506300255440ustar00rootroot00000000000000/* Copyright 2019 The Kubernetes Authors. 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 main import ( "net" "github.com/vishvananda/netlink" "github.com/vishvananda/netlink/nl" "k8s.io/klog/v2" ) func syncRoute(nodeIP string, podCIDRs []string) error { ip := net.ParseIP(nodeIP) for _, podCIDR := range podCIDRs { // parse subnet dst, err := netlink.ParseIPNet(podCIDR) if err != nil { return err } // Declare the wanted route. routeToDst := netlink.Route{Dst: dst, Gw: ip} // List all routes which have the same dst set. // RouteListFiltered ignores the gw for filtering because of the passed filterMask. routes, err := netlink.RouteListFiltered(nl.GetIPFamily(ip), &routeToDst, netlink.RT_FILTER_DST) if err != nil { return err } // Check if the wanted route exists and delete wrong routes found := false for _, route := range routes { if route.Gw.Equal(ip) { found = true continue } // Delete wrong route because of invalid gateway. klog.Infof("Removing invalid route %v\n", route) if err := netlink.RouteDel(&route); err != nil { return err } } // Add route if not present if !found { klog.Infof("Adding route %v \n", routeToDst) if err := netlink.RouteAdd(&routeToDst); err != nil { return err } } } return nil } kubernetes-sigs-kind-49aeee6/images/kindnetd/files/000077500000000000000000000000001524365506300224335ustar00rootroot00000000000000kubernetes-sigs-kind-49aeee6/images/kindnetd/files/LICENSES/000077500000000000000000000000001524365506300236405ustar00rootroot00000000000000kubernetes-sigs-kind-49aeee6/images/kindnetd/files/LICENSES/README.txt000066400000000000000000000002641524365506300253400ustar00rootroot00000000000000This directory contains license files and notices from binaries built for this image and the dependencies of those binaries, as collected by https://github.com/google/go-licenses. kubernetes-sigs-kind-49aeee6/images/kindnetd/go.mod000066400000000000000000000053721524365506300224460ustar00rootroot00000000000000module sigs.k8s.io/kind/images/kindnetd go 1.26.0 require ( github.com/coreos/go-iptables v0.8.0 github.com/vishvananda/netlink v1.3.2-0.20251022194116-03b8f90390d9 golang.org/x/sys v0.45.0 k8s.io/api v0.36.1 k8s.io/apimachinery v0.36.1 k8s.io/client-go v0.36.1 k8s.io/klog/v2 v2.140.0 sigs.k8s.io/kube-network-policies v1.0.1-0.20260528073847-f67f0fb35e2b ) require ( github.com/beorn7/perks v1.0.1 // indirect github.com/cespare/xxhash/v2 v2.3.0 // indirect github.com/davecgh/go-spew v1.1.2-0.20180830191138-d8f796af33cc // indirect github.com/emicklei/go-restful/v3 v3.13.0 // indirect github.com/florianl/go-nfqueue/v2 v2.0.3 // indirect github.com/fxamacker/cbor/v2 v2.9.0 // indirect github.com/go-logr/logr v1.4.3 // indirect github.com/go-openapi/jsonpointer v0.21.1 // indirect github.com/go-openapi/jsonreference v0.21.0 // indirect github.com/go-openapi/swag v0.23.1 // indirect github.com/google/gnostic-models v0.7.0 // indirect github.com/google/go-cmp v0.7.0 // indirect github.com/google/nftables v0.3.0 // indirect github.com/google/uuid v1.6.0 // indirect github.com/josharian/intern v1.0.0 // indirect github.com/json-iterator/go v1.1.12 // indirect github.com/mailru/easyjson v0.9.0 // indirect github.com/mdlayher/netlink v1.11.2 // indirect github.com/mdlayher/socket v0.6.0 // indirect github.com/modern-go/concurrent v0.0.0-20180306012644-bacd9c7ef1dd // indirect github.com/modern-go/reflect2 v1.0.3-0.20250322232337-35a7c28c31ee // indirect github.com/munnerz/goautoneg v0.0.0-20191010083416-a7dc8b61c822 // indirect github.com/pmezard/go-difflib v1.0.1-0.20181226105442-5d4384ee4fb2 // indirect github.com/prometheus/client_golang v1.23.2 // indirect github.com/prometheus/client_model v0.6.2 // indirect github.com/prometheus/common v0.67.5 // indirect github.com/prometheus/procfs v0.19.2 // indirect github.com/vishvananda/netns v0.0.5 // indirect github.com/x448/float16 v0.8.4 // indirect go.yaml.in/yaml/v2 v2.4.3 // indirect go.yaml.in/yaml/v3 v3.0.4 // indirect golang.org/x/net v0.55.0 // indirect golang.org/x/oauth2 v0.34.0 // indirect golang.org/x/sync v0.20.0 // indirect golang.org/x/term v0.43.0 // indirect golang.org/x/text v0.37.0 // indirect golang.org/x/time v0.15.0 // indirect google.golang.org/protobuf v1.36.12-0.20260120151049-f2248ac996af // indirect gopkg.in/evanphx/json-patch.v4 v4.13.0 // indirect gopkg.in/inf.v0 v0.9.1 // indirect gopkg.in/yaml.v3 v3.0.1 // indirect k8s.io/kube-openapi v0.0.0-20260317180543-43fb72c5454a // indirect k8s.io/utils v0.0.0-20260210185600-b8788abfbbc2 // indirect sigs.k8s.io/json v0.0.0-20250730193827-2d320260d730 // indirect sigs.k8s.io/randfill v1.0.0 // indirect sigs.k8s.io/structured-merge-diff/v6 v6.3.2 // indirect sigs.k8s.io/yaml v1.6.0 // indirect ) kubernetes-sigs-kind-49aeee6/images/kindnetd/go.sum000066400000000000000000000315451524365506300224740ustar00rootroot00000000000000github.com/beorn7/perks v1.0.1 h1:VlbKKnNfV8bJzeqoa4cOKqO6bYr3WgKZxO8Z16+hsOM= github.com/beorn7/perks v1.0.1/go.mod h1:G2ZrVWU2WbWT9wwq4/hrbKbnv/1ERSJQ0ibhJ6rlkpw= github.com/blang/semver/v4 v4.0.0 h1:1PFHFE6yCCTv8C1TeyNNarDzntLi7wMI5i/pzqYIsAM= github.com/blang/semver/v4 v4.0.0/go.mod h1:IbckMUScFkM3pff0VJDNKRiT6TG/YpiHIM2yvyW5YoQ= 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/coreos/go-iptables v0.8.0 h1:MPc2P89IhuVpLI7ETL/2tx3XZ61VeICZjYqDEgNsPRc= github.com/coreos/go-iptables v0.8.0/go.mod h1:Qe8Bv2Xik5FyTXwgIbLAnv2sWSBmvWdFETJConOQ//Q= github.com/davecgh/go-spew v1.1.0/go.mod h1:J7Y8YcW2NihsgmVo/mv3lAwl/skON4iLHjSsI+c5H38= github.com/davecgh/go-spew v1.1.1/go.mod h1:J7Y8YcW2NihsgmVo/mv3lAwl/skON4iLHjSsI+c5H38= github.com/davecgh/go-spew v1.1.2-0.20180830191138-d8f796af33cc h1:U9qPSI2PIWSS1VwoXQT9A3Wy9MM3WgvqSxFWenqJduM= github.com/davecgh/go-spew v1.1.2-0.20180830191138-d8f796af33cc/go.mod h1:J7Y8YcW2NihsgmVo/mv3lAwl/skON4iLHjSsI+c5H38= github.com/emicklei/go-restful/v3 v3.13.0 h1:C4Bl2xDndpU6nJ4bc1jXd+uTmYPVUwkD6bFY/oTyCes= github.com/emicklei/go-restful/v3 v3.13.0/go.mod h1:6n3XBCmQQb25CM2LCACGz8ukIrRry+4bhvbpWn3mrbc= github.com/florianl/go-nfqueue/v2 v2.0.3 h1:9OR0LIsE5JZNLQe9Zqp8aFYl3jUmg3GxnQFRMUSs0lE= github.com/florianl/go-nfqueue/v2 v2.0.3/go.mod h1:VA09+iPOT43OMoCKNfXHyzujQUty2xmzyCRkBOlmabc= github.com/fxamacker/cbor/v2 v2.9.0 h1:NpKPmjDBgUfBms6tr6JZkTHtfFGcMKsw3eGcmD/sapM= github.com/fxamacker/cbor/v2 v2.9.0/go.mod h1:vM4b+DJCtHn+zz7h3FFp/hDAI9WNWCsZj23V5ytsSxQ= github.com/go-logr/logr v1.4.3 h1:CjnDlHq8ikf6E492q6eKboGOC0T8CDaOvkHCIg8idEI= github.com/go-logr/logr v1.4.3/go.mod h1:9T104GzyrTigFIr8wt5mBrctHMim0Nb2HLGrmQ40KvY= github.com/go-openapi/jsonpointer v0.21.1 h1:whnzv/pNXtK2FbX/W9yJfRmE2gsmkfahjMKB0fZvcic= github.com/go-openapi/jsonpointer v0.21.1/go.mod h1:50I1STOfbY1ycR8jGz8DaMeLCdXiI6aDteEdRNNzpdk= github.com/go-openapi/jsonreference v0.21.0 h1:Rs+Y7hSXT83Jacb7kFyjn4ijOuVGSvOdF2+tg1TRrwQ= github.com/go-openapi/jsonreference v0.21.0/go.mod h1:LmZmgsrTkVg9LG4EaHeY8cBDslNPMo06cago5JNLkm4= github.com/go-openapi/swag v0.23.1 h1:lpsStH0n2ittzTnbaSloVZLuB5+fvSY/+hnagBjSNZU= github.com/go-openapi/swag v0.23.1/go.mod h1:STZs8TbRvEQQKUA+JZNAm3EWlgaOBGpyFDqQnDHMef0= github.com/google/gnostic-models v0.7.0 h1:qwTtogB15McXDaNqTZdzPJRHvaVJlAl+HVQnLmJEJxo= github.com/google/gnostic-models v0.7.0/go.mod h1:whL5G0m6dmc5cPxKc5bdKdEN3UjI7OUGxBlw57miDrQ= github.com/google/go-cmp v0.7.0 h1:wk8382ETsv4JYUZwIsn6YpYiWiBsYLSJiTsyBybVuN8= github.com/google/go-cmp v0.7.0/go.mod h1:pXiqmnSA92OHEEa9HXL2W4E7lf9JzCmGVUdgjX3N/iU= github.com/google/gofuzz v1.0.0/go.mod h1:dBl0BpW6vV/+mYPU4Po3pmUjxk6FQPldtuIdl/M65Eg= github.com/google/nftables v0.3.0 h1:bkyZ0cbpVeMHXOrtlFc8ISmfVqq5gPJukoYieyVmITg= github.com/google/nftables v0.3.0/go.mod h1:BCp9FsrbF1Fn/Yu6CLUc9GGZFw/+hsxfluNXXmxBfRM= 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/inconshreveable/mousetrap v1.1.0 h1:wN+x4NVGpMsO7ErUn/mUI3vEoE6Jt13X2s0bqwp9tc8= github.com/inconshreveable/mousetrap v1.1.0/go.mod h1:vpF70FUmC8bwa3OWnCshd2FqLfsEA9PFc4w1p2J65bw= 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/json-iterator/go v1.1.12 h1:PV8peI4a0ysnczrg+LtxykD8LfKY9ML6u2jnxaEnrnM= github.com/json-iterator/go v1.1.12/go.mod h1:e30LSqwooZae/UwlEbR2852Gd8hjQvJoHmT4TnhNGBo= github.com/kr/pretty v0.3.1 h1:flRD4NNwYAUpkphVc1HcthR4KEIFJ65n8Mw5qdRn3LE= github.com/kr/pretty v0.3.1/go.mod h1:hoEshYVHaxMs3cyo3Yncou5ZscifuDolrwPKZanG3xk= github.com/kr/text v0.2.0 h1:5Nx0Ya0ZqY2ygV366QzturHI13Jq95ApcVaJBhpS+AY= github.com/kr/text v0.2.0/go.mod h1:eLer722TekiGuMkidMxC/pM04lWEeraHUUmBw8l2grE= github.com/mailru/easyjson v0.9.0 h1:PrnmzHw7262yW8sTBwxi1PdJA3Iw/EKBa8psRf7d9a4= github.com/mailru/easyjson v0.9.0/go.mod h1:1+xMtQp2MRNVL/V1bOzuP3aP8VNwRW55fQUto+XFtTU= github.com/mdlayher/netlink v1.11.2 h1:HKh2jqe+omdSWcQ88nrT7INE61B0NXfiSPFdgL4YbNI= github.com/mdlayher/netlink v1.11.2/go.mod h1:uT2Yc/QLaZubzDpZIBi9d4GoeLwtp3x1AMeqSRrK2sA= github.com/mdlayher/socket v0.6.0 h1:ScZPaAGyO1icQnbFrhPM8mnXyMu9qukC1K4ZoM2IQKU= github.com/mdlayher/socket v0.6.0/go.mod h1:q7vozUAnxSqnjHc12Fik5yUKIzfZ8ITCfMkhOtE9z18= github.com/modern-go/concurrent v0.0.0-20180228061459-e0a39a4cb421/go.mod h1:6dJC0mAP4ikYIbvyc7fijjWJddQyLn8Ig3JB5CqoB9Q= github.com/modern-go/concurrent v0.0.0-20180306012644-bacd9c7ef1dd h1:TRLaZ9cD/w8PVh93nsPXa1VrQ6jlwL5oN8l14QlcNfg= github.com/modern-go/concurrent v0.0.0-20180306012644-bacd9c7ef1dd/go.mod h1:6dJC0mAP4ikYIbvyc7fijjWJddQyLn8Ig3JB5CqoB9Q= github.com/modern-go/reflect2 v1.0.2/go.mod h1:yWuevngMOJpCy52FWWMvUC8ws7m/LJsjYzDa0/r8luk= github.com/modern-go/reflect2 v1.0.3-0.20250322232337-35a7c28c31ee h1:W5t00kpgFdJifH4BDsTlE89Zl93FEloxaWZfGcifgq8= github.com/modern-go/reflect2 v1.0.3-0.20250322232337-35a7c28c31ee/go.mod h1:yWuevngMOJpCy52FWWMvUC8ws7m/LJsjYzDa0/r8luk= github.com/munnerz/goautoneg v0.0.0-20191010083416-a7dc8b61c822 h1:C3w9PqII01/Oq1c1nUAm88MOHcQC9l5mIlSMApZMrHA= github.com/munnerz/goautoneg v0.0.0-20191010083416-a7dc8b61c822/go.mod h1:+n7T8mK8HuQTcFwEeznm/DIxMOiR9yIdICNftLE1DvQ= github.com/pmezard/go-difflib v1.0.0/go.mod h1:iKH77koFhYxTK1pcRnkKkqfTogsbg7gZNVY4sRDYZ/4= github.com/pmezard/go-difflib v1.0.1-0.20181226105442-5d4384ee4fb2 h1:Jamvg5psRIccs7FGNTlIRMkT8wgtp5eCXdBlqhYGL6U= github.com/pmezard/go-difflib v1.0.1-0.20181226105442-5d4384ee4fb2/go.mod h1:iKH77koFhYxTK1pcRnkKkqfTogsbg7gZNVY4sRDYZ/4= github.com/prometheus/client_golang v1.23.2 h1:Je96obch5RDVy3FDMndoUsjAhG5Edi49h0RJWRi/o0o= github.com/prometheus/client_golang v1.23.2/go.mod h1:Tb1a6LWHB3/SPIzCoaDXI4I8UHKeFTEQ1YCr+0Gyqmg= github.com/prometheus/client_model v0.6.2 h1:oBsgwpGs7iVziMvrGhE53c/GrLUsZdHnqNwqPLxwZyk= github.com/prometheus/client_model v0.6.2/go.mod h1:y3m2F6Gdpfy6Ut/GBsUqTWZqCUvMVzSfMLjcu6wAwpE= github.com/prometheus/common v0.67.5 h1:pIgK94WWlQt1WLwAC5j2ynLaBRDiinoAb86HZHTUGI4= github.com/prometheus/common v0.67.5/go.mod h1:SjE/0MzDEEAyrdr5Gqc6G+sXI67maCxzaT3A2+HqjUw= github.com/prometheus/procfs v0.19.2 h1:zUMhqEW66Ex7OXIiDkll3tl9a1ZdilUOd/F6ZXw4Vws= github.com/prometheus/procfs v0.19.2/go.mod h1:M0aotyiemPhBCM0z5w87kL22CxfcH05ZpYlu+b4J7mw= github.com/rogpeppe/go-internal v1.14.1 h1:UQB4HGPB6osV0SQTLymcB4TgvyWu6ZyliaW0tI/otEQ= github.com/rogpeppe/go-internal v1.14.1/go.mod h1:MaRKkUm5W0goXpeCfT7UZI6fk/L7L7so1lCWt35ZSgc= github.com/spf13/cobra v1.10.2 h1:DMTTonx5m65Ic0GOoRY2c16WCbHxOOw6xxezuLaBpcU= github.com/spf13/cobra v1.10.2/go.mod h1:7C1pvHqHw5A4vrJfjNwvOdzYu0Gml16OCs2GRiTUUS4= github.com/spf13/pflag v1.0.10 h1:4EBh2KAYBwaONj6b2Ye1GiHfwjqyROoF4RwYO+vPwFk= github.com/spf13/pflag v1.0.10/go.mod h1:McXfInJRrz4CZXVZOBLb0bTZqETkiAhM9Iw0y3An2Bg= github.com/stretchr/objx v0.1.0/go.mod h1:HFkY916IF+rwdDfMAkV7OtwuqBVzrE8GR6GFx+wExME= github.com/stretchr/objx v0.5.2 h1:xuMeJ0Sdp5ZMRXx/aWO6RZxdr3beISkG5/G/aIRr3pY= github.com/stretchr/objx v0.5.2/go.mod h1:FRsXN1f5AsAjCGJKqEizvkpNtU+EGNCLh3NxZ/8L+MA= github.com/stretchr/testify v1.3.0/go.mod h1:M5WIy9Dh21IEIfnGCwXGc5bZfKNJtfHm1UVUgZn+9EI= github.com/stretchr/testify v1.11.1 h1:7s2iGBzp5EwR7/aIZr8ao5+dra3wiQyKjjFuvgVKu7U= github.com/stretchr/testify v1.11.1/go.mod h1:wZwfW3scLgRK+23gO65QZefKpKQRnfz6sD981Nm4B6U= github.com/vishvananda/netlink v1.3.2-0.20251022194116-03b8f90390d9 h1:Rvo2TKn0ziU4PtKcmGfBJrjmfhFex2SBsothV8eShVE= github.com/vishvananda/netlink v1.3.2-0.20251022194116-03b8f90390d9/go.mod h1:lEui7SPMd9fgxzHVGRAvTxsBGCF6PRH81o2kLWLWHgw= github.com/vishvananda/netns v0.0.5 h1:DfiHV+j8bA32MFM7bfEunvT8IAqQ/NzSJHtcmW5zdEY= github.com/vishvananda/netns v0.0.5/go.mod h1:SpkAiCQRtJ6TvvxPnOSyH3BMl6unz3xZlaprSwhNNJM= github.com/x448/float16 v0.8.4 h1:qLwI1I70+NjRFUR3zs1JPUCgaCXSh3SW62uAKT1mSBM= github.com/x448/float16 v0.8.4/go.mod h1:14CWIYCyZA/cWjXOioeEpHeN/83MdbZDRQHoFcYsOfg= go.opentelemetry.io/otel v1.41.0 h1:YlEwVsGAlCvczDILpUXpIpPSL/VPugt7zHThEMLce1c= go.opentelemetry.io/otel v1.41.0/go.mod h1:Yt4UwgEKeT05QbLwbyHXEwhnjxNO6D8L5PQP51/46dE= go.opentelemetry.io/otel/trace v1.41.0 h1:Vbk2co6bhj8L59ZJ6/xFTskY+tGAbOnCtQGVVa9TIN0= go.opentelemetry.io/otel/trace v1.41.0/go.mod h1:U1NU4ULCoxeDKc09yCWdWe+3QoyweJcISEVa1RBzOis= go.uber.org/goleak v1.3.0 h1:2K3zAYmnTNqV73imy9J1T3WC+gmCePx2hEGkimedGto= go.uber.org/goleak v1.3.0/go.mod h1:CoHD4mav9JJNrW/WLlf7HGZPjdw8EucARQHekz1X6bE= go.yaml.in/yaml/v2 v2.4.3 h1:6gvOSjQoTB3vt1l+CU+tSyi/HOjfOjRLJ4YwYZGwRO0= go.yaml.in/yaml/v2 v2.4.3/go.mod h1:zSxWcmIDjOzPXpjlTTbAsKokqkDNAVtZO0WOMiT90s8= go.yaml.in/yaml/v3 v3.0.4 h1:tfq32ie2Jv2UxXFdLJdh3jXuOzWiL1fo0bu/FbuKpbc= go.yaml.in/yaml/v3 v3.0.4/go.mod h1:DhzuOOF2ATzADvBadXxruRBLzYTpT36CKvDb3+aBEFg= golang.org/x/net v0.55.0 h1:bcvxaJn3e1U6InsFWt1JUq1aSjnRxLzT2rtD2KfkDF8= golang.org/x/net v0.55.0/go.mod h1:L5U2KuzuOe1lY7Z+aWVIKK6qEeJXnXV9yzGA+WCHJww= golang.org/x/oauth2 v0.34.0 h1:hqK/t4AKgbqWkdkcAeI8XLmbK+4m4G5YeQRrmiotGlw= golang.org/x/oauth2 v0.34.0/go.mod h1:lzm5WQJQwKZ3nwavOZ3IS5Aulzxi68dUSgRHujetwEA= golang.org/x/sync v0.20.0 h1:e0PTpb7pjO8GAtTs2dQ6jYa5BWYlMuX047Dco/pItO4= golang.org/x/sync v0.20.0/go.mod h1:9xrNwdLfx4jkKbNva9FpL6vEN7evnE43NNNJQ2LF3+0= golang.org/x/sys v0.45.0 h1:dO4czNzziLiiXplLQgBCEpCvXQ3dnkn0SdaZSYdQ+FY= golang.org/x/sys v0.45.0/go.mod h1:4GL1E5IUh+htKOUEOaiffhrAeqysfVGipDYzABqnCmw= golang.org/x/term v0.43.0 h1:S4RLU2sB31O/NCl+zFN9Aru9A/Cq2aqKpTZJ6B+DwT4= golang.org/x/term v0.43.0/go.mod h1:lrhlHNdQJHO+1qVYiHfFKVuVioJIheAc3fBSMFYEIsk= golang.org/x/text v0.37.0 h1:Cqjiwd9eSg8e0QAkyCaQTNHFIIzWtidPahFWR83rTrc= golang.org/x/text v0.37.0/go.mod h1:a5sjxXGs9hsn/AJVwuElvCAo9v8QYLzvavO5z2PiM38= golang.org/x/time v0.15.0 h1:bbrp8t3bGUeFOx08pvsMYRTCVSMk89u4tKbNOZbp88U= golang.org/x/time v0.15.0/go.mod h1:Y4YMaQmXwGQZoFaVFk4YpCt4FLQMYKZe9oeV/f4MSno= google.golang.org/protobuf v1.36.12-0.20260120151049-f2248ac996af h1:+5/Sw3GsDNlEmu7TfklWKPdQ0Ykja5VEmq2i817+jbI= google.golang.org/protobuf v1.36.12-0.20260120151049-f2248ac996af/go.mod h1:HTf+CrKn2C3g5S8VImy6tdcUvCska2kB7j23XfzDpco= gopkg.in/check.v1 v0.0.0-20161208181325-20d25e280405/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/evanphx/json-patch.v4 v4.13.0 h1:czT3CmqEaQ1aanPc5SdlgQrrEIb8w/wwCvWWnfEbYzo= gopkg.in/evanphx/json-patch.v4 v4.13.0/go.mod h1:p8EYWUEYMpynmqDbY58zCKCFZw8pRWMG4EsWvDvM72M= gopkg.in/inf.v0 v0.9.1 h1:73M5CoZyi3ZLMOyDlQh031Cx6N9NDJ2Vvfl76EDAgDc= gopkg.in/inf.v0 v0.9.1/go.mod h1:cWUDdTG/fYaXco+Dcufb5Vnc6Gp2YChqWtbxRZE0mXw= gopkg.in/yaml.v3 v3.0.1 h1:fxVm/GzAzEWqLHuvctI91KS9hhNmmWOoWu0XTYJS7CA= gopkg.in/yaml.v3 v3.0.1/go.mod h1:K4uyk7z7BCEPqu6E+C64Yfv1cQ7kz7rIZviUmN+EgEM= k8s.io/api v0.36.1 h1:XbL/EMj8K2aJpJtePmqUyQMsM0D4QI2pvl7YKJ20FTY= k8s.io/api v0.36.1/go.mod h1:KOWo4ey3TINlXjeHVuwB3i+tXXnu+UcwFBHlI/9dvEo= k8s.io/apimachinery v0.36.1 h1:G63Gjx2W+q0YD+72Vo8oY0nDnePVwnuzTmmy5ENrVSA= k8s.io/apimachinery v0.36.1/go.mod h1:ibYOR00vW/I1kzvi5SF0dRuJ52BvKtfvRdOn35GPQ+8= k8s.io/client-go v0.36.1 h1:FN/K8QIT2CEDt+2WB2HnWrUANZ50AP5GII43/SP2JR0= k8s.io/client-go v0.36.1/go.mod h1:s6rAnCtTGYDQnpNjEhSaISV+2O8jwruZ6m3QOYBFbtU= k8s.io/component-base v0.36.1 h1:iG6GsELftXqTNG9HG6kiVjatSgAw1sf5pJ6R5a6N0kA= k8s.io/component-base v0.36.1/go.mod h1:nf9XPlntRdqO6WMeEWAA5F93Y4ICZQdeT9GeqLDB3JI= k8s.io/klog/v2 v2.140.0 h1:Tf+J3AH7xnUzZyVVXhTgGhEKnFqye14aadWv7bzXdzc= k8s.io/klog/v2 v2.140.0/go.mod h1:o+/RWfJ6PwpnFn7OyAG3QnO47BFsymfEfrz6XyYSSp0= k8s.io/kube-openapi v0.0.0-20260317180543-43fb72c5454a h1:xCeOEAOoGYl2jnJoHkC3hkbPJgdATINPMAxaynU2Ovg= k8s.io/kube-openapi v0.0.0-20260317180543-43fb72c5454a/go.mod h1:uGBT7iTA6c6MvqUvSXIaYZo9ukscABYi2btjhvgKGZ0= k8s.io/utils v0.0.0-20260210185600-b8788abfbbc2 h1:AZYQSJemyQB5eRxqcPky+/7EdBj0xi3g0ZcxxJ7vbWU= k8s.io/utils v0.0.0-20260210185600-b8788abfbbc2/go.mod h1:xDxuJ0whA3d0I4mf/C4ppKHxXynQ+fxnkmQH0vTHnuk= sigs.k8s.io/json v0.0.0-20250730193827-2d320260d730 h1:IpInykpT6ceI+QxKBbEflcR5EXP7sU1kvOlxwZh5txg= sigs.k8s.io/json v0.0.0-20250730193827-2d320260d730/go.mod h1:mdzfpAEoE6DHQEN0uh9ZbOCuHbLK5wOm7dK4ctXE9Tg= sigs.k8s.io/kube-network-policies v1.0.1-0.20260528073847-f67f0fb35e2b h1:8HvW21fI/0A2soheialTH/FxgH5DiD+HNep8S9BglKY= sigs.k8s.io/kube-network-policies v1.0.1-0.20260528073847-f67f0fb35e2b/go.mod h1:R+qcld2nB5yH6eUGevmfDrOjWDipYHJfd8Nv2zWNqUE= sigs.k8s.io/randfill v1.0.0 h1:JfjMILfT8A6RbawdsK2JXGBR5AQVfd+9TbzrlneTyrU= sigs.k8s.io/randfill v1.0.0/go.mod h1:XeLlZ/jmk4i1HRopwe7/aU3H5n1zNUcX6TM94b3QxOY= sigs.k8s.io/structured-merge-diff/v6 v6.3.2 h1:kwVWMx5yS1CrnFWA/2QHyRVJ8jM6dBA80uLmm0wJkk8= sigs.k8s.io/structured-merge-diff/v6 v6.3.2/go.mod h1:M3W8sfWvn2HhQDIbGWj3S099YozAsymCo/wrT5ohRUE= sigs.k8s.io/yaml v1.6.0 h1:G8fkbMSAFqgEFgh4b1wmtzDnioxFCUgTZhlbj5P9QYs= sigs.k8s.io/yaml v1.6.0/go.mod h1:796bPqUfzR/0jLAl6XjHl3Ck7MiyVv8dbTdyT3/pMf4= kubernetes-sigs-kind-49aeee6/images/kindnetd/scripts/000077500000000000000000000000001524365506300230205ustar00rootroot00000000000000kubernetes-sigs-kind-49aeee6/images/kindnetd/scripts/third_party/000077500000000000000000000000001524365506300253515ustar00rootroot00000000000000kubernetes-sigs-kind-49aeee6/images/kindnetd/scripts/third_party/gimme/000077500000000000000000000000001524365506300264475ustar00rootroot00000000000000kubernetes-sigs-kind-49aeee6/images/kindnetd/scripts/third_party/gimme/LICENSE000066400000000000000000000021021524365506300274470ustar00rootroot00000000000000The MIT License (MIT) Copyright (c) 2015-2018 gimme contributors 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. kubernetes-sigs-kind-49aeee6/images/kindnetd/scripts/third_party/gimme/README.md000066400000000000000000000002171524365506300277260ustar00rootroot00000000000000# gimme This is an unmodified copy of [gimme], so we don't have to download it from the internet. [gimme]: https://github.com/travis-ci/gimmekubernetes-sigs-kind-49aeee6/images/kindnetd/scripts/third_party/gimme/gimme000077500000000000000000000662441524365506300275070ustar00rootroot00000000000000#!/usr/bin/env bash # vim:noexpandtab:ts=2:sw=2: # #+ Usage: $(basename $0) [flags] [go-version] [version-prefix] #+ - #+ Version: ${GIMME_VERSION} #+ Copyright: ${GIMME_COPYRIGHT} #+ License URL: ${GIMME_LICENSE_URL} #+ - #+ Install go! There are multiple types of installations available, with 'auto' being the default. #+ If either 'auto' or 'binary' is specified as GIMME_TYPE, gimme will first check for an existing #+ go installation. This behavior may be disabled by providing '-f/--force/force' as first positional #+ argument. #+ - #+ Option flags: #+ -h --help help - show this help text and exit #+ -V --version version - show the version only and exit #+ -f --force force - remove the existing go installation if present prior to install #+ -l --list list - list installed go versions and exit #+ -k --known known - list known go versions and exit #+ --force-known-update - when used with --known, ignores the cache and updates #+ -r --resolve resolve - resolve a version specifier to a version, show that and exit #+ - #+ Influential env vars: #+ - #+ GIMME_GO_VERSION - version to install (*REQUIRED*, may be given as first positional arg) #+ GIMME_VERSION_PREFIX - prefix for installed versions (default '${GIMME_VERSION_PREFIX}', #+ may be given as second positional arg) #+ GIMME_ARCH - arch to install (default '${GIMME_ARCH}') #+ GIMME_BINARY_OSX - darwin-specific binary suffix (default '${GIMME_BINARY_OSX}') #+ GIMME_ENV_PREFIX - prefix for env files (default '${GIMME_ENV_PREFIX}') #+ GIMME_GO_GIT_REMOTE - git remote for git-based install (default '${GIMME_GO_GIT_REMOTE}') #+ GIMME_OS - os to install (default '${GIMME_OS}') #+ GIMME_TMP - temp directory (default '${GIMME_TMP}') #+ GIMME_TYPE - install type to perform ('auto', 'binary', 'source', or 'git') #+ (default '${GIMME_TYPE}') #+ GIMME_INSTALL_RACE - install race directory after compile if non-empty. #+ If the install type is 'binary', this option is ignored. #+ GIMME_DEBUG - enable tracing if non-empty #+ GIMME_NO_ENV_ALIAS - disable creation of env 'alias' file when os and arch match host #+ GIMME_SILENT_ENV - omit the 'go version' line from env file #+ GIMME_CGO_ENABLED - enable build of cgo support #+ GIMME_CC_FOR_TARGET - cross compiler for cgo support #+ GIMME_DOWNLOAD_BASE - override base URL dir for download (default '${GIMME_DOWNLOAD_BASE}') #+ GIMME_LIST_KNOWN - override base URL for known go versions (default '${GIMME_LIST_KNOWN}') #+ GIMME_KNOWN_CACHE_MAX - seconds the cache for --known is valid for (default '${GIMME_KNOWN_CACHE_MAX}') #+ - # set -e shopt -s nullglob shopt -s dotglob shopt -s extglob set -o pipefail [[ ${GIMME_DEBUG} ]] && set -x readonly GIMME_VERSION="v1.5.4" readonly GIMME_COPYRIGHT="Copyright (c) 2015-2020 gimme contributors" readonly GIMME_LICENSE_URL="https://raw.githubusercontent.com/travis-ci/gimme/${GIMME_VERSION}/LICENSE" export GIMME_VERSION export GIMME_COPYRIGHT export GIMME_LICENSE_URL program_name="$(basename "$0")" # shellcheck disable=SC1117 warn() { printf >&2 "%s: %s\n" "${program_name}" "${*}"; } die() { warn "$@" exit 1 } # We don't want to go around hitting Google's servers with requests for # files named HEAD@{date}.tar so we only try binary/source downloads if # it looks like a plausible name to us. # We don't need to support 0. releases of Go. # We don't support 5 digit major-versions of Go (limit back-tracking in RE). # We don't support very long versions # (both to avoid annoying download server operators with attacks and # because regexp backtracking can be pathological). # Per _assert_version_given we do assume 2.0 not 2 ALLOWED_UPSTREAM_VERSION_RE='^[1-9][0-9]{0,3}(\.[0-9][0-9a-zA-Z_-]{0,9})+$' # # The main path which allowed these to leak upstream before has been closed # but a valid git repo tag or branch-name will still reach the point of # being _tried_ upstream. # _do_curl "url" "file" _do_curl() { mkdir -p "$(dirname "${2}")" if command -v curl >/dev/null; then curl -sSLf "${1}" -o "${2}" 2>/dev/null return fi if command -v wget >/dev/null; then wget -q "${1}" -O "${2}" 2>/dev/null return fi if command -v fetch >/dev/null; then fetch -q "${1}" -o "${2}" 2>/dev/null return fi echo >&2 'error: no curl, wget, or fetch found' exit 1 } # _sha256sum "file" _sha256sum() { if command -v sha256sum &>/dev/null; then sha256sum "$@" elif command -v gsha256sum &>/dev/null; then gsha256sum "$@" else shasum -a 256 "$@" fi } # sort versions, handling 1.10 after 1.9, not before 1.2 # FreeBSD sort has --version-sort, none of the others do # Looks like --general-numeric-sort is the safest; checked macOS 10.12.6, FreeBSD 10.3, Ubuntu Trusty if sort --version-sort /dev/null; then _version_sort() { sort --version-sort; } else _version_sort() { # If we go to four-digit minor or patch versions, then extend the padding here # (but in such a world, perhaps --version-sort will have become standard by then?) sed -E 's/\.([0-9](\.|$))/.00\1/g; s/\.([0-9][0-9](\.|$))/.0\1/g' | sort --general-numeric-sort | sed 's/\.00*/./g' } fi # _do_curls "file" "url" ["url"...] _do_curls() { f="${1}" shift if _sha256sum -c "${f}.sha256" &>/dev/null; then return 0 fi for url in "${@}"; do if _do_curl "${url}" "${f}"; then if _do_curl "${url}.sha256" "${f}.sha256"; then echo "$(cat "${f}.sha256") ${f}" >"${f}.sha256.tmp" mv "${f}.sha256.tmp" "${f}.sha256" if ! _sha256sum -c "${f}.sha256" &>/dev/null; then warn "sha256sum failed for '${f}'" warn 'continuing to next candidate URL' continue fi fi return fi done rm -f "${f}" return 1 } # _binary "version" "file.tar.gz" "arch" _binary() { local version=${1} local file=${2} local arch=${3} urls=( "${GIMME_DOWNLOAD_BASE}/go${version}.${GIMME_OS}-${arch}.tar.gz" ) if [[ "${GIMME_OS}" == 'darwin' && "${GIMME_BINARY_OSX}" ]]; then urls=( "${GIMME_DOWNLOAD_BASE}/go${version}.${GIMME_OS}-${arch}-${GIMME_BINARY_OSX}.tar.gz" "${urls[@]}" ) fi if [ "${arch}" = 'arm' ]; then # attempt "armv6l" vs just "arm" first (since that's what's officially published) urls=( "${GIMME_DOWNLOAD_BASE}/go${version}.${GIMME_OS}-${arch}v6l.tar.gz" # go1.6beta2 & go1.6rc1 "${GIMME_DOWNLOAD_BASE}/go${version}.${GIMME_OS}-${arch}6.tar.gz" # go1.6beta1 "${urls[@]}" ) fi if [ "${GIMME_OS}" = 'windows' ]; then urls=( "${GIMME_DOWNLOAD_BASE}/go${version}.${GIMME_OS}-${arch}.zip" ) fi _do_curls "${file}" "${urls[@]}" } # _source "version" "file.src.tar.gz" _source() { urls=( "${GIMME_DOWNLOAD_BASE}/go${1}.src.tar.gz" "https://github.com/golang/go/archive/go${1}.tar.gz" ) _do_curls "${2}" "${urls[@]}" } # _fetch "dir" _fetch() { mkdir -p "$(dirname "${1}")" if [[ -d "${1}/.git" ]]; then ( cd "${1}" git remote set-url origin "${GIMME_GO_GIT_REMOTE}" git fetch -q --all && git fetch -q --tags ) return fi git clone -q "${GIMME_GO_GIT_REMOTE}" "${1}" } # _checkout "version" "dir" # NB: might emit a "renamed version" on stdout _checkout() { local spec="${1:?}" godir="${2:?}" # We are called twice, once during validation that a version was given and # later during build. We don't want to fetch twice, so we are fetching # during the validation only, in the caller. if [[ "${spec}" =~ ^[0-9a-f]{6,}$ ]]; then # We always treat this as a commit sha, whether instead of doing # branch tests etc. It looks like a commit sha and the Go maintainers # aren't daft enough to use pure hex for a tag or branch. git -C "$godir" reset -q --hard "${spec}" || return 1 return 0 fi # If spec looks like HEAD^{something} or HEAD^^^ then trying # origin/$spec would succeed but we'd write junk to the filesystem, # propagating annoying characters out. local retval probe_named disallow rev probe_named=1 disallow='[@^~:{}]' if [[ "${spec}" =~ $disallow ]]; then probe_named=0 [[ "${spec}" != "@" ]] || spec="HEAD" fi try_spec() { git -C "${godir}" reset -q --hard "$@" -- 2>/dev/null; } retval=1 if ((probe_named)); then retval=0 try_spec "origin/${spec}" || try_spec "origin/go${spec}" || { [[ "${spec}" == "tip" ]] && try_spec origin/master; } || try_spec "refs/tags/${spec}" || try_spec "refs/tags/go${spec}" || retval=1 fi if ((retval)); then retval=0 # We're about to reset anyway, if we succeed, so we should reset to a # known state before parsing what might be relative specs try_spec origin/master && rev="$(git -C "${godir}" rev-parse --verify -q "${spec}^{object}")" && try_spec "${rev}" && git -C "${godir}" rev-parse --verify -q --short=12 "${rev}" || retval=1 # that rev-parse prints to stdout, so we can affect the version seen fi unset -f try_spec return $retval } # _extract "file.tar.gz" "dir" _extract() { mkdir -p "${2}" if [[ "${1}" == *.tar.gz ]]; then tar -xf "${1}" -C "${2}" --strip-components 1 else unzip -q "${1}" -d "${2}" mv "${2}"/go/* "${2}" rmdir "${2}"/go fi } # _setup_bootstrap _setup_bootstrap() { local versions=("1.18" "1.17" "1.16" "1.15" "1.14" "1.13" "1.12" "1.11" "1.10" "1.9" "1.8" "1.7" "1.6" "1.5" "1.4") # try existing for v in "${versions[@]}"; do for candidate in "${GIMME_ENV_PREFIX}/go${v}"*".env"; do if [ -s "${candidate}" ]; then # shellcheck source=/dev/null GOROOT_BOOTSTRAP="$(source "${candidate}" 2>/dev/null && go env GOROOT)" export GOROOT_BOOTSTRAP return 0 fi done done # try binary for v in "${versions[@]}"; do if [ -n "$(_try_binary "${v}" "${GIMME_HOSTARCH}")" ]; then export GOROOT_BOOTSTRAP="${GIMME_VERSION_PREFIX}/go${v}.${GIMME_OS}.${GIMME_HOSTARCH}" return 0 fi done echo >&2 "Unable to setup go bootstrap from existing or binary" return 1 } # _compile "dir" _compile() { ( if grep -q GOROOT_BOOTSTRAP "${1}/src/make.bash" &>/dev/null; then _setup_bootstrap || return 1 fi cd "${1}" if [[ -d .git ]]; then git clean -dfx -q fi cd src export GOOS="${GIMME_OS}" GOARCH="${GIMME_ARCH}" export CGO_ENABLED="${GIMME_CGO_ENABLED}" export CC_FOR_TARGET="${GIMME_CC_FOR_TARGET}" local make_log="${1}/make.${GOOS}.${GOARCH}.log" if [[ "${GIMME_DEBUG}" -ge "2" ]]; then ./make.bash -v 2>&1 | tee "${make_log}" 1>&2 || return 1 else ./make.bash &>"${make_log}" || return 1 fi ) } _try_install_race() { if [[ ! "${GIMME_INSTALL_RACE}" ]]; then return 0 fi "${1}/bin/go" install -race std } _can_compile() { cat >"${GIMME_TMP}/test.go" <<'EOF' package main import "os" func main() { os.Exit(0) } EOF "${1}/bin/go" run "${GIMME_TMP}/test.go" } # _env "dir" _env() { [[ -d "${1}/bin" && -x "${1}/bin/go" ]] || return 1 # if we try to run a Darwin binary on Linux, we need to fail so 'auto' can fallback to cross-compiling from source # automatically GOROOT="${1}" GOFLAGS="" "${1}/bin/go" version &>/dev/null || return 1 # https://twitter.com/davecheney/status/431581286918934528 # we have to GOROOT sometimes because we use official release binaries in unofficial locations :( # # Issue 87 leads to: # No, we should _always_ set GOROOT when using official release binaries, and sanest to just always set it. # The "avoid setting it" is _only_ for people using official releases in official locations. # Tools like `gimme` are the reason that GOROOT-in-env exists. echo if [[ "$(GOROOT="${1}" "${1}/bin/go" env GOHOSTOS)" == "${GIMME_OS}" ]]; then echo 'unset GOOS;' else echo 'export GOOS="'"${GIMME_OS}"'";' fi if [[ "$(GOROOT="${1}" "${1}/bin/go" env GOHOSTARCH)" == "${GIMME_ARCH}" ]]; then echo 'unset GOARCH;' else echo 'export GOARCH="'"${GIMME_ARCH}"'";' fi echo "export GOROOT='${1}';" # shellcheck disable=SC2016 echo 'export PATH="'"${1}/bin"':${PATH}";' if [[ -z "${GIMME_SILENT_ENV}" ]]; then echo 'go version >&2;' fi echo } # _env_alias "dir" "env-file" _env_alias() { if [[ "${GIMME_NO_ENV_ALIAS}" ]]; then echo "${2}" return fi if [[ "$(GOROOT="${1}" "${1}/bin/go" env GOHOSTOS)" == "${GIMME_OS}" && "$(GOROOT="${1}" "${1}/bin/go" env GOHOSTARCH)" == "${GIMME_ARCH}" ]]; then # GIMME_GO_VERSION might be a branch, which can contain '/' local dest="${GIMME_ENV_PREFIX}/go${GIMME_GO_VERSION//\//__}.env" cp "${2}" "${dest}" ln -sf "${dest}" "${GIMME_ENV_PREFIX}/latest.env" echo "${dest}" else echo "${2}" fi } _try_existing() { case "${1}" in binary) local existing_ver="${GIMME_VERSION_PREFIX}/go${GIMME_GO_VERSION}.${GIMME_OS}.${GIMME_ARCH}" local existing_env="${GIMME_ENV_PREFIX}/go${GIMME_GO_VERSION}.${GIMME_OS}.${GIMME_ARCH}.env" ;; source) local existing_ver="${GIMME_VERSION_PREFIX}/go${GIMME_GO_VERSION}.src" local existing_env="${GIMME_ENV_PREFIX}/go${GIMME_GO_VERSION}.src.env" ;; *) _try_existing binary || _try_existing source return $? ;; esac if [[ -x "${existing_ver}/bin/go" && -s "${existing_env}" ]]; then # newer envs have existing semi-colon at end of line, because newer gimme # puts them there; envs created before that change lack those semi-colons # and should gain them, to make it easier for people using eval without # double-quoting the command substition. sed -e 's/\([^;]\)$/\1;/' <"${existing_env}" # gimme is the corner-case where GOROOT _should_ be overriden, since if the # ancilliary tooling's system-internal DefaultGoroot exists, and GOROOT is # unset, then it will be used and the wrong golang will be picked up. # Lots of old installs won't have GOROOT; munge it from $PATH if grep -qs '^unset GOROOT' -- "${existing_env}"; then sed -n -e 's/^export PATH="\(.*\)\/bin:.*$/export GOROOT='"'"'\1'"'"';/p' <"${existing_env}" echo fi # Export the same variables whether building new or using existing echo "export GIMME_ENV='${existing_env}';" return fi return 1 } # _try_binary "version" "arch" _try_binary() { local version=${1} local arch=${2} local bin_tgz="${GIMME_TMP}/go${version}.${GIMME_OS}.${arch}.tar.gz" local bin_dir="${GIMME_VERSION_PREFIX}/go${version}.${GIMME_OS}.${arch}" local bin_env="${GIMME_ENV_PREFIX}/go${version}.${GIMME_OS}.${arch}.env" [[ "${version}" =~ ${ALLOWED_UPSTREAM_VERSION_RE} ]] || return 1 if [ "${GIMME_OS}" = 'windows' ]; then bin_tgz=${bin_tgz%.tar.gz}.zip fi _binary "${version}" "${bin_tgz}" "${arch}" || return 1 _extract "${bin_tgz}" "${bin_dir}" || return 1 _env "${bin_dir}" | tee "${bin_env}" || return 1 echo "export GIMME_ENV=\"$(_env_alias "${bin_dir}" "${bin_env}")\"" } _try_source() { local src_tgz="${GIMME_TMP}/go${GIMME_GO_VERSION}.src.tar.gz" local src_dir="${GIMME_VERSION_PREFIX}/go${GIMME_GO_VERSION}.src" local src_env="${GIMME_ENV_PREFIX}/go${GIMME_GO_VERSION}.src.env" [[ "${GIMME_GO_VERSION}" =~ ${ALLOWED_UPSTREAM_VERSION_RE} ]] || return 1 _source "${GIMME_GO_VERSION}" "${src_tgz}" || return 1 _extract "${src_tgz}" "${src_dir}" || return 1 _compile "${src_dir}" || return 1 _try_install_race "${src_dir}" || return 1 _env "${src_dir}" | tee "${src_env}" || return 1 echo "export GIMME_ENV=\"$(_env_alias "${src_dir}" "${src_env}")\"" } # We do _not_ try to use any version caching with _try_existing(), but instead # build afresh each time. We don't want to deal with someone moving the repo # to other-version, doing an install, then resetting it back to # last-version-we-saw and thus introducing conflicts. # # If you want to re-use a built-at-spec version, then avoid moving the repo # and source the generated .env manually. # Note that the env will just refer to the 'go' directory, so it's not safe # to reuse anyway. _try_git() { local git_dir="${GIMME_VERSION_PREFIX}/go" local git_env="${GIMME_ENV_PREFIX}/go.git.${GIMME_OS}.${GIMME_ARCH}.env" local resolved_sha # Any tags should have been resolved when we asserted that we were # given a version, so no need to handle that here. _checkout "${GIMME_GO_VERSION}" "${git_dir}" >/dev/null || return 1 _compile "${git_dir}" || return 1 _try_install_race "${git_dir}" || return 1 _env "${git_dir}" | tee "${git_env}" || return 1 echo "export GIMME_ENV=\"$(_env_alias "${git_dir}" "${git_env}")\"" } _wipe_version() { local env_file="${GIMME_ENV_PREFIX}/go${1}.${GIMME_OS}.${GIMME_ARCH}.env" if [[ -s "${env_file}" ]]; then rm -rf "$(awk -F\" '/GOROOT/ { print $2 }' "${env_file}")" rm -f "${env_file}" fi } _list_versions() { if [ ! -d "${GIMME_VERSION_PREFIX}" ]; then return 0 fi local current_version current_version="$(go env GOROOT 2>/dev/null)" current_version="${current_version##*/go}" current_version="${current_version%%.${GIMME_OS}.*}" # 1.1 1.10 1.2 is bad; zsh has `setopt numeric_glob_sort` but bash # doesn't appear to have anything like that. for d in "${GIMME_VERSION_PREFIX}/go"*".${GIMME_OS}."*; do local cleaned="${d##*/go}" cleaned="${cleaned%%.${GIMME_OS}.*}" echo "${cleaned}" done | _version_sort | while read -r cleaned; do echo -en "${cleaned}" if [[ "${cleaned}" == "${current_version}" ]]; then echo -en ' <= current' >&2 fi echo done } _update_remote_known_list_if_needed() { # shellcheck disable=SC1117 local exp="go([[:alnum:]\.]*)\.src.*" # :alnum: catches beta versions too local list="${GIMME_VERSION_PREFIX}/known-versions.txt" local dlfile="${GIMME_TMP}/known-dl" if [[ -e "${list}" ]] && ! ((force_known_update)) && ! _file_older_than_secs "${list}" "${GIMME_KNOWN_CACHE_MAX}"; then echo "${list}" return 0 fi [[ -d "${GIMME_VERSION_PREFIX:?}" ]] || mkdir -p -- "${GIMME_VERSION_PREFIX}" _do_curl "${GIMME_LIST_KNOWN}" "${dlfile}" while read -r line; do if [[ "${line}" =~ ${exp} ]]; then echo "${BASH_REMATCH[1]}" fi done <"${dlfile}" | _version_sort | uniq >"${list}.new" rm -f "${list}" &>/dev/null mv "${list}.new" "${list}" rm -f "${dlfile}" echo "${list}" return 0 } _list_known() { local knownfile knownfile="$(_update_remote_known_list_if_needed)" ( _list_versions 2>/dev/null cat -- "${knownfile}" ) | grep . | _version_sort | uniq } # For the "invoked on commandline" case, we want to always pass unknown # strings through, so that we can be a uniqueness filter, but for unknown # names we want to exit with a value other than 1, so we document that # we'll exit 2. For use by other functions, 2 is as good as 1. _resolve_version() { case "${1}" in stable) _get_curr_stable return 0 ;; oldstable) _get_old_stable return 0 ;; tip) echo "tip" return 0 ;; *.x) true ;; *) echo "${1}" local GIMME_GO_VERSION="$1" local ASSERT_ABORT='return' if _assert_version_given 2>/dev/null; then return 0 fi warn "version specifier '${1}' unknown" return 2 ;; esac # We have a .x suffix local base="${1%.x}" local ver last='' known known="$(_update_remote_known_list_if_needed)" # will be version-sorted if [[ ! "${base}" =~ ^[0-9.]+$ ]]; then warn "resolve pattern '${base}.x' invalid for .x finding" return 2 fi # The `.x` is optional; "1.10" matches "1.10.x" local search="^${base//./\\.}(\\.[0-9.]+)?\$" # avoid regexp attacks while read -r ver; do [[ "${ver}" =~ $search ]] || continue last="${ver}" done <"$known" if [[ -n "${last}" ]]; then echo "${last}" return 0 fi echo "${1}" warn "given '${1}' but no release for '${base}' found" return 2 } _realpath() { # shellcheck disable=SC2005 [ -d "$1" ] && echo "$(cd "$1" && pwd)" || echo "$(cd "$(dirname "$1")" && pwd)/$(basename "$1")" } _get_curr_stable() { local stable="${GIMME_VERSION_PREFIX}/stable" if _file_older_than_secs "${stable}" 86400; then _update_stable "${stable}" fi cat "${stable}" } _get_old_stable() { local oldstable="${GIMME_VERSION_PREFIX}/oldstable" if _file_older_than_secs "${oldstable}" 86400; then _update_oldstable "${oldstable}" fi cat "${oldstable}" } _update_stable() { local stable="${1}" local url="https://golang.org/VERSION?m=text" _do_curl "${url}" "${stable}" sed -i.old -e 's/^go\(.*\)/\1/' "${stable}" rm -f "${stable}.old" } _update_oldstable() { local oldstable="${1}" local oldstable_x oldstable_x=$(_get_curr_stable | awk -F. '{ $2--; print $1 "." $2 "." "x" }') _resolve_version "${oldstable_x}" >"${oldstable}" } _last_mod_timestamp() { local filename="${1}" case "${GIMME_HOSTOS}" in darwin | *bsd) stat -f %m "${filename}" ;; linux) stat -c %Y "${filename}" ;; esac } _file_older_than_secs() { local file="${1}" local age_secs="${2}" local ts # if the file does not exist, we return true, as the cache needs updating ts="$(_last_mod_timestamp "${file}" 2>/dev/null)" || return 0 ((($(date +%s) - ts) > age_secs)) } _assert_version_given() { # By the time we're called, aliases such as "stable" must have been resolved # but we could be a reference in git. # # Versions can include suffices such as in "1.8beta2", so our assumption is that # there will always be a minor present; the first public release was "1.0" so # we assume "2.0" not "2". if [[ -z "${GIMME_GO_VERSION}" ]]; then echo >&2 'error: no GIMME_GO_VERSION supplied' echo >&2 " ex: GIMME_GO_VERSION=1.4.1 ${0} ${*}" echo >&2 " ex: ${0} 1.4.1 ${*}" ${ASSERT_ABORT:-exit} 1 fi # Note: _resolve_version calls back to us (_assert_version_given), but # only for cases where the version does not end with .x, so this should # be safe. # This should be untangled. PRs accepted, good starter project. if [[ "${GIMME_GO_VERSION}" == *.x ]]; then GIMME_GO_VERSION="$(_resolve_version "${GIMME_GO_VERSION}")" || ${ASSERT_ABORT:-exit} 1 fi if [[ "${GIMME_GO_VERSION}" == +([[:digit:]]).+([[:digit:]])* ]]; then return 0 fi # Here we resolve symbolic references. If we don't, then we get some # random git tag name being accepted as valid and then we try to # curl garbage from upstream. if [[ "${GIMME_TYPE}" == "auto" || "${GIMME_TYPE}" == "git" ]]; then local git_dir="${GIMME_VERSION_PREFIX}/go" local resolved_sha _fetch "${git_dir}" if resolved_sha="$(_checkout "${GIMME_GO_VERSION}" "${git_dir}")"; then if [[ -n "${resolved_sha}" ]]; then # Break our normal silence, this one really needs to be seen on stderr # always; auditability and knowing what version of Go you got wins. warn "resolved '${GIMME_GO_VERSION}' to '${resolved_sha}'" GIMME_GO_VERSION="${resolved_sha}" fi return 0 fi fi echo >&2 'error: GIMME_GO_VERSION not recognized as valid' echo >&2 " got: ${GIMME_GO_VERSION}" ${ASSERT_ABORT:-exit} 1 } _exclude_from_backups() { # Please avoid anything which requires elevated privileges or is obnoxious # enough to offend the invoker case "${GIMME_HOSTOS}" in darwin) # Darwin: Time Machine is "standard", we can add others. The default # mechanism is sticky, as an attribute on the dir, requires no # privileges, is idempotent (and doesn't support -- to end flags). tmutil addexclusion "$@" ;; esac } _versint() { IFS=" " read -r -a args <<<"${1//[^0-9]/ }" printf '1%03d%03d%03d%03d' "${args[@]}" } _to_goarch() { case "${1}" in aarch64) echo "arm64" ;; *) echo "${1}" ;; esac } : "${GIMME_OS:=$(uname -s | tr '[:upper:]' '[:lower:]')}" : "${GIMME_HOSTOS:=$(uname -s | tr '[:upper:]' '[:lower:]')}" : "${GIMME_ARCH:=$(_to_goarch "$(uname -m)")}" : "${GIMME_HOSTARCH:=$(_to_goarch "$(uname -m)")}" : "${GIMME_ENV_PREFIX:=${HOME}/.gimme/envs}" : "${GIMME_VERSION_PREFIX:=${HOME}/.gimme/versions}" : "${GIMME_TMP:=${TMPDIR:-/tmp}/gimme}" : "${GIMME_GO_GIT_REMOTE:=https://github.com/golang/go.git}" : "${GIMME_TYPE:=auto}" # 'auto', 'binary', 'source', or 'git' : "${GIMME_BINARY_OSX:=osx10.8}" : "${GIMME_DOWNLOAD_BASE:=https://dl.google.com/go}" : "${GIMME_LIST_KNOWN:=https://golang.org/dl}" : "${GIMME_KNOWN_CACHE_MAX:=10800}" # The version prefix must be an absolute path case "${GIMME_VERSION_PREFIX}" in /*) true ;; *) echo >&2 " Fixing GIMME_VERSION_PREFIX from relative: $GIMME_VERSION_PREFIX" GIMME_VERSION_PREFIX="$(pwd)/${GIMME_VERSION_PREFIX}" echo >&2 " to: $GIMME_VERSION_PREFIX" ;; esac case "${GIMME_OS}" in mingw* | msys_nt*) # Minimalist GNU for Windows GIMME_OS='windows' if [ "${GIMME_ARCH}" = 'i686' ]; then GIMME_ARCH="386" else GIMME_ARCH="amd64" fi ;; esac force_install=0 force_known_update=0 while [[ $# -gt 0 ]]; do case "${1}" in -h | --help | help | wat) _old_ifs="$IFS" IFS=';' awk '/^#\+ / { sub(/^#\+ /, "", $0) ; sub(/-$/, "", $0) ; print $0 }' "$0" | while read -r line; do eval "echo \"$line\"" done IFS="$_old_ifs" exit 0 ;; -V | --version | version) echo "${GIMME_VERSION}" exit 0 ;; -r | --resolve | resolve) # The normal mkdir of versions is below; we don't want to move it up # to where we create files just if asked our version; thus # _resolve_version has to mkdir the versions dir itself. if [[ $# -ge 2 ]]; then _resolve_version "${2}" elif [[ -n "${GIMME_GO_VERSION:-}" ]]; then _resolve_version "${GIMME_GO_VERSION}" else die "resolve must be given a version to resolve" fi exit $? ;; -l | --list | list) _list_versions exit 0 ;; -k | --known | known) _list_known exit 0 ;; -f | --force | force) force_install=1 ;; --force-known-update | force-known-update) force_known_update=1 ;; -i | install) true # ignore a dummy argument ;; *) break ;; esac shift done if [[ -n "${1}" ]]; then GIMME_GO_VERSION="${1}" fi if [[ -n "${2}" ]]; then GIMME_VERSION_PREFIX="${2}" fi case "${GIMME_ARCH}" in x86_64) GIMME_ARCH=amd64 ;; x86) GIMME_ARCH=386 ;; arm64) if [[ "${GIMME_GO_VERSION}" != master && "$(_versint "${GIMME_GO_VERSION}")" < "$(_versint 1.5)" ]]; then echo >&2 "error: ${GIMME_ARCH} is not supported by this go version" echo >&2 "try go1.5 or newer" exit 1 fi if [[ "${GIMME_HOSTOS}" == "linux" && "${GIMME_HOSTARCH}" != "${GIMME_ARCH}" ]]; then : "${GIMME_CC_FOR_TARGET:="aarch64-linux-gnu-gcc"}" fi ;; arm*) GIMME_ARCH=arm ;; esac case "${GIMME_HOSTARCH}" in x86_64) GIMME_HOSTARCH=amd64 ;; x86) GIMME_HOSTARCH=386 ;; arm64) ;; arm*) GIMME_HOSTARCH=arm ;; esac case "${GIMME_GO_VERSION}" in stable) GIMME_GO_VERSION=$(_get_curr_stable) ;; oldstable) GIMME_GO_VERSION=$(_get_old_stable) ;; esac _assert_version_given "$@" ((force_install)) && _wipe_version "${GIMME_GO_VERSION}" unset GOARCH unset GOBIN unset GOOS unset GOPATH unset GOROOT unset CGO_ENABLED unset CC_FOR_TARGET # GO111MODULE breaks build of Go itself unset GO111MODULE mkdir -p "${GIMME_VERSION_PREFIX}" "${GIMME_ENV_PREFIX}" # The envs dir stays small and provides a record of what had been installed # whereas the versions dir grows by hundreds of MB per version and is not # intended to support local modifications (as that subverts the point of gimme) # _and_ is a cache, so we're unilaterally declaring that the contents of # the versions dir should be excluded from system backups. _exclude_from_backups "${GIMME_VERSION_PREFIX}" GIMME_VERSION_PREFIX="$(_realpath "${GIMME_VERSION_PREFIX}")" GIMME_ENV_PREFIX="$(_realpath "${GIMME_ENV_PREFIX}")" if ! case "${GIMME_TYPE}" in binary) _try_existing binary || _try_binary "${GIMME_GO_VERSION}" "${GIMME_ARCH}" ;; source) _try_existing source || _try_source || _try_git ;; git) _try_git ;; auto) _try_existing || _try_binary "${GIMME_GO_VERSION}" "${GIMME_ARCH}" || _try_source || _try_git ;; *) echo >&2 "I don't know how to '${GIMME_TYPE}'." echo >&2 " Try 'auto', 'binary', 'source', or 'git'." exit 1 ;; esac; then echo >&2 "I don't have any idea what to do with '${GIMME_GO_VERSION}'." echo >&2 " (using download type '${GIMME_TYPE}')" exit 1 fi kubernetes-sigs-kind-49aeee6/images/local-path-helper/000077500000000000000000000000001524365506300230325ustar00rootroot00000000000000kubernetes-sigs-kind-49aeee6/images/local-path-helper/Dockerfile000066400000000000000000000035531524365506300250320ustar00rootroot00000000000000# Copyright 2022 The Kubernetes Authors. # # 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 image is contains the binaries needed for the local-path-provisioner # helper pod. Currently that means: sh, rm, mkdir ARG BASE="debian:trixie-slim" FROM ${BASE} AS build # NOTE: copyrights.tar.gz is a quirk of Kubernetes's debian-base image # We extract these here so we can grab the relevant files are easily # staged for copying into our final image. RUN [ ! -f /usr/share/copyrights.tar.gz ] || tar -C / -xzvf /usr/share/copyrights.tar.gz # we need bash for stage-binary-and-deps.sh RUN apt update && apt install -y --no-install-recommends bash # replace sh with bash RUN ln -sf /usr/bin/bash /usr/bin/sh # copy in script for staging distro provided binary to distroless COPY --chmod=0755 stage-binary-and-deps.sh /usr/local/bin/ # local-path-provisioner needs these things for the helper pod # TODO: we could probably coerce local-path-provisioner to use a small binary # for these instead ARG STAGE_DIR="/opt/stage" RUN mkdir -p "${STAGE_DIR}" && \ stage-binary-and-deps.sh sh "${STAGE_DIR}" && \ stage-binary-and-deps.sh rm "${STAGE_DIR}" && \ stage-binary-and-deps.sh mkdir "${STAGE_DIR}" && \ find "${STAGE_DIR}" # copy staged binary + deps + copyright into distroless FROM "gcr.io/distroless/static-debian13" ARG STAGE_DIR="/opt/stage" COPY --from=build "${STAGE_DIR}/" / kubernetes-sigs-kind-49aeee6/images/local-path-helper/Makefile000066400000000000000000000011631524365506300244730ustar00rootroot00000000000000# Copyright 2022 The Kubernetes Authors. # # 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. include $(CURDIR)/../Makefile.common.inkubernetes-sigs-kind-49aeee6/images/local-path-helper/README.md000066400000000000000000000003551524365506300243140ustar00rootroot00000000000000# local-path-helper This image is the image used for the https://github.com/rancher/local-path-provisioner helper pod. ## Building You can `make quick` in this directory to build a test image. To push an actual image use `make push`.kubernetes-sigs-kind-49aeee6/images/local-path-helper/cloudbuild.yaml000066400000000000000000000004211524365506300260410ustar00rootroot00000000000000# See https://cloud.google.com/cloud-build/docs/build-config options: substitution_option: ALLOW_LOOSE machineType: E2_HIGHCPU_8 steps: - name: gcr.io/k8s-staging-test-infra/gcb-docker-gcloud:latest entrypoint: make args: ['-C', 'images/local-path-helper', 'push'] kubernetes-sigs-kind-49aeee6/images/local-path-helper/stage-binary-and-deps.sh000077500000000000000000000072101524365506300274470ustar00rootroot00000000000000#!/bin/bash # Copyright 2021 The Kubernetes Authors. # # 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. # USAGE: stage-binary-and-deps.sh haproxy /opt/stage # # Stages $1 and it's dependencies + their copyright files to $2 # # This is intended to be used in a multi-stage docker build with a distroless/base # or distroless/cc image. set -o errexit set -o nounset set -o pipefail # file_to_package identifies the debian package that provided the file $1 file_to_package() { # `dpkg-query --search $file-pattern` outputs lines with the format: "$package: $file-path" # where $file-path belongs to $package # https://manpages.debian.org/jessie/dpkg/dpkg-query.1.en.html (dpkg-query --search "$(realpath "${1}")") | cut -d':' -f1 } # package_to_copyright gives the path to the copyright file for the package $1 package_to_copyright() { echo "/usr/share/doc/${1}/copyright" } # stage_file stages the filepath $1 to $2, following symlinks # and staging copyrights stage_file() { # /lib is a symlink to /usr/lib in debian 12, means we just stick to # /usr/lib for all libraries to avoid separating symlinks with the actual binaries # ditto /lib64 from="${1}" if [[ $from = /lib*/* ]]; then from="/usr$from" fi cp -a --parents "${from}" "${2}" # recursively follow symlinks if [[ -L "${from}" ]]; then stage_file "$(cd "$(dirname "${from}")"; realpath -s "$(readlink "${from}")")" "${2}" fi # get the package so we can stage package metadata as well package="$(file_to_package "${from}")" # files like /usr/lib/x86_64-linux-gnu/libc.so.6 will return no package if [[ "$package" != "" ]]; then # stage the copyright for the file cp -a --parents "$(package_to_copyright "${package}")" "${2}" # stage the package status mimicking bazel # https://github.com/bazelbuild/rules_docker/commit/f5432b813e0a11491cf2bf83ff1a923706b36420 # instead of parsing the control file, we can just get the actual package status with dpkg dpkg -s "${package}" > "${2}/var/lib/dpkg/status.d/${package}" fi } # binary_to_libraries identifies the library files needed by the binary $1 with ldd binary_to_libraries() { # see: https://man7.org/linux/man-pages/man1/ldd.1.html ldd "${1}" \ `# strip the leading '${name} => ' if any so only '/lib-foo.so (0xf00)' remains` \ | sed -E 's#.* => /#/#' \ `# we want only the path remaining, not the (0x${LOCATION})` \ | awk '{print $1}' \ `# linux-vdso.so.1 is a special virtual shared object from the kernel` \ `# see: http://man7.org/linux/man-pages/man7/vdso.7.html` \ | grep -v 'linux-vdso.so.1' } # main script logic main(){ local BINARY=$1 local STAGE_DIR="${2}/" # locate the path to the binary local binary_path binary_path="$(which "${BINARY}")" # ensure package metadata dir mkdir -p "${STAGE_DIR}"/var/lib/dpkg/status.d/ # stage the binary itself stage_file "${binary_path}" "${STAGE_DIR}" # stage the dependencies of the binary while IFS= read -r c_dep; do stage_file "${c_dep}" "${STAGE_DIR}" done < <(binary_to_libraries "${binary_path}") } main "$@" kubernetes-sigs-kind-49aeee6/images/local-path-provisioner/000077500000000000000000000000001524365506300241325ustar00rootroot00000000000000kubernetes-sigs-kind-49aeee6/images/local-path-provisioner/Dockerfile000066400000000000000000000032541524365506300261300ustar00rootroot00000000000000# Copyright 2022 The Kubernetes Authors. # # 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. # NOTE the actual go version will be overridden FROM --platform=$BUILDPLATFORM docker.io/library/golang:latest COPY --chmod=0755 scripts/third_party/gimme/gimme /usr/local/bin/ RUN git clone --filter=tree:0 https://github.com/rancher/local-path-provisioner ARG VERSION # set by makefile to .go-version # TODO: scripts/build builds for multiple platforms, so we waste a little time here ARG TARGETARCH GO_VERSION RUN eval "$(gimme "${GO_VERSION}")" \ && export GOTOOLCHAIN="go${GO_VERSION}" \ && cd local-path-provisioner \ && git fetch && git checkout "${VERSION}" \ && GOARCH=$TARGETARCH scripts/build \ && mv bin/local-path-provisioner-$TARGETARCH /usr/local/bin/local-path-provisioner \ && GOBIN=/usr/local/bin go install github.com/google/go-licenses@latest \ && GOARCH=$TARGETARCH go-licenses save --save_path=/_LICENSES . FROM gcr.io/distroless/static-debian13 COPY --from=0 /usr/local/bin/local-path-provisioner /usr/local/bin/local-path-provisioner COPY --from=0 /_LICENSES/* /LICENSES/ COPY --chmod=0644 files/LICENSES/* /LICENSES/* ENTRYPOINT /usr/local/bin/local-path-provisioner kubernetes-sigs-kind-49aeee6/images/local-path-provisioner/Makefile000066400000000000000000000012611524365506300255720ustar00rootroot00000000000000# Copyright 2022 The Kubernetes Authors. # # 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. VERSION=v0.0.34 EXTRA_BUILD_OPT=--build-arg=VERSION=$(VERSION) include $(CURDIR)/../Makefile.common.inkubernetes-sigs-kind-49aeee6/images/local-path-provisioner/README.md000066400000000000000000000006251524365506300254140ustar00rootroot00000000000000# local-path-provisioner This image packages https://github.com/rancher/local-path-provisioner to meet our requirements. - Not based on alpine (see: https://github.com/kubernetes/kubernetes/issues/109406#issuecomment-1103479928) - Control over building with current patched go version ## Building You can `make quick` in this directory to build a test image. To push an actual image use `make push`. kubernetes-sigs-kind-49aeee6/images/local-path-provisioner/cloudbuild.yaml000066400000000000000000000004261524365506300271460ustar00rootroot00000000000000# See https://cloud.google.com/cloud-build/docs/build-config options: substitution_option: ALLOW_LOOSE machineType: E2_HIGHCPU_8 steps: - name: gcr.io/k8s-staging-test-infra/gcb-docker-gcloud:latest entrypoint: make args: ['-C', 'images/local-path-provisioner', 'push'] kubernetes-sigs-kind-49aeee6/images/local-path-provisioner/files/000077500000000000000000000000001524365506300252345ustar00rootroot00000000000000kubernetes-sigs-kind-49aeee6/images/local-path-provisioner/files/LICENSES/000077500000000000000000000000001524365506300264415ustar00rootroot00000000000000kubernetes-sigs-kind-49aeee6/images/local-path-provisioner/files/LICENSES/README.txt000066400000000000000000000002641524365506300301410ustar00rootroot00000000000000This directory contains license files and notices from binaries built for this image and the dependencies of those binaries, as collected by https://github.com/google/go-licenses. kubernetes-sigs-kind-49aeee6/images/local-path-provisioner/scripts/000077500000000000000000000000001524365506300256215ustar00rootroot00000000000000kubernetes-sigs-kind-49aeee6/images/local-path-provisioner/scripts/third_party/000077500000000000000000000000001524365506300301525ustar00rootroot00000000000000kubernetes-sigs-kind-49aeee6/images/local-path-provisioner/scripts/third_party/gimme/000077500000000000000000000000001524365506300312505ustar00rootroot00000000000000kubernetes-sigs-kind-49aeee6/images/local-path-provisioner/scripts/third_party/gimme/LICENSE000066400000000000000000000021021524365506300322500ustar00rootroot00000000000000The MIT License (MIT) Copyright (c) 2015-2018 gimme contributors 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. kubernetes-sigs-kind-49aeee6/images/local-path-provisioner/scripts/third_party/gimme/README.md000066400000000000000000000002171524365506300325270ustar00rootroot00000000000000# gimme This is an unmodified copy of [gimme], so we don't have to download it from the internet. [gimme]: https://github.com/travis-ci/gimmekubernetes-sigs-kind-49aeee6/images/local-path-provisioner/scripts/third_party/gimme/gimme000077500000000000000000000662441524365506300323100ustar00rootroot00000000000000#!/usr/bin/env bash # vim:noexpandtab:ts=2:sw=2: # #+ Usage: $(basename $0) [flags] [go-version] [version-prefix] #+ - #+ Version: ${GIMME_VERSION} #+ Copyright: ${GIMME_COPYRIGHT} #+ License URL: ${GIMME_LICENSE_URL} #+ - #+ Install go! There are multiple types of installations available, with 'auto' being the default. #+ If either 'auto' or 'binary' is specified as GIMME_TYPE, gimme will first check for an existing #+ go installation. This behavior may be disabled by providing '-f/--force/force' as first positional #+ argument. #+ - #+ Option flags: #+ -h --help help - show this help text and exit #+ -V --version version - show the version only and exit #+ -f --force force - remove the existing go installation if present prior to install #+ -l --list list - list installed go versions and exit #+ -k --known known - list known go versions and exit #+ --force-known-update - when used with --known, ignores the cache and updates #+ -r --resolve resolve - resolve a version specifier to a version, show that and exit #+ - #+ Influential env vars: #+ - #+ GIMME_GO_VERSION - version to install (*REQUIRED*, may be given as first positional arg) #+ GIMME_VERSION_PREFIX - prefix for installed versions (default '${GIMME_VERSION_PREFIX}', #+ may be given as second positional arg) #+ GIMME_ARCH - arch to install (default '${GIMME_ARCH}') #+ GIMME_BINARY_OSX - darwin-specific binary suffix (default '${GIMME_BINARY_OSX}') #+ GIMME_ENV_PREFIX - prefix for env files (default '${GIMME_ENV_PREFIX}') #+ GIMME_GO_GIT_REMOTE - git remote for git-based install (default '${GIMME_GO_GIT_REMOTE}') #+ GIMME_OS - os to install (default '${GIMME_OS}') #+ GIMME_TMP - temp directory (default '${GIMME_TMP}') #+ GIMME_TYPE - install type to perform ('auto', 'binary', 'source', or 'git') #+ (default '${GIMME_TYPE}') #+ GIMME_INSTALL_RACE - install race directory after compile if non-empty. #+ If the install type is 'binary', this option is ignored. #+ GIMME_DEBUG - enable tracing if non-empty #+ GIMME_NO_ENV_ALIAS - disable creation of env 'alias' file when os and arch match host #+ GIMME_SILENT_ENV - omit the 'go version' line from env file #+ GIMME_CGO_ENABLED - enable build of cgo support #+ GIMME_CC_FOR_TARGET - cross compiler for cgo support #+ GIMME_DOWNLOAD_BASE - override base URL dir for download (default '${GIMME_DOWNLOAD_BASE}') #+ GIMME_LIST_KNOWN - override base URL for known go versions (default '${GIMME_LIST_KNOWN}') #+ GIMME_KNOWN_CACHE_MAX - seconds the cache for --known is valid for (default '${GIMME_KNOWN_CACHE_MAX}') #+ - # set -e shopt -s nullglob shopt -s dotglob shopt -s extglob set -o pipefail [[ ${GIMME_DEBUG} ]] && set -x readonly GIMME_VERSION="v1.5.4" readonly GIMME_COPYRIGHT="Copyright (c) 2015-2020 gimme contributors" readonly GIMME_LICENSE_URL="https://raw.githubusercontent.com/travis-ci/gimme/${GIMME_VERSION}/LICENSE" export GIMME_VERSION export GIMME_COPYRIGHT export GIMME_LICENSE_URL program_name="$(basename "$0")" # shellcheck disable=SC1117 warn() { printf >&2 "%s: %s\n" "${program_name}" "${*}"; } die() { warn "$@" exit 1 } # We don't want to go around hitting Google's servers with requests for # files named HEAD@{date}.tar so we only try binary/source downloads if # it looks like a plausible name to us. # We don't need to support 0. releases of Go. # We don't support 5 digit major-versions of Go (limit back-tracking in RE). # We don't support very long versions # (both to avoid annoying download server operators with attacks and # because regexp backtracking can be pathological). # Per _assert_version_given we do assume 2.0 not 2 ALLOWED_UPSTREAM_VERSION_RE='^[1-9][0-9]{0,3}(\.[0-9][0-9a-zA-Z_-]{0,9})+$' # # The main path which allowed these to leak upstream before has been closed # but a valid git repo tag or branch-name will still reach the point of # being _tried_ upstream. # _do_curl "url" "file" _do_curl() { mkdir -p "$(dirname "${2}")" if command -v curl >/dev/null; then curl -sSLf "${1}" -o "${2}" 2>/dev/null return fi if command -v wget >/dev/null; then wget -q "${1}" -O "${2}" 2>/dev/null return fi if command -v fetch >/dev/null; then fetch -q "${1}" -o "${2}" 2>/dev/null return fi echo >&2 'error: no curl, wget, or fetch found' exit 1 } # _sha256sum "file" _sha256sum() { if command -v sha256sum &>/dev/null; then sha256sum "$@" elif command -v gsha256sum &>/dev/null; then gsha256sum "$@" else shasum -a 256 "$@" fi } # sort versions, handling 1.10 after 1.9, not before 1.2 # FreeBSD sort has --version-sort, none of the others do # Looks like --general-numeric-sort is the safest; checked macOS 10.12.6, FreeBSD 10.3, Ubuntu Trusty if sort --version-sort /dev/null; then _version_sort() { sort --version-sort; } else _version_sort() { # If we go to four-digit minor or patch versions, then extend the padding here # (but in such a world, perhaps --version-sort will have become standard by then?) sed -E 's/\.([0-9](\.|$))/.00\1/g; s/\.([0-9][0-9](\.|$))/.0\1/g' | sort --general-numeric-sort | sed 's/\.00*/./g' } fi # _do_curls "file" "url" ["url"...] _do_curls() { f="${1}" shift if _sha256sum -c "${f}.sha256" &>/dev/null; then return 0 fi for url in "${@}"; do if _do_curl "${url}" "${f}"; then if _do_curl "${url}.sha256" "${f}.sha256"; then echo "$(cat "${f}.sha256") ${f}" >"${f}.sha256.tmp" mv "${f}.sha256.tmp" "${f}.sha256" if ! _sha256sum -c "${f}.sha256" &>/dev/null; then warn "sha256sum failed for '${f}'" warn 'continuing to next candidate URL' continue fi fi return fi done rm -f "${f}" return 1 } # _binary "version" "file.tar.gz" "arch" _binary() { local version=${1} local file=${2} local arch=${3} urls=( "${GIMME_DOWNLOAD_BASE}/go${version}.${GIMME_OS}-${arch}.tar.gz" ) if [[ "${GIMME_OS}" == 'darwin' && "${GIMME_BINARY_OSX}" ]]; then urls=( "${GIMME_DOWNLOAD_BASE}/go${version}.${GIMME_OS}-${arch}-${GIMME_BINARY_OSX}.tar.gz" "${urls[@]}" ) fi if [ "${arch}" = 'arm' ]; then # attempt "armv6l" vs just "arm" first (since that's what's officially published) urls=( "${GIMME_DOWNLOAD_BASE}/go${version}.${GIMME_OS}-${arch}v6l.tar.gz" # go1.6beta2 & go1.6rc1 "${GIMME_DOWNLOAD_BASE}/go${version}.${GIMME_OS}-${arch}6.tar.gz" # go1.6beta1 "${urls[@]}" ) fi if [ "${GIMME_OS}" = 'windows' ]; then urls=( "${GIMME_DOWNLOAD_BASE}/go${version}.${GIMME_OS}-${arch}.zip" ) fi _do_curls "${file}" "${urls[@]}" } # _source "version" "file.src.tar.gz" _source() { urls=( "${GIMME_DOWNLOAD_BASE}/go${1}.src.tar.gz" "https://github.com/golang/go/archive/go${1}.tar.gz" ) _do_curls "${2}" "${urls[@]}" } # _fetch "dir" _fetch() { mkdir -p "$(dirname "${1}")" if [[ -d "${1}/.git" ]]; then ( cd "${1}" git remote set-url origin "${GIMME_GO_GIT_REMOTE}" git fetch -q --all && git fetch -q --tags ) return fi git clone -q "${GIMME_GO_GIT_REMOTE}" "${1}" } # _checkout "version" "dir" # NB: might emit a "renamed version" on stdout _checkout() { local spec="${1:?}" godir="${2:?}" # We are called twice, once during validation that a version was given and # later during build. We don't want to fetch twice, so we are fetching # during the validation only, in the caller. if [[ "${spec}" =~ ^[0-9a-f]{6,}$ ]]; then # We always treat this as a commit sha, whether instead of doing # branch tests etc. It looks like a commit sha and the Go maintainers # aren't daft enough to use pure hex for a tag or branch. git -C "$godir" reset -q --hard "${spec}" || return 1 return 0 fi # If spec looks like HEAD^{something} or HEAD^^^ then trying # origin/$spec would succeed but we'd write junk to the filesystem, # propagating annoying characters out. local retval probe_named disallow rev probe_named=1 disallow='[@^~:{}]' if [[ "${spec}" =~ $disallow ]]; then probe_named=0 [[ "${spec}" != "@" ]] || spec="HEAD" fi try_spec() { git -C "${godir}" reset -q --hard "$@" -- 2>/dev/null; } retval=1 if ((probe_named)); then retval=0 try_spec "origin/${spec}" || try_spec "origin/go${spec}" || { [[ "${spec}" == "tip" ]] && try_spec origin/master; } || try_spec "refs/tags/${spec}" || try_spec "refs/tags/go${spec}" || retval=1 fi if ((retval)); then retval=0 # We're about to reset anyway, if we succeed, so we should reset to a # known state before parsing what might be relative specs try_spec origin/master && rev="$(git -C "${godir}" rev-parse --verify -q "${spec}^{object}")" && try_spec "${rev}" && git -C "${godir}" rev-parse --verify -q --short=12 "${rev}" || retval=1 # that rev-parse prints to stdout, so we can affect the version seen fi unset -f try_spec return $retval } # _extract "file.tar.gz" "dir" _extract() { mkdir -p "${2}" if [[ "${1}" == *.tar.gz ]]; then tar -xf "${1}" -C "${2}" --strip-components 1 else unzip -q "${1}" -d "${2}" mv "${2}"/go/* "${2}" rmdir "${2}"/go fi } # _setup_bootstrap _setup_bootstrap() { local versions=("1.18" "1.17" "1.16" "1.15" "1.14" "1.13" "1.12" "1.11" "1.10" "1.9" "1.8" "1.7" "1.6" "1.5" "1.4") # try existing for v in "${versions[@]}"; do for candidate in "${GIMME_ENV_PREFIX}/go${v}"*".env"; do if [ -s "${candidate}" ]; then # shellcheck source=/dev/null GOROOT_BOOTSTRAP="$(source "${candidate}" 2>/dev/null && go env GOROOT)" export GOROOT_BOOTSTRAP return 0 fi done done # try binary for v in "${versions[@]}"; do if [ -n "$(_try_binary "${v}" "${GIMME_HOSTARCH}")" ]; then export GOROOT_BOOTSTRAP="${GIMME_VERSION_PREFIX}/go${v}.${GIMME_OS}.${GIMME_HOSTARCH}" return 0 fi done echo >&2 "Unable to setup go bootstrap from existing or binary" return 1 } # _compile "dir" _compile() { ( if grep -q GOROOT_BOOTSTRAP "${1}/src/make.bash" &>/dev/null; then _setup_bootstrap || return 1 fi cd "${1}" if [[ -d .git ]]; then git clean -dfx -q fi cd src export GOOS="${GIMME_OS}" GOARCH="${GIMME_ARCH}" export CGO_ENABLED="${GIMME_CGO_ENABLED}" export CC_FOR_TARGET="${GIMME_CC_FOR_TARGET}" local make_log="${1}/make.${GOOS}.${GOARCH}.log" if [[ "${GIMME_DEBUG}" -ge "2" ]]; then ./make.bash -v 2>&1 | tee "${make_log}" 1>&2 || return 1 else ./make.bash &>"${make_log}" || return 1 fi ) } _try_install_race() { if [[ ! "${GIMME_INSTALL_RACE}" ]]; then return 0 fi "${1}/bin/go" install -race std } _can_compile() { cat >"${GIMME_TMP}/test.go" <<'EOF' package main import "os" func main() { os.Exit(0) } EOF "${1}/bin/go" run "${GIMME_TMP}/test.go" } # _env "dir" _env() { [[ -d "${1}/bin" && -x "${1}/bin/go" ]] || return 1 # if we try to run a Darwin binary on Linux, we need to fail so 'auto' can fallback to cross-compiling from source # automatically GOROOT="${1}" GOFLAGS="" "${1}/bin/go" version &>/dev/null || return 1 # https://twitter.com/davecheney/status/431581286918934528 # we have to GOROOT sometimes because we use official release binaries in unofficial locations :( # # Issue 87 leads to: # No, we should _always_ set GOROOT when using official release binaries, and sanest to just always set it. # The "avoid setting it" is _only_ for people using official releases in official locations. # Tools like `gimme` are the reason that GOROOT-in-env exists. echo if [[ "$(GOROOT="${1}" "${1}/bin/go" env GOHOSTOS)" == "${GIMME_OS}" ]]; then echo 'unset GOOS;' else echo 'export GOOS="'"${GIMME_OS}"'";' fi if [[ "$(GOROOT="${1}" "${1}/bin/go" env GOHOSTARCH)" == "${GIMME_ARCH}" ]]; then echo 'unset GOARCH;' else echo 'export GOARCH="'"${GIMME_ARCH}"'";' fi echo "export GOROOT='${1}';" # shellcheck disable=SC2016 echo 'export PATH="'"${1}/bin"':${PATH}";' if [[ -z "${GIMME_SILENT_ENV}" ]]; then echo 'go version >&2;' fi echo } # _env_alias "dir" "env-file" _env_alias() { if [[ "${GIMME_NO_ENV_ALIAS}" ]]; then echo "${2}" return fi if [[ "$(GOROOT="${1}" "${1}/bin/go" env GOHOSTOS)" == "${GIMME_OS}" && "$(GOROOT="${1}" "${1}/bin/go" env GOHOSTARCH)" == "${GIMME_ARCH}" ]]; then # GIMME_GO_VERSION might be a branch, which can contain '/' local dest="${GIMME_ENV_PREFIX}/go${GIMME_GO_VERSION//\//__}.env" cp "${2}" "${dest}" ln -sf "${dest}" "${GIMME_ENV_PREFIX}/latest.env" echo "${dest}" else echo "${2}" fi } _try_existing() { case "${1}" in binary) local existing_ver="${GIMME_VERSION_PREFIX}/go${GIMME_GO_VERSION}.${GIMME_OS}.${GIMME_ARCH}" local existing_env="${GIMME_ENV_PREFIX}/go${GIMME_GO_VERSION}.${GIMME_OS}.${GIMME_ARCH}.env" ;; source) local existing_ver="${GIMME_VERSION_PREFIX}/go${GIMME_GO_VERSION}.src" local existing_env="${GIMME_ENV_PREFIX}/go${GIMME_GO_VERSION}.src.env" ;; *) _try_existing binary || _try_existing source return $? ;; esac if [[ -x "${existing_ver}/bin/go" && -s "${existing_env}" ]]; then # newer envs have existing semi-colon at end of line, because newer gimme # puts them there; envs created before that change lack those semi-colons # and should gain them, to make it easier for people using eval without # double-quoting the command substition. sed -e 's/\([^;]\)$/\1;/' <"${existing_env}" # gimme is the corner-case where GOROOT _should_ be overriden, since if the # ancilliary tooling's system-internal DefaultGoroot exists, and GOROOT is # unset, then it will be used and the wrong golang will be picked up. # Lots of old installs won't have GOROOT; munge it from $PATH if grep -qs '^unset GOROOT' -- "${existing_env}"; then sed -n -e 's/^export PATH="\(.*\)\/bin:.*$/export GOROOT='"'"'\1'"'"';/p' <"${existing_env}" echo fi # Export the same variables whether building new or using existing echo "export GIMME_ENV='${existing_env}';" return fi return 1 } # _try_binary "version" "arch" _try_binary() { local version=${1} local arch=${2} local bin_tgz="${GIMME_TMP}/go${version}.${GIMME_OS}.${arch}.tar.gz" local bin_dir="${GIMME_VERSION_PREFIX}/go${version}.${GIMME_OS}.${arch}" local bin_env="${GIMME_ENV_PREFIX}/go${version}.${GIMME_OS}.${arch}.env" [[ "${version}" =~ ${ALLOWED_UPSTREAM_VERSION_RE} ]] || return 1 if [ "${GIMME_OS}" = 'windows' ]; then bin_tgz=${bin_tgz%.tar.gz}.zip fi _binary "${version}" "${bin_tgz}" "${arch}" || return 1 _extract "${bin_tgz}" "${bin_dir}" || return 1 _env "${bin_dir}" | tee "${bin_env}" || return 1 echo "export GIMME_ENV=\"$(_env_alias "${bin_dir}" "${bin_env}")\"" } _try_source() { local src_tgz="${GIMME_TMP}/go${GIMME_GO_VERSION}.src.tar.gz" local src_dir="${GIMME_VERSION_PREFIX}/go${GIMME_GO_VERSION}.src" local src_env="${GIMME_ENV_PREFIX}/go${GIMME_GO_VERSION}.src.env" [[ "${GIMME_GO_VERSION}" =~ ${ALLOWED_UPSTREAM_VERSION_RE} ]] || return 1 _source "${GIMME_GO_VERSION}" "${src_tgz}" || return 1 _extract "${src_tgz}" "${src_dir}" || return 1 _compile "${src_dir}" || return 1 _try_install_race "${src_dir}" || return 1 _env "${src_dir}" | tee "${src_env}" || return 1 echo "export GIMME_ENV=\"$(_env_alias "${src_dir}" "${src_env}")\"" } # We do _not_ try to use any version caching with _try_existing(), but instead # build afresh each time. We don't want to deal with someone moving the repo # to other-version, doing an install, then resetting it back to # last-version-we-saw and thus introducing conflicts. # # If you want to re-use a built-at-spec version, then avoid moving the repo # and source the generated .env manually. # Note that the env will just refer to the 'go' directory, so it's not safe # to reuse anyway. _try_git() { local git_dir="${GIMME_VERSION_PREFIX}/go" local git_env="${GIMME_ENV_PREFIX}/go.git.${GIMME_OS}.${GIMME_ARCH}.env" local resolved_sha # Any tags should have been resolved when we asserted that we were # given a version, so no need to handle that here. _checkout "${GIMME_GO_VERSION}" "${git_dir}" >/dev/null || return 1 _compile "${git_dir}" || return 1 _try_install_race "${git_dir}" || return 1 _env "${git_dir}" | tee "${git_env}" || return 1 echo "export GIMME_ENV=\"$(_env_alias "${git_dir}" "${git_env}")\"" } _wipe_version() { local env_file="${GIMME_ENV_PREFIX}/go${1}.${GIMME_OS}.${GIMME_ARCH}.env" if [[ -s "${env_file}" ]]; then rm -rf "$(awk -F\" '/GOROOT/ { print $2 }' "${env_file}")" rm -f "${env_file}" fi } _list_versions() { if [ ! -d "${GIMME_VERSION_PREFIX}" ]; then return 0 fi local current_version current_version="$(go env GOROOT 2>/dev/null)" current_version="${current_version##*/go}" current_version="${current_version%%.${GIMME_OS}.*}" # 1.1 1.10 1.2 is bad; zsh has `setopt numeric_glob_sort` but bash # doesn't appear to have anything like that. for d in "${GIMME_VERSION_PREFIX}/go"*".${GIMME_OS}."*; do local cleaned="${d##*/go}" cleaned="${cleaned%%.${GIMME_OS}.*}" echo "${cleaned}" done | _version_sort | while read -r cleaned; do echo -en "${cleaned}" if [[ "${cleaned}" == "${current_version}" ]]; then echo -en ' <= current' >&2 fi echo done } _update_remote_known_list_if_needed() { # shellcheck disable=SC1117 local exp="go([[:alnum:]\.]*)\.src.*" # :alnum: catches beta versions too local list="${GIMME_VERSION_PREFIX}/known-versions.txt" local dlfile="${GIMME_TMP}/known-dl" if [[ -e "${list}" ]] && ! ((force_known_update)) && ! _file_older_than_secs "${list}" "${GIMME_KNOWN_CACHE_MAX}"; then echo "${list}" return 0 fi [[ -d "${GIMME_VERSION_PREFIX:?}" ]] || mkdir -p -- "${GIMME_VERSION_PREFIX}" _do_curl "${GIMME_LIST_KNOWN}" "${dlfile}" while read -r line; do if [[ "${line}" =~ ${exp} ]]; then echo "${BASH_REMATCH[1]}" fi done <"${dlfile}" | _version_sort | uniq >"${list}.new" rm -f "${list}" &>/dev/null mv "${list}.new" "${list}" rm -f "${dlfile}" echo "${list}" return 0 } _list_known() { local knownfile knownfile="$(_update_remote_known_list_if_needed)" ( _list_versions 2>/dev/null cat -- "${knownfile}" ) | grep . | _version_sort | uniq } # For the "invoked on commandline" case, we want to always pass unknown # strings through, so that we can be a uniqueness filter, but for unknown # names we want to exit with a value other than 1, so we document that # we'll exit 2. For use by other functions, 2 is as good as 1. _resolve_version() { case "${1}" in stable) _get_curr_stable return 0 ;; oldstable) _get_old_stable return 0 ;; tip) echo "tip" return 0 ;; *.x) true ;; *) echo "${1}" local GIMME_GO_VERSION="$1" local ASSERT_ABORT='return' if _assert_version_given 2>/dev/null; then return 0 fi warn "version specifier '${1}' unknown" return 2 ;; esac # We have a .x suffix local base="${1%.x}" local ver last='' known known="$(_update_remote_known_list_if_needed)" # will be version-sorted if [[ ! "${base}" =~ ^[0-9.]+$ ]]; then warn "resolve pattern '${base}.x' invalid for .x finding" return 2 fi # The `.x` is optional; "1.10" matches "1.10.x" local search="^${base//./\\.}(\\.[0-9.]+)?\$" # avoid regexp attacks while read -r ver; do [[ "${ver}" =~ $search ]] || continue last="${ver}" done <"$known" if [[ -n "${last}" ]]; then echo "${last}" return 0 fi echo "${1}" warn "given '${1}' but no release for '${base}' found" return 2 } _realpath() { # shellcheck disable=SC2005 [ -d "$1" ] && echo "$(cd "$1" && pwd)" || echo "$(cd "$(dirname "$1")" && pwd)/$(basename "$1")" } _get_curr_stable() { local stable="${GIMME_VERSION_PREFIX}/stable" if _file_older_than_secs "${stable}" 86400; then _update_stable "${stable}" fi cat "${stable}" } _get_old_stable() { local oldstable="${GIMME_VERSION_PREFIX}/oldstable" if _file_older_than_secs "${oldstable}" 86400; then _update_oldstable "${oldstable}" fi cat "${oldstable}" } _update_stable() { local stable="${1}" local url="https://golang.org/VERSION?m=text" _do_curl "${url}" "${stable}" sed -i.old -e 's/^go\(.*\)/\1/' "${stable}" rm -f "${stable}.old" } _update_oldstable() { local oldstable="${1}" local oldstable_x oldstable_x=$(_get_curr_stable | awk -F. '{ $2--; print $1 "." $2 "." "x" }') _resolve_version "${oldstable_x}" >"${oldstable}" } _last_mod_timestamp() { local filename="${1}" case "${GIMME_HOSTOS}" in darwin | *bsd) stat -f %m "${filename}" ;; linux) stat -c %Y "${filename}" ;; esac } _file_older_than_secs() { local file="${1}" local age_secs="${2}" local ts # if the file does not exist, we return true, as the cache needs updating ts="$(_last_mod_timestamp "${file}" 2>/dev/null)" || return 0 ((($(date +%s) - ts) > age_secs)) } _assert_version_given() { # By the time we're called, aliases such as "stable" must have been resolved # but we could be a reference in git. # # Versions can include suffices such as in "1.8beta2", so our assumption is that # there will always be a minor present; the first public release was "1.0" so # we assume "2.0" not "2". if [[ -z "${GIMME_GO_VERSION}" ]]; then echo >&2 'error: no GIMME_GO_VERSION supplied' echo >&2 " ex: GIMME_GO_VERSION=1.4.1 ${0} ${*}" echo >&2 " ex: ${0} 1.4.1 ${*}" ${ASSERT_ABORT:-exit} 1 fi # Note: _resolve_version calls back to us (_assert_version_given), but # only for cases where the version does not end with .x, so this should # be safe. # This should be untangled. PRs accepted, good starter project. if [[ "${GIMME_GO_VERSION}" == *.x ]]; then GIMME_GO_VERSION="$(_resolve_version "${GIMME_GO_VERSION}")" || ${ASSERT_ABORT:-exit} 1 fi if [[ "${GIMME_GO_VERSION}" == +([[:digit:]]).+([[:digit:]])* ]]; then return 0 fi # Here we resolve symbolic references. If we don't, then we get some # random git tag name being accepted as valid and then we try to # curl garbage from upstream. if [[ "${GIMME_TYPE}" == "auto" || "${GIMME_TYPE}" == "git" ]]; then local git_dir="${GIMME_VERSION_PREFIX}/go" local resolved_sha _fetch "${git_dir}" if resolved_sha="$(_checkout "${GIMME_GO_VERSION}" "${git_dir}")"; then if [[ -n "${resolved_sha}" ]]; then # Break our normal silence, this one really needs to be seen on stderr # always; auditability and knowing what version of Go you got wins. warn "resolved '${GIMME_GO_VERSION}' to '${resolved_sha}'" GIMME_GO_VERSION="${resolved_sha}" fi return 0 fi fi echo >&2 'error: GIMME_GO_VERSION not recognized as valid' echo >&2 " got: ${GIMME_GO_VERSION}" ${ASSERT_ABORT:-exit} 1 } _exclude_from_backups() { # Please avoid anything which requires elevated privileges or is obnoxious # enough to offend the invoker case "${GIMME_HOSTOS}" in darwin) # Darwin: Time Machine is "standard", we can add others. The default # mechanism is sticky, as an attribute on the dir, requires no # privileges, is idempotent (and doesn't support -- to end flags). tmutil addexclusion "$@" ;; esac } _versint() { IFS=" " read -r -a args <<<"${1//[^0-9]/ }" printf '1%03d%03d%03d%03d' "${args[@]}" } _to_goarch() { case "${1}" in aarch64) echo "arm64" ;; *) echo "${1}" ;; esac } : "${GIMME_OS:=$(uname -s | tr '[:upper:]' '[:lower:]')}" : "${GIMME_HOSTOS:=$(uname -s | tr '[:upper:]' '[:lower:]')}" : "${GIMME_ARCH:=$(_to_goarch "$(uname -m)")}" : "${GIMME_HOSTARCH:=$(_to_goarch "$(uname -m)")}" : "${GIMME_ENV_PREFIX:=${HOME}/.gimme/envs}" : "${GIMME_VERSION_PREFIX:=${HOME}/.gimme/versions}" : "${GIMME_TMP:=${TMPDIR:-/tmp}/gimme}" : "${GIMME_GO_GIT_REMOTE:=https://github.com/golang/go.git}" : "${GIMME_TYPE:=auto}" # 'auto', 'binary', 'source', or 'git' : "${GIMME_BINARY_OSX:=osx10.8}" : "${GIMME_DOWNLOAD_BASE:=https://dl.google.com/go}" : "${GIMME_LIST_KNOWN:=https://golang.org/dl}" : "${GIMME_KNOWN_CACHE_MAX:=10800}" # The version prefix must be an absolute path case "${GIMME_VERSION_PREFIX}" in /*) true ;; *) echo >&2 " Fixing GIMME_VERSION_PREFIX from relative: $GIMME_VERSION_PREFIX" GIMME_VERSION_PREFIX="$(pwd)/${GIMME_VERSION_PREFIX}" echo >&2 " to: $GIMME_VERSION_PREFIX" ;; esac case "${GIMME_OS}" in mingw* | msys_nt*) # Minimalist GNU for Windows GIMME_OS='windows' if [ "${GIMME_ARCH}" = 'i686' ]; then GIMME_ARCH="386" else GIMME_ARCH="amd64" fi ;; esac force_install=0 force_known_update=0 while [[ $# -gt 0 ]]; do case "${1}" in -h | --help | help | wat) _old_ifs="$IFS" IFS=';' awk '/^#\+ / { sub(/^#\+ /, "", $0) ; sub(/-$/, "", $0) ; print $0 }' "$0" | while read -r line; do eval "echo \"$line\"" done IFS="$_old_ifs" exit 0 ;; -V | --version | version) echo "${GIMME_VERSION}" exit 0 ;; -r | --resolve | resolve) # The normal mkdir of versions is below; we don't want to move it up # to where we create files just if asked our version; thus # _resolve_version has to mkdir the versions dir itself. if [[ $# -ge 2 ]]; then _resolve_version "${2}" elif [[ -n "${GIMME_GO_VERSION:-}" ]]; then _resolve_version "${GIMME_GO_VERSION}" else die "resolve must be given a version to resolve" fi exit $? ;; -l | --list | list) _list_versions exit 0 ;; -k | --known | known) _list_known exit 0 ;; -f | --force | force) force_install=1 ;; --force-known-update | force-known-update) force_known_update=1 ;; -i | install) true # ignore a dummy argument ;; *) break ;; esac shift done if [[ -n "${1}" ]]; then GIMME_GO_VERSION="${1}" fi if [[ -n "${2}" ]]; then GIMME_VERSION_PREFIX="${2}" fi case "${GIMME_ARCH}" in x86_64) GIMME_ARCH=amd64 ;; x86) GIMME_ARCH=386 ;; arm64) if [[ "${GIMME_GO_VERSION}" != master && "$(_versint "${GIMME_GO_VERSION}")" < "$(_versint 1.5)" ]]; then echo >&2 "error: ${GIMME_ARCH} is not supported by this go version" echo >&2 "try go1.5 or newer" exit 1 fi if [[ "${GIMME_HOSTOS}" == "linux" && "${GIMME_HOSTARCH}" != "${GIMME_ARCH}" ]]; then : "${GIMME_CC_FOR_TARGET:="aarch64-linux-gnu-gcc"}" fi ;; arm*) GIMME_ARCH=arm ;; esac case "${GIMME_HOSTARCH}" in x86_64) GIMME_HOSTARCH=amd64 ;; x86) GIMME_HOSTARCH=386 ;; arm64) ;; arm*) GIMME_HOSTARCH=arm ;; esac case "${GIMME_GO_VERSION}" in stable) GIMME_GO_VERSION=$(_get_curr_stable) ;; oldstable) GIMME_GO_VERSION=$(_get_old_stable) ;; esac _assert_version_given "$@" ((force_install)) && _wipe_version "${GIMME_GO_VERSION}" unset GOARCH unset GOBIN unset GOOS unset GOPATH unset GOROOT unset CGO_ENABLED unset CC_FOR_TARGET # GO111MODULE breaks build of Go itself unset GO111MODULE mkdir -p "${GIMME_VERSION_PREFIX}" "${GIMME_ENV_PREFIX}" # The envs dir stays small and provides a record of what had been installed # whereas the versions dir grows by hundreds of MB per version and is not # intended to support local modifications (as that subverts the point of gimme) # _and_ is a cache, so we're unilaterally declaring that the contents of # the versions dir should be excluded from system backups. _exclude_from_backups "${GIMME_VERSION_PREFIX}" GIMME_VERSION_PREFIX="$(_realpath "${GIMME_VERSION_PREFIX}")" GIMME_ENV_PREFIX="$(_realpath "${GIMME_ENV_PREFIX}")" if ! case "${GIMME_TYPE}" in binary) _try_existing binary || _try_binary "${GIMME_GO_VERSION}" "${GIMME_ARCH}" ;; source) _try_existing source || _try_source || _try_git ;; git) _try_git ;; auto) _try_existing || _try_binary "${GIMME_GO_VERSION}" "${GIMME_ARCH}" || _try_source || _try_git ;; *) echo >&2 "I don't know how to '${GIMME_TYPE}'." echo >&2 " Try 'auto', 'binary', 'source', or 'git'." exit 1 ;; esac; then echo >&2 "I don't have any idea what to do with '${GIMME_GO_VERSION}'." echo >&2 " (using download type '${GIMME_TYPE}')" exit 1 fi kubernetes-sigs-kind-49aeee6/images/node/000077500000000000000000000000001524365506300204565ustar00rootroot00000000000000kubernetes-sigs-kind-49aeee6/images/node/README.md000066400000000000000000000014611524365506300217370ustar00rootroot00000000000000## images/node See: [`pkg/build/nodeimage/build.go`][pkg/build/nodeimage/build.go] and [`pkg/build/nodeimage/buildcontext.go`][pkg/build/nodeimage/buildcontext.go], this image is built programmatically with docker run / exec / commit for performance reasons with large artifacts. Roughly this image is [the base image](./../base), with the addition of: - installing the Kubernetes packages / binaries - placing the Kubernetes docker images in `/kind/images/*.tar` - placing a file in `/kind/version` containing the Kubernetes semver See [`node-image`][node-image.md] for more design details. [pkg/build/nodeimage/build.go]: ./../../pkg/build/nodeimage/build.go [pkg/build/nodeimage/buildcontext.go]: ./../../pkg/build/nodeimage/buildcontext.go [node-image.md]: https://kind.sigs.k8s.io/docs/design/node-image kubernetes-sigs-kind-49aeee6/logo/000077500000000000000000000000001524365506300172245ustar00rootroot00000000000000kubernetes-sigs-kind-49aeee6/logo/LICENSE000077500000000000000000000002061524365506300202320ustar00rootroot00000000000000# The kind logo files are licensed under a choice of either Apache-2.0 or CC-BY-4.0 (Creative Commons Attribution 4.0 International). kubernetes-sigs-kind-49aeee6/logo/logo.png000077500000000000000000002472211524365506300207050ustar00rootroot00000000000000‰PNG  IHDRÙR ³6Ó pHYsÃÃÇo¨d IDATxœì�€ÕÖÇOú&»É¶ÂÒQA:,½w‚Q>»‚Ѝˆ)‚JQQQ¬O}¢ 6:H¯Ò;,Ëöš-éùr'L6e’ÌLf2)÷÷Þ8íÎ�»œüçÜ~¥V«¨¨2YSN—˜î7Y­r¥DT¦’ŠJ* ÖºZ£%½Ü`­W®·dj�Öt´/7XêQFHÅ"½B"ªPH R.U*Ä"ûÞéüÖq•\ìzÝ ¶ý홥zKÃr½ý;d¢§Î©ò/îL’®úo£Bê~aÚÞrê_@„b²X¶-¥Ê)\ÅyºÄ8Ôù|I÷xWqŠ‹Á£ÍØÁ‚üw Ã; nûœšÉJ±Ç¿Õ–l=X¼d†BÝ«Á1ìX_Aì f+ìÈÑS†Êè”ïž¡v:"[ñ�Pÿ¦ë:ÊûB�Òàq2Á3“E(Òƒ„/£ÂàezkC¡ x3z0UNüë³U¿°yxÞ¤ öýÊo8LRd#´Ò ƒçT™Û – A°TŽ}¸©rlð"*÷0x³üëÇÀ–ìà«ÜúM4ØàÁ@ìEÇ|«[W@„ðåaaðûÖ¯á-n}SqÀqln5’ƒ”Ô§ÊÃÂà‘Œ7•Ï>PQ± ‹FÃõû°ÁC½Ùªæ#^lð ˜U®¬ ~dÛ::j„㘊ö}†‚X"aû ^IŠQ@Î㣈cñÆN 7Fÿå²n%Ú'ň¯ô©+‡* +ƒ{3°;ÿìÜûgó Þx¶õí°¬W'èôbdMÎ%® ‰.H…Žû6Â?%‚¥Í—Ñv‹WHD@Ù—ê׫ºå»oê_t¾Æ©Áѽ£ï†ö)I„‘³ÖäºÜ+,7×EÐ,+2à£ì ðÂé¤ӛÑgì+'ºÎP©ÝÝØo_éÅróŽÒ’TM|Ä"Ñ-5çú og3ü8¸¡¯�;è}͸u‰ÛLQçÜ•¼e’l}“xéN&qK¯jM=9HcÈQ3i<±'?ÛL!ŸC†GÛÏÛ~£.�#©TªÄ8 mLâ�¸O:C^‘á7¬Ð†'¡êEÜê#ßýVò6€K×YeÛ~ˆ(ƒ#c3Qô�"3¬X_A+¬³áC!WO²¤` LKÝB+lÍñ_ÆE”ÁuFfá“ã%�u›¶¾¯W¸ÿÐ9‚¼ÒßTv�Ø›Õþ‹¡š6�ž¯ÐS7ù)G<Ø[El:_FÜÛu�ÁÖl{:Ô~×@*ãnÕÞÔç(Ã36xþɽ�™šÊ(<-l¹”´–Ý\.½sãVÑ(Õ¿Á?ïÞ²~t5˜»�v64Þ»ÿL£åÊïçË {! î 2>2º³±Ý?÷Œ NÛxl°•CPüi­ºs%22𳡑ß>¿€8öf`çðlsùÁ¦Ò¢€•E½&ÕŽp6:mƒójl!�Ž(«²:Œí/,y.ĉ©‡4¹Ãʇ¼òZá&Nz–Mô¬ cœ„XaPoaý}òIž\^ g”<ÞpΔÑÉ­³2¸Z­­Vë3L÷Ü}šýa2²~÷mDdäÝK3 FæiXçó5»ªañšr‡+ úq»l€šã]ü¸ä=›ËÑ KuÝ«ñYüáGƳyLpP.¾gËXþL"åý®/å�É>“`dÈ*< ëKå"©BÇÊà?ý´ ý† æ'Ýk÷T;ŽwŸª-s»gÖÂÅØ•F+\ךáJÖ÷ª%ûоO]ÅRçëÒ´ÛOKRn;ÃÊà£FqÛ‡+Pæ}Wîó¾T"¢åŸéúpDA™…vØ@°XÁ{wæŒÁ—.eÛÁ­â×R="í’&ÿtÓuÝ<î’\*=½§Pç¼·.J'öú*)ïÓ1ðê)0f¡ç×ìž9ùðÚøV°øÈI©¥�¿Þ¬ÎMŸL&c’ªe¢ð){P {ö¨! 9nqüðZ2qìžùr7¶·ûO¾_ìµf^—¶œÜ›¡ÑÜpovÑPösCƧkt¯Ÿtrdhð©-òõ |È8�KΆ!ËÖsÇ'Àß•ל (‹ààòt—ùŸ Ò\âñÙš¶qƒãxžÓ±;¯½û1(U±>ÿoƦÓÅ …ùæ\õÏèxªÞÂ…t]:ŠJJáþ®*øuµÏpC»(wÆbñFJ¼ÿ¾ê;§ÃòO¿¢�έë×À}ãõzo.õLPL:1ú24‰w…ßó}íâ9øê½·è¾3è<ðØDصþGŸw®b5˜j¯¹ßGÊ&�í¯"'N)‚µ¿o¤•F:ãç+�ž™ÀÎiò/h½€~Þ°Ù\¿“sz  ‡mF÷בU~ë/FÇ�è@.A¿6öIŒè=‹ÞI‡ /N÷ÆÛ§|TSå“´^€°ÿ¤“01:É�Žž½H¸46¢Éwú¼_ª§.Þ :Ô(V­�*­ïž!»] ã'½×nxNèˆîõ¼ ãÄ¡çtŸõgtd¬žSó@g ÎÐŽïç·®�‰±ép(ßÓw'ň/sú'hüÕÅÒʵ·r+ÃrÉùËW`Á„t˜ý�g áÍØˆï¶WÂKP�ðÙû^¼¾è=NÒèˆÓKFmzuSN_䄇ÁoV™¡nlà£E2ë¦Ã�›yÄñ]ãs\ïÔ® :v‚8nÛ²9?uÖãÙFõ3ájö Vï}â¥D&ŽÊàt{´P�|ÿÎ}¥Å_f�*£6¿K|£—0ÄÃà'‹�ÜùS¼æ³!#-Å¡üeógy„'ï‘Ï Î>>図©Û¯c$ໞ8@hgÚÔ ‰ -+õÎÝïŠ(²÷<ôTTVº„'Aÿ°ä* �ü¸2:[cûS7ÕJ!5‹Ó+o¿ÏYíilgR“ë{oKr°!P£ó¡l„àó´q R6RæÚ/VÂÈ'&Ñ~® ¨˜ë¤Œ~òy8üù‡¬žekìiK>büLPgblž(ûãl©ñ®"EÕ•i)uX=KáÞ™ë¿Â‚y…E¼¨Ôª8ïcù…žo•0ø¨fʧÞÙvµœ|񣄯á öá°eÊ�ò�Ë7Æ �&lð¿ží:ÕHAƤ«æ|>s¾Á �26øÙbÏÚ¸)k6‡]f†ËGòøš�µ] §¿+<ÊÀ�2°Á£ lð(# ƒ_ýç gÃ�nN˜g2f£!Æl2ÉÍCŒÉv,tº˜ õÖüt‰iX±ÞÒD)•ÅHEe¶Pâ ƒ¥n…ÞROk´¦—,™åzk¦ÖhI×™¬aUùàŒB"ÒÚ¶J4¥†B Ä>F"ª Î%pë:ºUNÇ•è­Áš^Žþ ÖzezKƒÅªj¤–�b¦Ð.êæ¢i4Ü@kƒq¹>ØårSŸm7t.½…n%qû­#Úl!Ékx8Œ]®·d ™�H<]%9ùr»¸ÖB¥Ág& ­iím™cŒ�Ã(ÑÑ›”/¯ÚÜJH•{56î¬H�¬TÏ)”ýu\Êà„±—«<å|:0È?_FŸwP[<¯³šÝ@;–ÆÎ¯6ûž]à _F¯6Y’‚�\“‚¹:°/°±ƒD(ÜÃØ­ëÈ‚ñÞ¨¤E¢ Δ ×Ñ×ÃØ &éAãÆèL‰±S_-¡4v°Ô�?ãAÆÛç<`c‡ÁP76¶¥néáBã£A+†¾Õ-Ý–­÷œÚÃ;¨ÝÁëâ3ìflÿõ⾌K6Ô NÙyÚkË û‚tBÝWfÍŸÁÝ{Û¾©Â»;Yxî4T¡22 yMh£#ƒïÏ3@…Á³OiÐ@>ëŸACF®¬±2Z‹DH£wM·÷ió¥ròø™–qŽhOY±ÆFFÞ|TÇj•ò™ës„Ìd‰ Fwî˜]i†3%žM£«NUnegD[)•BÉÓcà…�KhÙ׺aˆáóí³;~r÷Pxúî8Á>ïõã$ÄæL«�ú|&oxŒî‰c7KPÿÝÏÙÊBÎ|ú§–ØÐç]蜻3K ûi©[h…�cóehgPü¡fpg�ñË‹atÂ?Äùe}2üTÞŽ8F?ˆ�5ö¦²kÄެ涢çÇ)Ð,£öÏ&×]±^ ßlõ\õˆ ±¶ö ¹5ûšãx@}ߟV®¡RôCmWô&Š"bŸ)³/žÇÈØ§@fj*£åŸÜK+\Z«î.çïÜ8l?Hegì�핰豇Ú%bXžî5üäajbsþ:xó鲂Zc/+¨]10ØÆv§‰¼F%s¹æüƒ mlºFc ŠßÝàtI”É=Œ²åŸȲmΫù"|“\ã›*¬Ëµæ¬’É+èîlX*RŸq¶/î?²ÖQûkçå›ýùtºaQ±N¹ò;Æé ¤¡ÉcÒଌýñÊOü†™8éY6Qs޳RÑ1ZüõÏÃ5p_•K¸o¦&Ã� d.aùÎðгz�ŒŽC^Ù|±úïjxç§r€ &$ Õg~ûâtP+ïð¬. ~­hía|VÆÕ’ô™–Oyý�‡íFE†F8¦© •Üïµ<"\²FEf�pëöÕšdNp7hó˜|bóFØÆ-CÆAÖïÔŸÛ{;+=®-ü_ÌxPÕVè?=ÏaüþÓ=ÿ‘þz3•òSþæe°göÝÐcÍŸ¦ž7*Íp%ë�ë Õ’}äqŸºŠ¥Î÷­î]ÊöGlŒv.Is¹†ü¶3ÛÕÞï95ÏoœR‚3âÖkµŒÁ—.t#�·Š_ë~ßÅØ…5H‰ÀfNwC#ÆôV»ßõ^{r Peô>uǃÍT�g¥Ê¾"ÏéÎråbì›Uæ°3öŸ‡]ùæ¥BF’½Ñ ¯Ô 鉸ø÷Jøb£Ö†Êo;®?�\:4“ÃÞ3zGØY_—ÁÆ#üûj.–„l/ÝAuÝÅØ¥zû¯iï–?aÓÏBÕÿÚó=h†Þ7Êu¢Å¡ó\×!CÆšxoœ‹±I¼eØ�¡“?.ñúÞ‹7M�µqƒËµynç.÷hŒvekhtÿX‘q܉bãht>áÕªp.Æ&מÜüË�~*Ì$þ8Tíõ>iP²Üì^iB^Û¿<ºN¡_Ó¬.·¥Ö@Ý.YöÚ|…¡LñÜ�¾v‡úÚ�h�õÃëôiœwVÃØ>*ŸÅ.©¸öó>óë2ŸïDáè.ìΧ¢™•*�¿4Ýf€E^ þîÚrXõ§¶;帑Á¾ÞRÿ70Ö%l·—òÀècu]&†A „Ãʼ._%ö2‰È«¡´Õž¹[wC#|ºOë0¸�&#,‡ÿìþu5ô¼ íë�ÄIRÛ>?Ÿs„¯û¾>óˆ¥O%2Rµ*Î÷ü·'Ѝ8!=°ïž}¹ˆ&`|ùo†tçíy¦ŸïiK>òy?¯Ú³*vü*Þ|„´^¬äŸœ*s{_�ââ ²Üw¦ÅC'ÝÁ^'„0ö¤Öq½Vþ[¹‹¼ˆˆ× a†{qËŸVIÅÞ{FðaìFjÉn÷Þ ­`B°#GïèüA‡`/ƒðù÷öëì>ýS¯Ï”]=ùÿì„âsGKY Q(!¹E¤µëqé |†ebè�[׋- �Z†!—it%"^ !µ'%èõZÛ')N¨E‹»ÇKlfWqÁŸñ7»h//ü׳½¢î‹p×'»W*S"¢Ã¡ x¸<`cG£ªÃ¬ìÐÞ¸ØV�Ùì¸Ðé K@ÆŽvUïyó±cáô)ÈØg‹©«T§¬Ù6ÿLX>z�Ç�û.!Âü�"°±£lì(;ŠÀƦ‰Õb‘võð³Ñc2bÌ&“ �.&Hýu—Yy²j÷Õ ݉0˜ Ñ9Mþù¨¦Ê§„NG¨âõKŽ[<1¡ÎÁ|Óh#Ïce⢹�Ô)B¦)” 76&©2Z’ÉßîÓ-ã6‹—0Z6'Òð76&øôT%1�¯H$²,î¦ñ¿&eª‚&Àð šS÷ŸBê±rL°Z­b.–¹ G\Ä}Ekîå+pVª’bÂk^[Lx‚æO¦r"åz Èg'úh¹‹¸?þ·òo_�±°1B¯pýÑ#é˜M›„Dþ@åsÝÒå+¹N_(A;[޳â˜P¤C*Z³Ë¾n“¹M~¹\óÚ"Ù‹ãN ˜ˆ�t@LD޼ø]4IJ‰¨”¯t -q'(pv>0ùÜ%[Åõi¬‘ø,–†qïÈÑ¿æ-Ó)òèàÅ­‘‡F¶ ƒ (›¾õ†ÌúÙt´U‘û7ú¢qÅ‘më\·Žáõ]Zw òU@éŠzÔM…-Ã9Îß^]?ÿ^S†kàáþ±Žë‰ÛÖB¹1ðP•™ö¦_¦#ËÐ>P‘ÿt©æóƒù†'¼Ý—IDÕouÑÄz»ïŽqsã¹ÙŠ×ÿîÝûç%îpgUÿn0¡yí¢éY“s!k›gsíòuÄFÒ\Òö-Kwœ?~òü'ç2¿‰ AØ%�™ �ÎÜ…F³Uu¶ÔtoóDéïtâ”ÚbôªàiHæ60Ü|b4$*jGï!1¯æ}/l? âÙZ€eEÇÙÖ’|th[ I +œ')a+t’·ºÆÇÉÄPHz¾?¼‰;ÿä^Çqfjª��ܽ‡KÒZuç%^:Ìü�ÿ)¼ôF…ÌS`öŠ…i£5áO^3£K‹çäsÎÏ",ÏÉ­oÕ#b‰ ÑeJž£ç–ó³ö_[\Ta�^uùû D"t½ú””í QWˆr.î’Ëÿ‚±ZËu´A}4D"1¤¶ì´wõ·�Ž"Ë«¾èñJ­ ‘ØœGâ,Hºt™Ro· ø`bq|`y­g¿^h† è—ïz=ŸHßäv-`ű3ŒÒm8 ·¹"î�ÿ×qþ^a?0Y]{�.·]CP} 8w$›Äjµõ}I29üu„»Y}� ©²ÌõSè™�¶;Ç/³ëžº¸{,n7¾+͂ΪkDáËc?˜ð|o ïNÏXêÙ˜ƒVæþxå'œÅ5qÒ³œÅ*|ݦ±ýkf _ìr++#1;{qªì÷'/Ôqy¦»ÍCï=£÷O’Wj�ûææ;î í¢„²* ¼¿Î{yÜ2]MãÕp©ÎC’háS¹¥ºà6E+}¦ù¸ñßmU°ê-Ô¸uu—7a=6(ÎãÚæ£:—Ñ\ˆfuepñfíGáÜ #6Fyn´Žvt œ?z  »ÖÿHŒn-µ;HŒIj lzËÞÅÓ½Kª³0O_7„w‹<ž§ú@ˆl…q²rÍ9,[Ú5‘ÃçSêcïáãXÇã‹` ;T'F$a\ F÷¸†HàˆC6‘#بDk&žC•jãúÚûƒ»gÙ¯©€5»¨[-г¿ÎK…ºIÊgQ­9ª=g ù·rEËŽ]`ôÏÏŽ=Ìô?¬¡.l'µe�¼0 ¾ý` QE5臿zÕû„¾ßQïQ4où5‰‘Íbî}m´†Ø˜h-þŽ%é#‚÷V} ¿ü±) ¸¨àBØL¼õƒ·©ËJ‘ý'à—NÄÝ´E+.¢ÁØóÌ‹ÄeÕ²y`.&lpŽcúƒñ0ª§góÖ—›*aåoµÝB¹èl—·æ’Hʆ»ÃY;åñ& ëÃ7¼ë8ïyÿ¿ÏüðÉr¨_×þ#ºv#ÆOz9 4Ðe÷¯µ“ÒI'S� 2ÒRXkE IDATáð§+ˆs&"_5¹tl&§|nÑÿʉÍd9m/}Z »NÒA°DMUDdB$ R�ØÍ›5eü̸g§ð�’Ð 7¿À¥Â­×«ùP£÷ß<éMØL!¾ô©Dèü¢ÿ¸îí¬‚7އ m%Üûð“½Û-ÚuôÈ‘.l!îÑÍTO®¹Xý9U€yè’N¯›!Ÿµéƒûö„9/¿@/\ñ ü¾e;qœÕ¶5,_`Ÿ�ùÅ×À‘'Ï�ÞÕ`4Bÿ‘»x[g¼y^¦áù‚ô€»hV¸q9÷ݸ‚™O«WÆ<ý"ëç£AØBÜ�Re_¬¹”âvoë6 3ëÂw+—9Î}°Ê!lÄôžqO{îi[™u²Gr™Œ*úá‘MMÎÂEÇ΂uµó½×_zΫèù¥ñìi6!u€# ðÌ úƒ6øâàûÄ¿“¦Ï…ϰï3MÔ<7qÖ[¬Ÿ�a#8Ï–sé½}‰Œ)îÏ¢s:"uîÍe›Pm�½U‚̪ó9Cª/œÛÀƒYa6÷£¯Y?MÂF„T™›ŠÕë‡1Ãî%ŽÝ=,(ìF:$(”ÖÃÿ³W*]È1Á¸Åü­:‚P)İuaȤµi&�T E›°q‹E"³ÅjådYO®¼7)ä¾øÆá)ù¸^ï:…�JÕ5®? ¡¼¶;(­ÎóÜÉ-¨@skš· ƒ…͇¸‡7‰yþçK5Sª1YA„E->æ,sÎF£ýSSgÁ™óÁl©}Æê•Z8¿kÓjöÙ@ 7°6úÝ§>’„�pˆ»kšüoâFÿ@L×Dbã½ÿÚö7lܾ R“ë@~a‘Ç}$ºX•tz=˜ÍvQ�yz2ÄŪÀd6ƒN§÷ß«Kì:p˜ò}è~¿]aûžý”÷Hºvl¹…p-;Ç%Lßî]`ÇÞŒþF 3Ø [¨Á¡DÈ•¹Qm6•°Iªª=GUVyïóìMØ$TÂvgÿ‘c”×±°ù…�°™Ž½‰D–ÅÝ4œGC ÚâÞ“k€Ì*›ð(2 [˜ ›©§FÜ™$ÛðhsÕýŒ \Ä-‹jŒ+e½L•‘]{w¿¡#aû†µþb0·˜µœ²Ë… ò PN£·ž7w�—Øòá=‰‹¸ßêªQùšË }›ÆK‰�.}î†Å�¡ 8#“»æ7gëY�s÷F$–¯©`\æ¾Tn"6*¨¥�¢C¼\ R§µñPkãÚ`ßÖ?Y'ù¤µë Ù‰-!›E›Ñ"jq£¶31^ךlõ=Q§ »m UÌF´¥`¨,Su%kl›moª±oÆ[×Ð=³QfƒÍ›˜™Ïþ("‰¤ %ˆe �*cA¦Œ™*¤1±ös•Úv¬©m�®Ëã‰}4m¢&¡ôÜm“å«�‚;:B`$29(“Òˆ þ<Ó*®S�d»ÿ�‘ ¥¸Çß®‹6>æRÆ`ø`j{õ�©J1^eÐ ŸenÙ™rƒµþU­©ûu­¹«ÞlUט¬ 5fk‚Á qä±­èm±•¿u‘È ƒA*:Fפ·®‘ñœØ3”«? ¢ˆ%æÔV]ÿð$F**‹“‰ 42qîí ÒMé*ñ¿¾Âc¨ ¨K¼\”ݶŽl5ÚMÈ_Ïö²†÷:šHºuúlA|Ãæ‡„NH¤=Ô6Nêüš)Œ`ì[øÔÁ»>Ù••\ÁDpq_þóÛ™V‹%"»ÿa¼ƒrjXàü"¸¸Ï¯ÿ”ý´˜° œ_72®�ïÇÏÏô²Þ³ œ÷ÙbúÃH§¬ÙŒaÄòуh¸ïá3!QŒàÙr ÃXÜL„‚Å�ÁD(‚‰»<ïf3¡Þ�ÁDR¦ãd/W˜ûV,U&k2:—‰D:¢+©m“‰EÄX=½ÙgÛ4:3h fk¬Þb�Ó™¬ z3ÄÙÎãP·T†è¦JtWµÆ™,VÆ‘ȈºÿJP—`±ÈÑ5˜¼&õr\Ö~l¿ï¸®‹À$µýÐ^vkOvAFáD"°8wU¶ý6âÉßºŽŽÑu¥DT+4ˆ“h™$ûõˆúß,\ðëµñÀ‘ÈÅlµÊÌf�Ùc�£Ycùàh<²îr͇î×—t�G3„nÂÄ«°­¼X¬33_‘ƒ 6§CL�4¼‰òùîéò�„NO(A)ìMÙúùXÔ˜pys´EëD TP {K¶nv°‚Á *6¦*%g§¶�k!tZ„ÆCØ_œ©Æ“ša–‚ss$ðh÷ÞÂ>Wj¼Kˆ„`0\íâÆU0K4‹ÛEØ:3ÄÓ}°y¢ ¨ñ0k {L€kZ\ÕšÁlá§Õ ‰ûÍ®ñj¹*yyAˆâ"ìÿ­Üçï�†)Ü‘€=&pмõÞ°8R`„bëyùâõýåÚ]ã5 1x™T;òpù-¨6û¬MLŽ‘`Qc‚BÇTÔoFFÔXàX¡Á÷~˜½¿¼â­®ñq21Tq�¼�‡‘J;¤ÊøJã•T¥Ø±,t ËÍÚ_^-enÚÂnÆ`½/ †/Õ·)`+ðh©P£­Ö&Xؘ‚8›ex£AÜX­˜°eÑÿÎуÎÌÌ{Gº¸¾QeÎ2! [z×S@™Þó™U°­½\³jdå3<%KPÂÞ—g˜è-P}5vì˜Ð&A!†™1°õý¬ù�<ÃÓ/ìCù†Ç½j‘ˆ…� }$b€þ6qoc îHÍ’cÅb" Ôé¥Uœ,6Ò~æŠÖÜ«±Z²‹Çd,lLÄQ7V§JL´›Ã>þ·òïHóÚXؘˆ5‡1i »YmiWW%>Æc’‚Š Âž7i‚ëùÊo„H&ÂaR™¶ü˜öŸHòÚØcc"T™Æ­Ñš®–‰òøIMpÁÂÆD4¨ Ý,ù‚C¹‘âµý ;1†ágƒ cLPJÅP#t:…¶Õ–kñ C…'SÀ„7L¼öÌýåՑൠaïºi˜â-@:6vÂþóšn¡×8'މ˜xíHè�F-õ"tB0˜POmÊæfn&Àµâ˜¨aPýØœMÏk¿¶·ÜÎ^ 5ˆÊÍÚ#�r~RÃ/Xؘ¨b€Íko¥éµç(/ W¯�…�‰*$ ez©ÜÜ¿i¼d?©áŸÂ–ŠÃòc…Áø„IY{Õ©Ê­áèµ} »îu†‰@˜–µß;^yâå¶qmøI ?`ac¢&íÚyUæÖ<'‡s| ; Û/3÷ì„EB'ƒ1ú¦¡aÛû’šÀ‹uÛ � ¿„[§ŸÂŽ‘†Íß�Á0†‰×F.4>š•"ûo â\+މjÐì¦hêb:üïBõWY)ñÿá7EÜ -¨±ø\ˆƒ‰d:§ÉyípÉ’Ks«ÍaUÛ‡Áp Ó,ùüÃÚ¼9Yêt“0Ò¼*KØÕøa0\ƒúl˜,ôf5­4XÒΔšîk‘(ý�çd±FšWcn)t"0¡éŸÉlVÓ¯ÎTmx»[¼R*æ«i~•¥•ЉÀ`B¦Yò™ûÊkBµ¼--Ò™›ãE—O‚Ò‚âxè¨.÷Žl[Ç,2‘:öÆUÒ¢Šâ§Ç‚Jê:+Îþòb输@) -˜®ÿ…*ÓÞî¯ârž´?®é–èÍç|í�&1“˜Ä”æ®ã»þ“‘ÙJˆ>±Z‰�AÇþù‹3©™4Þql¶ô�–j•þ˜Ÿ ]ãë€eÈ8È7è cû/¦RxДÅRäp´�þïÍ“6ö6Õ„)²oy7úHx»·/O?‘Iî (ÂæTÔF8 úÀ9<÷Qqí=ƒ²&çÇ»—f@š<†¸ÑöáTlú1èi ’•bhž(ƒ³¥ô×ÿúñBõ7?^€oØfÍ}‰šä�CÚ¹�Ô)tâã]Ø9—Nñ÷‘íëq–Ü Î‚þzK|ðk…Ïð=_± ü—Ù©P?EB!Þø‰ a¨%D—êݹzFÏ!�>×:®GCµd/Ýg>?]½‘N¸*£%™nœ¼ ;ïÚþ"§¹èZ4á,èyß•Ãoª=ÿÀ{¿÷E�'ÂÀv1Q-p•LĸB ñÑ¿•{Ðþ¡ÛUµK–ùý‡;_fÌ2‰^Á]J#€x…òží8äÝb8s=°âÏô/K‰ýCýâàåÔQ-p$î#F(Ö1›ÛðûóÕß¾GÇ�Óä_Œjª|2д\¯4wm'Ùï/vÓ6% ö�¾Ûq>pF>”UÑë÷L—ï·W[»&rø|J‡ÀÕ[×@•ÉÄé»B™Ž©h"_µ ¼ˆ¡Àó O �<ÞDù¼J**É­2·e�ícñÝôê¦þÂaa‡!Z4…Uýº:λLÉ3Í^Sl9vÙ@T´ÕÑH`㛩 `Ï!ܹç8[–óý±¢Ã-�#.”™àJ»�ÛºË5²y®DgiB'vñ^¯N0±õíŽs²F;˜WØkÒeì[–§{ÜC\s|¬É»ôôÉm RbC êž½yTÁ%pªìx¶Ïw2l~`ôÌHuœs!èÃ+2ŠËh¶:žEq­nÛƒØ\>s/œ8}ášn©G†Üo8ÕÑ/¡É¾7zWÞð™=K+G†=vséÿF@ÝX¥ã\Mg�ÏnÒ’ØÖÜ€ÿì8eÑIÞ¬zF,ì…l¶ÒkÛ˜Cg�OÍ$*Ú¢±�.æ(0©¡™¢�󸱰CRÔ¡ê¡ý�Ò­Q‰aÛ¢4,n/|SÒòLÇù´Ô-œÆ�…¢¼¿^+t¢¢ÚÅZ ÔQ‡Æ¤‰¡†³¨Ù’mH„Ê::Î�?XØ!Æ’vC}»µRà”Î�YùD¶\-•�ÖD¿ßu4ðIàë’.ÄqšÔ³»ïªâPn¶×¯xóæÎ¢FüXÖÆ&%ޱ°CŒÚ6ç5þ—Gh`\ŸXÇùþe¶ÜAü°£Š·w^ë3 ’¶þÄ[üáHšTëU°9Æx‡¨K Òʪ›­µ¹#,l†­*€"cíÐÛ"¹Ìjn›M6…ÆÇŠaëÂ4¯÷ÑÐìWlbG ×eû›Çk©[hnZ´°Õ|ÍåZÇÔtHP(8MC8ñ{½¹Oî�ÿ~-¯�Ùl|âaÇ16C~*º‡´yµЇUÉ­°ŸXVìó>Ùí«ÇYŒ\»ße7ß�6î�í•°è±È/³À½sò½†;rÑ›ÉAV@�ÎS�§®¸>¿¨g_›°i�NŒHž®³‡ðÒþh®È‡æ©Ôÿö¼ Ûb+Sž=™©©þ@þIÚ£ãh‘Ô´ È”qþò@Ÿ$»g=u�ÞŽËÓ¡û+y`0ºŠæÐûŒ×§¢ |ÓQÌüO©Ëõ^­bQ#Ò|WŽ=³¢Øñ¡ÀÐe½‘¸[ÇÜ„»5§?Ï‹° Ník˜©,¹dï5•Öª{Ðß½½SZá�'%Ųwi:t{)�è †ð&¢A³  Tkö³ç´^ü¤„8ÜA o?šàòÜà1¶-Ãá½ÇØÊ篎džmÿzPOø¿Í»i…ÅØ¡*W¿_ØôV»lÅ`…©©[)Ÿå\ØåÙçÃVÔÎ�;ÉwtôP � –=“½Z*ˆ>Û¾Âù�Ú"Ùt´†Ø¥Iá§Y®Ya÷Æ+Ÿ•ÂÎé�S~ð¶†XØ4p΂» Û={n‘׊5Î…­+/â:JA0™ÍœÁ«þ ßÌõÒ*»§õæ¥éxÓØÏ<ûÕ|“K®€M¼aáVØà©�1T–�<.Á@ùì/n:¦p!¾¾¯åÃŽÅ®5êŸdþÁñf!üüzôV†±A#lºrN…)Þš¤¦¬0hÂ>Õó^NãCÞvûq¼úE©ÿÀüýN:¨žÞ¼w+æÍP× ìc–‡7më.E×ÐN_œ×§Â‘êú0.ñˆãW]KƒÖÜõñÊO8‰gâ¤g9‰'ÔhË®‹¡¯ç~mcˆûL½·¿ZìÏ_¬O¾ï»IŽŠ†ôåÊï?‰8——év@!kÊ�™š¤Ê3*®\¹Œ×„=7K˜O¹ã̬¯Ë`—-«ü÷;®Ùg$Ô‘¶ìðµß³}¼6:F÷Ry\G†í‹ÓA}«½¾]SÿãŽ1ÌX_ކŻŽc§ªHC{�EfA¬Ø{³hP„ݸqã`¼&ìAâcÂŒ1ñ.ç�Ø{ÄQU|­õQÆõå¡Ioßïµ<—ph²‰�hÆÔyããýŒRºÅÒw~1bÿý�Ô,4Ìkfïh41«|Ù£Ö»VÖ¸>ë«V›.¾²ð¨‰�IMƒŒ„­”J¡&Š&Aô†s¶ZH•zVš¾œ² Þ+ì“’™OX�»”†sš¾.bÿž] 7•hWþ¦…I÷©YÅGræáaÐè?kŠ#RðW®–Š,¬+Ó®ò¬WïžÐª^ Ô‹—>ãÞĽâÖxïÉÃ<…ê͹©2`a§©bzã‘Xl;�½ëïÝ)l4ɰpî7[+ƒÖ—µ�³i. wP÷Ž"�* 0Äv�SYÐz®¡Z²Ïù\!�Ê®iŠU^�HLŠw­G‡a'ìú ê �Ni¯I"ö�®ÜáŽZ)†í‹½×ô)ô>Óò¡JÇÝÒ—?-‰è!³väøéÀ£ljßhp ›óyšJrºO«8Zå¯Âæzz\yFÍ‘nC8‹kæ˜xÑó¹Š-;—Ô~Ö쪆Åk¸Y`YïNðÒ߇8‰KhN!§*°fJºÄHEetÆ�ÇÆPÃÄ¢°=§æAƒT)|?�Þލ}›ª�› ϶º=¬…}¦ÄÙ•�ÕìÏì¨i” 3LÐYB‘+9â?”,ìà«Í̦%jš!ƒÕ3h¯¨J ÛIœAˆ1 ‹àRnäÏg†2°[²Ù÷ߎ—‹sfe©3©îuH•{´Àðˆ¿8ÚÓX¹“ ;øhƒïµ«™–KQí5jšræ·7Ò =Ñ÷¤Ï­,�g]ˈ¨üñÁÞ'žpÿÀTT[¡ÿôäGÂùóÓîjXòS¼ü€Æö©Í¢kT¾ß“Wj/�öÏÌ€m7B{øçÅ2\f¸èÞÔöê–©J1ã)O$"‘ÑlµÊ˜>ç i“xéÎËå¦>\Eˆ¡O�zÙi4CÊCýbáë-®cµwŸÒ¹ˆ­ÛØvœÚ»(宂«ÒY=Æb�ë K¦v0‹Ot=ÿŸ½"íݵåĆxn¨Æoîƒä÷ûû‡ô€´À^¥�~‹@Ë$Ùúÿk®Îö} »iä¾ÊÚ"‘ˆQó„4Q!¾æ?˜�y“&0‰;"AÃzpÙ­µ¦ý�úd»‹šŠ%O$RzmT&w§Ï4{v™n6`»ÚŽ%•:êß]Q“dmÜ@yý'Ûu¶“Ï[ù Ë'k9Sjb$êy�5)*©(à1ËKºÇ_ÚÕk¾Ö›­Žž@©JÉÙ»(f2‰‹‘°1ÜRPT ©ÉuŠÃ½gÕ0M÷r°ó}:Ï»‹¿ï4ïeh hgŸ/ûÝ�?gŸ˜mzÎÖÒÏ~Ïí¤IãBÔÎŒi¦ü¿@ã@¾ÊAZ0,ùÄs°ký�¬ÆL;“Sl†zu$ŽóO'×�§WP÷dóæm½á.ê j¼„¤ÇâÇíW¬ÿ‹Ûµª¸bë úe2cÞŠ•‰ xLkyìí²à̱ÃþbhÓç�‡`ç/ß$îao¸°C39ì\’Nd·éx[w¯½ìé$xÉK/±7¾£ÝGÂ2¾^ÃÆ²ŽÃI)ìzÚ‘0­ýÒ@ñz@/äibŒè*ÝÀcžžìq —»Ãb±À/n‚î kf¦Àè·Ù-©ê.NT1æ.Ì_öz÷¶z#€âVQ¼W+¥¨ÉU�ñ�}v ë8¨à¢L�¸®eÖ{Œ,‡*Ò¹øF ÜѦœ;q”«ôD%ï}ò%!ìÆéRhœ&…+ùìz5ù¦ùÖ�Þ½m�W|?ˆ¨L°g¿Ï]¼ 9¹ìËç|r¶”~'›…ÝâC~$‹T"‚€æÙgûc¯8({ŠÊÛkf¥$"_â&¯_È1ÁÞ3zb ®ÍÐ0UBÞ9N¶(b¸;Ë^aöä+Œ*vƒ“,¸B"ÒÚ4ÃíˆÀTBRÜ�V¦¡g›×—Á_¥n'¿­ž”Øüq÷ì(,l€Ã®[ó¯ñU®¦ .è¢ |aë À‰°E"QD¬þ p%n4'Y *j¾+˸`ƒZðEÝâÃfGN„=çÃÿÀÏÜô†¹Å߯�' ½™w½î}%K_|õ²½}|»ÅpúÖXï;2eðþ³I�¬qí3~­À ϯ,†Ü[³¤>¿ÐÇ…õðGù®ûä«szþB³º ±Âf´‹Oa£Y’c|@ˆ¸XÚÑÆÖ5ß‚Baÿ(ö¼ ­g�w#ßO÷.ØýëjÞÞùŸÕkáѱ# ¶o*‡.1+Ò%ªkȨ̈�&p8wÃHëCñᯄ°ÙòÑsö�Ê‘'¡¸”}ó˜?27 èù+ ú�‡z-¸;>…}Õö‡'Ç/÷AŠš \}T˜Ð®e ÇñkÏ? ‹?ü”ówô}à!â£õÙ‹u{ÍÍoÙGO¹�ðb¬‘ž(aìµãÄÐå»§Ì~“õûùæpý�e§TùW<&…| »„Á´8±êx¨Òr3ÃF¨“‘V;ìP¥ânÆwØ”·�çGÃ7Ù‚†W’Ùi‰-JwF�Ío§²lÂä×zžÉo{t3åã½L8«uñ‚4{3û-LŽpu91߸�é»éŠ:˜•eMš·dýìßþæ%sbzG5½ ÊBŒ°jîêÕ% vðìÒ:¤_oظýo�ëÍ7„‹W\{Ì&Äk K‡v”á½Ñ©]8tì„ÿ€<±ä£Ï`ÚsOÁŽ%é´`pµÌ-“xHQ÷'ïöêÚ:+˜$)Ä—z™@„�°ÉÊ*„³—&¯Ï~é9—ëk>ûЖeNq„ÿÍÙбMí´Å(¼{\ÎløæSHLð\’fæÂ¥üìØ°i+LyêQˆ‹‘ùs-_½lo/ß¾g?TW6H„T]›é²%›¾·^Ô=ž³‰‚ §ÂVÇ'€¶œûZPgQÓ…5â³¥oC‹Û¨sT(nwqoÿù;�I©ÿiÞžñ ”–¿.aÀèGˆ,¹·1×B‘–(�Ö�ì¿ÿ9K–óþ>…RÐóý-Äa»§Â~eá ÎËÙî¢fS¦F¢6›ÍÄH*ªx{uí»ö×Κé,êSç.À3¯¾îò•'\u^á’ßoÍ_¬N(3–zŸ/ß›xëpkÞr‡ø·¬#[wªØÈzZ¾àBÔ$΢vçÑ1#ÂFÞÚgQ“i`“ƒàŠPw8ô,s&šzGÂî™®ø Ô„Í¥¨K(²Îù…Å�–bïHqGÓÚe~�½µåi:¼öæXüú4Ø÷^t{Yq“¢î=œÞôN\ÈM&=ÂÝ[#ˆ_qÓxÉ6oŠu¨C£÷‰&! *ÊJ8Hš+TeaºüEQþ6aûž½ìï}Y½�oö:J”óQ‘`îø„€&?`šÄ±æ×?¢Ê †~ËØ5Ì„ýòÛËykϾoPøm³×o�WnÜ �ò(—ÜÿÏYò¡]”Ä6éÃ8x> ¸~Ø^ ‹³�­F‚^ñ7“ÐaîG_³~6Ú¼5¯° kÌÐ"Q˜V1ä¡ÓS“á§Ï?"Χ¿ð +a{[bÖwõï m£ßÞlÈò6båóIA{/ªˆì;b|ÐÞ‡¢ëp8ãW±:“0Y-2Û�Wà:d Yr:ì?r ºvlG¿>å¹�6"\*®!�Q\Ñè­¼¸âŒ� ÷úUÎâs¯‰Ö¨ã B˾´/¦¾±Ðå]ÛÖþú�|Øq.d�x´ÂvÇ Æ†¼û™éó9/g?}ÚÞÙœ8þã»/ymª 4‰ 7þÞzwíDËe21ößÕðÔÑÝG=TèÒ—Ý2H&‹èE’·F„M—Òç¦Ïeä-·íÞý{Ú× ÿ}Ëv�ûh¨å྽ˆã…+>q¹7óíwáÕIOÁ°»z<×oäx0Maú í1,¸ûA¿kÕQr¶4l;�qBH yáÞÝ:{mf¢º�®õëÑ•è§ì êÞˆ&,¸|-›2.½Á@ŒyFMF…ÅžÍsï¬üŒØbU*hתì9èº4qŸÆ�X,&DŽáuB¢ÿ@^¸Î`5�HóÖZÂ.ª±@²’~“¢ß}#`ûo?3N�¿¶cªûî¢&ñ&j“ÙL)jgªª«=D�0›-Ćá�WÞ~ŸÕsl—½�$h ûh¡7ˆñЉ>÷ g%l &˜Š:½5Â!ìÛd›/”Ù×T`0¦û(SQkäâÈë¹t ‡°ûg*r-l‘­ jõQûŒÁpš¿ŒÉTG$¯g©ëò�œ�À!즉gÕ±FÛ¿›ŒY1æ~ø¼J†1t½5j§fÒ¤åÌc-b‡²z0L ]+¾ý†Žq9ƒáƒ@MÒ"QúGÉ Ixoî’Êd`2†Í<ë�yaÞ¯÷ÐÿLæ÷F¤V˜9ÃHبr‚©×~ýý/pvC›:©é.çÙZ3œa°¦?^m¯ná?Tøã"ìŠ÷äêŸ÷õw»9¤2lׯ`üÑoèH¸lóÈ.½åã¡. IDATC—¤ñ•¥ø,/‘‡.ÂÖ8æÂF+ô\EA#C}µlûX™kNU†,š:tÕU�¦¡HJз›¨Ó;¨›ðyˆÁY»Â`�SÅÞ›:L^Æ*Þšâ<ÐÞ¼•¹W¡ª ª sÀ¬çŠ[ŒbR@•R϶Յ¸ŒÆ¶­Èã„™èÑÑP®v&¤úŠS¡¬“Nl©­»ñúcUè+JÀX­µm•`ª©cÍ­}µÓ^Wfƒ,F~g+¡D$‰\aßd �ªÔ SÆÙöqö½2Îå\«¹:Ä’�73o$(Ä×gvT7:ÁÆÃâ÷5RNýíjÍ»B$FHd±bÃD/µS·ËP‰� �!ðvïºò¥Ñ(lLdmYow(óh3:j/«)Îo¨Í¹Ø†ó¿R¤¶é±Á×}ô{ˆ“‰ âd¢‚ÌXɑۤ[dbÀ H;ˆµ‘Z²m\$ä¯g'Dñœ’ÑC¦þ¾‚V�¼ö¤Ðéˆt¢·�#7öüö6ÿ„„°ÿz¶öÖ ‡„„°1Ñú�ßõÉ.Ü,Å#‚ {ßÛO: L¤!¸°Ë¯Ÿë(t0ÁçôKWÞ9î•IB§#RTØU¹WïòýḾsÝD,lþTØ»Þxä”�ïÇ`"Á³â˜èW¢ñ‡`ÂÆM\ &ìbuËc…W/µ£vÊšÍø«Fìøò£Çþ\÷�°wñ�˜(E0a—æÞ¸]¨wcø¥,7ç6¡Óí&l“^¯êÝ~ÁmáÁ•gÎ)ÏÏ�šÙ@C,l &ÁÂÆŠQW£–Å(µB§#ÒÀÂÆJY^N³”FÍþ:‘FXÛl4ÆHd²À–WÄ„$ey¹M±°¹',„]ž³iRfCÜý4)·yl¡Ó‰„…°ËrsšaaG&e¹7±°y <„�‡�Nt÷ØëV³Yj±X$ÛÞj±›om¶c«¹ö\“švUèôF"R«•›.ÛW*̽7eëæ]*7õã$B ƒ‰Ä"‘©M²lM§TÙW·ÅK7 �LxÃ:7¾)[?K¶n6—‰Á`0˜HÃbµJ�Æ¡ÍýžH$²Œ½M9¡}²ì;!Ò† ?;í%ÿTž/ª1ã1<  V«UüÃùêÿþpþK^{²eì�Û㥛„L&t¡í´­’×ö–›øL ƒÁD;ŸŸªÚH�lª|¶Kš|•�éÁ„´œ¶Ía‹±ÃÆ`0˜à²öRÍ'hCÇou��ëÐbh9m›Ã6ó� ƒÁxgÖþòJ´ïUW±lh£˜—…NFü:íÿž¯þ_0‚Á`0ÿ캩 m2‰¨ú­.šX¡Óƒ .~�ö‰"ãh¾!‰ Nfßb¤"‹ì×ÐÞ¶4* L#ö¶Í‚ŽÑÿn]GÿAáPx1ˆj�‰sbÈ…Ç5‘í‚äVüö0µá$xÍL„a±Öê�†zš'm�ýÄýšõÖEçëDœá½Å .ñÙÿcñ·s8ñ—¿Åb»é8&7Û5³mo4èmÌ–È]…Èh¶ª¦í-'þÀÅÝãÑgË"tš0üãÓiïºiଠ9Ä>uå à :(S .Òc¢ÃèÔl©Îù5È©4Û2¡íüÉ&Ì]ã5 1àÙ€#ŸN{ÃÕš¥�¾ E’ êÇI�ƒÁ`‚JbŒ˜Øš'zÿL^ךáB™)dœúìýåhÿf×xµ\ •B§Ã=¼Nu8¸A ŸÑc0Œ 4PKˆÍäȯT7àæõýåDi{I÷xÔú9 'xuÚ\Ó-$bì°1L´r[‚”ØHtf+ìÍ5€)ÈmìÓö–[$"‘qa7�<¨/Æð†W§½#G?�m¤Øac0L-1ôÏT8ÎKt8\`Ê»ÍV« uXk¬‘îžØ*¶WP^Šá ΫÇÓT¸ýƒÁ`|‘#vnªMVØ}SÏû;¯T˜z"ç=3KÓ0A.ºÎû 1¼@é´­öQP¬h›,cŸ ƒ‰2TR‘Ã�Ÿ/3ÁUžÛÂß>\q W™‡/”Nû@¾ái6‘¡±Õ ƒaÇí Rb3˜­¨‰’·÷�Uæs:iÒãd¢|Þ^„áJ§½7Ï0‰MdY©¸”�Á`0�"—ØKߨßÚ–lo"·u‡”N;¯ÊÜšMdñ Öµê ƒqMŠƒœ7ŸíÞ¨­{ú¾ Ó¢n^‡c¸�3#‰pÕ8ƒÁðÙî�zœ£žç\c±Z%¨º|I÷xü!q8sÚxÖ3 ƒá—¬T9¯UæØq‡>Nûl©é^6…‹Óþé‹�à䑎óžƒïƒ�Ã0E C²Ê|s¶žXœ…kpUyhãa˜cEƱl"Š•…~ælÞ¤ ×voú�Øæ­üF€a0 ;ÕWÀÑ#é̜ƋªÊgì¯Ð/ìªQø� 6Nûx±;1 & è�*ƒ‹e"¸ÌñØn³Å*ý@…öÍ.5§cÆÃi#c1�/·‰Á`0ÂÐ,A &+ZqŒ[Çm0[ãæÒÍë¤Næ4bL@pÒn‘ާ.Å`0Á@ˇ¢ÅHnVq[U^m´ÔyûˆöúÌŽêœFŒa�‹Óή4waI† �ÏÆ`0!iUGf[‰;¿š[Ç]¦·Ô÷ŸÊ3SÛǵà4b +\œö¦ëú7ØD’€'UÁ`0ÁAk?-(ªáÖqÔ˜›¯8Quhr›ØNœFŒaŒ‹Ó>Wf"TB0 8Rdp(ß ¥zn'a¹QiÊZv¼òøKmãÚr1†x,ƒÁD�Òä°?Ïnwn•¹Í¢£ÚËÓ;¨›p1†6§�SeéÀ&‚%Á`0¡F×t9ìÉ5@•‘[Ç]¢³4žH›?§“:�Óˆ1´p8í“ÅÆl"h¬ÁNƒÁ`B‘rØuS5&ngN«4ZRç¨(ŸßEÏiÄ¿8œöU­©;›p'4 ƒ ]zÕUÀß9zЙ¹uܶø43öUvÓ0žÛÇӾ¦5³rÚ ƒ mz×SÀÞ\*!s¯Ùj•áEF‚‹Ãi›,VÆóÌj且�Á`0á@÷ 9*0@)K{bÇ<ê=^';m ƒ :¥Êáx‘‘ó XÈqÏ«–‰r9�ã;mŒàÌܳN�Œ¨AßëÖ™û’šÀ‹uÛ �Œ �&`9W*‚kÏUŽXp¨âæ½�”ÓúÔ•¿Ãyä‚€œvvÚ vÜ‘(%¾ßÿ8�û÷«5K¶ÞÐÍšßY“Àyä<¹ ƒÁD#)J1ô«§€í9zÎãÖ™¬ñ¸�›§]c²& � ƒÁ´¬òà1°éºŽ—ø‘ãîSOñî½ c^ååQá´s«-m„NƒÁ`„9îm7ôÄòž\³3G?m¸ÔÍ v§]eÆNƒÁ`¢˜þ™ ¸Qi†Ó%F^âG¥î¶ÉòÕãoWŽååQá´ójÌ-…NƒÁ`„%3NBl|U—/2ŒAۼΚ•TTÄËK"»Ó®¶´bú`Œ×t`0L$‚ªË�Ñ:Ú¼Ä?ï`E!Ú/é�† q_'ÁN;¿ÊÌØiÇ…ÁlhU¥ÄFÒø¶f^ÃܸÌkZR3ñJvሕIaLj!ЪŽç(œU7.ÂÄS‡H&”i—"³ýWÆ[©1mo91=nï¦á´ÑÄïLŒ“…æ¿ñ‘më¼ÞkÕÖ{Ó}öù|$‡2þŽý‡óú. ¦¥Í9ï}7ÈÅþ3×Ïd6#6’ãÚ2ÈÚ·ÌVĄ¨Ô]n°À�<îÇt“ ön´½“¦žF&ºÉÛ‹Pc¶&Î?¤Í3[¬ŒDá³�õ8íPsÚÅyÙpõô¡“A ”±�)b M�»„N &BÕ¬!|;¸'å½kf»°Œ>Vyº=Sÿ}5Ä6Y·U'€qðǽJ³ îÜý;ÜÐUsžnLx/Î;§Ê §Šù騆xóPEÚgÄJN¼Ô6®-o/òÁû'*�äTš;ªA˜ÓI“nó“ù\¥‹$§:Õãúšª°qØ$F½®ž9 �ZôÛÀD) º¶‡©·á@ ¼ñ]£øÎß0Bçk§ŒV+ÅðËìHˆCœD ×û s ßïÐ6ØYÂù÷âÔ‹•[±ÎG ø+y£Mdé»Cªü۱͔x{Y-"²ºž æªÈã£Ú?"JÚçÿÙ#tXQœ{;m -ÖÞÓîiT�òÞòuZøï¶JNß§­±ÀÀ™µNY$ÁSê@›Æ2â|{§þ.á'Ÿ=^;Ïi0¡ Zw•¼QåÍÖlþÚ¼G �  KÅ"Ý«íÕ-¢«\¿‡K‡MòÖmö¬Žêú\ÆÉÚi‹CÇgƒWÛa"…DÇÜ·'Pw5™²ªvŸâ÷CéŽÕj…Ç—¹ŽÐyed<Œë£"ŽW4ïHl$_ä\†§Nj1Á "BΑ_mACºx}ŸÉb�Yx¤âŠó5¹DTu#åK�ÓdŸñúr”ë-™\Ç)-Ñ[p·f F@ê«cáø¸¡ ”J<îM£ß.„EܯÈ(K×–IÿvJXò¸½wúõšɉÊ2è°÷/°XñèžH%M%v8p“­Ìº;Wý(¸ÂöŽØŸ.UúÓ%øÔý^F¬äøÈ&ʉ Ô’}¼'Ä ®ê– móWñI/•›ûqƒñÏ�†uaݽԲ+(³Àˆ7 @g?ç¶íX dM®qœ7L•Âÿf¦€D Ð&.Lƒk'ÂÒšMÐôï Pdn�&8Hm6ï[Oár­Âö›>[j„2}ðF%äV™Û~øoåÞ ½�‚]7õS8uÚåî‹ï ¦–)íî„…Ý©×k>|ÁÏ~Pä‡k&è2¥¶s›J!†usR I-µD ýp ßíÀf8P†'ÉŠT4rtN£=UXc!z�)ü2«Á†U›¶$”´1˜ã³Ýàá;¨[�Ö쪆ÅkÊ)ï‹¶ð]•ðíÖJ¨ b‰¾ÚVÂ<˵sÛçSê@Û[�Ûöuäþ™Ó‡à³ì‹AKF8Ð2¡)J…ÿ€^0Û ïF«•¨–GC�V¢ýÛvlsr7öƒæ¦`µãU51sY=(«ü¶¾›dõ;î'/áõ´1˜@ŽgϨ» } õê¶s¾-‡?…NGÉÃ+2ÇOßG|äº:•†ƒ êÜö„[ç¶Ycà�îJâxÕ��ˆ�Ï܆ñj‚‘Ø< n!n#›TºsÐäÜÂ$ìÚs0�õÛßyƒ3b$µ"Ïš,L•r ì:©‡^­jÛÝ_ã#tèñ¿¿«ˆ­w«xïi{mÇÇwfA¥ f�?.pê0áÀ’‚�”×?.êBº¬"hi©0ÇÀªâ`…Ú*ýûãÿ…æ ï³ b§�Áø!)FqµÀ½ Öi_ͽñßtøû¤îž].H%Îg4¾;mLÀ¤1pØ7�ñ Y Uªeõ.o™‡_Ë[ïÐ^HÞ J±gSvÚŒÎ?R»*Ûª?¸�.4˜´¨/ƒGúǺ\;ô~zØfB ËÍD?r0ËÔÆ-àÝ+g„M&ä™–ºŠL±ðeI7ǵΪkÐ7ÎËò¾`ðÒªœ!­€G’ÒJÃß•Mý†Yi+ù¿’ºÍã:vÚŒÐZÔ$ŸýÅ.W,ºµPÀœ‡ %ž~3çåÎ|»µ Þ_¼ªB6Ü;§¶´½äövØich‘,­"œ7þ[ÚÉ«ÃFäš4°¯ª1t‹½â5 Iï¸K°¿º±Ï0OÕ¡ž;m ï̼¶ió¼ˆG[ˆuc¾ÅÅÞ÷;ŽÙxûoëÆr0›N_|ŽæÛêÙ—Ó”ðôO÷È€Xbsfï=Lþ¸„“øï餄WŒMÑŠJÛÎ<"nÿ»p•Q›/]„Íà<ø¢ž}¡U�Fqc"‡†²¢JÜg9}m LCžQß”vv¹ŽJü¨äï�0wÚV¨ÌφÌÔT¡šü“‚ΰçeR¨Ó�Hì9v4ÑDYë´œ‡"1edÏX˜ñ ç Ý^Êó¹Îµ; &$ÂÝY1¬Ó(Ým%yç’9ÓÞótWÁ¬±ž¾@ªèŸ_YN²�“ÿzPÆNƒ¡C/[鸩¢ˆ(qSñbÊPˆ˜e@Q§7¦%þ°sÚe×΀^[*t2"žš’|b#‘Èc ùöèZFô‡¶=Çg³{½vw¥ÓÞ·,�Øw{Ùæ¼½LáˆÚ¢¿µ•¨™r1×ﯫ€}gìÃX¼Uƒ¯ÝS W—Å 6ïgïUƒœæ—aÓ[ö s¥Î }§y¯MÐN ‹o-&âN ÿ¶ûϺÓi¯†Ëå¡ÝŒ� OêÊÊ;Y’kêB¾I u¤UÐN™ƒ&;cOØ8í‚ÓÀj ßñ°áŽÙ sÔ ¤µê.pj‚ØôŽã‡ß |Nl²4é<\‰dß{vç�Ú‘‘“=x^OL*‚&¡Ã†5ðÆwìjÚ5±Ï�f(ûfk%±9£Q‰á÷ù© ”{Ÿ¾8.FäÈô™–OÔ ´9ê c¡Y†çg¦²Æ ýgäƒÅÂÍ4ªoýXî(ÁŸ?(W~ÇI¼L¥EŸõ‹ÍÍ&Jª½¶5»c¶Š`iáÊ{›µÍÇÏÔÙ ñú 焾Ӷ}HòO ;o,Æä¼ëÜÖ¤ •ÿÀaÊ¢;Ú9Ž«tÜÎÏ�†+‘ä�6vØ¡Iñ…c]âžÖ¨…ãø®Ù¼½§¨ÂL8päpP{¯?t6?Ôóa‡h½p«#ZJ¼ÄÑsÛcÁ¥\~�èokà¾ÎöyËÏ=2ê~±†×÷a"ŸI á¨ÝÉ�ù^ô‡®Ã&ùWW72œ¶¡’}Ç ÿhó®�Õ"�1 ]Îk‚°þïç+i9홽múA›¼ÌÀ ÊeÜ®Ì÷ôÝjbÁºðí°óþ[æpÚ‰ ê% 1&�UáGkêÃM£:(oíÚþˆë‰ju>i§m11ú¯ë…œœ›<¤†÷ õêÕ:¼ÀÆ>áÀmjkÆ-æ}çAí•°ð1êNZÞøß {Ç4«ÕÞ‰Íä§zÛÆ�;±öMåðÙ‹uX=‹2Á˜Ä Ië~«ê~ר» ×OñþNLx�Ú¦ß- nk~5u+e±ÊlÛFÿ“’wÁ{…ýÁd¥7“Iç¶�vÚL¹~ýzH9lįë7ÀÄIÏ � Mº&¸öÒ¾�ÃoƤI†Ì§Ãùf!¬}ÝûØ`‘­½ÿVôü2 Ü;‡ºÍ¸ K§�¨–Àæ·èU�M.,„_fS§7Ž�!';Äe¥²Ë``"—«†$ø_™÷Q0¨ {lÂh ÷?B �Ùvþ5Tó/´ˆ©ÕßË)öÙÌÖ•·�ózO ¥IµðI˜$Ÿ ¢œvݺ‘Y¢Å�½]9Ž—ýÂÿ°!²ÄLéàÐ ÇBSŽú"-AìpXÛŽë`ÚöÏí™2˜x¯ïªlôêlVc°‚R!†­ Óhû:vÉO¾_ì8ïýj>üýug´`8îK¹&G纕ýºÂ¤íûy}&|8^“é?Œ®ž_§}¬¦lÒ¶p¹¶¡¢µ-SPÇ£mzxü æ õAD9m©T‚KµÖ(%®røn;¿óŒ{7�pwlh8ymÝœTÈLö=éMÿ¶1>ã§b×»¾3îÌÿ¾~Ý_íq½Zo�§V”Àg““(Ÿ{uT<¼ó“ÿvA¶Œ±•öÉ¿ý±M±ÓÆ8fs ¨jÜÔ}<Ä`µ•˜Oú��³vwÚˆ»hv& „ˆrÚL õá8FÃøMAê�¥?ûžï{ø|{oöI÷©áñÁô;ƒq�YÐþ¹¨½@AñgŽé­âÕi»3#«5,<üoÐÞ‡ m¦¦n%öhYÌ#5õ‰ã,åuPK˜ Ÿd;ÉJ D¬ÓÎÎÎ:  ‰ VÿÊaŽÒiÊÖO~ç·jü‹)ÞÛ[ØQE+Ž•¿i‰­Y]ü8�ùŒiLaZ­�fH#g|sçÁޱĺØ|á¼lçœÎm°ÓÆx ‘è �•½B‰„±+ÇGœÓÞ³g/œ8ÎmàjûÐf×!ŽãÍÿП�ˆ-*uõjfÊÅ›F¡ú«?pÎÏ}TìqýàûŽå-½Á¦ÚלêSGjxuÚî ‰Üݨüy5‡·÷a0|"I¨w=åµ#ÄXÔˆsÚ5Õ�¯Ä„‰>:Ç×¶¿ÎøJ¸¹íwŸfVE'¶yÛÙãâahßãQ|9ÝÎ/æB�6¾é½—8ʼ³¶VïdæhÑ�4E†À_&� žX^ì¨Ñøùž¾xjÓ Tg�Üj3Ûö5^æê÷ ù!€¡ñ›0 ’bÄ—§wPû_8›!ç´�N�æ¿CaøÄNÆkÚõt_Éc¿L$H%ÔÞ ÍWþò�ßhÞ¨Ÿ"…ìBïÛ«£<3ñc+£Í�«fxïç Ø{Ú³†¢¬Ê‰qÂ,»zü²k­EëäDø·/6Ê\©0ÃÅrÑñ2ÜQJE¼ÌÆÊi›9šäŸ/:wéLl F¦Õw�~»PÀ”<{O±qÍš™)Ðý•<Ê:Ò%0°ûå>ý?{w'UÕüLÇîl'K7ÒÝ!�€‚‚H)  âGˆ¤€‚H‡X(i!ŠtJ—t)Ívïìîô7÷-³;=ïΛ™=ÿß﹓÷]��3÷¾{ωÀªÑÁ¶_X„Ž~’9ƪ™0î%sûÌ«/àhÛ�‚7S5ð8Ë· @ˆøTö6:=Ò&SÆolö!·›V¹0G°ÚMƒì-S-'K¡Eh ŸYáØ–.šÆÁ÷Š·C`ÂÚªç!Ëòƒ6!äóA«wÓ7�2up#•Û̉uBE¿õ«")òJ.è(âƒS9Z½�µbõÕ‚„T–— ;—•ÌÙû0w¶£oŒËÖC¥ç¦êò ªÕ+¸Ým¦ë¨ZÔ”@—F2hZ] ÑÆ¬¹ë¹l"5³÷^È…½çs˜j\ó‡CËšìåÝžøU*½’ u*Š¡S})tj(…2!ìüÞ·©-±¸x.1]Ï,°[¿_ér%³Ÿ�gCÿ6yyݯ ~jmØîR{È<­ñ»ÐñX¨m¤Ôe›XÀSv)'�Ó®Œx)�d)uÒôÆŠJóÎf°6:n-^ÁV[E¹0Ò&7´‘÷T¦¢ÉýÌlçG`+G‡@ëçØ+0lY2\½ïøJò±_$ÛÝ63 Ù£èâ5Òr¬Üa}y¾†U%“«Ø#<�o<$%@])CúéOéA»¢Â¾²§È>ÙZêzyX{ô¬(›Ò¾Œx1­ö"^ÜK•dãwÜËYIël`‚v�„ÿ(M¥/gëÅEåp»^!—m¬Û²à6 ®˜¿5þœ[rõõ†J‹�Î_ƇßšO÷¹~b¨Óé>ÙØ„+)G­lKm’Ex¤D©¹•𮎶ÏÝQC“jy3‡_é~ÝãR{¥Ýé85¤«é^fS׿ME…àoª')¦u´xUË(ñ—ÓN¦;þ�¹ˆ¹Í[äá&h—ñ\t4hçÚ1²ùËepûÊ%'»†|ù¨lÍu'Ìé6°àæýx×¾…&¤épY9z˜þ]šÅ‚!ÎM[{µ\Ê…©ß® >±,ÚjŽñË¢˜$)lõ�ä7·„T*›³)�9Øví�¦ h7� ƒ&{v:ÜÆ/Æ÷üÂvǬ¨R« ;Å�g´í¤1XgR ÖCkúõ«"ü•Ú ìÀç�fQ«@æÂÖ¼s™±Æ?¯C‹Aæ·ôñ¡d~_–0¿®!þ}Gßhk�Üœwßð‰eû¨tøeF8OàóÓâ횺?¾ÔzÀž½)v�6ý,i51Ö8ªƒ:ͧUõ7öíƒ�°àGÛiG›U—Àÿ³<Âî<=ž)HÂ…7:N‹«ÕÞQRößWa×–õÐkà0®» Æ—’\|Z5¯E`€„ô+ô8hV…c üÝ€ ÚÁþGߨ·�1`#O÷ÚÛãaëÚ¼ËW þú8º³°ÍQÛOfÕûøÑBůC #!%S]gXîÛgcBAj9�9ô_�÷âÌ«aË’`J¿@xµ�Üìó/·–Ã_çsáÂ]ËSÔ¶FøMÇÇqö™P¼o�úå¤ÞjïCz'5T<!ãß vf|˜Ø IDAT”wM[êxж¥Û+ƒ`ϯ›Ùn!Ö<‰‹‡¶/½Çvleî‡ä•¶ì37'¹wÑÆ¿±ÖS‘†(òúvç‰~jº—¼[?haeÅxë÷ã@¥±0ý’W¨aîPóSõëÆ…@ó q%r4œZ B+¹S´:€ïÑ-ÅiÉì!AЫYáõñï?„aã=kºÙííV$æèáb"�Ñu˜LpgJCÿêT÷qϦÇy÷Ùn¸e§îÌqõüiøå›Ï;æµÑ`ë*«â² Ü5«U�¯–Ìgîoÿ0o5íºÏæ�söm%gd™S-FXØ»ÍL`®GOío9›™#†?ÏæÀ­ÇZ‹#þÓ+¢˜ö*E áç¶÷š÷ŸŸ÷\\+à ‘�'—™^†$ÿ�½Iç> Mמœ�ÿàch)%Ñú¨Y@„Ÿ�Çm#/æôô¸½ê4nΖÌþâ˜=æuZ§GÈ.7ïüË|°ÿôÕjˆŽÈ H$8®Û�e<Ü{©í·ÙÌñɰ`èÒÈr®k¹Â g¾t�‡©ñWµÛS£›‹¿³|{çG2³ù>ÿn#lݾ‹“¾Ø#8,ÆÏ]Âu7LКçóxº…-|.u¶»1�r!/‰ËN|°|,xo—]@ˆñêȱ̔äÑí[˜û£zø3G³ æS€Ò4}}ªñèÑDó^7?mmIfŽž¯'…C—û&vR6Ó#W¥0u´¹Ð¼¦>S¸N§ÓA‡—sÒG4iû<×](�ªÒÃÙx:Óá/T�Në#ù”J㥌G|ëK¤ )‰î_„PqdÁu¿9¨? ð óIú4E/ÎNp{vŸËabóÔp¨cû×–,¬[üµ­¢NÞPÁØ/é¦"µ¥øè¿ïˆ1�”ÌmŸìÕ¸�gm¬IЦ!ûb‡GmbÜœÅ8MŽ<Ê7›fŽÃ¿mŸÏ¤ï$bè’d¸ñ�Þök}šãûÀÐŽÜgöê=;bS¸Ë²´ddt¨[˜…îò�[ðî´�8ë�3¤2ó+öÝiÿ#•ÍÝ@Îñy9ó[pÿô1´‰¶Ý_„cýÎu72Ñ¡ï (?®[ÅÜß0)¯F3 Õˆ3¥.9ž ‹É€ }``{ö>'IF·Õ;3áÈ¢H�‰ML¡|cÐfíTvSÈùÌ6¸¢¼m¡A’§p�Öõëæ‘â¯^©"Ãkž¸´5zòmŠ­®tz±ŸÇí�Ÿ/ƒŠåb˜Ûãg΃ó—¯R9O÷Ží cë–púÂ?ðëQ9‡' ×Lwmø ÌuÇ~oý½`*ói|¾_µ*WÈKHFÝ¿�È�ù[©”Í5kã”p¨Y¶ð×–¤ç½º°xÑÒ_Ó™ƒmù™ÌŠNE“T«s7§Ã裡%*áø’(�ùò0oÙg°÷Èq·�ŸM\g;£°§7¨LaGÊãRÐ~”©…Ê�ìÖ{¾öü±õ{VÛtÖñß4¹¿òãY�–ž½†Ždíïûö.¸ßªi#xïíáðÛî}°ô˯Y;�' …px[a=c�@¿}÷%ÌYºöyÉïã&3?ó÷v÷m%cR«Zmc/´«Ì­Ü.°Ý¡ø^òÂ[Ýý©_ë/¾O¥VCçþÞ{9mè8ß Øxýš>—"îÝtöƒvÓv�<"h“‘¯9A�–÷Ä:C$4ÿ÷§VssÍ”¦.íÌg oÓ¼‰×í|dÔýò ݘ/Xĉ¥Q�–¥‡ÎÐYLi.`s5=?dqlœ\¸—;ÿZ?­þÿ³÷4²”îݳM*5¹›Ç€íÝ<êšv¾ž¯ 3îõœö�ÏcqÞߊ_­gŽÎm[1£ì“ç/y]+­¶ý¹‡9þº‘ùò䟗µlÌg)pæ6{[ŸÆ½Tò‹"™–æÊÍG&3[µb«ØÉ´u.‹¹Å׎ …ÆU 3½ý}öLûxkíseÊ"óɦh#;÷?b?`óx<ý§-°N³›üÖ‘¿xƒÁàp¤Rj à'b÷ VÓv9Úî¶ÿØ æ@Þ§ã+C ( vnXÇÜÏ/šÁÖÈsÕŽ Xý{¦1x+à^œÖ­×�-ÉO¥úRK9ä¨ °÷Bkm‡(°w¾iâo\hfI&Å­žd9c?`‹¼¬�›(XoYT´Éj¿Sqª·màa¦j…°?`ï5h8ìÚüëíºCÓõ`ùÜ÷ó÷ýZ²ãûµ\x½Ž,z"I>,øpä·-&�‘"*Uá”:ioËš —•¬Mœoí†-°áçíVÿ,–”�Ž‚o–/?¹åöO�¿“æ|âTûÞ&-#ƒù¼|îLhR?o꓌º�]UÁ{ë\_hGþ ­Ün¾.7—vœd÷ Ä©åÑ ,2f{ö'pæâ?¬žƒ+\lRFùèö“ÞŠùOf4Q”e½adUA´íRN2Ç™ —M'h7ió¼×ínÚ¬‰ÿ+ñ8Y1=úõA°æ‡’T>zœIÀ&Èö¢Ïα¸ç´xÀ&ü¼Ú¼8¶¯_a!ö%Õx{è@æ È{íA`Ù[Ä Eã‹ùȺë·îØõ>oöÞ‡3?󪵭#a‚wÇiñ�aGyÍÒª_?˜öjáerÍš\»ö®ææ³Œ”P>ö”ý€ã'¸8¾¾#ÖF6D[…ˆçÔ\ž†bjÇÞÆÑöN/ܵkTƒµ‹?¶øü”¹ŸÂ‰sÌ>W·–ùB7aÁŽg³*¾Ú==#ví;:�ž  Õ«T²ú^k�{Ü[oÀ«/¾`õüäúîîG@&•2‹Ëо¾o�.ÌQZ�Qw‡VÍaÞÔ÷˜ûF‚JC*nq³xÌ“•(�Ùo(¨5ÞQóÚ¬¾Àý—|³�û8…€])@xü�:~mYoÙÅdˆ æÇf¨õSô›¤øóä ÂlY²dêÇ‹àï3çÝØ#ËSñë6æ�ü"ÂBaÛ·_˜}ï™SÌ.ôéݵ£Å€��” /�Sâñ W®Áª¯óvÌ�2:¶ii÷ŸÁW>qšùñ×–ï˜ËQ^€úpC:üy–ûëÒ\Û25Üd1ÛîƒG`ÁJË¿OÞèõñÓ ˆ~:ÙâÈZ£¿cÙØU…GÕöëÄzÃÈn&A»u´xÕî¹u²÷à°sÓ·\wÄD"f¦£-é=t$¤¦ssýÑÖ‚d-y®zU³�OýŸù«&ñ‰ÉðÊ›%vq.Z·ÿ½£ßd󵾨ûÀá •H`ßOÏ¾Ä d®¶lq­\¸~›eZÚÓWšÕ½ÿ¨\ã9·Ÿ7˰OPØ5‚E½YKÞƒõ†‘CL‚v›hÉjg‚v®ÖR!�-z�[wð¸ m-`o¼ú2³�ËÝví;d×ëÈžf ë—x<$È| gKì Øù6þº£Ôm"W¥bÓœÉã fȨûê} [Æi‘=·:»2Š.‰5i&ܸs—»QÒ¨U{hñ|W·Ÿ7Cm€SqììZÁ¢?†×’÷b½aä0“ -âƒÒ™FrôP^AïšÍKCß‚¼';X¿Þ=àÅn�¡c¿!n=ïã§ö�Ü22³ìn³r…òÎv™ñÑâ•ÌAJ’}u*Š˜à�’©‡®3|³Ê]x vÏ3Ý›�hu‡„7‹©X^ò¦ÛÏK«´&lÏÂʲïDÊA»aËv´Ûõz½¾Ä0B,Ù\ÜŶ´ŒLÖÛüïÁCÖÛDyÿvjV­ _-]ÀÜQðÍf=óEäÏn PUÊ�lg#§¸¿ÒX¬RW’Ù_¼W+D´kxMyoÛ¯DîÂJÐNÎÕÿ+b£)‹ú¿õ?øùëϨžÃ^Å1¹¿é‹eP¡lL‰×’À=jÒ ¸~Û÷¦÷l]Ý^f×k{vöŒºÁžäæÝÿ ®å’K*o ~•ãÑAV‚O›¿Î^¼ÌuW¨âñùœd;»—¡…;iì—H}.D´sXMù‹¬7Œ\R"h‡Éw’rtÕ¸èŒ5µ5ƒŸ¹î„ƒÇL„Wzv/ÈE]Ôº%óáâÕë0öƒ9ôÌu¤4%©)]Y}xÛfèð²õkÕä:n§¶­huÏ'|ÿÓ6æ@Þë£ÏÖ»ýœ—’4��­c½]cÀþݰ_b½aä²A»V°ð�c9º \tÆ–Áï¾›>_Êu7,"%5÷9»7—\8×°ÎsptûVh×ÇûVÉju:f4ÙºTœP((¸<��“ÇÏœg®™“…nåcJÇt/B\d;;üDjû—j‡ˆv¼QSÞ‡õ†+Jmò ëØS•ÃA›¤3¥y]›¨V»äŠgZ._¿éÔû2³”Ìt¹¹ëÜ|>ztlÏìGÍwáÊux¡Sû¯}d碲¢ÇÆÙõ:rÎÎf*nݸó¯Å÷� UäÏõõ²O˜k±æ�”©]Û·1ûÜÀÑ@$Á«—xîî½ûvõ!OÄEÀ¦U©«~˜øÇÁÕeÞ7²(EJí*ûö s3UC=h£¦Í�u é/ô ð—�»™•àù©¥MÜŒ c˜ �ïîý&›X°ò &+Z¹2…£Ò{YÍÙMÚ&£vò% ß—ë7Á¥«×íêÛï{öC«& ™¬eùHPùþ6ßûÖÄéÌO±1ÿôÕj«)S—|ù5lß½Ïä1’δhf´¸„D§óŸ#Ä5wlZ…?ˆ¶e$Ë{W”N¤Ò8b�G–æ´¦LùJÆ`ÅgVmÓ–_6ÓYóW|Á¶�Q¨£\�f' ƒ\Aõ6Úá÷-5rr äí¦/[ëÖóÑš'zV”Mn_F¼„JãˆU¬틉hNw9ñágëaö˜×©Ÿ!„ÌygÆÇ ‘Z®pǦë)xœÅþb³|Ckúõ«"ü•Ú «Ìm‘€—­ÑäŽ6–˜CëW>’ÀàÉ}Ë×`Bˆ†—‡�†ÈúI‡NÅ©!CMwFqF“€r�bÞcª'A¬2´;ÆHîy˜;×™Ÿ*uPÆ�þµm’ÀGÛ!wjÓ­ÔkJoû"­¼áæ|Ú*PÀÀz±^ÆlÐ~¾¬ägƒöÕd�[‚6ѱ÷+pp'Îê „è«^§t~‰ý8´ò…[³¨U �bˆ:³A›àRz�ËÆÀ]/”þ4y»/aÐFQƒÆ°·°útœÒ)O}›#ð2æ6p¬2ò(¢5 o¼�¨vªâE™"— LÆw¾gv"[.pš!D‹P$†ñs�_XMV|ÿm ÒJ+¿íõReÙ¸ÖQâÕœv¹ÌbÐ~­šl¨³A›0¾üE|h-v¶ »½1~|¿r!õó „JŸ™+íߢH w\OÑ‚Îà ¢àt¸ï°ºåKÈçåjõ©³�giôLæž²þ’iÍÙflªTã9hÙ©œ<°›Ú9B¥�¹ä)ɹz¦@í•Ýlh#YÚ«‚t×ý@ì±´'Ô÷o¼äbæ5WOBößg(ò!ÆŸaR(Ä® ìöÊ@�.¿oüÆå¶B¨Õ´uÔÒ…ÒF¶íÎoàÇu?û¬íß¾¼˜NÈÖ’o«ÆÃµ5o¦Ê67þ¢5·ë¥:�TéIÆ#9ïÈL}vÛøXF ¨³ÒjªçºˆvO§�ë$¸BÈý„‹· ª&Äu?÷ºB÷ÁǪ=Ìý˜V‡B¨´ë#YüBé®û�<�à :–•Ì'‡JŠ�Ng¤âµn„rN°”`5ù�Š Áß\÷y§WJø�imµâ¥®ñõmïë)š�·:{„ò6dñn…àd½0ÑO ÃD[äB^×}B¾�Ú�?Áyrt)'™Më´ü5º-^»GÈGt_s ÷-#Ÿ�ûúŠ9<µï®û€bùŽ�ù ÚE\Û¼dMnz’çe[A¹dÿ„n�Wì ູ ƒö3I×Ït{ttÇÛ\÷!Ä>mn¶âÚ¦ÅkkžŒ¿ãÈ«aÐ6ÒkÕÒs«Þÿ‹ë~ „èytì÷QåÚ½´6 \õ \÷!gaÐ6Úû¿N9\÷!D߉ùožÇëÛÈ›•ú �+Å*]paòf¥:hïŸÐ-�ë> „Üoÿ{ÝÓ:/ÿ+ˆë~ ä¨R´/®™±M››�«I*…´9ÊÀ?®X]kÀ„±\÷!G”Ê ýôôÞ!ñ—Žöåº!î<8ôëÿâSr;¼3íu®û‚�½J]ÐÖ(3B/7o×ý@q/÷Ÿ?†`ÐFÞ£Ôm‘_@ò(÷(39±ÛmOøy.nAˆ’¿V-ÜxóØ�Ál·Û�í¢¨Ôm‚FÀFÑ•û¸:×}@ˆk¥2h#„¼OÚS ÚaÐFyU¶2�ë> Ä5 Ú!„�—À �*Õ2“*(Â"pÝ„ì�A!Tª¥Å>©ŠAy Ú,R¦¥Dû…ÄrÝ„�ýÒãŸV)W·á®û��=J]ÐV)³‚iµ�û´*m„¼KZÜÓª\÷!{•º �JqÛHZÜ“ªejÕ9F«}„ûÈô8×}@È^Bƒ�^eJcËü„}­4•¾¼Jgð×êAªÒçýäèù<Ð ŒŸÇÓò™ŸùO+ãs|P“v4Æ×ë !y9t�w[§7ˆuoKtƒX›w›y<ï¶AJž×éA¬1o’בöò7Þ6˜´CÎ# ö‚�‡0þŽéòÉÁã‘Û<-yŒüNæ?WôñüûäwÓÜãÌOàéùmŸË<ÿµùïÏ{O_¢�×.¿°ºÂsðôüb}¯È¹MûœßÏüÇÉï¸Æø™�ÿ9¢5äÿÞ3�I˜ŸäsáÙcæuy¯×@H>CÈmÒ–�¹"/—ÏM ˜ÿ$PÌ3üÇaRþÝr Áã9u\ÿ?F¾‡•Q6 Ì«fz¬šjü…�±Ñ&Bˆžg_LÆà$*|ËÊÓ!Üh.ÚжŒd¹�¹\÷y/—ö­4m�o®+ÿd«3!äk²uµv?Ð-Øý w¹$á?zµª|xÕ@.zCq*`“)£™§32ÉT2ÛB!_–¦Ò—[w-k?¹]5Hx`D-¿^8òFöp8`'æêk,¾�y“FgB¨4¹›¦íôÁÉôœ@ ÿñ´FŠ*^Þº„Ìq(`+µ†p Ö!Ä®t•¾ìô“éªP©àß©�üqå:2Ë¡€=çLF­Ž „Pi—œ««2åDºa@5ù°Æá¢ï¹îò,v쥗²®ÑìB¡¨Öåý¤Y>Øì¼—³Œl¹íWE6’ë¾ ú¬ìËÉš~lŸ0H‡šÁ"cTDÈ ¾€šüÊ9òû盿«Yj¤©õ$-¨ñ§”ï\Çu&^ýVŠJ_iÔs~�¹î ¢ËjÀ6~;å³u¢ÊBR™†­æBÈ%þÆAƒ¿XeýK.Ó!#ô„=Ä*u�ªòü@NŠˆ|~Uù÷»uüZsÝD�["hçrRœfFy ±€Çò¢Á\c â²tð C:œj�¡mõÅUåñ1uüÚpÝD‡Å€}?SÇÊ7µ®å¥l4ƒBœƒxÕ@!sÙÜLÓBRŽŽãžºŸ¡mýåUåÑwêøµãº/ˆ}6¹.âjã]Êa°Fù&¹ˆ�ÂEÆ["fÁÛ•d Ägs¼ïehÛbÐöMöÕM_W®**XÙ‰B¾Œ\ò«–¼•Æ‘÷ùD5äj¹›6'A{ó�œÍƒªÉqÖ Ä:‹Ûø�-Е†£ý0ß B¨ôñ3Ž¼Û•‘0·/%i �£Q÷¥DõÀh9ÿòó1’…œt±ŽÊ¢³úabÍ"„�WiðlÔ};MK®/»ýü»ä~%\­,Üåö“#ÖQ Ø‘rÖvƒ!„�׫$dŽ›©Zx˜éÞÀýÝ åÎI µ#düën=1b�Ù€�¢ÒWv¶A…ƒ5B™S3XÈǪݚ¨eÉÅÌk [Šù<Ð¸í¤ˆuföéºöÎ6X'Dä|oB¨h-f¶…�U¹íœÓN¦«µ Ä¥À^ÌlÀ~œ¥kâlƒ L9ŠB6‘ma$OÅ™x5¤¹)›Úܳ™ñ6UDºådˆufö£,]Sww!„J£f‘b&`“ÀM[–F±évÎ�ƒ«ËP?b�Ù€ýD©kèLcÁ¼~�BŽ"E‘H çý�r©ŸëŸ$õ«íˈ—”õœ¥~2Ä*³[o08µzÜ\}„B¶‘ä+dŠüГ·œ¦U—³ÎàõlïÃê¶®H9l„rÅó1·\ׯëÙÞ‡Õ€�¹BÈuäºö… $åÒË’F®gŸˆS¿Û*Jü9µ“ Va�j„ò@�"Dp) �b5°íÿå|†Û{”ØZ8Ub‹Ô�E!Äžá"8g€ 5½éqœ÷%¶³{°Ãe¸B!„ØÖ"J ‡Ÿ¨@Mi!™�ÏÖ׉”ó¯R9bM‰€ý$K×È™†Âe¸à !„hè#�½émùZz)ó ®÷|%v\¶®Ž3 …Iq„�B´ÐÞ§};]Ûµz p/µ —™ Øz§6®G!zÈgl“1œK “íëkÊ=8Êöl¬�°BÑ"åC€˜OmÚ£,]órþ‚ÓTG.+°U:ƒ‚‹Ž „²�,B£u=û³+ÊŸ¶ ÀIªTíþ}õøùëÕ QçM)†„Âã§CHxÇ=C!ûµŠ’À‰8öKs ~B޾V„ŒƒõÆ‘ËX ØB/¸€½sówpþø!“ÇÒS’aÕG“àÍI³ \åjõ !„ã/æ�\ȇl-ûSãË.e]^Ø2@ÄzÃÈe¬ì/¨�ýï Ë[ És°BÞ¤M:Sã¤øSšÚP>HÌ{ÈzãÈ%¬ì@1néB!w‹ñ�rȬ·»øBæÍù-ä¬7Œ\‚!„¼TíP•€­ÑdÙZC˜\ÈKb½qä4“€�˜«¯áL#Þ0%ŽB¾¨R€îehYowá…Ì»s›±Þ0ršIÀv6�¸Tˆ!„¸P-ˆNÀÎÕÕzðó!‹õÆ‘SLöÃL]s®:‚BÈ91þR‚õv?½�ygVE4ë #§˜ì, Ø!ämj‡ˆ¨ìLµ>Jg`ª'ÓɇŠb°�­Ô…Bˆ[Q~ˆ£±bübæ�i�UXo9Ì$`“ýw\u!„�óê…Š¨ì”\}eC^í: Ì‘Ý0@#„��— 1‡ý ½üŸ¬Këû×c½aä—6®G!ÏÐ0\{²°�#÷º¬7ŠV° NUhQˆ0i By R‚3%—ýÙëÕ—•gÆÖókÆzÃÈnûnº¶£3 ø‹p„�Bž¢I�ã�²´M�?Ⱦ�õÆ‘] ö�4mgP`–3„ò(�>¤«Øe/¹˜u}RCÿZ¬7ŒìR°o¥i»:ÓæG!ÏÒ<’Î(;!GWSoŸÖG6ì¸l½S‹ d¸è !„<“STÍþ(û“ ™ÿÍh¬(ÇzÃȦÂEg•BÈG´0޲÷?b”�®Ò—ÕèÁOÄ%ë�#«p6Bù ’éDnŒªÙöGÙóÏe>œÝLÊzÃÈ* Ø!ä£ZEÑegkõ!X/Ûý\ ØB>^¿F!OE>¢Ir«\-û;±æŸÏ|0¿y€ë #‹\ Ø¡R¼ì�Bž¬u´Pektyb޾f¸Œ“õÆ‘Y°Bȇ ȵl!ŸLc³Þ6©äµ¨U Nµº l„òq­¢é\Ë&Î&hF4�}K¥qd‚ ØJ�!™7ãl„ò|äZ6Ir•Na_öÏw³¿iˆÛ ˜€�©1DrÝ„Bô4�¢“ýŒØz'gÃkÕdC©4Ž 0;K£Ç€�B>ŽV½ì ‰ê!¯V“ çhYoÀ6B•´êe³Og$ÏmH¥qÄÈa«1`#„Piã'€'Jöõ³ § IDATƒv®Îð_†®CåÁaÖGŒü)q§�!Ć^;~æº ¥†:†)×½ð,ûê¼Âuܪv¨ˆJÀ&Ö\Í:„Û¼èÁ)q„*ej‹àF*� ™k¯)¾]Û¯#•ÆK¹g#lÇ6Ÿ‡_¢BÈ•S¨ìӵϧ« åżGTNPŠ=a;¾J\,`¿3!„Ü£U´N΍´=ÿ\ÆCœgŸÓ‹ÎÄXø!„¼–¿ˆ"�ä§Òþ÷7³·¿QSÞ‡Jã¥Tþ”¸Ã‹Î$ Ø!äÍ:”‘À>J)K¯¥h^JÊÕW “òïP9A)Äl�Á rô�8%ŽBÞ�,Eª ƒL:ùN]ȼ�SãìqºøN‰#„�÷«L/`óÎeÆÎj¢ˆ¦v‚RÄé€�Sâ!äÚ•‘Àѧt eªõQGŸªßoWF¼”Ê JçGØ8%ŽB>A*äA¨TɹtªìºŸ³¤^˜èç 1ï!•”8%ŽBGÐË3N,8—ñ¯g»§ÄB1Ú–‘À1JSãÄ´“Ú…-œŽ;¥� #l6»�Bˆk2!�ZqBo0]Ⱥ3¥‘5*'ðqNlްBÈç�â ±Ùz\©´Ÿ”««ºæšòðèÚ~¨œÀ‡áÔB!�ËI`ïC: UˆÿÒµí·ÜÉÙ8°šlµ“ø Ø!„Jh%�“qô®g_LT‘ðïw+/™Ií$>ƧvÂãÿ n—)Á!�f_'òL^Ë6™ŸÁáÔÚGÈ–‘µ«ÁªöÍJ<ž¡ÓB×sáLZ2½BžL!æAÕ@!ÜM§—TåÀã܃AÚ«‚tµ“ø¡Ö>UÎ>G™ 7ÎC±ë/UªU¶ú¾G·/Óì#4ªT|®1õó ”oaëF0¾~-‹Ï„pªyWæv—s‡à@rœ»º†¼@ecÀNÈÑC†ZOíGŸ¨ÞOÌÑ×^SÞ›ÚI\�œ«¯z3MÛ#![oùé™QâµÑrþ?´ú"Tj >3ôû÷òiHKŠåº%Ç=‚Üì,¨Ù¤=×]A>îëN­`p�J½g_“癟£®�…¯ߥÑ-ä…ŒA>V�VOgq#EÓkÙ?Y—'Ö÷¯Gí$Úy?wÙ±§ª÷yÏÉ8Õ; ÃÅ›V“ ¦Ñ'a–Fïp¥.O¤Q«<:XçSf¤ÂõÓá¹æ¹î òA¿÷î]Ê™OÛ|øŠ VïÈ€ Z‹xТ†&ô €òá¦i ×ÕnÊ“o_‚¥÷n¸£ÛÈÃu,+�ý�TÔVŽqJ]Ý™§32?n  v;è ™~2ÝéwÕƒº–—|*áÿËf¿¡3¥5=Ñå㻹î‚Ýr”\wù˜S¯¾õÂÍ>7{S:ì:�mò˜Zc€£Ws™ƒ˜÷zôh"3yÍâê ˜ãóGw`ìõst:޼í•ã„ZgðŸr"Ý0¥‘¢F˜”›êÉÌPé `ÖéôtWÛYz1ëê‚2Û¯tŒOì¸nÿÿê²›çŽàÔ8r‰L(„+ƒ{CŒŸÜìóc¿L�“7ì[å;ë‡4æ˜ør êàgòÜ»åª1ǦØ0ôò —û�¼W×òRêA›Xt!óV«hÉç}*IÿGýdE°¬ ­Þ Õê�¿¢|Èa£½|>°Ÿü{�ë.8ŒL�#䌱þ{£/ø‰Jnò0~HÀ« áa‚s+{—mË`Ž]ýaL/Ó™ÉÁјãHj<æ€Sí#ïG‚ö�Ç*ÐQ¼¦MœˆU½{2NýÎÌ&Š…ˆG}5äâ‹Y7Ùloãíì­ÃjÊ_b³MŸ¹†í�´5Eb®»�¼DÍ�@ø»_� K–ÊËV ï¼DHÎ`'¥ä·{³˜ã¥–r˜5Ðt;dûàÐwÿd¦A³S{@£§·‚y¦NeórŽçhémƒÁÀŸw6#¶ŒŸàÒ„úþ iž+1GWƒÍö®§h^d³=§V‰{›Ô„§S‘ën ×,2 ޼ÒÍìsIz&Pç¨èÍ'³™£m),ez�¼¾"T]@¢FÕŽî„ ­†J�g"…Bn¦jáa&½}Úùž*u ȵíQ’µ/W–Žf»ý4•¡ÛmÒ LUéË;ü&*­‰SËÈWõ®T~êÑÎìs÷tðÚ'‰ ÕÑáä;v5šŒ‹…eE°iJ˜Ésá" ¤uêÇ$a©qlÄ«X½l‡wùžÞ\‘\"1�»Üz¬awT°~™RqágIÂÛ¡¨ zhqj/\Â/Ó¥‚\Äc®ky¢•›¾@ÞËж�v2]Mn×íè[E6&@Ä{ê–“;àïXõXVvšÊàðKk"ľ©�ëÀìæõÍ>wè² &�âæY—ªƒ6“â@&á3�;2¨ðCAÌãÃ…–Ý™Ûí΀㩠\u¹Qû (5c�rï êZŠæ%r�Ûb~lŸÊ²wë„sk',x”¥5ÿÍÛIBrQßÑ7I3â&Ȩûßtgë/”}Ø�G¹n/埭¯)ç_e£-§¶6Bòùðw¿îPÏBúÐß§Ážó¾µºzΦ4æûb¼ÑÙ4{Ú”Šµ˜cíã»ðε³õ¹Sþ¨›HUéáFŠ–¬Îæ¸Wô=ÈÔµä4`Ëñ6Bv!ÙÈ®y "dæ«ØŽù,ÎÜöí�«Ï`Ž7:ûƒ·iö´·ËVeŽ?“b¡×ùÃÜt¹]°„­¢ó’FéŒ1ûvš–,Ðâ¸WtËžV�dO›E¿ãT”ú�²s&{Z¥#; UÃÝJcäùDäÍe•ü¢\çÖjww§¸ Ìë0ÛÙ7§oŸú…¬ñ€õ�ýVÇ€�� †Ö¬ë:¶0ûÜ¿±Z¼(ÉméCm!‹¿Š’Kx ñ˜ÚØ\"—šŽ�…˜P!ü:+„E2C�ìiÉ_¥N OJïÙê†[rÎÿ8L\þ>l„œðv�ê°ÂBúÐ wÕ0jU²›{d[£ª%+Ã51>vÂΚٴ=IÖB‹ ±äLJm³" @^8Zòàv›^Lö‹Æ'ÿ‚0í)*e2÷/ž�!T TÀÕÁæ«æí>— ³~ðÜ@rý¡êV4]÷ ��rœlJSê¡ã´8&Où¶™Q$í)¹u±ewÈÕëA¾ïGî:‰0`#d§c`Û J<¾ù°–mËp‡tê¦ ´“›\¬h*c�Z d¶yÄòd¸rßõQw­òbˆ âáˮÕäÞxHYðwPÕ_¢Çÿ-O8c×ë0`#6MŽ8›S›ÀcMPÁcRžƆ5†qóÿŽ1`#dA§PóÛ?œ1 ½L~%¯¼åœ!�°ýd|¼%Í©¶FõPÖúf/²Xþ»‰¡ Öt�Y9Î�¸�-‰™¸ðKZ·™ �œá\.çk¼gÊy·ê’¸­Š°ø|�€ë·9(ØÆ`¦¯Øe¨“Ÿ@ÙˉžLŸúâ�‡§ˆ$ ˆ®’€®»Â©9UëܾûÔµgùÁ:_Ÿ–2Qðaâ:û“°ûóaß‚HÛ/¤LlüÔ8üi$½ªr¨ÿÄÙ•ÑÀ+6¡²rt Y”ÈJßÚÅûõ$ž•¶*ªOàeX•Ør ¢ÏE 3 ®”þg¹W쬸 LzÂu7|–N£‚´‡7™Û$h•¯Éq�¸Ñ*(¬à6�j\íêH`õ;!veN›Ð'†tôc½® ý')BÛMŽ/±bÛœSËKk"5˵kã·Ÿh¡zLÞGÙÔÆu0`#jÆ…�›¹‘ðgfmÐø ç«™ç‘B÷äg𪀭×i ñÆY®»Qª¨2R þê ©RD2÷OÃzŠ3·]Ûî´èç ˜Ò? Äã-kI`•1h[«úõ×Ç‘`9+’%*aíî,È1Ó2¡Bøý£’û°‰&ãb™ŸUˈཾм†ý«]‰£‹#�#íTãˆÛòõh¬…%sU0ÞÿʵT¯dÁ¼×ó®v,ËÞe „Ì©)�gG$jýáŽ*œÉnVA”åÅ©N�Ûk6 ù£>ä~)ÿ^yh(¢+sÝ·¨îW2¸ºâ§cJÈÈÑÃǯ•x®•1h/bvzùôŠh8«þ”¿/™>5<Ðv#wŸjàÝÏó’¨HÅ“ýkÌä:8Y”GŒ¯_ ¦Ÿ¸Àú9PéS|‘Ù/i ¡«qTÜ@f} Õ�ÜH«Á:)"²7³¦±Mû¤°“ï`BO“xã4DÔ¶ž¦ÏÛÍMýëßìì›.ŠŒ ÉµãuãB¡QUÇ® izxáCûŸµ¶BƇL;¶h�ù<Ù8‚ÀŸs�Û•1am*¿æÚ¾kK6R»½ó’ÇŒ­_6rYŽ^dvEøÞÌZ6öÎŒºVŸ/êRNYß ØZNmyƒÁ�x�ÿçà =Å:”£V%M@A {�ÿêß[µn-`“Ѿ=›HHËû¢q`aÊíOxC®U»šxÆš_Žgl�¹¥è9(VëÜ:²zÜQ�Œ£ñr"Ûy<úW™ø˜ë. Èš‚àJu¸î*ncsGÍèÏwfذÉjò7_±N²ŠY|.DwžÚ_�è4-~þ *EÙ÷B3Xö~á@È^ö^«.î©&Ðá÷™õée2ÕM2�lÏ•dI»õX ƒ‹•ªäÛXæ'-ù¼Dă¿—Ú_H£ÿüD¸¯…}sàÀ'æK€>_�þ({Ë!eAÀîZÞý—7Pé°!µiA°&H’•Ï’ÚÁÿŠ¥%צó¿$iý˜âÂLp6S€Ol±X jµg´¯Rµ ×]@v*/soùÊ&…Y|nþÖ•¦äÚïÛ/(`dwÛù¼k”Í[�Ö{v"ĦäåÿcŽíÌd3^ ,8§½¹Ãó=?-2Ÿ-~KWê!=Û`1©J‹š8uÓµÊgÖ¸ZU !{ÄšÙk�­·ž±�L“»Ê§ö ÁaýwßsÝ  Ôçº ÈNT®]p;.•þÌHùpËSÝ¿�0]5ºöÏL¸ö@+Þ¶½W›Ø9Û±kÎ}[É™ÃQÍ&Ä•È÷âì8²Èü(ûÓÁÐÞ…ëíŽ*ã'‡§J÷ì¥Gˆ6Ÿ Ø2™ Þ3šën /õz™Â‚d‹MÕÊ”ÌQœïŸ{æW;“)ú¾óá·Y®-c‰ÑÍÆÇš}N™kùËŽ¹éw¶-òvÝêðÑ©KÔω¼Ãàà³°)µ©Å營±«�†²Çp1§¬ÉcÑNì¿v”Ol„\!-R�lÇIº£²ñ},ç)ó™å”ˆ¤„fÛÉñpl±ù¬;¤bç¬ùñh6 hg~ÄNÊnþKo Öö“9©^ÇÕ¯‰ IMº(n¾̚%ž#[º¢Eöep$m@çrÊ3÷«ˆ“à• úÿÎ0`#dÄ/V0BG9‰x‹š–¯w©4ÖÏ�£ÒCÓñqpv¥ý‹ÂØBÒ‘]œdóu+wdX Øú(¨îÉþõ¸² `KΗE¾‰ŒŽÉAªd=Õ0A¼¾�ê[ætTÜfw€��ѨrU ns™7#Û¾““´½¤jÖñ¥Ñ µ<»Îª]gr`öFÛ µ•/´÷d“Ò¥ÙÒÀ´]Lƒàv>°ããã=fµx¹rål¿qî£*…•Ç~>ÆÝ"¥¯þr,—@›÷cá¯�#!ÌÊ^j6¬ú=~ØïØu}²£Q@·[vV«*¬¿q—ën ä2Ÿ Ø¿üò+$&8V�6\çù"ÅÒ‚Û´ ~4«ny„¹ë´ãõ߻όg¶rÙcÕÓ/ã^²�s›¬Nw4XG¯ªÜ²÷Úœ�Æ¿ÇÞÍó†Oï7z6òz¡£~ëàsÛÓ‚5‘œœ ¡¡¡\wÙ‰ö”jÍò–ç°�­ëœ¦4@�ŸõØ-Þ‹­ÎtªšÔÁ^ýŽõ\æ{Î;þ%‚8x)‡³€½ñ ² `c!äí‚ßøáEQ¥–G|.`{¢ØØX جWDŒ[ÏW.Œý…P¶‚5ÙVÎKqŸ¦‡%¿¤Ã¡ËÖs­Ï€V”TB5Úå{¨W)ïÏþAÓºÐÿÏ#6Þ�°Iýé-›·‚Jí9…;uêÄu�hü ô~þÈŒÁmÜ‹ èßÖñÔ¡ÛÛ¨"ƒø°ø­Â©[ŽdÃç;3 WíY_”7Ì‚Eoæõ³WEüÒì鲌ÿ~n¤i ÕJ¦¼ÒΩ€MþBƒ¥°_à 2Â&9ŲGX‘Õáîò_œjW°>ê}¾žÞ%¢‚é'þ ד]1°½œ9ˆ§):XôsóÅG$´.ÉAíÿÆZ¾žlïö,Gun(ƒýͯö^6Ò¾‚"ö µ»í)Pbíš:-‘rÄg;·â±'97/HkÌ,‚DÖ9°SpÊùˆ·Ê–?ý~?ýë×Í<Ú–,`<ÿš?Éûs~2,º4rÿ ƒ;iŒß DÏ>åÆ7¨œ¸Àm‡J©”gAZÍq�~¡‚tZ‡ɧÅOÌÑ×\|1ó}r„S[ça‹ºr– H)ù�ÒØU¢E°Êƾgš&¿À\;»2ÚM‰gò¢Óôý�,x«[^mï·ëTÇ€íFd}>Q. xʾ•eï6Y­».ãßtWŸ\!äóxZ½Áàs‹Ï²…W¬à‡FK÷‹è螊‚àQÚ‘¿zRqŒŒøI*Xk+Ê]±é ²àï\.ÄB î@¶^]Mæn|£ñ†îå¥3ƒÄ¼‡œu‚aÝPѯÿ$©p݄ܭhýk6·±'ÛdûÖËó˜?W§RèX_ mj³»âÜ܈_­¸§…7TÌêsW8›99î^†?P×íé^A2#ÆOpÞ•vŒ_à�cW+‹³ÈÈž�vŠVîÀ ‰º IDAT�J£ÙU œýtÔµ‚¤¾õÐŽ~®vÉ,rêð“ês¿1@[š 8m Úm'ÅÁ±%ì”Ýìùa^ÍkRîó÷SÙÌQ”TÌcV³wl ƒu%Àcéû‰Xhü.+dR&sð¢$¸õ˜�@ðF­*ðý�Yi åÉ6þû8ë¾m´b~ì‹•¤ãë…Š~f³ÝAÕeƒ6ÝÊÞÊF[Ƹº—�vŠFÊø×i4Œ�§« -Ü×üí^× ~°¬ïÆjaIJdÈvâúnK{¡3sl·Cö]ï>—ÃE‰Œ#ò“ËÙ«Õ½iJSJÔY{ÎçB·Æy‹ë¦6®ƒ›E§âÔn¹F"åß[׿…Ÿˆ—@ëõCE?n`%`wˆ‘,b£�â„‘rÁ5 #äM’(§É¼¯…͇³açél˜÷z�qɃvuÌO/W�:¬ ,Ù �9ߎ­í:ǯ©à‡J¸pWeü;�ÂÔW™d,´l9¢,Ø•p È’ƒý�èïso%ù²oeéê'zf|}ÿ&+ÿÉ:çj;åý§ØèOqB‰\»H„�êÊÞ�HÉÔCˆÂ4è� Z×%•Øs<íÛTæçñ%QÌ´²9íêJáèÇ??}“½=Õ=›Éá�3Ž_*X0Ìr6TÂÊí…9G¯æ2Ѳ––Ž a¦Ä‹ZºÍµ�¨«÷éç‡/MȲCOèN�Gû þy¯¾ª'1ƒ\¯,Ú}3UÓÃÙ6ĵú¼¸:•J£Šü`C×ñÐ¥¡ š×”0¶N\·lG®L† “ÃÌ>G’™83 liÔ^Ô©›j&7xµë¿þs†:°»ZÙÛ]4XG*‡µš˜÷gîÖXÆ$aùíD¶ñ‹»S®µB‚àFJ«m–dõaÊÁzVÓ€h…ˆGõ$VŒ¨%aÕeåÙÇYÚ&μ\=ÿfl÷)µ€­Óé`ÞØá´šGa�]¯jM¹Î(;«&@¤Í‚;Ùw1‡9ìuã‘õ…T½šËa×iû&YfK³ q[¨êVÃwïY/û*óº.¾r´åUêéÙö·ãl n{49wüîÜuø}³÷ì¤Ð˦.ùdr: �AªeÑ Öddúqó�(^>®ž_Ó©ÚÞßÝPþîÈûbü"d|j X¨l ÖÙ6oK:Ìhö¹Ùƒ ØE r˜³nw–É~ç+÷Ôpç‰ÖêH{ÍØPxci’]ç÷“ò¡õs–Gø}æP[/ä“V̜ӗ­åº>¦wͺr ðÈèÚ~¨�À µ‚…;µ äÅeëë]KѼôD©khéµOÓ:Z¼ª¢Bð7Í>Q ØiÉöý‚#Ä•«·nCË&…¿äZ2Õ¦vœÌ¶°‰�³# ÷lÛ�.@n{Ñֺݙ%´( ή´|=ßV‘’¢iñ92JçjOô«mMG©wþ»ÇI?¥Êõœ¼çûÑY—SÏxZ°.*Jο%—\溄ӛ,µ´ õ—o¿p¶Y„ÜbÃÏÛaäàÂôkþ ÖqóEsîætøp�ù "€—[ûÁ¶¿­çaØ8Åüµð|ï~‘böqR;þÐ?¹ð|}ËÓéý�ïçcÖÏÿ¥q$nmv¯�¸]Oéoš˜E«£_)Ì—œˆS3ÿNhˆ� nŽ­ëלJã>Èé€MÊ¡ ,Dìâ)ò4䈬³òÒUÖ©(bF©Ùî’„$ K™3?À,ÈŠM±\áŠ,в„Ì‚“¤*–Lþ&Õj•°©Æ€g-`¿Õ]M«‰->ó‘ÒY^8f¯wzš^ݹ÷ 'ýðV±JdQÚg-ð2&5ô¯E¥qåBÀ�XøŒè7b ,Ÿùž³M#ä=‡Œ„¿¶|[pÿàÂH—t¸¢ý”8ø{©å©é�³Ã¡Ýäx³û³'÷³<¥Nt›oóüŸïÌ„w{[^ï 0»Wý¥–rý‚õ½ÍCs3sQ6LoËݾèóuœôÅéŒÿÔ®PÌ >·y€õ¸¨—¦Ä- ±¾ò!O ÌΆ¥k¾�÷G¿YðØþO¢ ót÷ï(!é?¿Ù“U"Àutq$t�‘)™¦�s@;¹…wÄ¥êìªóýݾ,«ûûIa©Jóµ©-µzý�¾<Ùæ¹iÙþa¸ÉýîGpÔït€â"³¹ÍÙKPЏ°IĶ<õýágëaîÿ†9Ûx¾u hT·6s?È�ŸŽ†©Ï’›¸Ó—d2#Ö°Ë ÈöÎ�€ kSáøµ¼ÓfÕ­ï»î=;Ñîó¿½:ÖŽ5¿-«x&22 nkd}쪊Y‰Î…S+L§øÇÏšÇ|Aó&¬äìÜÿ$ÑY¨&&n„w•6Áçóaö?Àçó¦Cbì“ÏG•«Í;t�¾v¶ ±büÌy°ÿç@"λK*Sµ~N Û‘ü„mÝgÆ[½žL¬x;˜©d5îËøü]ËûžIÁG �¿£b �XZ‚2ª‡‚Yi¾uZ8T-cý£##Ûï­3¿Ð�¶õÃ@XäûÅÁã'áÂeïÉÀ,÷WÀ{/‘˜ÝÊhöÊÑ >›ÎÂ<1?ÞVmjd™óÛÎuïÎúÄêó°‘'èÜÿu8¶£0ïÿÊÑÁÐ~J<(sÝ¿XŠ\G·´[Õ’Ø|ͤ¯˜=?J€?çF˜}nTæ°…ýŽÓ¸ITEVÔ“„ùÒÒ3à£ÅÜ�Tm™¶t He–/ipáØSz[¸>l¢`7'p)ãtÀÖ³´Ì¿Kß°ï·Yi !Wô:vmøªàþ‘EÜ-Bk>!N¯pþ³mý~çÊñ&¤é˜èäÒ€³šŽçæï,2XÀ¬¨/ª÷ë£8鋽<-X_L¤7þN]ÿvÔ/%œ_%ÎÒ¶¼Ö]zbÀF!=#f/Y³'�+xìèâ(h7Ùý£E�Þ`×HÛ’Ï~w¾`F�Yñpr™ã_Èö±fkâ�9¦3û á¨'ÞI£HÌ¡3í'¸\I!8F¥ñR„ Ø|Ok1;¼õ,Î „BÐi-ï1EÈ];/uë ë>ÇÜ—Kx°â혰–›ë±$h[«êeÉGƒƒà³�™�ì`ÙÐJ‘B¦ü§£’3õvm£åÌJÓ/6ãfÌ�?Sqˆâªð÷êû×§Öx)Âi±”¹ZphOœ–ÅÌ7�û¼ {~ÙÌZ{¹bÜ̹°{ó·àï—7]Ù¦¶:7”Á~ {°©Í¤8XõNsÝÚ^½›Ë˜#I»úÏ= Ü‹Ó2[ÈÈÂ2R42H�ªŠAàB9ê_ŽgßÒ�oÀE[§‡…÷ÿ:x.^½ÎY¼Ñ¿éô¾ÜLk¬¨B­ñR&/`óyÊ\08°m­wDËŽÝ1`#�ÒcГEh ‡A§Û*Î2v‘áÕbD°eªõ¤–�zóbæ`Y¤ŸÊ]ªÏ]ý¡jtáä`rjÌ_‰©‘AÆ^´v­Ñ® ÿ?*�—BÏFØ<‡W¨Ø»J!oÕíµa°gëú‚û>ánq牆9ÿßK£AbM*.Gë#–s[ä§B„Æô2MöÒgØhŽzã¸à0ó«ñÝ�æªðá5彩5^ =aƒÃ[­g7|Íz�àæå ¬¶‰�+²sraúüÅðÉŒÉ��X ­&r´ ®ƒ5Q·"·� õ ~�išÉ¬S¿¡õÆ9e*T⺠̞ë\6§K‹˜ÒHQ�JÃ¥˜Ó#l¶ö ¯½�yœãgÎÃñÓç Mó&Ì}±ñ7æëñ¡ðÖJîRnz‚Ó·¸É`–¯xIБïj ½-I4´x¾+×] 6ºŽ” ®‡Iùw¨4^Š\Ãvô�j–/[ajY䙦/Xnþ~yu•TCŸ–rØ~ÒsR]’©r’¦tæ @«•»ñ0Qó6§Áýx-ì[`ZëºEMv¯…;â·Y¦SÉ?ïÜ 7ïzßeÒr•«qzþ'JzkÞoà_›Zã¥XÁ*qGߨ¢0�"óó‡eëí"䪽i²mæÀ@øûº ÓÝ»àjÁ0Ó/¶ñiú‚¢gn«àÅÙ…u§´÷ƒçëI¡‰•Ò—ùÈš”£WU°ïBì½Pr5|Óñq%Fµu+ŠáÊ}÷Ž´ßí¥€rá…_H’SRaÕטéÒ×(Uâ\]>�JÃÈù¶–å)qâù^/ß?þÀz»ÎjÞ¨>,�ýsûÖ¿÷àÍ÷¦Q9Éa=jèk 6þüjÃVÈÈòÝ/-ûö†w‡ç%´8ô÷)˜õérŽ{d¿®†ÁÞ×Üß=/­‹ÐÈuÛ®�¤&�¯ UÔ�G”ÌÁ’“ü­Éðõ„ÂJ|ßM u럿j ïZ˜•ô©ÏðwÜv~65nÝ�Óó_K¡¬ÉåÕúa¢­¶_‰œáô5lšµïì1;2<¬ X5ªT‚ƒ¿ld={R¯.aÚØ· î÷íÑ~úýOŸ5´jÚ¨ X¤JÖ’�¦Ã¤9ÖóÍ{ŠœÜ\&!Ǫù-e°l[d«èîó,žWý�qSªDæiH5C®ÐÊ^9@xTÀz{ÄP^À– yÎ'f™Ÿ"”™ÜeMÊd>�L¥òeáÞÃÇnî�oàó�/(áIf,\Ûׯ�Ð༞µ+ˆ˜ëÅlM?›3gHÉ�ÿ˜ñÒ6}}ª1`›¦=º˜îþô]År„oÙ¾ þ{ð�Úùhãz:œV¾ðÑuüÚSi`¶¿ˆçT`­Lêβ¡CϾðG‘dž¦ltlÄ$è(ºmò+pär.ÄQÈúõãôð�=Hà.»˜9dà�3쯚ÿåˆ .\dö$6¾øn#ëçq§^ƒ†svîÓqt¾äu//�I¥adâYÀæ;°É7µh?v¶�äkÚ®£Gl¶}µñG9d€Écë6àš oÐáåApx[aJ]2¤1Ò¬]².ÏäoRY?�½¾Ù“ov3­‹ýÁ€@Öv­r"ØÁ¯à>™môxVÏÁ²x� d�pºšÎ¥‹Že%ó©4ŒL0Ÿ 'GØ 9zÖvióýOÛ`ëŽ]0´_àóø°á—íÌâ&äùt:=Œ™ö|±pNÁc¤j”;JLþË]’�/ÿÈ,°…, <Ø0Ùw™åkÜæyÎÎ}"–Îèz\=ÿfTF%ä�°ÅÎìä\:ßÖü!+ƒûëØî¢R©áëM?qÝ ä„+7nÁo»÷BßyY«Èeú­ÓÂáµ…‰¬�ãÌ-54+R´cä*nJ}µå°Òdô;b9»™ßN-7]d6ô“¼z‘Y¾ÞM‡“}öÙZö?¯|žº¬¿à,ë #³˜€,æ;µ‚ƒÆ^l‚\ÇÞµe=•¶bÛ²5ßBÛæM!,$/©IÕ2BÑMßîÉd¥ý1Ÿ'C‡zRhPY kÿÌ„5÷�ké¶ øéX6S“ïÔ,ö‚ÁsM·¯}µéG¸ÿÈû×�ÔjИ³s�¥³x{FcEy* #³˜€mxTÞ&m;z}À®P.ÊÇ”aòPÛ32hÕ¤è z8uþ’]í èЪ9œ¹t22­'Z©÷\MˆŠƒœœ\¸ró6¤¥³»)ÀO.‡j•+‚V«…;÷î33¥Mßáï˜,BÓÓ\Ì� ì”-<|9—9<É£D-|±‹�/%ù¦ö„Ƞ•¬�žÄÂ?ýÆê9¸2`7×ßÕ:h(d¦”‹øÉÎ.XFÎ)¹š¹lßO?€L*)¸?ã“¥pä䳯-[& ¶®YiòùðOL¶<íùùÂ9Pß„óݽÿ†�3Ýã<öÍ×aÀK=-¶‘š–¯Žçôõò'þºvhkñy½Þcğ®Ýtª}oT|©&ÕlBów�l#©Nû·•Ü×ét0hÌ{öˆ=•jp—ZûØS:_ g6V”£Ò0²Èc¶`d¥ÓϠĶ#¿m�ÀtÎüéïC›˜}}ñ`MüöÝ—_O ÖDÕŠŒ£\ÙÿÙ»ð&Ž´à¯V½XîlSlzïHH…„�$wi$!�4Ò{¯wi—v¹ôFzï¤'¤z¡÷jƒ{“%Y}¿�ƒe[’µ»’õÿ=Ïœl•Ý—œíÙwgær8(ÙšD_½õr›q¦¦$ ¯Óü÷>¢WÞù°Í÷7š0j=tÇ�m¾�­¹~æÁ{©²º&®ö(n6 mÎu·ÑË�ÿ]tgÅ“9Šî¡/´•Xê´©£gž£P4ÑwþÕ7+r^—�'¿cÿFõ6 G͋΃¤b¶ÃDZߙ¯taùí³÷$/RØ-ø�ÑéÓN¤Ÿ~_Jï>ÿdXÇ›}æéâ-u¶ãQ[X¶«æœÖñÙ¸îï_¼OO=3¬ÏÅ«-;vÒ‡_|Mgÿ­}vW͸¯¼•OÁÒÇŸdvúœ+Š$ú¬)iŠ�ûw‰f†ß4ÔÒ[’C«uØùÍÊ"»od¸`ã#:uô;©&ÇU‡ýó'o·ØYÿ¹v}ÔÎÓ=?/èóìÖz¸�u£«ç^Ðf‡Ý« [Ø�uSMÇw;º§^yƒÆ�N�sLžÊËPÓÕ3¬ôßÏb¦ `Lùþ߇O2{îµ·©¬BÚR¯ršw×CŠœ·AÈ®d×]­š%ÂÆyp¨Ãî—¦ù"’Û铦Î'ß¿ÿ:i5ÁoV°ñË«ï¸_òNœÒ¼*à¢e+iÃÖí”›“EÓ�;¦ÕÏÿë–ë莇oñõWŸ|¸ÕÏ×Úêéñç_¡m;wÓ°AýÅ̽qÖt"úç%WÓoŸ½{¨HƬ)fúîÏÚ\Só;wϹ)”–ô÷$3¶+Þ;Ÿ.P0¢èR«5¤7Ú~£¤Ê®ç 0�—äÀЦC½Lÿ4íßíu…ݳ°;Eßöû"‘”œBõ1>Žýå›/‘Éü’uÖ“fÈ+˜mÂvüjêá§_¤“��L·^|<™Í8oÉÎjõ|ÓÏ»XœÄÖ¨h }þí�¤Ójé§�㻌d{LšqÖawÞº1ƒÆ\[J> fìÆ£‘½ô4m”ñÐ÷l’ÙœënU0¢è»äÖû9¯ÓËK²n½ YókÔ !;Ôa瘸µ‘Àá•î�ÏÑÓfÒ‚·_•ìøíõáKOSJ²5èkliÓ1g´ÞÑI�eÉ¿,Yôµ¯~ü™nºâbR‡¹SЙ3¦µøÚIç\Ôâ²2�×+Nžcc؉ê¼+o 7þ÷è¡ïYALB#2êTô܇�ív¤If�²:Â’Úb‰j†_Úß|´$†�´{Ò˰¥Âvµ‰Õûõ§þC�²›oÊÀ(53ÚÙàj±³nôÔK¯Óµ—„^mI«mùG„ݾlk 8óä‹óéš‹•Ûð@Il£6 ÿ¢³Ï8ôÜ—÷fÓ´»{ùê¢GŸdvÊùÍ·™�w§]x¹"çuH”]÷LÑþõƒBXbºÃŽUltK³µY'vѵ·ÈÑ7ÿ«õqfæË «ÃžyÒñ-¾ê¿ó£/¿MØ›yíý�éØIã¨k^®ø}N*G7œ–L�~œ8åw›úåáÃ;ëGžyé°!•Žbàˆ1Šœw‰DÙõÜ~¦ã$90„¬ý¶„·Ä™¤”Tª¯Ung¢#]wéE”™Þò2�W¬ ¾zÝÆ6ßÓZ2Žã(8¼Ää©'Lmw\ ×ÎïÜ©í7vPçλž~ô¦8®Ïœy”‰¾^Ù@÷&VU¸ÿ\”Jãß“T×nÚB ¾_¨`DÒ˜xÂ)Šœ×î‘&»î“ªýºíw�ÔÚÝaK±(¿©É'Ϥ/Þ~EÒs„£µÎšyä®›[-zËØLw·çð„Í0¦µJlÁ°µÉìb'‘sú¬Ã&¡½qC:M¼¡4&jƒËaL=Mü÷M—ÛMón¹[Áˆ¤sÌ)§+rÞ%¥ÒÔ ¿°¯©å²‰ ›Ã:ìT·»Æè¦P,A TLuØ¡`ãÛç_Õv5°xpdÕ¶Fll6;öD´¿L‡sæ¥×Ð{MÖ˳±ÜÑ×”’¿ƒ—/eeGŸ¾üð‹Ý©ÿˆ|],ë=p¨"çµItá×7Uû•$†°ÖagÔÛb­ÃŽGl|›2)Þ_ªt(’Ù_Þ¤©¢üß"ûJJééWß„$µŠi~^ú¦i¿”äÀ‘#2ln›R�´fÊôÓè“מW:ŒÃ|÷ó"áÏÓ4nä0zäÎà…ýï½éºû‘ÈÊ…ÆŠêÚ:JKInö|÷.ámÔÓRIÕDuÉMwÒ×ï¼BIfóáÏŸd[Gõý/¿ m‘ÒaHfÞ�*rÞÕÒL^œÝÇ4]’CDï°�±Ùa5.¦:ì·>úœžãÀ6ŠKV®'ÏôÍ˽3a,=ôÔóoa ¯ø“¦7¥Ùó)Ö¤°Žsì¤ Ñ ©Ã8éì‹è•'¤^Ý•Eÿ{õMúàóŽ;ªÕéHsp€œŠì~IŽÛ/MÛqjÄvQɰý"uxųâ+‚Á¶¤lê„3gÓ/Ÿ¾ôýß½÷š"åI£åÃ_í°�ZM>h,õÃæ>Á\tí­â–¨¯<ñeg¤·ý�8ÄŠùÜùðJ‡!¹Ën í7I`Sµ4õé/ècRfm´è°;ÝÀíˆä OV�´€duΧòýE’ž#Ûwínöë´Øm¾ãŽžØì5¶ƒ×ygü½ñá§2D};÷´üßü£Wž ©¢Û)ÇÍ�:œ:[=�~Ñ<¥Ã€vJË”üzK­O’ã Ùõ’Úå°[èr#š¹Pç vðå?Ñ2eúLzï…ÿJzŽö¸ïñ§ƒvØÌųΌÛ›aU¨RƒŒc³Ý¸öíMë6miõó7Í›+Uh1�-×S›4¶�]Ÿ*É�¡]Ú]8…©q(ß"m‡ÝgðpI� so¸�^zôßA_ûúíWÄ�2âÑ%7ÝA¼ø¿ ¯=÷ð}ôÄ óé㯾möZZj }ñú R‡ ¸>ƒ†É~Î¥• Ev»¢Òaׯù”hÙ´u;ÕÖÙ‚îàeM²Pßž…´i[D£ŠÚ_Z.nhÒÒþÖ¬69k…ÿŠÕk¨wa�>äÐ^ÐÙªšù„?¹õiþî"»Ž]Qé°]2m’×½ïÚ.˹ZÒV%Öi³æ¶¸�äK�=ÐîµÙþ€tG¾åc³±ê¶¶Éì׫‡Ø‚Ù_VN�³•Y£ ¥I Ô ÿeŸ4ERú§i?—äÀQé°åÂÖc¿ñTÛ;RI©hÿþ6ßóö'_Ð93¥ù%^³q³$Çe¼ÞÖÇÃŽ?s6}÷Þü°�[Z^Aÿ˜{eBï‹ Ó€á£e?'‚ H´‡Ãù}L3$90DE\uØ}úËv®56Ñàþ}›=¿§¸íû¹×Þ¦žr2i4‡�ë{}íŸ R]Sôù«×†|Œz»ƒ’,æ¶ßx‡Ó)tÚзïÎùv÷× ¡þûœøõÖ»¨WáákŽ¥ØY@.JÌî_Y&ÍØõ¨lÝË’¢¦Y‡­W«êÝ~>¼ª‚OFMdzœwë=Í2Â+n»7äÏ=óìfŸ?9Ȥ³Sο¤ÙĬ¶&§ýçÙ—èÆËÿžyÍ:½ëî>Ù-VÇù·ÏÞ=ì¹¹×ßÒgΚxê™tþ?fÒÜs[¾½¿ko;æò5¹H¹ðÚ[šý7 eY@,Êê,õ¾Eû¥«7z¡Ë9b\³›Õ/¶ûÞ’]æ P7«´3Å™Á£ÇÓšå‹%?ÃÆ›{÷('[±Š_‘|ž�é²Jg-ínÅ2fö¾áƒàiÕº m÷óoÛÄÑ#ÄM5v…·sÛóš�s@Ÿ^d6iùª5a}žyýƒOÄÆôþ��²2Å-7·íÚM.WËTÏËî6lÙ¾3ìóÄŠKo½_Öó•7ÄÄH Çæî“äÀUA:lõ–H:lá3²tØ'œ~Žl6Ã:•ÖW·ŽÍœÅŸkÖ‡}ìEËÿû3M­ß¼µ]ŸoÄfÇo ñßÍó(Eo0×ÂÖ³R`õ_Õ gŽË×wÌ�É;˜`vDý“Ó'ÏÒ.£¹ãnŒñAÎM>ØVéRÞ ?­Ðˆq©8µ[Næ$+9êmJ‡ ˆM¸´¦¦Ér.ÖYÿX$íæA£³u¨n'šuØYFuÄë†äšxÆn‹<ÿ9ÉÏp¤s¯¼Q–ó°M•KÛY_5Ø2RÒ@T5ë°;™¸ðg ÄÆ±{¦H¿Rlàȱè°@…}H~·Ÿ§_%*ŽÒH«V9óÌêöM„YEµw-’©ÃPÂñ§Ÿ-ù9öÔûiK�4[f6u÷Hk¶ä'�¨Šjïê ÈWcШq´vÅÙÎ0vÊ ’q‰‡^é'ðv6«ÿÒqd—üDUq›Ÿpƹè°@6CÇN’ìØN/O¿—H{ ¼©k[†Vv[ IDATÊv2ˆš ¶†S¹…lYÉÙ휮IÒ¯O4ayÈèÔYs$9î²RÙ$Úy+˜£sõ�Èv2ˆª ö€4í§UzÎŒä€[k}²tØLvn>•í+’å\�¸:w-ˆú1÷ ÉÍfƪ�tRWÃͲŸ¢"h‡=(CûA¤¶œ›9œ1ç zú^ü쀴æÞ½B`Õ®ýQ.]Õ²ÖÜ1Â*tˆš vÿ4M»öDe³Åó-ÒgÙÙ�$?$6V]1ÔÝéZÃö[XS©LGÍä'iVXuª}Ší´Ã~4Û5 ²©Ú+K‡ÍduΧòý¸-Ҹ⮇Úõùu>±)íÊ�fù7’l–8Ÿé"ÃXö×ÞJ�Üx¹äç€Ä£â8±r¸Ø¬ovÛÛå��ýÞq+¼ch±ÃîdV¯-qøEz`6™¢³YM.Ò#„³Å@*^w{Èïeûm¨öR™Ó/aDá’©{·Â;†;ì±9ºç>ÙÑЮúŸ?»è¸.†ö"$SÿïŸôçïK~H,ù=[}�eÒ…ä„M$‹EµÊvvO£ôåÙ@-vØ£²t¯´·Ãf¾ßë¢cò ¤–0Ó?õdtØUÓΞÝì9¶!ÇN›�vÙ”“Å}£­ÉJÇÑÓb‡Í©(j ÙŽ3™F5 ÎвãJbò´™ôó—ŸHspH8#&L3gV ª¢!¶ns‡â®‘Ö¥c€è’­4)û�ÿ±èïú“š²…–a࢒}uÒ tØ9Ã'‹wãÕ¼�–ñ­ªLé8 ºZí° “5¿ì¨ó-ʼnK�~±I«VQªŽ£T=G�Š j"½øØvj~×Ó¯Ñïº�lµÕÄbsL b˜Š#�ÅJSÏR:’ˆÍ(0^Ù5I��: V;ì±9ºg¥ê°[âõóT.dãåÞ‚êñ!½Ïc¯%Wm¹ë*Ém«&�Ð\uìû*òÔ×�ß¿W× …u²IÉBG›Bú¤TñQkI>ðµõÀ÷¬©um�W&çê—£{Zé8@­v؃ҵʈ܉)¯0òƒð<¹…ŽßS_+^°ŽÞc¯¿÷:läqÔ‘¯Á.~�Œà¶¶YcJ"­Ø¬¤3'‘Æh~tº¬“e�­–u²Z�ÒáÆ�ã»î:&O¿Òq€tâv{͘ R‰XX‹&¿»�¼¬£wÚ…¯�â£Ïå:¡¹œâ×M_k|?ÉXÇ:N£%µÁDZ¡óÔ�ƒYèH…¦7Šê�çLâsj½ð>“ðœþÀ÷ ¬S ŒW�ÏÑýOé8@ZmvØÓµŸ¬«òΔ#8@-ü�dÍ�’)ëyÙÆ-¬ógÃìÂÀïqSÀç¿ç}^ò{Ù÷^ñyÞï;ø:{ž½îßhò¾{ÝïÞë}âgÂ×Ä'ÆÝ§&•Z#t„ñkN­³KNÈYcÙ#§Ñúž½®ÖÄ÷sZý�T§ŸöÖyª…÷±ŸH\×IÒÉÄ­Q:�^›öÌãeè°Ûà 1‹Ò[Ó”ÚðÀØd£FE˜p“ Úì°ÍZU¹�@h²Mê�×±ôW:�WHcØ£²u/¯(óÌ‘:hÝ}Ì3úµs dˆO!uاç¢ÃP²jy–ø1y†/,v…¾u ´›J¥ Ü>")ߪUíW:PVÈöñ]ôw,-ó\êôÒ¥ Ø~*ÿ5ƒ-CsLÜ:¥c�ØÖ:ì{F&eÜ´¤‹}$bÖróšÇg¸mJDZ%ìÂ)�ŒKVÝ¼Ôæçy^ 3ËÄÎú'¦w3\§t»"ªtöðX«ú³]®§—”¸çE; €D1)WÿØ´®†…/qçÚqiÒÝ W°¶Óæ?ja±ûömµÞ©Ñ  £�®ýôØ<Ãý�ÍÜj¥c�øÓîZâVõ¯ýL¿6}Π¤�ÕÞS6ÕøN§{ü¼¥½çˆ)z®¨wŠæÛ!™ºw ­êŸ•Ž:I6ÿÐsT?4Cû6kDÍë»ü”\ç äÕº]êÜ|^­'�ïôñiž4¾oðÈÀ}£—ç ‡?ð5žtjùTDŽ=ªØ£ÊÇ5yŽ£&Ï©¾ïàs�ŸeÏ_ùÚÅÓ¥øïòÊ0æŽSûÚs -§rêÕdg�:ŽœÂG²Ž+N3p;3 Üv«Nµ/Zñ´F‘ݺ jª3¹ºl#·A‰ó·¦fÇÚ Ëº6@`ÝÚ£ó¸;æQ:€hÀöšGXùøÕ •Ž¢ÃV¼}°Ò1D :ì&ø€_ðûtJÇÑSôÛç—æO:õy¥ãh/tØM¬|Ù5@G³á�GŸC‡ :ì&ª·­™¤t }~wC’Zo¬W:€ö@‡}О…^£t �å�]ñ˸Û^®tí�û M>õ„Ò1€4l{·S:€öB‡-h¨*é®t ­âßÌÍ›0ý%¥ãˆ:lÁÒç®P:�Öú·y6Ä3tØ�½.Cé@z~wƒE­7Ú•Ž  ßa¯�ÿ›JÇòXñÄU?�½å¥QJlj„ï°÷/ÿþ\¥cyÔíÞâyžS:�_Àë6qZ½Sé8‘°öÒ‡.^¦t  Œ�_½pÌÍÏ�U:€p$l‡m/ÙÝOé@µ»6ŒQ:€p%d‡½íóÿ­t  ¬}K¿¹ w쉯)@¨²ÃÞñÍ›·)(kÝëÌOë?î+£5¹BéXB‘p¶mïìØ¢Ú’¢Þè°!^$\‡½ü?ó)Ćmï<üB§{ßì¯t¡H¸{êÿ~4=yÆT>ÚÇ�÷æ‚$­Á€Å‘â÷öÄYþ+ÚÇ�JÂuØRqÙmiè°â‹«¾>MéB…;J\öú´¤Œ¬½JÇ¡cÚJǪ„ë°ý�QŠã²[Šã€tð{ ñ$á:l©~Añ‹Üø½…8’pvƒÝ–.Åqݸµwp¡ ñ$á:lW½46~ñ¤Ã’ü­r9êS¥8.€®Ãn�¬Ã¶ã@"RMÃ,qˆ' ×aK—aã–8€T¤»ÐF‡ ñv´Ž‹_|ÉàB ;l©n­¡Ã�ŒTvÀï×Jq\)$\‡�[kñGªÕñ$á:l—D¿ø¸µ ©2l€x’x62l€¸ƒß/€ì°¥º%îs»MR�a0 ×aã þHu¡ O¯ÃÆ­5€¸ƒ m€ì°yžç”Žƒ  ;lˆ?R­îˆ'è° æa( 6Ä�ѧŸ{?pÄóÏó*^| p|€ž pâ÷�ƒ��Ï ¿ø7Ž÷x ùxðu€x ~À•Ž¡Ež´å �>¥Nÿ€2g •;P`÷²ì^^lN/ŸàyüÂtPœJåKÒªÊRôÜ^Ö’õªâl£zS'·6Ǥ^¯á¨A隊‰µØî¹ªÒ{ΚJï?ë=�¥ã€ØÀTê<|n�'�»§žÆ¶õ~­Zå,HÒ,Ꙣù¡wªæÛl#·AŽ8)’dïw†|¼£á…¢zß(%Γ×Ï›¶Ôz�gíËÝôhÓ×RõÜžYº×XKÕ«v+"tp²%ÙNŸ1³óó=6ß8¹Î ШÆèúC‘ënÖŸ³ê¸ýGçê“£{A£"—’ñ@Ç y’]å>³Î±Øî dK}.€pØ<�Î_ìjx’5ö}Šž+šœ§pt–îeNE^¥ã€ø#Y’Žýì:Ç¢½õ¾1R� šjÝ�üOw4<Ëû~X–îÍéÝ ×›5ª ¥c€ø I’]d÷�f ¶ŸçµR@«Ê=³Xc_÷LÑü8³ÀxYº�Û®t\»¢žd¯,÷^ôávçËÑ>.€’¶ÕúŽ}xUý6öõÐLÝ;§/ÑqdW:.ˆ-QM²í÷\·`wÃcÑ<&@¬Y]á9›5¶eØŒîÆ«Ffi_Q:&ˆ QK²7Õø¦!Á€D¶ c³8?ÜN/g™Ô›.èc:5ÃÀmS:.PNT’ì:ŸÿÚfççÑ8@<*wúû>²ª~«šSyft7\5:[÷‚Ò1€ü¢’d¿³ÕùÏó\4ŽÏü^÷ñކçY듪ýæœ^¦3õj²)È£ÝIö²2Ï¥»l¾ Ñ #Ù\ã=ñÎåuu-W~~ÓÿuMR/Q:&�V»“ìï÷ºï�F •ÝÈzf�}±Z¥òžÞÃ8gx¦ö ¥ci´+É^\ê¹’ýÁˆV0ÛT*Õ�GñëÃîÐ÷*:øÖ ïU|A%~Fõ÷1š¼Þüøª Ç9ò½ì+¬[�°5~Ç7y�oòž–žã›|ÓòsüaÏ~ÎÖ�ßô¹#�qDÄÍ^k-¾¶ÏÙòq[‹§µsz�oúÄ ?Ïkßßæ|ýýmôú1y†ßE‡Ò1@tµ/ÉÞï¹*Z�È…21«Ž5Ž’>Ô*R#3€8áˆÉšÐ|í ðä½â#/|/V½nò‘[øÞÀÍ™X²°Øu;kÓµŸÝËt¶pIêQ:&h¿ˆ“ì�6ÿÑ•.�hMNEù5å ͨQµý€8ÁÔÔôú&z×:.!wxÿnv_@|ôø‘ Ke]•÷´[—Ö¹»$i–Ííg>EÒâ[ÄIöò2Ïœh ©zŽú¥iɬER  6Ã�µtCÛïeãv!¯s¨Ö`Ûº’“ ›CDöÖûư"i]­š%sú™O.m땎 ÂQ’-üí4¯©ôží`"ÁÖ ÷IÕˆ£Ö NE—á©)Ÿ‚_‹±ðW€*6$ámÛcó�»sY�­»UóûEýÌ'ê8²+„.¢${E¹çÂÏ+žÕ$k¨GrT¶ú ¨…D<ÃȉíHl=yµû@ò]æôcJúØ6¹w,««’íEs„d[Ë‘C阠me¨«Ê½³¢H8´œŠÆvÒ‰S™ >±µå™BòÍZßÔ¿/KYѶRg€ö ‰7›Šžè„d{âíËêì=S´?\Ô×t²p)ìU:&hYØI¶ÝËgÙ}#¥&¬øèlÝ¡-¢ cѪU”Ÿ¤[#¶k]•+@»ë}TíJÌÄ{[­wê-Kë<:éŸ:¥»áj¥ã€àÂN²7Õø¦IH(R �ÌÒ)uzPˆêдó¿¯YÕs–t—8H ½ã/q_µ¸ÔsÅ…Æ9#²´ó•Žv’½±Æ«H’mШhx&l8€í(Ó?M+´ß³šjÅví²ù;üžà<Ïslw¾úé.ÕÓsû™�ë–¤^¬tLp@XI¶ð§ŠÛRã;Qª`ZÃlSÄ Zލ»U#6Æéåik��Ê�~…#“Ž×Ï›ž]gÿ=EÏí½j�e”E«*S:&€DV’½­Îw¬/Àë¥ ¦%¬‚8ö¾€p˜„ëÇ!Zá+­¸•Ø›�vÚürjy­;Ð徕¶ÒÑÙº—N+4^¬t<‰,¬$»¸Þ/{Á3�Zuèn$@$ئ4lûׂƒÛ¿Ûý´¥ÖGþ6­|y™gîÞó/îgžÚݪþMéxQXÙk‘]þ$»PøCˆJâMyµØXŽ½Ûæ£6?[ç¬tXQáðºçÖÛílVÿ5o e¼–#§Ò1$’ðF²íþRŒšSQ®YÝö"À5áöøyZ[åí0[„íwø‡Ü¾¬ÎqRWÃ-GçêV:€Dr’móò�ë<�\)ƒ9K°Qì äÀ–)Ž8¸]l©ÓOë«|býö×{\­,÷^xÍ`ËPŒjH/ä$[îQl†Má�[ŽI-6V¡|U…—œ¾øÝ®hð÷b£Úô5ŸÚ/Uó…Òñtd!'Ùr¯ÇNÑsdAEqP«P>¡³ŽXŽýW¥'î§’¿¶ÉñyŸTí×ö5�¬t,UÌŽdçbb„†#q*9Û lm¥—� +RÄ6×xOº}¹Íqõ ˈ,#·Iéx:š˜ÉÎ2"É€ØÂ¶šÉöÝÖÒêŠøÙöúyÓ£«ë7þ£§iöˆLíkJÇБ„”d׸ùîNo ]ê`¥ê9Òrr� <,Ùf#Û¬"ùвø]³ýÁ6çü½õú13 —* @GR’]d÷É:Š�‰Qlˆ¬"9[³]çÐÊro\V#_Vê¾Äæ t¾ �é¥cèBJ²K�ARÒT¦ÃØ?’õ›¯§Í5>Ú[ïS:œ°m¬öNv½ã÷˘'( @¼ )É.uúHH#£FEfT€8Ô'UCV5-+õ�Ë_£Ú»m¾ñÏ­wüvÙó$¥cˆg!&ÙÙ’l«£Ø¿ØòI¹zÚVë£]¶øÕâ�øÒFç÷sû™ŽS:€xÕf’í �±Êå/”#I6t=S4ÔÙ¬¦eeòâgT{[­wêk›�_`�6@dÚL²åœ*Î$ë0U<Úü~?Õ×VS]M ¹] ”dM¦¤”T²� ¶ rr®žþ(÷P­;~*�³5Úomq~xnoÓJÇoBH²å›*Î`$»ý¼7}ñö«´nåÒ�Þ¯ÕéiúÙ³iШqG�x8Ѩlm¯õÑÎ8š>¾¶Ê{ú{ÛÞ<³§q–ұē˜É6k9Ò Çn·ç¸“ªÊKC~?KÊ?yíyª­®¤I'`V€z¤h(ÅÀѪr�Ò¡„lU…ç\áúÜuz¡q®Ò±Ä‹6“ì2g ¿�0VL� 6=<�?¡É’ì±9zq�6'{j¯(óÌÑp*÷Œî†+”Ž ÄÔHv2¦Š@—¤SÑÄÎ:Z¼ßCþ8I´—”¸ç±íi] 7( @¬k5Énðó©už@®\Á è$ÛæKH´•xÈ'•ÇÛç¾^£R¹O袿]éXbY«Iv‰#0X®@˜$Œd@‚Ð ‰ö„N:úm¿‡q2¢ýS±ë6-G®còô÷+ @¬j5ÉÞ[ï-W ¬è‡�lH :!Ñ/$Ú‹Kâ'Ñþn¯ë> §rÕY÷¥cˆE­&ÙEvÿ(¹±h‘a@â1jT4î`¢/ÅоÚÝðˆ¶{|'ÝSJÇkÚÉöË6’�„$”‰%Ú9:ZR?‰öç»þËŠ¡�ÎÖ½¨t,±¤Å$Ûæáså,zfÑb=6$.³VEcY¢]âV:”�}¼£á¶½×ðLíëJÇ+ZL²÷ÚåÅf0]»&ÃöÑ.�ŸDûýmÎ×4œÉ58]û¾Ò±Ä‚“ìíµ¾cä ‚S©È„$€¬:�ÎÑÑòR�Ò¡„ìí-Î÷´}Ì®~išÏ•Ž@i-&Ù[k}ÇÉF±þ–¬ãhT¶ŽV”ÅO¢ýÚfÇgõ3ŸØ;Eó­Ò±()h’]íTºü=ä EÏ—¢çhd–ŽV–ÇO¢ýÊFÇ7ô1ÏÀˆ6$² Iö¶ZßT9ƒ@Ñ3€æR  í?ã(Ñf#Úçô6�‰5Ú�¨‚&ÙrNg¬zŒd“.$ÚC3u´º"~m¶FÛÛÓd‘©}MéXä4ÉÞaó%glÍ —iähˆ�hÿG‰öÛœó½£ql¶î9¥c�S³$›í�íôÒå À*$زZ•%$Úƒ3t´¦2~íOw4<ë �ab'ÝJÇ —fIv‰Ó?HÎ0Š šlGÓµ´®Ê«t(![°«áqo€7NÉÕ? t,rh–d—:ä ë±BÖɬ¦€ð¸!Žío÷¸þÍF´�Ë×ߥt,Rk–d׺ùrÀ 9@èr…D›ç‰6VÇO¢ýc‘ëN6¢}rWÃ�JÇ ¥æI¶G¾$›­ÇÖ©1’ ®<Ë�D{SMü$Ú¿îsßàõ“iF�ažÒ±H¥Y’]'ãH6F±"—Ÿ¤&•*¾F´—”º/¯ñºÌîcš®t,R2]œG’ '؈6›OÅÐ6U{§=¹Æ¾úêÁ–áBè¥ãˆ¦Ã’l?Oz»7�%×ÉSôH²Ú‹CS«TôWmïµßáòï?ê‹n–ÔKË‘Céx¢å°$»ÎÈ•ëÄF� ûcDI–‰£áY:ú³<~m›'ÐùÞ•¶²›†&õ¶êTû”Ž K²í>[®³$¢‡-Ç•­£eñ“h{ü¼ùßÖï½´¿yrw«ú7¥ãh¯Ã“l//ÛTq’l€¨cK2ÇäèiY©[éPBÆó<÷Üzû¯Ó»¯›ØI÷„Òñ´ÇaIv½7 ãH6ÖcHÁªSÑøNzZRêa ¬Òá„lÁ®†Ç‹ìþ‘g÷4ž­t,‘:r$[¶$#Ù+Ê�Nrù}J‡q¢Ô뤅p3L&Òr¸© -KRë(McP: �ˆY«¢ �t´¸Ä#üÝŠŸDû¯ ÏY%ÿàk‡X ÁÐACÜ9b$I6$ž'W¯¤µ•åJ‡už\ŽxäOЊiituç¡J‡bu�Žê¬£ßK=äõÇO¢]æô÷»k¹­æ:!ÑNÓs;•Ž G>“oº8’léiÕ,ÑÖÓR!Ñvxãc&ãñó–‡þ¬ß1³ÐxÙ˜lÝóJÇ*EF²µœŠÔ˜½ ¶uîøN:ZUî¥J—_épÂòÉŽ†ç6TûN½¨¯éD¥c…"ÕÅujŒbÈmX––6U«¨È_K�·ÔxO¸{…­ú†¡Iý“´ª¥ãhÍI¶<ÓÅuj9ÎGꛦ!«^Eª¼J‡–ŸzÿJÛþö4�?¶[’úw¥ãø{$[¦Êâ ¦‹Ä–\‹šÒ œ¸Ÿ¶/_ÓÇ…xõÏ®³/þ «æ °LÐpÔ tL�¸š$Ù˜.�ÈŒšë´ÿ¬ðPµ+ t8aÛg÷»mY�󄮆ۧäêP:HLÊŒdcº8@LR —ê#²tTêðÓÚ8Ûæ«Ñ·{\ÿþ¥Ø}óƒ,c³ŒÜF¥ã�ÄÒ4ÉΔë¤zLˆi9f5eÕ´¼ÌCoü�j»ü¼õÑÕõò,š?.`ž¢ç¨^é˜ 1È>’­áT„�l€ØÇª��藍¢z?mª‰ÏQíb»oÄ�ËêlýÒ´ Îëcš)ü“|JÇ[Ó5Ù²$Ùň/ùIjÊ1q´¬ÌC ¾ø*ŠÖhcµwú-Kê¼ãrôÏÎ(0ÌS:è¸%Ù™F²uœgH\=S¬tTn6ä%7ééÿf÷ûhIMý\]Nž@|í‹ ÊѪU4±³žÊ�ú«Ò£t8[R꾜5G©È¾&ÛwEÎëqQUIU•î%—£å%%'OŒøþôYÄŸ�:ƒ‰Ò;u¡ôœ|ÒÍJ‡ ¹½ŽæôïI× íG©Âבú¶²„îݱž–×VF1:舲LMÍ7к*/•:ã÷F+ŽÆÚð,Ýgô0^„iä-b’íôñéžr¯;úPY�›ön]Kµû‰çãsZŽÜ<.'•ìÚ,6Æ`²P�Ác‘p@‡‘k1ÑÍÃЬ>dPGoOÌ2:‰­Ñ:{ýKHº?,ݵs@ÇÁ*�ÊÐROŸF,ŒæñÇïµêŸåžóXëjÕ,¹°¯išQ­ªQ:¦XVëá»üUá9kM¥÷Ÿûþ¡RœƒS©ü£³u/žZ`¸*o~ˆ‰µCÆÊâØ#;4Õ¥E´kãŸJ‡÷\N;­_ú¥åäS×>CˆãðñetN&]6°�Þ£+©U‘ݨvyI¼YkÔ…þù�–dzðx±1»]z|÷fz¥x'5øãîz$ÂöÕ>:WO5®­ªð’?ކöØ|ãî^n«N5p»/ìkž–mä6(S¬XYî½è«=®‡�Þ@ºç ð¼zi©û2Ö¦w3^?±³îq9Î-b’-ëÙ˜.Þ¦ík—Q]e©Òat(ì¦kYy”ßk�Òá´èØüNtÛÈ�46'_|Ê IDAT¼ûß•¶}²ØIŸ-uRymhÓ7UBÒ>¾ŸžÎ™l¦‘½ZŸjÞÍ`¦§ú SçóÒS{·ÒBâ]ë�ßµ™BbJÇäë©Ì÷ÖŽçY˜5®@·ÇVׯg_�ÎÖ½tj�ñ*�Š\JÇ%7§�Ïxe£óë"»o¤’q,ØÝðXYƒ¿ßé…Æ9JÆù“lLo‘×㦠Ë’+’)/ÞI©Y¹dI‘å&@«8!ɽ o!ÍÔ‡ú¥%‡õÙmû|4ÿ;ýø—‹�È.fÙEðï\bk”—¡¡óŽ1ÓôÑ&Ò¶²�,Y£¥; ú‹�qózcß.zLHº·:lÅñ/›­×6éio½Ÿ6Çé–_M-/óÌeÍ VÙNïaœ;(]û�Ò1IÍǓᥠŽvÙ|”Ž¥ÑŠ2ÏEV·ÿ¸|ý]JÇŠƒI¶<Ûw1˜.Þ²ík–"Á–Á–U‹¨[ßab�49%ëut¾�Tß0´?eõ!Ž }¿ÊE¯/´ÓÖbi/Z‹+}ôÀûubcRÌ�y´™Î<ÊLCË7Êõ*ŽææŠ� íëŠýôÀÎ ´ ÅÔN—$µØJ~Z_ícÓ•©]\~ÞúÖçû—ïç˜Ôëÿ¯À8¯»Uý›ÒqEÛN›ÿ¨78²éÚJÇr¤‹\w¦ê¹Ý#³´¯*K[0’#ªJö’³¾Vé0FÉž­H²@r�Í&º~X?šÝ·5¡_¯x|DŸ.qÒ›BR]Z£låÞZG€žÿª^lŒA§¢ÿg¢YS,”•Òò¾œì•i™�ÅÖhU} ýkÇú¬¬Hê° Fä˜Õb«óhu…7® ¤5*uú<·Þþ+ûÚ¨QÕ×Åp׸Ý3ª÷ãÖ¦ßôù›_(Gk>ßÕðÔÐLí;±>}k²cDMù>¥CH(n§�êªÊ(9=[éP ’™FW êCgõê&N•ÍÉÓ{¿:ÄfsÆö5šËÃÓ»¿8ÄÆpœŠŽb ÙS-Ô3·õ�J†%¥Ò'Cþž}¸Á^GÏm£ùÅ;É�ýº:´d'Hs I6K¶mžØþ[ªŸòùΆ§XS©T�YÚ׎Ï7ÜeÕ©âîâþí­Îw”Ž¡-?oþb—뉙†Ë”Ž¥5boXï äÈq2vÁ¡mù¦w øýTW]®t ÇãjP:ˆs;gÓ=£Ó¸Ná)c£Óoüè Ï—9Éí�ïQ¶üûU bk4¬‡žfg¡±}Z/¦Öß’LÏö!6†ScÌÿ»g Ù|ñ¿–šÓ«U4&çÀßV$mCµ—|Ö•ˆ5<Ïs+Ë<²Æ¾Ws*ϰLí[;éÿ›câÖ*_kŠíþ‘BkQ:ŽP,+u_:©³î‰ ·UéXZ"&ÙÕ®@w9N¦C‚T}MÅ�w³X%î³{u§k‡ö¥þi)a}vs±�^ûÁN?­‰¼HYí9V-.ñ\yjwÕJÇÑ’I¶[¦$SÅ N˜µšÝ¯]3¤/åšMa}véfÍÿÞ~X¢™Èö”ûèÞ·kÅÆ°bjÿ˜d¦e¦dSË×fµš.Éë!6†M.ý´¬ˆ’î?êªädÀR„¾i±ù¬ø–�öÔûãz°–Ô{9KJÜóXkú<›jžkæV÷MÕ~Éð<‹úáéŽ÷ JXÅ÷iÝ 7?;1ÙÑjü|ªËLJ·oH„Pô bU–É $Ôýè’½ÈF‘260ýí 4ÿí*ÅçP°bj/~S/6F+\%±Qn¶uX·ì–×u³AðÓ²óÅÖhE]5Ý¿c=}UwË 6Û¥WŠFlL©Ó/Žr»:@Á´Ö°©æÅvÿpÖ~(¢»›¾¦áT®B«æ×¾išýÒ´ Rtª½JÅ+|^ÿG¹ç‚ÑÙº”Ž%Mµ‹—e›1h�d@l蟞B× Iõ?{vc0!Î%äÑŸ,vЛ TQ‡b]Ñà.ž¿Xæ[£±}õb1µa=Z_×=*9� ›tèûÍ=µw+Š©t9&µØ–g³-ÁöØýdï …ÓB!$”†-µÞãYûlgÃÓM_3k¹Š^)šºYÕ¿X5¿e¹ JÅ)· Õ¾Sc7É–iª8cD’ ™�Aw�LÇä…Wë³Æ w~vЇ¿;ÉÞ�8uJ[ºÉ-¶F½ó´táq:fˆ¡ÕÏõ1[+¦VåõУ»7ѳ{·Q=Š©Ä56­<×¢[#»‡§"!é®pùÉåëØ£ÝÁ8¼�ÌÕž³WWÐÙJÇ"·­µ¾ãü¼XK/榌kä*zÆ[ßÙ jNïÑUœþ=<+-¬ÏUøéµíôõŠq„bÖb/ÝüjÍ¡ï;¥iÄéå§Ž5‘®•ë‹t­Žì9Xl «`þnÉzp×F*jpH6HÌ¢SXÏM‡ÿ!`ûqW¹Bò ª†y èd¢ ð¼ZH´§öMÕ|©t,GÒ?pf¹N†‘l�‚A£¦óûÒUCúR�5¼H6ìñÒ«ßÛé·õîYd§£*©öÑÃÖ‰�±š8úç$3�u´Yøºåë VÁüÒübcüÄ‹I÷»·Ðj[µ,±€ôXÁåNfµØŽÔàã©RH¾+…ä»ZxôãoÜÚçð�É$[ΓQ]¢ Õ §+õ¡yƒz“U§ 볋„dš%Õëv{$Š”`sè¥oëÅÆt*ú¿q&š5ÅBY)-ï¦&�Û©›Ø-®­¤{¶¯£…U¥R‡ `ùµØŽÄ¦Ÿ³ð·Ð<ÌhŠqEvÿ¥cF¶$[­Ra /ˆHarÝ0¬?�Ý»;é¸V6Z>‚?@ôõÊq�j¶�$—p¡üî/±1jNEÇ 3ˆûuvjýòg|Jý0bò¡ï79lâ^ÝoíßM~ëò:26ýÜ¢SSW ¾Ë›uÎ*�;¼¼øÈú6Ξolì{“ï_÷óÍßËþ¢`Uää\úùF²‘_@ˆg¦Ñ]#ÑIÝrÃúœÓÍÓG¿;éíŸTeKìÊÒZ�Š®:ÕJgN2‘ªI¼¯ÊO7¼\CÛö%V0¿p5ûÍ bk4´PGçk¡ ýõ­~¶¯ÙJóŒSêqÑ£BÒý\Ñvjðãæ @"a›Q˜„¿¯¦XkZõ*,½Wé0”Ö¿ô}åö×dlM:áÎ[ôýOüô°ç•  Ñ´îytýÐþ4&'#¬Ï•ÖøéÍŸôùR§8r ôÌÕÒÛ7eP°�ÉrÓÕôîÍ´ð/×a…ÄÑê¡ý½;?S#V0?i¤‘Ô­L˜ÈÑèÑÞCÅÆ°bj¯ïß%&ÞÅ.gË€ÅW¹³WÍ[³?a_ú�øYʬù3…/y$Ù +­�½ü£G7ºuÄqx86yéÕïìôË:)kÍÍg$M°›b[aõ뢣�{±6½QQ…�î}»VlLNªšÎ™b×vZYúÏŠ©]Õ¥—ØVLmþ¾�ô¿=[i]}­¡€Â\¿™QvGž;ãš_"ÉÉÍÔ‡n’ê CëÓr�ô«�L³í´ÖíB"‡+´uí�ÖÂ�™�}\'6Ƥç茉&:wŠ™R-­S›“[(¶FßW•Ò›þ íŽzÉãeð~Ÿ¶ò©cW!ÉILèœEï�0‰ÒCL¬}~¢Ë�ôú�*®Ä:×öX¶ÙMãûµýß}ûþÄZ—Ý^Nw@øù´‹�ѪUtâH#�w¬…ºe/’Ôè¸ôÚ:ašøõ»¥{èüuËÈ@5€Ž†÷6˜�d@T±¢e gL%³¶õ.¦ÁÃÓ‡‹œâšêšúÄ.RmK7¹Û|Ïò-ñÿˆÛÚç‹eN±1§¢†éÒ“-Ô9­å¤û¬œ®bcÉö9k–È.$¨JŸ™~¶÷¢]žôf¯iU~j,¦ñæ�â×H² j›8‚.Ø»Õ÷ÌÿÞNÏ~eÇšj í.ó‘½�'‹±å…Ù¬ðDW ÀÓ×+�bcºdiè‘‹R©G [†±DûäÌ\²øÚÝ`—3TH¥^+½S;œ||Ë7ý¼Âk+œ]Å–¥©§sSW’F…Y6í…$¢âÙÉchvß–_ëW¿ÃzT¹°D{@·–«uí*Ô|©í-÷Ñ™VPºU-V{ϰ6_ÇmUkhóÄ“©×¢/ioƒC�( #*ö¦Ð;5#ÂúL¹/‰^¨š@—gü–»/;:ÚîΤJŸ…ìÂ×:•Ÿ’Ô.ꮫ¢\m]»Ž�$Ú팞ÝZL°]^¢¿r«‡þÚ‰ý­åfÔsôÚuéTØB±­F îÉ¢ûß­£Ï—:eŠ ½ðu==}yZ³ç‡&¥Ò¨”tZQ[¥@TÐÑÌJ[A;Ü´À6°Í3Cc§3RVS×öîmÙ)œó3Û òñÍëP4ò )+›ºÍ“¢vÒ9©�™‹þu›:ßž»+‡$$72;ƒ¦äå}í¥oQ-Y ºjÛL°�4Òˆ$[lóÍÅ>ê“×üÿ§» Ò´?‘?(è�Ø(ñ5™?‹_ÛüÚëM¥záQ­ Pš�ØvÕUGuë®j‡JœÃQë7Ñ3•“hŠekȉl¨ø(•q g^’lˆØ]£}~õ­ÚÞþ»áp@f²šFôÔѤêÛEK¹éjREášaxýñT§ ¯ù„k®ÍÅ^Z»Ë#4/­Ù顊:L/�–×°Óƒ³›/³8)£�HN§?ê0š ÑeU»h€ºD²ãÿlïQ‚ÝÔOö^âVb]t5QŠŠh°±˜~³Š£çí1Üúr$Ù‘ü$3›ÚH]üíHÊ «�;Å,¶F ž¾ZÑ@ïýê÷é†Ö½ý³�®ŸÙ¼(ÑÅB’ýŸŸÖQ±]ú}³ر�~ íQ;ÞCަé™Q;Ä+秤·û8êèW7gǼ6ógZçêLßÛú„<ªÍ¦Óϰ®%=^Ÿ†$–ªÕÑy�»}íÓ¥‘o 3Ç›èò““(ÅòwZQ ‡>¨£_×)·- ›ò}ù´$:y”‘¸øË©CbÔ©èô &±1ÀŽò"rTSJ—Þ¤OJS:ˆ¶o0ß Bymlhb£¯z®Züš%d³Ž±Ð…SÍmn—Õ¯‹–¾¸ûð-ˆì.^L̆êèÿÆE·K&Ÿ^POÛ÷·¿ÿȉ$ÉŽà3 Qò3›Ø˜t«Zœ®Ïª»G£z:»é±ø±Ú\ì£gØèºÿ³R÷œÈ.[¾_å¢Ç>±Q•-¶~F›zá›ú Iv®Ù$îGÿcQ‰Q·Ó“N_Ö Ø– 1ÓqI›£vί…äº1Qn�JŸ…^¨š &Û禮lWñ– ÉŽ�½ŽjvoP: €ØÄóT»g3™3rÉ’ÓUéh ¦gåÒ¨äà7KXÁ³XÆÖ[¿ú]½Ø˜ã†é†Ó¬”–Úüb‹AE÷ÍJŽZ<ïÿ椧¿°‰ûJGSNjøk©³SØN* Ú K`Ù6i¬±âˆl„ùêVñ¿]{ôÉÓÐÿ. ÿ&Ý×+è?Û¨Þ3Ëö–ûÄY Gl>óâžÑC�d@Ìø´nmsgµù¾¿òh£+‡æ¤/% ù졯¢—«Ç‰ÅÔ¢‰%ÛOUM ñE{ôIv;5T—’mÿN¥ÃˆyŽÊ}äó4PJ—à[?Aìk©¢8ÛkxÛ¾øšÅóýª±±äòªS’èÜ)fÉϹr›GÜ:¬¦^ºÑÔì”ÈF¥Y¢]R½¸XqÄO—8ÅÆn¶EÕ%'†¾N>RÛöùÄ"v%ÕÊíÉÝüæšdÏJ£)y�è§b$Ú ¬½žÔ�ìF^C¿Ù é$ëÆˆÏù™mPÔìFRÑ[Õ#éÊÌßÄuãÑ‚$»ü^7ÙJv)@ÜpÛª©¡ºŒŒi¡¯£�Ø0<9�Ƨßjð�Ån ½eÓ�Ÿÿºž¾½?;äÊä¡òˆîy«–¾ý#úÛTÉšl†M�f’ÝK¸Y!3ÖrÓ5ô̼4Êˈþ.w¿U'ÛþÛRY±ÅM{ÊýÔ5«ùŸËõB’ Šc•ÁåøL£j¿‰¶»3Û~c;°)ïk:Ó㾨Iv;°)°b•™­d'é­iÄiäßê"wGAðŠâ›‹¼´bkì�Š+îuñÿªhþµaoÿÔ’›^­¥Ÿþ’'¹néúêH?®}U>šq_9¥˜9zë¦Ìˆ¦·³h½[¶Rcï<«ùÒ„iÝòh`F*­«¬Q *€Xuî3RVÓGµCÄm¹ÚÒÏPJGY¶G|¾*Ÿô3͘ê(ŸIv„|.§Ð”Û nÜc[|Å�“…NÍÊ úÚ ;ÎßÁ­Å^qDûêSÃÛ«%�\˜"üo }¸È)Ž–·T%;š"�..W’=¨»Žþu~ un£¢y8Xµðë_®i÷šòXñùR'Í›–´^ÀUƒûÐÜ…Kˆ àoÝuUtcÖBZÓ�K?Û{ŠSÂ�ÔÏPBÇZ¶��kßò�lMx[:F*KÝó ÉŽ�ßÓ1î˜(ÁçÆïO<¹±{ß Ï—ÖøÅuÍÅæ¤ÑäA¡m÷Ž3&šÄæö=ñ©�>ú]š©IjÒFØ«gI˜dçehè_ç¥Ð€nÒÌ^éÑIC?=˜M3ÿUAÕ®w—Ó«ßÛÅÂ|G:§wݲxU¹âöÄ¿ÁÆ}b“’Uí«”³"jRIS;h€!ºËq�dGH®}°ÂyöìÙKÕÕÕ²œ/^è´ZêÖ½%%EgÄ äÅöÒ†ø�ªÕÑܼA_{ýÇŽ3Šýæ�Ô7_Ú% lú-ÿ°Š­¼6@w¼QÕ½šsR"ŸzÍö¼Ž¦$G·þ#™ŽÖ|K*)°µôßþ+‹Î~¸2*[¡)íƒENºôä¤f•ÙÙw·�D×-Z©L`—ضW‹ì…Thùorç§u³éݱ†mfóh§'xm˜ö`ëÅÏO[õã"ÉŽaþ¹ŠV,�þÿéÅï¿/&ƒÁ@³Î›E�:çáJòúyJ·ªé¿—¦QŸ¼èt§lzuãë7:èÙ¯êÉë ífFaNä1d&sd5qd 1¹ŸÐß@wŸ“QÜš:'O×¼PMëv¸Ðº^HÞÏ::üН¯\›Ngü»‚ö”Çç~ÙŒÇËÓ+ßÛéò“-Í^»aXzâ¯MâöhGú¥¾g»÷•®ñ›èW{O:Ú²-*1±­¸^«Ý,1ÞçM¡�Ô‰~²÷¿?5y-õÖ·~mÏòÆií¥^+mtçˆÛ|û7T^*ÔW Ç,££\�dǨôôt¥Cˆøo �+ºö úü«\Tç¦XâvÚxSØŸ+®ôÓYU’ÿà(~•ÍOç>R!N•¾MHÚOÓ¾‹š¦fcÛ^ì¡môåò–olœ4ÒD3#ø÷4õÄ%i4÷¿U-ÎPèÑYK\�BíHæ[²£ÄGW>WM嵇ÿ\=ö‰�*mºò”ðêo°©ã/\•N'ÞY׉èû¿:貓šO¿OÕëhVŸzcÓe€˜ÆF‰£¡Ì�ÚG,~£fTHïý¼nMMÚLC�Å!½?GkÛËÖö„uH²cTffõП6¬ß t(1�ã8štÔD¥ÃèpfuîNÝ ÁGßû-¾ ž�é£GHÃŦ‡ŸùPÅ¡»)ŸŸ§ûÞ©ÛŒ±&ºíÌd1Ñ‹ƒNE÷œ“,6��è»?Ä5Ç./ÑÄþz:~¸‘tQèÍw×ÒŠ's¨¤ÚOK7¹iäQ~o IDATo…Ÿ ;ih\?=¥ÙN*~^ã Àµ¶½Ùë?ÚI-œþòiá]ìeX9ºoV2Ý)?^9\úby�äæÍ�Ãú#É€ òu5TìMiÿq´5Qˆ†h›;3Ì÷g…œdÇ*$Ù1lÒ¤‰4tèZ/$ÚÕU¨.Þ”V«¥‚ÂêÑ£PéP:¤k»õ úü—+hÍÎø^ëzÇY‘]x\ød•8ªÜ–Ï–:ÅÖ¿«Žþ{I*¥DqJ5K¦§�6ŠM*�ÒÔío˳_ÙéÕïBß“”mi•aUÓ?&…׉#Œô•ð3»lsüB{áëú Iv�ä$šÞ=Ÿì*R *ˆeÍ;h�'�ö{“#>Fž¶–Æ™wE%žAÆý´ÌÙ�øWA’x[09 ÉŽql‹ª±cÇ($�)é94$)x"úöOñ=Š}ÁT 夆ŸôÞõfí, ok¨ {•‰QÒš¡á$·Ý–\Vý‘Âér7ÖCûzœ‰ çqì—Õ ’ZÔIö‡µÔóí@›?÷¸胿öÚÙÙ}Fçp’ͪ’û)%¤µ£ ›§Ú¼WKšQ�æù#2‰„FU-GãöyΚKo&‘«Ò•…kîQ•kºISãýÕ$S<÷¥I¶‡Ó¥{W¥=wJOï4@¡�,\†ä’¬#š¬íÒ÷»ÅßJ£@„ãó°ïƛ܉mõÊ©in�P§l–œ³ Þ‡.:þ>ÈFG¿ß�JË„SÅ"εcEå GÉiäç v%ø¹Å8#2Dæô}=›½Å–0 j‘õ È JehúáS”fïÏàÍÌ"­ÑÂmiONuÖ+õ&ëf}Ûd§39VÏ"¢#QóŽî ÚĨ¤·>ª#tö@’íá *ÄM‡œ±µÙ11¢ø›ðH} ·yýFkf4‰wä/SD�ãIvbŠë“E™TBå +¸©ËoUósÙðç[SœJ°3é ê³øí˜Mj'ÛyW/¡¤³þ«Lú†�þ=­£]§Ó]^<.1ÕLIi–,#º/(µ&Ù. …w_ÿ›J}›’â…oprëk«{Ùâ´äÄyaðA¬kÄc½…’¬Ùq²õ”miF÷hôU ©D4k×�d{¸*U«PšVK'Oœ:�%“Ë©eËäï¯:Q\¸…+l·DZ·=•çhÜÙêÝ&³ó å‘Ó«åÕT¯œŠªSæj ¸=Þ{ÝŸ+<–›ŠÞí^Õ8�`ÛR¾�‚Ûú5}~Z7ûþyüŠžKÀÿ9™Nw97òš”f¶&Ù<±1[ClØ–hwnèŸå¶ñ5*"Ép!ö~õ(ÝlÝL” ³Pª ´�äRÍ_þ’l ›þàŸo¼«[··¸Ã‡Kؼž­ÿLâaê/ØÔïbyûÈ‹Í9�+%§ÚeÕ\QµjÅ•‚VÖHè�êjúý�óùßoèØggY¿$q£Þl{q-¸Þšo¹¬§ýçt´ï¼Ž®ÞË~x�‰%Õuʨ¸Í )f^вñeãÎT›IvÉ� j]¼mº|C€¨„ÇrçDk2}ßú÷§5qÅ|•D"1ÇÈXó¯m¡*é�•ä¦J*I1Ys@“™”&‹Eiý}É­¿"ù­©Ô–é3…Ž9'!*éM¡c°¯/›~‘Ûö$àµB"¨¬�ÍÛÖnóžQl&1…¿JáB+”GF;sÃ’K6½˜�þvlàÏ­÷E�Ó,”?\îôpOs슞Ž^ÖSÕâYë)t-] I6ø„$½…¸�<_N¦¥‰±H�lW¹0ÅOåÃ?Z“i‡ßÒMòOO²ÃÔÒ«BÇ`/¹F.yÄç¦Ì¬B– ´i%*Ú¼ž}y?u�ßÑîP¦ ‚– §µo �Rÿæ¹ëƒí ç‘ÑO“"¹ó;Oéè£/¸"bbÆÚyU-–åúÆ1yéÕ|Q´ën¬Q¸«ë” 3ÓkB›f&s.Š<ŠY¸Zv…�J— ‘ÿaݶʥä²jÛj%²$6>Ý\ÔU�éjyü¤„ŽÁ^ò:ÑÊ%ûîë?ŒM3•ãã S¬hÁ¾yÀcT £7¢lÞöÕ6Ï®(.•J(ÈOBÁ2®ø[K\0RNec\bíïãI5ŸXå]­ÎâTõv!Õ¯ ¢½ŸD?½ÌúÁ_¾k  · tç¡õK|¢‰î'˜(ÎzÊZ¹iõžù…~ï9�5n#Ï—ubâðªe‘dƒh±™¯l„úz²Ñ§ ‘iäÒøbÁ²Å‚å;ŠË·[“Ês|>ã‚ê�¿¾”¶–Ïçt„õ÷²]èìŽ+WŠP|ûçMÓd>žPëÃS9QÐú_nK¡i]B²\ÿVL>Š ô§›Éž}Ð ¡¾�h t/NªeR‰>&@vК@ÿ]± ߬ ïµûîxak¤/Ý1pÛ‹šÔð£)�³ŽØ:*)ͽÎ\9Ž@„ŒšÕò£Í{Ó\ö˜ŽX¿=…F´ÉZİsé¢4jÏJÔ‰¿ÆxÖ�úÔ#½ '`Õ»Ùôî:Ѫ¥åÂä?YßUD?œhýL£«–\t2åð½T“íâ-Zúó¨ÖéÊпH£*Å”Ôâ?‡î*£u#"¨Ó܇ÜTnw‹ –Ѽž¡nG±àe©û‚‡¼<_±¼ Z72©ûŽü<Ñî}�^ÖqÛŒo?½Žý´¨­¡ºeU\a½§¬§¦[èó­)´öoa[Þ±iêßü“J]ùg¹mP¥24åàIë÷/ŒrÿX[­£ ”¤ïëO-“$½£þ¸^^åb6Ê+t<|z'F5öͪ)«Î¦þy-ÉXOˆ^‰V--Ÿò!ž;7ž&Ùré>^7®:ðm2™è›‹èâi�ðu¬Kl]¡ƒ‰&lOgبŸÐÎÝ2Pë©î˜º!‘ GÉ©RÇ ]•* §¯ÇDP‡ÙÝ:¢-“J¸‘óÜNuÿëh:M±þ¬ÏVÇ®_QMÓº†Úõ´[‹<º]0ÍþîñËwÎ…ù´q´s öô¯Ó9;ׂg‡-XýG2·yºìf¨dRêpù �»t™—8¾ßú }ÏË3ñ«X™òT¿i+*XÔöL xžÎš\Ž3PªAœÉ5±nT@5õÍ‚ª�…ŽEh¬MXßòþ¯ZÿI•¿ÝHŸ³çž~ Åbá¥JFÍ(åêÖEÕ}ùx.W{šd«å÷~R>ñ²jª/½?K®WZ“ëSH®\©P¤œ.ÝÕl¬\é½èmšÉUºvD±¼rúszµ�gW…mg,íÆ�œ;‹µ¤b+X ªí<™Nõ†ß£÷ÐÐVÎ÷Ïn÷ª†Îß6ÐOûܳ¹ae?šÓݹ5Ø+~Ol}´PXÁ8pŸ+çNsóê[Íé�íŽÈ3±¯ùlZø­ðm�¦–^û ´Ëh�ô¤Ð±x™„ôïVaK¸�?4tØ}O7È3¡Ë†)~éPRó¾JJž„3Ï$Ùdÿœª\Èí­/>™Jw®_uM0>F«Ë~Jx›z®šµ¯`}Y¥lgí m›E}>�§#—\;Í~\û`ª^BéôýãÍÔfZÜK{;ÿߎºûÈHss1%}B‡`nM<ë/íJÃ[Q‡úY§>ÛcÍŸ)´J#Ï®$£·ªe_VG›.l[>o³kë/$W*éõwZŠG¹‘l¢ âôïv×àCNœ=Oÿ·égz¿õ»6ogU·§ši×ißù2š,ôîÇqôùЇ×h3oTVÓÞùy©÷âGtúºók€_+¯¦A-œŸ¾½ç¬Ž/�wø~'®ê©õ´ôÝG‘Nõ¢Ö¨$\Åñ÷f>püÎÏÚ*ˆÞoàÜè53óÛ$úa·°òù&µ&Ø_çZˆÙ¢7hÜìù’ͰÑl…Õ\j¼öý¹i£"ðË¿Ú@f“™:·kióö½CiËátš°Ö·ì÷Xð�kƒô�� Í/ÃúG9,œ®Þ7R÷�(EëØ¨.[O;¿·óÓ¶¿Û•–«"d¬õkËõãÄ<ä¯vüó™­SŸÙ-”Æ®qü5æ…³éáÎb³ãØïüT.pˆ;(“Ók&95•:|8„ÒÒ0û\�½¾¯'�\‰4ë\JÓ®|˜|“б€wû/É–ó—d›œü{¬Óè:sô ݹ~ŵø˜•뿦]Ó’™“H©È:zûNu5½Y%/õ]òˆŽ]ñ�äeÉÏItð‚Ž–ô sª²wÑh9íœE§¯hàòxJN{y²­QIiíç*h3‹N¦µÛrßB*!ÅL�ÇÅÒãóPt¨ãCÚoVQÓÕ{�v¯‡n\Õ�¦w qjùX&VŸUz·ç÷ì-ÔJ6s ‚JæÏ¾ÐÙöÝûhÒÜEƒÉl6ÓwÖdûÜñî ÀÍYº’Voø–VÎ�FQ‘YGT‹ç•Ó®¹QôÙ¯ÉôÅŸ¾‘ÔX,úðÓGÖ$[ŵÓrf­2S0RFß�‹äÎ/ù%™¾Ú–Ê=v&VÙ»H´sÙf¯Åñtì²k+›3,¾ÎsÒÂ>aT¯œÊáûÒ+”KÔcŸé»î§”ÐÄ÷C¸Ñîܺo¢÷ç<¤$½Ž –ÑúQžCA¸¥kÖÓ×?þÊcT¾‡%×݆�£ ç—vˆÕ½T�z$¾ÊáåÛ»”Ò´:ð=¢š.þ,©TJïõôô2›Fw÷åµ òƦÒÿkçöå™týâ¹Ü bñ ‰Ô¶çzóõº4aèn„õEýšrÕ¯;Ï{H·ˆoª 3_b£Ú÷¨û[�Ô¯i@®k@ó@ncÓ²?^ÿ˜ªWRý Ž'±l2Øÿf< ëÙŒŽ»Ê�ñ4±c½ûŠŸC÷cÓìÙtæ–Sâ¬÷ÕpÍÔŽŠg¡·þ¸ý?sÏ�O6®}µª“ý¿ÁÅ«×hàG“)Më;Å ]¥æë�ÈÏ?ç¿k�õö*u^#¥*÷ˆÄˆ<ò@Oñ.èÀ·neüß-*ÿEè8À7 8]ܵÊU­ÉmŽú`ÈXZ2y4=Œ½çò˜Äæ¯öÐß»öÑ‚)ã¨j…rYnð“Ðæ ‘´ó”ŽF®NxnTÖ›}±5™Û¦u ¥·sèGl�Ð)-úй‘0��¸äõÁc~ªùNÙ�H�’ÍÔíMÇŠÁE…Hißüh—ÅñéÏl€oÌ¢ÈT¹¨’– 'y6ƒ×¬MÛ ñSèÄ 8C¡TR“÷º†GÓ3¦‡‹­5W˜ZzuXåÀJJ)ùÖ›xAZxyÚRކ~DóÇ !³I|-\�-Ç<~*•(Z˜–ÍžB*eÖuÉlöТh¾*�þ9å;#hã¿J  k%4®}0µ¬íØon%¦˜©åÔW.Ï­¥¿$Q|²)WÀ�ÁŽß,ø1™6ìð­ïÉ*EFßëœÖÄÿõïšòɧm£õeôñz×t‹N hHËì{¥'$>¦žÃ?¢¸‡�xŒÊ;å‹),tël¼�n‹¬÷µ\*Ñ ¬P+¯FzBèX˜§I¶„Ȭ�J´³Åí‡æ=±§^Ù*5¨H©rtí É–Rj*QÖþ-.fôпßð¨hªÕ 1Øñ§Ð¡x¤�{Ðë­:ÒÌq#©n�ªYngU¤7ŽŽ Cõ4pY<=m}�›±©ä«þHæ6¹LBÝp›»n1IÖZhá�IôÓ>ßL¬3Õ-«Î±žÑh¢Á¦ÒɳçyŒÊ7°¢gÑù„Ãcˆ±=—¿BúpXå€ � É}¡c°%ËH6OêÉU ·jOÇöþCz�oµ°K$ÇL›CòEÓʹÓ)0 kåé%•´A4M\—H¿ò½µµ ;ÀÀ¦’ï:�ÎM¢ãWôÔs‘o¯'öWKé«ááÜÔüìlÞò'Í_þ�Qù=ûÏ•ÇFn“bÁò}Êù7:€œ¼0’ÍO’­÷ÐéâŒL.§·Út¤_6¬:�vûî}jò~ú }êÑ¡�Í}¦t¡̓¨Ó܇\…j_T±hÖê쾪LŒ’K2SEØs×^V(�6ëlH%ógŸlç “Ñ|ëïcØÊxw†ë1¤R‰õß?”ê–Ue»Ï�£'hÔÔÙ\zp¿Wß~—¤2ß-’ÀZäí¾§ÅwñL�Jéý‘U˨e”(t,ödM¶œ,Z‚këuöØ!¡CñxòFStžH²XÿǦ�Æ>x(tHÏ‘Z¾â…c(4$„Ò´Zºz㥦ùvÑ%w9xìÕoÕ‘&�L ëÕÎr;+¶fX¸5É6PïÅ�¬ ¦x¾è9ªB%}1$œlbjÀgñ´ÿ|Î5@®Ý7pÛ·»²ÿˆð“rk|£BdÖónJ65õg›ZB~*)IŸ‰ƒ�&'¦²ÍÂ�D³ó“L\0½Á¹“O§s³bP8U+n{šükåU´zHõ\èÝŸ�ªøq•óc0©ÏÈñ\?zà‡& �ê5n&`gz† IDATt‚ÑZßo÷ÜWñÒ¡Š-ÝËh|{êˆR–êâ|<)ûãNÑ[(@éÙÓá4k�$;o5x�Æég³�c2›iæâeôÇöyŽÌ95«T¤á}{Rþè¨,·±ÖE«7|K›~CR±Ù¯µx»Q¶·?xO}GO ûqÞýe_“æ.¢åk7Òò9S),$8Ëí +hßühšùmý°›—�^ýï5Õ6(Ç}&®{üÒÛ^lüôu=�vÉ£å^ŸÅ�è»�"©H´íQíÊE´mFµ™þ€§ŠàÈ»‚ý¥´vDDŽ=Ó¿þñWZºf=�QÓ¦{ßl¿·x»Tƒ…öÞ×sKÄâ�Bê± ò«f €3ÉfëÍÖ$Û³§ëDæÍOåªÖ¤3G ŠGÚ§;µiúVŽû°©¢ã‡ô§ÊåÊÒ¬O—ó™ãXR½né'¤T(²Ý'(0€†Y桽»Ñ‡£&Й —xŒœµhÚªV±|ŽûD†‡Ñw«–P‡¾C¸YàZ÷bã¨E×>Ô¦ÙÛ4¤×6÷û¿ êóNW-.Q\x²3«{(5Ê¡ï1óã>-ý~È»gS°e[¦F‘"›Ùã!R.Ñîói<½ì=· ¢Î ³VÛÏtç^,õ1Ž’RRxŒ ˜juëS±Ò9&x«$=ë�-®¿±Î¥üÛU—/tÎd$›ylýƒÏZÇóÔoÖIö3ü5/M°ŸÕìÍ´hÕ—ÜzMO4qøÀìg±£ßƒzvå¦÷�gË•ç¥ v&öïÚ°nmZûÝf7Gå»~øõúõ¯í4ò8ªX¦T–ÛÃ¥ôû”<ôË-Mþ?ñ.¹Ë&§�c"(@�óHÙÍ&š¶Q¼?§½ØôÁ+âé³þÙ¯IgƒŠ+…ÑOûµ4uƒx'¥ *èó!¤Êáã„­»ÞwøAÁSlšx³ŽÝ„C‰:3ŒO ©DbX1 f~éQ¡cÈ�ç’l�BÊۜɇZÓ‹Oï‘"£óQ¹jµèÌ‘B‡âÊ•*éð}*•+Mû�wC4¹çè´1¦‡r¥J8´±"…Ü dÒéôÔÌ$ª\¾,-œ:Þfa´æµü¨I ?ê»D|#›¯WPÓ'½BíÚ×WŠ~1/èhíß©Ôå�ìGw™¯øqk¸[O{`}ŸÏtV¹LBŸö ã Óeçð‰Ó4lÒtQMÓõ6¾:MüQº™ŽÄ‰'ÁVÉ$É£ª– THî  @n=—åZ_Ô±|=qºÉÂM_ òðuÙLý¦­�d?š}—ì(äž{0eö’´fá®ì˰uæs–®ä!*È-O~Íùºã§Ïr…ÑÆ ü�š6ªŸåv™4cdóüm#W+]ïù‰I¥¢J»쯶¥rÅÅ|É⟒¨~E5ÅDæ¼D¬@„Œ>NÝæ‹£FB“šÒ9k½�LÚt}8r<]½y‹Ç¨àE¬-«/N�K3Óñ‡âI°CÕÒ묂¸\Bž9õÀAÏ'ÙJ ¯‹ã´&k’íù_†1ší½®\¿I¯µlOõëÔ¢�=ºPTdD–}Xq¬Å«¿¢{ö !€wbµV®ÿšVÍ›Ny"³Ü^º€œvÏ‹¦ù›“iÃÏ^¿Ú©a€]û±ŠêŸþœäæh<ÓˆÕ ôíØ¬ï¯/bñbòÈíî-.„Ð@­AÑ¡Ygcdú|ãw\ÿx7M¼ÃB‡Á»{©&:õÈ tv+$ßÓ¯¼=¡ãp¥F²¥¼�d3´f*žýA`�Ò£Ù^mçÞÜü‰OH¤6=úS˷ߤá}{ØÜgX«@êñVu™û�î<òÌÄëçýiÔ bö}�™ÛMÔçÓGžNcÖ$zÜÚÖ]§Ó©ñ¸8šÙ-$Koèød3}¼>‘öž×sw`¿ƒƒïÓ€æ�Ô©¡?·4 SŠÖ½ÛqÒ3gŠ–‰QrSÙ³›|Çz^úxÞb�;øã«2ì辕`_ylä6±hX@=ãíÕ8¡ãp—,Çd È�‹77ã+€D%ÙQy©|õWèôa¬ÍB™’ÅipÏ®T¾ôóÎoÞ¾K³—® gÎ;ýØÑy"hH¯nT§FµçŠ ™L&Úºs-]³ž'%;ýøŒJ¥¤Ý»pmÍž-Ì¥7hëŽ]ܺo{[�ùk4ôê+Õ©võªT­B9 ÊqÿøÄÇtøÄ)úwßAÚ{è(÷œB’[þjËQÝšÕ¨f•J”'<ÜfRŰ/®l]üÅ+×èàñ“´çàŠ} ŽÂHà¸ó—®Ðí:Óà^PÛfoÛÜgAïPºg¢®Ÿ<¤-*þƒ{¼ûІ&vÌ~M[Rr õ6–îÇ=à1*x™Þc¦ø\‚}1ÑHדē`7)ì7º~>å¡ãp§l’loIöc�¸Žü6hÚI6Ï^«]“>1(Û~Ö1òÑÒ™“¹$¸óÀÜ:OG¬þd7zf‹L&£&oÔç¶ã§ÏÑ€�>v4|NÇÖïR¿Þ·yû¹š7nÈm›~ßJó—‘e©TJíš¿C=:¶#�ŸŸÃÏL�_¯Çm™X¢:gé*:pÔýíÕü5~Ôõ½6ÜÏàhåo6*Á c±­^­ê4¬Owîz–|ÿ¼õoúìËÿ£Ô´4w„ Z´êKZ³ñ{úbá,› å‘ÑÎÙQôùÖZö[î€<+"HFëGEXO³Xf}ßÙ°ù£{t0’òô­–ŒçŒt+Y< v›b~ÖŠR®:wËòm·h�ü_>H5ˆ+É�ŠÆh6OXÒ9²_o»Úk1ÁA�Ô¥]+Z¸r�ÝÏÑ«Ó{Ù&Ø/ª\¾ éõ-´~ùwK0³K°_ÔºÉ[tòÌyÚ¶k/w¹@¾hZ8eË�ß¼å/údÙj—?;81z`›=‘s‹%ß-ÞnÄmÌúï¢åk7¸üy@8I))Ô¶çzóõº4~È›ï¬(ZÇþÔmþ#º|W�«W®èÐþLåòeÚ¿|™RtìôYZ=&E†ç\‰×UZ½ó&½Û¸!}0x]»y;×�÷^‹¦\K4>ujÛ‚Ûþüg7=y†×ç÷úëŸ=Ü6oÒXªUµR–Ûý”úzLí?¯§ÁËãÉd×Á[[s½l`x¶…XÍÖ×Ôà S¹>ïày·nO•jÕ: ^�µ&Ø·E”`÷(ëߤTˆ|‹ÐqðÅæ¼Í²aŠŸ�>Ðwâ#6åSk´�¿B¡c?¦ãgÎ9õlêûç fQ‘˜.ŽÎ~/N‹ï1bòL*S�–Ï�F~ê¬W¯”VÒ�…Ñ4am"m9ŒJðr*ëw�ÕC©LAÛË‘V—cÚ‚¥‘ZtíC‰�«þ›?:Š6._d÷ôþ±5õ+Ö}M¿oÛAFSö_X"ÿî[opëÜÙ:mð-WoÞ¢Æïu¥>�ÛS§¶-mî3µKõoD�ç=¤„dñ|~u¨ïOÃ[g?i�½²ž×(´è¹*ÕªÇ�bû’3�¬ vªxÞ×ú” x£X°l»ÐqðÍv’ªøU*‘˜Ì‹ãóu��ÆÖe;^ËIPáy¢©B�Útêmgå‹ÎCŸÍšBa¡ß—Uýž±x9mÝÁk A°µc¦Ï¥CÇOÚµ?«t;}ágÜ6z@nm»#Øúé÷­ ,«¨n/•RÉMow&Á>yö �8�tzûÖ8²Êèßÿú·1}?xŸ‹| ; ³î‡Ÿè³™“©Xᬕ„£C¥ô×ô<´qg*}²Ií¢€ùÂå´nd×=;³—¬ _ÿÚÁcTà¨âe+R«®½…ƒW§¬ ö=%Ø–¨_4Hö�ÐqÁf’-—’6Ÿ¿ìØícu>‚H5Šsý\ƒf­‘d;!4$˜«“?¯Ã÷MNM¥QSfÓ©sÜ™ça_òf}ºÜéû³/ŠlJ|�Uº_©âEÚÑ´ àøL„© –æú@ «òûõ�¿ÒÆe )À_“«ÇqIKÓruØë{Ö¸‘\1¼±ÑÊ6õü©Ç‚‡tî £ù2öú˜Ñ5„Þ¬ªÎvŸ³/S¿1ÉdBk8O–·`aê4`„ÐaðJl v¿ ¯”í:¡d»À4&Pv€¯$;Í(γ°È(Œf;€UÙ^4u‚ÝÕ¼Ÿuëî=:qºOõ#ýþ—-W2·eź�'ÙŽ\c}Ë_ì]n�Aã¦ÐÑS®)P–�ø˜š¼ßƒ¾Z<‡ŠÄtÉc‚x°Þﯵì@3>A¯ÖÊú±¥´~Ò±‘Ë#—õÔi<Mâ<° ΫSFE‹> #Ça8F£‰«Î’lðl!áÔ{Ìd¡ÃàÕIk‚}_D vÿ u Êö €�²O²d¬ýù"M¤#Ù F³_N¡PЂ)ã©FeÇ[k<ŒO Ž}‡Pš6Ý ‘y¶5ßüà’ǹrý&7åÜ‘‚rŽ$Ùÿ{×ñ‚3¬¿µ«ìLl�úøÙ èÿ–Îwéã‚x|4c×öŽM!g3f^T­¸’ö/ˆ¦IëÓoÑ[ÝhTRúrx8�ξhåw¿l¡Å«¿â1*p–ŸÆŸú�ŸisÖŠ·:ñÐ@±iâI°V x¥ 5‡:¡å8’ÍWéÖ$›ÍÌ’¹¾•®Û±ÑìŠ5ëÐɃ8`—ÖŽËYl½öº%ó©Sÿa¤M÷�Dûð‰S\!0W¹~û•*VÄîýÕ*·ÎÚžuÒÕ*–w(¶ž~éšuÝÇ^7nÝ¡o~ú�k!¾éöÝûôn×>Ô¹]+êÝé=›ûLîLý›R§¹)…ѼV·7¨óÀloð(žz ËÍ„Ï'W(¨ÿÄY¤t°c‡˜‰-ÁT1 f�™c½T¼T¶Iv„Zz‘Ï~Ùl]v�RœG&ë7m�$Û�¢"Ãië×_Ò‡£ÆûÌT¾·kEö2·ïÞs(ɶ—ÆOMÁAÙ‰µåê�[”šæ¾öJ§Ï_D’ ´î»ÍôíϿѪOfP‘‚Y[Êå ‘ÒŸÓóÐî3:±:SȽH…ÂJZÒ/ŒüÕÙ§˜õé úm ›‰¹þpìT Ê:CÅ[` 8-l±Ê±éo„ŸôÒíS5>I3˜­I6/ÅÌ].,2U¬Yךhï:¯ÅªV¯œ7�V®ûšÖZ¿<{»¤d×�b3¬Õ™;ä�Êãð}®Ýºí†HþæÇ0l™D—#¸¥*s&Œ!¹<ëgL½r*n 9[¯=îËDz˜$ž/µð¼úÕ4¹SHŽÉõ‘“§iøÇ3PØLd>úEDç: Þ³&Ø�`ˆZÎI¶ZÆ[’-Ö ã™6o�$›½;·§êÖ/̬h–7KJN:»8§<‡>à® •ŠpÝ ¸Õ¡ã§¨A›÷iôÀ>Ô¬Q›û°õÚLË8h´ã¤Ž>ßšLçQ�Ü£…ʨm] ujèŸcbͤ¤¦Qÿ±ÓÕ8'6ÿë5� /%t¼9«§�x!Á°í¥#Ù|’jw’IUê¼FÇözßfWøwÿ!š8g!דyýÒù”7*ÒîûV­P޶lø‚:öêµké´é:¡C° [Óh0I!Ïñ­ä9î®þ]$&ëÔ`fö§+è«o6ѲÙS¸zÙiPQÅm/JÓY(!ÅLF˜Ø,³›>ÞØãZÜô]œ{l7Í€a�íÈïD.“Ptˆ”Bœ;€ö›~¦å_mpê¾ ¬¦í»RÙ*5„ƒìob¿5ÁNÑ‹#Á–H$æ�ýkð—:Oô’‘lþ’l1WÏÔ°Y$Ù/±yË_4ùçO¿¼­[»^h&k½óŠý¤¬'ó/kWr=³÷>ê¦hÁ×oÝ¡E Ù½¡ù¹uÜ®,ìö¬ÒöøßÂÚ¶êÖ—{�Ì�4–B¨) QI¬›8—5ù¢?¶ÿK3/sÛÁp¯úM[Q�×Þ: ^°{Ï=iEò] 6ÀËa$Û…CB©ú« éð®íB‡âqØ(Âú~Êöö±3æQ§¶-éÃ.zÜ9G»¬Ÿ48gÓoÐè}ìÞŸ­¯Ñ·'M˜½Àå±ø©Õô?=;œ¿|•šwîÅ-_hÕ¤1õêÔÞúúñ�ªÅÞêø™s4ï³Õtãö¡C�\`ߥX’í Œf¢ÝÖ[/’â‹,ÁTÑ¿f~Ù¡cðd3’m²X¸#x~rqVÏÔ°y:²{Žœ?cìô¹´ëÀËv®ÿþG:{á-š6Á¡˜m›¿CU+–§îCF“Ñ$žB!Þâ׿vÐÀ]Hãçg÷}Ô}…Þªÿ*mݹËeq°×̧3&94u€½g°>ÉlËT¡L)ª\¾,å�Ž"jÇ+:éé::sñ2í?rL4u,àåÊT®NÍ:| t¼0Xë]÷ôÖD[ß‘`Ø/Ço£¹ä‘F.�O3šÃø&Å þ$[H5ë¿Ivü)t(¢tôÔ®ÇíÆe )À_c÷ýŠ*H~óu4‚ë“ üa”f.^NSGuè~†  ’ŊЧŸ¯Íu !ÁAÜk†-#È­Sç.pð+¦XIz¯÷ ¡ÃàEšõ;ïÞûz2‹dP&#Á¨‘ß_Š5zvxé�O„ŸôâÍdó+|“¨3S¤Ÿø+7hÚšþ³�,fq¯ð4¬˜Ù;»Óêù3êí¬T*èë勸þ§¿þ…)û|Ú±g?­ÿþ'êÔ¶…C÷cý¬›6j@C'M§sNô@g£×ƒ{våf3€xEDå¥îÃÇ /âÓÍt8N/tvC‚ à8{’ìK7“‰—$[L- r¢Öh¨v÷iï¶ß…E´Øèh�¡chd¿^ÔâíFÝwÌÀ>T®Tqš½d¥›¢[–¯ÝÀ4kÞ¸¡C÷c3VÍ›Î�gE©6lþ…~ýs;é ¶Û'±êáïµhF�ë×#¥B‘ë¸@XAÁÔwÜt¡ÃàÅ��‰O{@$ØÎyi’©–^ä#æ±>£Õ‰TÜ3Æ9¬`Çþ[ÉŒ5¹2÷³UtæÂ%úhp_‡î×¼ñT´P õéGÅ=Åì%+¸õ‘ÓÇwêþÑy"iXŸîÜ–&ëß�ÌÍý¸ ÷”*õŸ8‹d>POãR¢‘®%…Ãn,Á\1 z>é1¡c›—'Ù~RÞ¦±ÑK6e�ô¸Ð±ˆÑK“ì<~2^«¿°7 oH²™×ßiAûþÞBÆl¦½Šk�b6[¸6LöHNI¥c§Ïæúy¯Þ¸E�þ×…¾X0››.l/–œçäÐñST©\»Ï™žÜ§Ï_$mºÎîö@ì÷{à¨k?Ó?Iï·±½ôá“§sõ|iÚtn+D¶xÚD*Q´p®ïeØl‡1ÓæPÂã$îrÂãÇÜA;{«Ô>qÊ�ဠ=GM¢�pût‹‘ÉL´?VO©ñ,‰”I$†áUÊGð8›ÀÛxÔH6s?ÍLey©eî~r…‚^}û]ÚñËB‡â2F£‘ÆLŸCs&Œ~é¾l4ôƒÁ£\ÖÎÌ`0RçéC«æÔ¿[§—îÿÓÛ¸ä+'_~ó7ÚZ»z•—>Þ®ý‡hõÿ}kw¼Ïê7z"­údÉå9�ij{иÉ\’êJGNœ¦åk7ÚÕ‡ünlÍXø™Kž—dé6$ãµRµB95 7Èí’Ǿu÷Í[¶šûÙ^ÄZûLœ³Ð®Šç»¦¿wíuIL`Ÿ÷û§|1ö7#±8cäRIúèª�%ƒ•’[BÇ f/M²eÒ…ª¥×ÒÍ…yˆ‡ëøPkf×øx:·c£ÙwþE©ÉIB‡â2{¥zï¾G­ÞiLÝ:´¥°�àçnßwøÍüt9Å'$ºåù7nþ…¾ûùwêÔ¶%ui׊«*ž‰Ëúcû¿´tÍ:»§©�œ2‹+ØÅz=7zµîs‰0{'+Tö(ÝÌU 5{õšjG”QüÕ«¬¦±Ðq€Iö+QÊ¿]OŸc¶Xé«•jM´wÞÑQ­(¥×ôÏ®ýÆÛtçÆU:}x¿Ð¡Ø¥t¥jÔ¼c7·>”ŽÓš¸„:!ÝwG¨_¦cIMÇÊŠ�B�98ý ËIDATÇN”YuÂjykÅê»»# {°©ã{îé(¯¿Œu* —jÛ½ݽy�âãb… G‹– ö}»ìñô& 7*gÝØ(µ£Óv‰ÒÈάPK)¥¡c€ÿ85]'Zù™�Iv¦{©&n+$§!‚ ¬»T�áhÁø¡d4„À¦ð<ÑÔcćïÇiÖ1æ‘ÎÌ�j�H¤�%‘HÌ�JjÞ«.ÿ^èX +§2Óüþ²#1�ò7“�µ\�3XŸC¶iäR*&§0µ8K�ûÑð‹háÄá¤Ój…à9þ�ÁÔwüt›·¥,ôXo¦ÇºŒÓdëe¬—v½bÁò�½Ëù7’ù^Ùt‘pzø·v´ò3OI²3±j’‡ãôO/«d.áRH)P)¡ ¥Ôã[€ùùXíÅ´hâJM~,t8¹RE¯ö›J{cÍ”nJ:Ÿ£QHõ¯à_•Ã<ŸÓIvÕHÅúŸ®J>M7Y‚\�+éL–Œ)åvèSË%äoÍÀ5 v*!�uó³njk¢.ã91WªT4rö§ôãÚ•t|ÿn~Ÿà©”*vŸDI5‘ £Ó|’J$¦N¥4ÿ+&ß$t,`§“l ‘ù•håŠ�wt#]�PÒ�ëf¢G.80+‘Xsë/Èš£[ϳߕäÉ)==¥gÎgžJ_دh“nT¬i·gö‘�Q§%CzéÙ¦M#ƒöÉùôŒó†tmÆyn¿Ì--ã>ÖÛ-fÌ,ðZ)É”ª'›ÉTjîTn=•Z¯“?¹Nª°žWYÏ+Ÿ\ÿä<·=¹{ VƒêYïÄ¨Æ 8&WÕÂjG«>ó–$Û•Øú#VËÃøß5.|t‘,˜ÈŸm×È)—ÿ�2éuÖMK&]:—ô›ôé›.=ãzîög.ëÒŸÙÇz٠˸ÎzJX«b”™ÌZR–¸JŸ$µ,™•=MXUO’Vëe…*ã”Ýžy>3©E2 /x£ zÚ[UŽW—��«Ü,T%¹^7¯êÓ=÷t]x¾Ì#ä t$Y™�†Œ$ß�NfƒžÛ¸¤Þz�YŸþßyv›Qÿd_vÛ“Ý÷{ò8ìÔb2¾üÉÀ9 IåJî³…;U(3’VvÊ]ÏF^•ÿí£xr›BÉ%¬ÒçΫž¹ÿ“Ûdâï@¾¡Ia¿Ñõó)çäN®?ušV�8§ÿ@g²º" €Ü�ÊܦðÄ#0[“úÌìÀ·=wÙøôz‹ÙH“é¿ýLFî Ûž½Ì=æ“ûYL™×?{?Óû™ž<.–ðÆšdJ¤2.dïa¹õT*'É“ËRyÆy‰ô¿Ël_îöÌûd¹,{rÙºæù'ï‘ç•�óä:î2RÞ©d’ä%5�ʆÊ:p�\’Ê$¤oQÄoð·—Ó¾pE@@_’¹/º¡Cñ\‹ÙúÿŒ�;o½î¹óÜí¦Œe Onc—-O/›2®Ë|,Ë�õßsX^xNË“óæç—GX^hmó$›·³ódÎá¾Ï?oFÉ“³ÿ�ç.“ôùË/ÞÎ]–f{;— >s{Æe‰�óR®PRÆåŒ’]æ®çJé3×Iž&™’'·?½ÿ3ûHžìà X;Ü®¥5-’ûBÇ®å’ÃÕÕó(Öì�•÷ñ´–^™27’4Œ\*IoRH=¦^^å"¡c÷qÙœ°e5ïL?œ|Ko²ø»ê1Ä®v´jYóÂêár)i…ŽÜÏeI¶ŸL’0 B@�'RŽY,ž;KxŽÊ‘Ê�,±THî  ðË¥ÕM¢5Ò“c«�{,ùœÁlñsåcx*µL’Ô¨ zJ½|ÊEÒg;¹€Ïqy Ñ•䯔ZA¡KO¥î¾�b¬îêÇšD"1—“o¶&ÖSój¤'„Ž<‡[útÈ$¤TÑ¿ÆùDc“/Ï¥ýl¶XPiDK*‘˜Ê‡Ë7½Y@=%J#=-t<à¹ÜÚ ³tˆü÷Yµƒä;îèÆl¹‘>Ó�Ïà*E‚ä»^‰V®¨®øž ˆ‡[“ìL ò«f±í|‚±é¦«Úe‰:sA>ž 'AJé½raЎË7 –ïÀzjÈ-^’ìL¥Cå¿}T-0†�OÐYŠŒÕ÷8§ï–¤7çã3ð~rI"™f[ñ`ùßùý¥G…Ž ¼¯Iö³BU’koŨƳ텛$‰:KL¬ÖT66Í\ö�ÖTêAº¹äC­¹¤5Ï+H°à‘‚•Ò;ÑÙé¼þÒ“ÖÓSùdG£ü¤g„Ž |—`Iv,¬ByˆJ~£Tm±÷N)KT¢Î“ ·Ä$¤› 'ê͹ËÖóì:­ÑŠþÝžE.•¤kä’?ëdM˜ÃT’ë!*é-ëv3T%½nÝn+%·¥2+€=<1ÉvJ€B �Å :$t,ÞhïôîÇ’n]ª,t�¡l‡aýc^oõ™ÐqÀó¼&É÷9ñùÇ‘`x–³ç/ .Túppá2…Žþƒ$rtå·/'Þ;ôw{¡ã€¬-üwƒ9?å“©ü’…Ž2 ɆlÝ?²ý—~ù|²Ðq€mF�6àÀ¼þÿÔ÷EU¡c€ H²Á¦ä;W*_5é¡ã€œ%ݺTåÌú9+ËuÕ[èXI6Ø`LO >0§ï¡ãûÜÚýK¯ B¥Ž|µÅ ¡cðuH²áE’}3{dÓÏ„ìwæÿæ-g…ЂbJ:_†$žsô³1?¥ÆÞ*)tฃómo0ûÇü2•_ŠÐ±ø*$ÙðÔÅÍËfÇ�ÜÓ\è8À9Æô´ k¢½£öØU5„ŽÀW!ÉÎ�½¿w»ºuÃ(¡ã€Üy|ã|õ3æ-/×qćBÇà‹�d=¾vö•Skg~!tà·þý©[Ÿ] n³ÕBÇàk�dû8}rbžŸ Ø)tàZ§×Í^ÅíÀÅ�  €/A’íË,fÙ¾™=™�•С€ë±é\!4¥:UèX|’lvháÐ?µñ±1BÇîaÔ¦Z0øïWF¯xEèX|’luîëK]8ÚPè8À½¯�­uvãü¥e; ë/t,¾I¶º¹sSÿÖMè8€7ÿÙÜ�­ÏÎ_§É¡cðvH²}Lüù#oœýzÁ¡ã~±N"Á…KÈWô”бx3$Ù>$=!®à¡ÅÃÿ:Æ�¹ýÿm0ç§|R…R+t,Þ I¶�°˜ŒÊ½3z¶˜Mø7ðQmJÈ¡…ƒ·Õ¹¬®Ð±x+$\>âŸI�Îè“ò+áÊé:?¨oi<õË á Ÿ:oƒ$ÛœújÆšô‡wŠ x†Pµ‰îú«CxÁ^ㄎÀÛ ÉöºŒéyîâýÒ÷.žE�Ì�~ÓH$³«Ïb±H-³ÔU�çvbŠ×l–²ß¯ÐaØÍ"žx¹×€Y±2\¼búÝŠ$VÆ"¦¿3îoL$ï_ì½ÖìúX�ý¾ið™í[»¹úq%Oÿã:1~Áñ®}D`�dû‰Ô¤MN³‡�tZm€_PðW=ž‹¿“dKo–›t&‘gP%€7B’í#ÒS’„ŽÁ^é)Éa®L²ø’žœ.t öJONÍw1A’í#Xâ*t öS¬ÏÒ¦ˆ(ÉÆç-€[ Éö:뇨hÖó‘¸FÝž%ª‘l$Ùn�$Ûˆé¨:ƒ}+1}†épPÀ-�dû1Ugt"ú‚ð,1}榧¦„ €7B’í´"úÀgÒS’ñ¡¢cHךŒF¥ÐqØ …ÏÜI¶ÓÔ5Flñ0â;¨�éâî€$Ûˆiêƒ$ÄŸ·À ÉöøÐp?±}ÞêµiA³Y.‘J�BÇàM�dûñUÇô51$fŸ¹~A!qBÇàM�dû±Yã—±­ÉfØg.’l×B’í�d¸_ºÈfŽ1¨0àzH²}€Ø’VZx€‰í 6“žŠÏ\WC’íÄ6}Íb±Hui©!*�¢Ð±ØKlŸ·ŒØÄˆ’l Æ#뺔¤0$Ù &âü¼E’ àjH²½œÉ`PtéþBÇá(¶F,(OÞ«BÇ`/1Ž ‹1fO‡$Ûˉñ¨:ƒ}qNGÛLWC’íåÄúá‰$ÄÕÅ€A’íåÄxT�ëÁðM³Y¦KM :Gá 6€ë!Éör¡ù \l6bb[‹Ù"µXÌÒÌëYovݳûr·[þ»Îú…Ajyö²õögïcërN÷Ïö1^¸{ŒˆBEOæî'à�D*5 ùî/‰Ðq€ðþÏüqDjæ#IEND®B`‚kubernetes-sigs-kind-49aeee6/logo/logo.svg000077500000000000000000001772231524365506300207240ustar00rootroot00000000000000 kubernetes-sigs-kind-49aeee6/main.go000066400000000000000000000013121524365506300175340ustar00rootroot00000000000000/* Copyright 2018 The Kubernetes Authors. 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 is a stub main wrapping cmd/kind.Main() package main import ( "sigs.k8s.io/kind/cmd/kind/app" ) func main() { app.Main() } kubernetes-sigs-kind-49aeee6/netlify.toml000066400000000000000000000007061524365506300206360ustar00rootroot00000000000000# netlify configuration [build] base = "site/" publish = "site/public/" command = "hugo" [build.environment] HUGO_VERSION = "0.111.3" [context.production.environment] # this controls our robots.txt HUGO_ENV = "production" HUGO_BASEURL = "https://kind.sigs.k8s.io/" [context.deploy-preview] command = "hugo --enableGitInfo --buildFuture -b $DEPLOY_PRIME_URL" [context.branch-deploy] command = "hugo --enableGitInfo --buildFuture -b $DEPLOY_PRIME_URL" kubernetes-sigs-kind-49aeee6/pkg/000077500000000000000000000000001524365506300170455ustar00rootroot00000000000000kubernetes-sigs-kind-49aeee6/pkg/apis/000077500000000000000000000000001524365506300200015ustar00rootroot00000000000000kubernetes-sigs-kind-49aeee6/pkg/apis/config/000077500000000000000000000000001524365506300212465ustar00rootroot00000000000000kubernetes-sigs-kind-49aeee6/pkg/apis/config/defaults/000077500000000000000000000000001524365506300230555ustar00rootroot00000000000000kubernetes-sigs-kind-49aeee6/pkg/apis/config/defaults/image.go000066400000000000000000000015201524365506300244640ustar00rootroot00000000000000/* Copyright 2019 The Kubernetes Authors. 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 defaults contains cross-api-version configuration defaults package defaults // Image is the default for the Config.Image field, aka the default node image. const Image = "kindest/node:v1.37.0@sha256:a1ed56cfb0e7b93589bdf97c8cd566405a265939e3620fc4f5de89adff580ae5" kubernetes-sigs-kind-49aeee6/pkg/apis/config/v1alpha4/000077500000000000000000000000001524365506300226665ustar00rootroot00000000000000kubernetes-sigs-kind-49aeee6/pkg/apis/config/v1alpha4/default.go000066400000000000000000000057201524365506300246450ustar00rootroot00000000000000/* Copyright 2019 The Kubernetes Authors. 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 v1alpha4 import ( "sigs.k8s.io/kind/pkg/apis/config/defaults" ) // SetDefaultsCluster sets uninitialized fields to their default value. func SetDefaultsCluster(obj *Cluster) { // default to a one node cluster if len(obj.Nodes) == 0 { obj.Nodes = []Node{ { Image: defaults.Image, Role: ControlPlaneRole, }, } } // default the nodes for i := range obj.Nodes { a := &obj.Nodes[i] SetDefaultsNode(a) } if obj.Networking.IPFamily == "" { obj.Networking.IPFamily = IPv4Family } // default to listening on 127.0.0.1:randomPort on ipv4 // and [::1]:randomPort on ipv6 if obj.Networking.APIServerAddress == "" { obj.Networking.APIServerAddress = "127.0.0.1" if obj.Networking.IPFamily == IPv6Family { obj.Networking.APIServerAddress = "::1" } } // default the pod CIDR if obj.Networking.PodSubnet == "" { obj.Networking.PodSubnet = "10.244.0.0/16" if obj.Networking.IPFamily == IPv6Family { // node-mask cidr default is /64 so we need a larger subnet, we use /56 following best practices // xref: https://www.ripe.net/publications/docs/ripe-690#4--size-of-end-user-prefix-assignment---48---56-or-something-else- obj.Networking.PodSubnet = "fd00:10:244::/56" } if obj.Networking.IPFamily == DualStackFamily { obj.Networking.PodSubnet = "10.244.0.0/16,fd00:10:244::/56" } } // default the service CIDR using a different subnet than kubeadm default // https://github.com/kubernetes/kubernetes/blob/746404f82a28e55e0b76ffa7e40306fb88eb3317/cmd/kubeadm/app/apis/kubeadm/v1beta2/defaults.go#L32 // Note: kubeadm is using a /12 subnet, that may allocate a 2^20 bitmap in etcd // we allocate a /16 subnet that allows 65535 services (current Kubernetes tested limit is O(10k) services) if obj.Networking.ServiceSubnet == "" { obj.Networking.ServiceSubnet = "10.96.0.0/16" if obj.Networking.IPFamily == IPv6Family { obj.Networking.ServiceSubnet = "fd00:10:96::/112" } if obj.Networking.IPFamily == DualStackFamily { obj.Networking.ServiceSubnet = "10.96.0.0/16,fd00:10:96::/112" } } // default the KubeProxyMode using iptables as it's already the default if obj.Networking.KubeProxyMode == "" { obj.Networking.KubeProxyMode = IPTablesProxyMode } } // SetDefaultsNode sets uninitialized fields to their default value. func SetDefaultsNode(obj *Node) { if obj.Image == "" { obj.Image = defaults.Image } if obj.Role == "" { obj.Role = ControlPlaneRole } } kubernetes-sigs-kind-49aeee6/pkg/apis/config/v1alpha4/doc.go000066400000000000000000000013061524365506300237620ustar00rootroot00000000000000/* Copyright 2019 The Kubernetes Authors. 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 v1alpha4 implements the v1alpha4 apiVersion of kind's cluster // configuration // // +k8s:deepcopy-gen=package package v1alpha4 kubernetes-sigs-kind-49aeee6/pkg/apis/config/v1alpha4/types.go000066400000000000000000000342241524365506300243660ustar00rootroot00000000000000/* Copyright 2019 The Kubernetes Authors. 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 v1alpha4 // Cluster contains kind cluster configuration type Cluster struct { TypeMeta `yaml:",inline" json:",inline"` // The cluster name. // Optional, this will be overridden by --name / KIND_CLUSTER_NAME Name string `yaml:"name,omitempty" json:"name,omitempty"` // Nodes contains the list of nodes defined in the `kind` Cluster // If unset this will default to a single control-plane node // Note that if more than one control plane is specified, an external // control plane load balancer will be provisioned implicitly Nodes []Node `yaml:"nodes,omitempty" json:"nodes,omitempty"` /* Advanced fields */ // Networking contains cluster wide network settings Networking Networking `yaml:"networking,omitempty" json:"networking,omitempty"` // FeatureGates contains a map of Kubernetes feature gates to whether they // are enabled. The feature gates specified here are passed to all Kubernetes components as flags or in config. // // https://kubernetes.io/docs/reference/command-line-tools-reference/feature-gates/ FeatureGates map[string]bool `yaml:"featureGates,omitempty" json:"featureGates,omitempty"` // RuntimeConfig Keys and values are translated into --runtime-config values for kube-apiserver, separated by commas. // // Use this to enable alpha APIs. RuntimeConfig map[string]string `yaml:"runtimeConfig,omitempty" json:"runtimeConfig,omitempty"` // KubeadmConfigPatches are applied to the generated kubeadm config as // merge patches. The `kind` field must match the target object, and // if `apiVersion` is specified it will only be applied to matching objects. // // This should be an inline yaml blob-string // // https://tools.ietf.org/html/rfc7386 // // The cluster-level patches are applied before the node-level patches. KubeadmConfigPatches []string `yaml:"kubeadmConfigPatches,omitempty" json:"kubeadmConfigPatches,omitempty"` // KubeadmConfigPatchesJSON6902 are applied to the generated kubeadm config // as JSON 6902 patches. The `kind` field must match the target object, and // if group or version are specified it will only be objects matching the // apiVersion: group+"/"+version // // Name and Namespace are now ignored, but the fields continue to exist for // backwards compatibility of parsing the config. The name of the generated // config was/is always fixed as is the namespace so these fields have // always been a no-op. // // https://tools.ietf.org/html/rfc6902 // // The cluster-level patches are applied before the node-level patches. KubeadmConfigPatchesJSON6902 []PatchJSON6902 `yaml:"kubeadmConfigPatchesJSON6902,omitempty" json:"kubeadmConfigPatchesJSON6902,omitempty"` // ContainerdConfigPatches are applied to every node's containerd config // in the order listed. // These should be toml stringsto be applied as merge patches // If the version field in these patches doesn't match containerd config, it will not be a applied // This way you can write configurations that work for both by supplying two patches ContainerdConfigPatches []string `yaml:"containerdConfigPatches,omitempty" json:"containerdConfigPatches,omitempty"` // ContainerdConfigPatchesJSON6902 are applied to every node's containerd config // in the order listed. // These should be YAML or JSON formatting RFC 6902 JSON patches // NOTE: These are not currently version-aware. ContainerdConfigPatchesJSON6902 []string `yaml:"containerdConfigPatchesJSON6902,omitempty" json:"containerdConfigPatchesJSON6902,omitempty"` } // TypeMeta partially copies apimachinery/pkg/apis/meta/v1.TypeMeta // No need for a direct dependence; the fields are stable. type TypeMeta struct { Kind string `yaml:"kind,omitempty" json:"kind,omitempty"` APIVersion string `yaml:"apiVersion,omitempty" json:"apiVersion,omitempty"` } // Node contains settings for a node in the `kind` Cluster. // A node in kind config represent a container that will be provisioned with all the components // required for the assigned role in the Kubernetes cluster type Node struct { // Role defines the role of the node in the Kubernetes cluster // created by kind // // Defaults to "control-plane" Role NodeRole `yaml:"role,omitempty" json:"role,omitempty"` // Image is the node image to use when creating this node // If unset a default image will be used, see defaults.Image Image string `yaml:"image,omitempty" json:"image,omitempty"` // Labels are the labels with which the respective node will be labeled Labels map[string]string `yaml:"labels,omitempty" json:"labels,omitempty"` /* Advanced fields */ // TODO: cri-like types should be inline instead // ExtraMounts describes additional mount points for the node container // These may be used to bind a hostPath ExtraMounts []Mount `yaml:"extraMounts,omitempty" json:"extraMounts,omitempty"` // ExtraPortMappings describes additional port mappings for the node container // binded to a host Port ExtraPortMappings []PortMapping `yaml:"extraPortMappings,omitempty" json:"extraPortMappings,omitempty"` // KubeadmConfigPatches are applied to the generated kubeadm config as // merge patches. The `kind` field must match the target object, and // if `apiVersion` is specified it will only be applied to matching objects. // // This should be an inline yaml blob-string // // https://tools.ietf.org/html/rfc7386 // // The node-level patches will be applied after the cluster-level patches // have been applied. (See Cluster.KubeadmConfigPatches) KubeadmConfigPatches []string `yaml:"kubeadmConfigPatches,omitempty" json:"kubeadmConfigPatches,omitempty"` // KubeadmConfigPatchesJSON6902 are applied to the generated kubeadm config // as JSON 6902 patches. The `kind` field must match the target object, and // if group or version are specified it will only be objects matching the // apiVersion: group+"/"+version // // Name and Namespace are now ignored, but the fields continue to exist for // backwards compatibility of parsing the config. The name of the generated // config was/is always fixed as is the namespace so these fields have // always been a no-op. // // https://tools.ietf.org/html/rfc6902 // // The node-level patches will be applied after the cluster-level patches // have been applied. (See Cluster.KubeadmConfigPatchesJSON6902) KubeadmConfigPatchesJSON6902 []PatchJSON6902 `yaml:"kubeadmConfigPatchesJSON6902,omitempty" json:"kubeadmConfigPatchesJSON6902,omitempty"` } // NodeRole defines possible role for nodes in a Kubernetes cluster managed by `kind` type NodeRole string const ( // ControlPlaneRole identifies a node that hosts a Kubernetes control-plane. // NOTE: in single node clusters, control-plane nodes act also as a worker // nodes, in which case the taint will be removed. see: // https://kubernetes.io/docs/setup/independent/create-cluster-kubeadm/#control-plane-node-isolation ControlPlaneRole NodeRole = "control-plane" // WorkerRole identifies a node that hosts a Kubernetes worker WorkerRole NodeRole = "worker" ) // Networking contains cluster wide network settings type Networking struct { // IPFamily is the network cluster model, currently it can be ipv4 or ipv6 IPFamily ClusterIPFamily `yaml:"ipFamily,omitempty" json:"ipFamily,omitempty"` // APIServerPort is the listen port on the host for the Kubernetes API Server // Defaults to a random port on the host obtained by kind // // NOTE: if you set the special value of `-1` then the node backend // (docker, podman...) will be left to pick the port instead. // This is potentially useful for remote hosts, BUT it means when the container // is restarted it will be randomized. Leave this unset to allow kind to pick it. APIServerPort int32 `yaml:"apiServerPort,omitempty" json:"apiServerPort,omitempty"` // APIServerAddress is the listen address on the host for the Kubernetes // API Server. This should be an IP address. // // Defaults to 127.0.0.1 APIServerAddress string `yaml:"apiServerAddress,omitempty" json:"apiServerAddress,omitempty"` // PodSubnet is the CIDR used for pod IPs // kind will select a default if unspecified PodSubnet string `yaml:"podSubnet,omitempty" json:"podSubnet,omitempty"` // ServiceSubnet is the CIDR used for services VIPs // kind will select a default if unspecified for IPv6 ServiceSubnet string `yaml:"serviceSubnet,omitempty" json:"serviceSubnet,omitempty"` // If DisableDefaultCNI is true, kind will not install the default CNI setup. // Instead the user should install their own CNI after creating the cluster. DisableDefaultCNI bool `yaml:"disableDefaultCNI,omitempty" json:"disableDefaultCNI,omitempty"` // KubeProxyMode defines if kube-proxy should operate in iptables, ipvs or nftables mode // Defaults to 'iptables' mode KubeProxyMode ProxyMode `yaml:"kubeProxyMode,omitempty" json:"kubeProxyMode,omitempty"` // DNSSearch defines the DNS search domain to use for nodes. If not set, this will be inherited from the host. DNSSearch *[]string `yaml:"dnsSearch,omitempty" json:"dnsSearch,omitempty"` } // ClusterIPFamily defines cluster network IP family type ClusterIPFamily string const ( // IPv4Family sets ClusterIPFamily to ipv4 IPv4Family ClusterIPFamily = "ipv4" // IPv6Family sets ClusterIPFamily to ipv6 IPv6Family ClusterIPFamily = "ipv6" // DualStackFamily sets ClusterIPFamily to dual DualStackFamily ClusterIPFamily = "dual" ) // ProxyMode defines a proxy mode for kube-proxy type ProxyMode string const ( // IPTablesProxyMode sets ProxyMode to iptables IPTablesProxyMode ProxyMode = "iptables" // IPVSProxyMode sets ProxyMode to ipvs IPVSProxyMode ProxyMode = "ipvs" // NFTablesProxyMode sets ProxyMode to nftables NFTablesProxyMode ProxyMode = "nftables" ) // PatchJSON6902 represents an inline kustomize json 6902 patch // https://tools.ietf.org/html/rfc6902 type PatchJSON6902 struct { // these fields specify the patch target resource Group string `yaml:"group" json:"group"` Version string `yaml:"version" json:"version"` Kind string `yaml:"kind" json:"kind"` // Patch should contain the contents of the json patch as a string Patch string `yaml:"patch" json:"patch"` } /* These types are from https://github.com/kubernetes/kubernetes/blob/063e7ff358fdc8b0916e6f39beedc0d025734cb1/pkg/kubelet/apis/cri/runtime/v1alpha2/api.pb.go#L183 */ // Mount specifies a host volume to mount into a container. // This is a close copy of the upstream cri Mount type // see: k8s.io/kubernetes/pkg/kubelet/apis/cri/runtime/v1alpha2 // It additionally serializes the "propagation" field with the string enum // names on disk as opposed to the int32 values, and the serialized field names // have been made closer to core/v1 VolumeMount field names // In yaml this looks like: // // containerPath: /foo // hostPath: /bar // readOnly: true // selinuxRelabel: false // propagation: None // // Propagation may be one of: None, HostToContainer, Bidirectional type Mount struct { // Path of the mount within the container. ContainerPath string `yaml:"containerPath,omitempty" json:"containerPath,omitempty"` // Path of the mount on the host. If the hostPath doesn't exist, then runtimes // should report error. If the hostpath is a symbolic link, runtimes should // follow the symlink and mount the real destination to container. HostPath string `yaml:"hostPath,omitempty" json:"hostPath,omitempty"` // If set, the mount is read-only. Readonly bool `yaml:"readOnly,omitempty" json:"readOnly,omitempty"` // If set, the mount needs SELinux relabeling. SelinuxRelabel bool `yaml:"selinuxRelabel,omitempty" json:"selinuxRelabel,omitempty"` // Requested propagation mode. Propagation MountPropagation `yaml:"propagation,omitempty" json:"propagation,omitempty"` } // PortMapping specifies a host port mapped into a container port. // In yaml this looks like: // // containerPort: 80 // hostPort: 8000 // listenAddress: 127.0.0.1 // protocol: TCP type PortMapping struct { // Port within the container. ContainerPort int32 `yaml:"containerPort,omitempty" json:"containerPort,omitempty"` // Port on the host. // // If unset, a random port will be selected. // // NOTE: if you set the special value of `-1` then the node backend // (docker, podman...) will be left to pick the port instead. // This is potentially useful for remote hosts, BUT it means when the container // is restarted it will be randomized. Leave this unset to allow kind to pick it. HostPort int32 `yaml:"hostPort,omitempty" json:"hostPort,omitempty"` // TODO: add protocol (tcp/udp) and port-ranges ListenAddress string `yaml:"listenAddress,omitempty" json:"listenAddress,omitempty"` // Protocol (TCP/UDP/SCTP) Protocol PortMappingProtocol `yaml:"protocol,omitempty" json:"protocol,omitempty"` } // MountPropagation represents an "enum" for mount propagation options, // see also Mount. type MountPropagation string const ( // MountPropagationNone specifies that no mount propagation // ("private" in Linux terminology). MountPropagationNone MountPropagation = "None" // MountPropagationHostToContainer specifies that mounts get propagated // from the host to the container ("rslave" in Linux). MountPropagationHostToContainer MountPropagation = "HostToContainer" // MountPropagationBidirectional specifies that mounts get propagated from // the host to the container and from the container to the host // ("rshared" in Linux). MountPropagationBidirectional MountPropagation = "Bidirectional" ) // PortMappingProtocol represents an "enum" for port mapping protocol options, // see also PortMapping. type PortMappingProtocol string const ( // PortMappingProtocolTCP specifies TCP protocol PortMappingProtocolTCP PortMappingProtocol = "TCP" // PortMappingProtocolUDP specifies UDP protocol PortMappingProtocolUDP PortMappingProtocol = "UDP" // PortMappingProtocolSCTP specifies SCTP protocol PortMappingProtocolSCTP PortMappingProtocol = "SCTP" ) kubernetes-sigs-kind-49aeee6/pkg/apis/config/v1alpha4/yaml.go000066400000000000000000000041441524365506300241620ustar00rootroot00000000000000/* Copyright 2019 The Kubernetes Authors. 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 v1alpha4 import ( "strings" "sigs.k8s.io/kind/pkg/errors" ) /* Custom YAML (de)serialization for these types */ // UnmarshalYAML implements custom decoding YAML // https://godoc.org/sigs.k8s.io/yaml/goyaml.v3 func (m *Mount) UnmarshalYAML(unmarshal func(interface{}) error) error { // first unmarshal in the alias type (to avoid a recursion loop on unmarshal) type MountAlias Mount var a MountAlias if err := unmarshal(&a); err != nil { return err } // now handle propagation switch a.Propagation { case "": // unset, will be defaulted case MountPropagationNone: case MountPropagationHostToContainer: case MountPropagationBidirectional: default: return errors.Errorf("Unknown MountPropagation: %q", a.Propagation) } // and copy over the fields *m = Mount(a) return nil } // UnmarshalYAML implements custom decoding YAML // https://godoc.org/sigs.k8s.io/yaml/goyaml.v3 func (p *PortMapping) UnmarshalYAML(unmarshal func(interface{}) error) error { // first unmarshal in the alias type (to avoid a recursion loop on unmarshal) type PortMappingAlias PortMapping var a PortMappingAlias if err := unmarshal(&a); err != nil { return err } // now handle the protocol field a.Protocol = PortMappingProtocol(strings.ToUpper(string(a.Protocol))) switch a.Protocol { case "": // unset, will be defaulted case PortMappingProtocolTCP: case PortMappingProtocolUDP: case PortMappingProtocolSCTP: default: return errors.Errorf("Unknown PortMappingProtocol: %q", a.Protocol) } // and copy over the fields *p = PortMapping(a) return nil } kubernetes-sigs-kind-49aeee6/pkg/apis/config/v1alpha4/zz_generated.deepcopy.go000066400000000000000000000134431524365506300275120ustar00rootroot00000000000000//go:build !ignore_autogenerated // +build !ignore_autogenerated /* Copyright The Kubernetes Authors. 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. */ // Code generated by deepcopy-gen. DO NOT EDIT. package v1alpha4 // DeepCopyInto is an autogenerated deepcopy function, copying the receiver, writing into out. in must be non-nil. func (in *Cluster) DeepCopyInto(out *Cluster) { *out = *in out.TypeMeta = in.TypeMeta if in.Nodes != nil { in, out := &in.Nodes, &out.Nodes *out = make([]Node, len(*in)) for i := range *in { (*in)[i].DeepCopyInto(&(*out)[i]) } } in.Networking.DeepCopyInto(&out.Networking) if in.FeatureGates != nil { in, out := &in.FeatureGates, &out.FeatureGates *out = make(map[string]bool, len(*in)) for key, val := range *in { (*out)[key] = val } } if in.RuntimeConfig != nil { in, out := &in.RuntimeConfig, &out.RuntimeConfig *out = make(map[string]string, len(*in)) for key, val := range *in { (*out)[key] = val } } if in.KubeadmConfigPatches != nil { in, out := &in.KubeadmConfigPatches, &out.KubeadmConfigPatches *out = make([]string, len(*in)) copy(*out, *in) } if in.KubeadmConfigPatchesJSON6902 != nil { in, out := &in.KubeadmConfigPatchesJSON6902, &out.KubeadmConfigPatchesJSON6902 *out = make([]PatchJSON6902, len(*in)) copy(*out, *in) } if in.ContainerdConfigPatches != nil { in, out := &in.ContainerdConfigPatches, &out.ContainerdConfigPatches *out = make([]string, len(*in)) copy(*out, *in) } if in.ContainerdConfigPatchesJSON6902 != nil { in, out := &in.ContainerdConfigPatchesJSON6902, &out.ContainerdConfigPatchesJSON6902 *out = make([]string, len(*in)) copy(*out, *in) } return } // DeepCopy is an autogenerated deepcopy function, copying the receiver, creating a new Cluster. func (in *Cluster) DeepCopy() *Cluster { if in == nil { return nil } out := new(Cluster) in.DeepCopyInto(out) return out } // DeepCopyInto is an autogenerated deepcopy function, copying the receiver, writing into out. in must be non-nil. func (in *Mount) DeepCopyInto(out *Mount) { *out = *in return } // DeepCopy is an autogenerated deepcopy function, copying the receiver, creating a new Mount. func (in *Mount) DeepCopy() *Mount { if in == nil { return nil } out := new(Mount) in.DeepCopyInto(out) return out } // DeepCopyInto is an autogenerated deepcopy function, copying the receiver, writing into out. in must be non-nil. func (in *Networking) DeepCopyInto(out *Networking) { *out = *in if in.DNSSearch != nil { in, out := &in.DNSSearch, &out.DNSSearch *out = new([]string) if **in != nil { in, out := *in, *out *out = make([]string, len(*in)) copy(*out, *in) } } return } // DeepCopy is an autogenerated deepcopy function, copying the receiver, creating a new Networking. func (in *Networking) DeepCopy() *Networking { if in == nil { return nil } out := new(Networking) in.DeepCopyInto(out) return out } // DeepCopyInto is an autogenerated deepcopy function, copying the receiver, writing into out. in must be non-nil. func (in *Node) DeepCopyInto(out *Node) { *out = *in if in.Labels != nil { in, out := &in.Labels, &out.Labels *out = make(map[string]string, len(*in)) for key, val := range *in { (*out)[key] = val } } if in.ExtraMounts != nil { in, out := &in.ExtraMounts, &out.ExtraMounts *out = make([]Mount, len(*in)) copy(*out, *in) } if in.ExtraPortMappings != nil { in, out := &in.ExtraPortMappings, &out.ExtraPortMappings *out = make([]PortMapping, len(*in)) copy(*out, *in) } if in.KubeadmConfigPatches != nil { in, out := &in.KubeadmConfigPatches, &out.KubeadmConfigPatches *out = make([]string, len(*in)) copy(*out, *in) } if in.KubeadmConfigPatchesJSON6902 != nil { in, out := &in.KubeadmConfigPatchesJSON6902, &out.KubeadmConfigPatchesJSON6902 *out = make([]PatchJSON6902, len(*in)) copy(*out, *in) } return } // DeepCopy is an autogenerated deepcopy function, copying the receiver, creating a new Node. func (in *Node) DeepCopy() *Node { if in == nil { return nil } out := new(Node) in.DeepCopyInto(out) return out } // DeepCopyInto is an autogenerated deepcopy function, copying the receiver, writing into out. in must be non-nil. func (in *PatchJSON6902) DeepCopyInto(out *PatchJSON6902) { *out = *in return } // DeepCopy is an autogenerated deepcopy function, copying the receiver, creating a new PatchJSON6902. func (in *PatchJSON6902) DeepCopy() *PatchJSON6902 { if in == nil { return nil } out := new(PatchJSON6902) in.DeepCopyInto(out) return out } // DeepCopyInto is an autogenerated deepcopy function, copying the receiver, writing into out. in must be non-nil. func (in *PortMapping) DeepCopyInto(out *PortMapping) { *out = *in return } // DeepCopy is an autogenerated deepcopy function, copying the receiver, creating a new PortMapping. func (in *PortMapping) DeepCopy() *PortMapping { if in == nil { return nil } out := new(PortMapping) in.DeepCopyInto(out) return out } // DeepCopyInto is an autogenerated deepcopy function, copying the receiver, writing into out. in must be non-nil. func (in *TypeMeta) DeepCopyInto(out *TypeMeta) { *out = *in return } // DeepCopy is an autogenerated deepcopy function, copying the receiver, creating a new TypeMeta. func (in *TypeMeta) DeepCopy() *TypeMeta { if in == nil { return nil } out := new(TypeMeta) in.DeepCopyInto(out) return out } kubernetes-sigs-kind-49aeee6/pkg/build/000077500000000000000000000000001524365506300201445ustar00rootroot00000000000000kubernetes-sigs-kind-49aeee6/pkg/build/nodeimage/000077500000000000000000000000001524365506300220745ustar00rootroot00000000000000kubernetes-sigs-kind-49aeee6/pkg/build/nodeimage/build.go000066400000000000000000000126641524365506300235330ustar00rootroot00000000000000/* Copyright 2020 The Kubernetes Authors. 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 nodeimage import ( "fmt" "io" "net/http" "net/url" "os" "runtime" "strings" "time" "sigs.k8s.io/kind/pkg/build/nodeimage/internal/kube" "sigs.k8s.io/kind/pkg/errors" "sigs.k8s.io/kind/pkg/internal/version" "sigs.k8s.io/kind/pkg/log" ) // Build builds a node image using the supplied options func Build(options ...Option) error { // default options ctx := &buildContext{ image: DefaultImage, baseImage: DefaultBaseImage, logger: log.NoopLogger{}, arch: runtime.GOARCH, } // apply user options for _, option := range options { if err := option.apply(ctx); err != nil { return err } } // verify that we're using a supported arch if !supportedArch(ctx.arch) { ctx.logger.Warnf("unsupported architecture %q", ctx.arch) } if ctx.buildType == "" { ctx.buildType = detectBuildType(ctx.kubeParam) if ctx.buildType != "" { ctx.logger.V(0).Infof("Detected build type: %q", ctx.buildType) } } if ctx.buildType == "url" { ctx.logger.V(0).Infof("Building using URL: %q", ctx.kubeParam) builder, err := kube.NewURLBuilder(ctx.logger, ctx.kubeParam) if err != nil { return err } ctx.builder = builder } if ctx.buildType == "file" { ctx.logger.V(0).Infof("Building using local file: %q", ctx.kubeParam) if info, err := os.Stat(ctx.kubeParam); err == nil && info.Mode().IsRegular() { builder, err := kube.NewTarballBuilder(ctx.logger, ctx.kubeParam) if err != nil { return err } ctx.builder = builder } } if ctx.buildType == "release" { ctx.logger.V(0).Infof("Building using release %q artifacts", ctx.kubeParam) kubever, err := version.ParseSemantic(ctx.kubeParam) if err == nil { builder, err := kube.NewReleaseBuilder(ctx.logger, "v"+kubever.String(), ctx.arch) if err != nil { return err } ctx.builder = builder } else { if _, err := os.Stat(ctx.kubeParam); err != nil { ctx.logger.V(0).Infof("%s is not a valid kubernetes version", ctx.kubeParam) return fmt.Errorf("%s is not a valid kubernetes version", ctx.kubeParam) } } } if ctx.buildType == "ci" { ctx.logger.V(0).Infof("Building using CI %q artifacts", ctx.kubeParam) marker := ctx.kubeParam if marker == "" { marker = "latest" } if !strings.HasPrefix(marker, "ci/") { marker = "ci/" + marker } if !strings.HasSuffix(marker, ".txt") { marker = marker + ".txt" } markerURL := "https://dl.k8s.io/" + marker resolvedVersion, err := fetchURL(ctx.logger, markerURL) if err != nil { return errors.Wrapf(err, "error resolving CI version from %s", markerURL) } ctx.logger.V(0).Infof("Resolved CI version: %s", resolvedVersion) builder, err := kube.NewCIBuilder(ctx.logger, resolvedVersion, ctx.arch) if err != nil { return err } ctx.builder = builder } if ctx.builder == nil { // locate sources if no kubernetes source was specified if ctx.kubeParam == "" { kubeRoot, err := kube.FindSource() if err != nil { return errors.Wrap(err, "error finding kuberoot") } ctx.kubeParam = kubeRoot } ctx.logger.V(0).Infof("Building using source: %q", ctx.kubeParam) // initialize bits builder, err := kube.NewDockerBuilder(ctx.logger, ctx.kubeParam, ctx.arch) if err != nil { return err } ctx.builder = builder } // do the actual build return ctx.Build() } // detectBuildType detect the type of build required based on the param passed in the following order // url: if the param is a valid http or https url // file: if the param refers to an existing regular file // source: if the param refers to an existing directory // ci: if the param starts with "ci/" (indicates a CI build version marker) // release: if the param is a semantic version expression (does this require the v preprended? func detectBuildType(param string) string { u, err := url.ParseRequestURI(param) if err == nil { if u.Scheme == "http" || u.Scheme == "https" { return "url" } } if info, err := os.Stat(param); err == nil { if info.Mode().IsRegular() { return "file" } if info.Mode().IsDir() { return "source" } } if strings.HasPrefix(param, "ci/") { return "ci" } _, err = version.ParseSemantic(param) if err == nil { return "release" } return "" } func supportedArch(arch string) bool { switch arch { default: return false // currently we nominally support building node images for these case "amd64": case "arm64": } return true } func fetchURL(logger log.Logger, url string) (string, error) { logger.V(0).Infof("Fetching %q", url) httpClient := &http.Client{ Timeout: 30 * time.Second, Transport: &http.Transport{ Proxy: http.ProxyFromEnvironment, }, } resp, err := httpClient.Get(url) if err != nil { return "", err } defer resp.Body.Close() if resp.StatusCode != http.StatusOK { return "", fmt.Errorf("error status: %s", resp.Status) } body, err := io.ReadAll(resp.Body) if err != nil { return "", err } return strings.TrimSpace(string(body)), nil } kubernetes-sigs-kind-49aeee6/pkg/build/nodeimage/build_test.go000066400000000000000000000042121524365506300245600ustar00rootroot00000000000000/* Copyright The Kubernetes Authors. 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 nodeimage import ( "os" "path/filepath" "testing" ) func TestDetectBuildType(t *testing.T) { tmpDir, err := os.MkdirTemp("", "kind-build-test-*") if err != nil { t.Fatalf("failed to create temp dir: %v", err) } defer os.RemoveAll(tmpDir) tmpFile := filepath.Join(tmpDir, "some-file") if err := os.WriteFile(tmpFile, []byte("content"), 0644); err != nil { t.Fatalf("failed to write temp file: %v", err) } cases := []struct { name string param string expected string }{ { name: "valid http url", param: "http://example.com/foo", expected: "url", }, { name: "valid https url", param: "https://example.com/foo", expected: "url", }, { name: "existing file", param: tmpFile, expected: "file", }, { name: "existing directory", param: tmpDir, expected: "source", }, { name: "ci/latest build type", param: "ci/latest", expected: "ci", }, { name: "ci/latest-1.30 build type", param: "ci/latest-1.30", expected: "ci", }, { name: "valid semantic release", param: "v1.30.0", expected: "release", }, { name: "valid semantic release without v prefix", param: "1.30.0", expected: "release", }, { name: "invalid / fallback", param: "invalid-input", expected: "", }, } for _, tc := range cases { tc := tc t.Run(tc.name, func(t *testing.T) { actual := detectBuildType(tc.param) if actual != tc.expected { t.Errorf("detectBuildType(%q) = %q, expected %q", tc.param, actual, tc.expected) } }) } } kubernetes-sigs-kind-49aeee6/pkg/build/nodeimage/buildcontext.go000066400000000000000000000300011524365506300251210ustar00rootroot00000000000000/* Copyright 2018 The Kubernetes Authors. 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 nodeimage import ( "fmt" "math/rand" "os" "path" "strings" "time" "sigs.k8s.io/kind/pkg/errors" "sigs.k8s.io/kind/pkg/exec" "sigs.k8s.io/kind/pkg/log" "sigs.k8s.io/kind/pkg/build/nodeimage/internal/container/docker" "sigs.k8s.io/kind/pkg/build/nodeimage/internal/kube" "sigs.k8s.io/kind/pkg/internal/sets" "sigs.k8s.io/kind/pkg/internal/version" ) const ( // httpProxy is the HTTP_PROXY environment variable key httpProxy = "HTTP_PROXY" // httpsProxy is the HTTPS_PROXY environment variable key httpsProxy = "HTTPS_PROXY" // noProxy is the NO_PROXY environment variable key noProxy = "NO_PROXY" ) // buildContext is used to build the kind node image, and contains // build configuration type buildContext struct { // option fields image string baseImage string logger log.Logger arch string buildType string kubeParam string // non-option fields builder kube.Builder } // Build builds the cluster node image, the source dir must be set on // the buildContext func (c *buildContext) Build() (err error) { // ensure kubernetes build is up-to-date first c.logger.V(0).Info("Starting to build Kubernetes") bits, err := c.builder.Build() if err != nil { c.logger.Errorf("Failed to build Kubernetes: %v", err) return errors.Wrap(err, "failed to build kubernetes") } c.logger.V(0).Info("Finished building Kubernetes") // then perform the actual docker image build c.logger.V(0).Info("Building node image ...") return c.buildImage(bits) } func (c *buildContext) buildImage(bits kube.Bits) error { // create build container // NOTE: we are using docker run + docker commit, so we can install // debian packages without permanently copying them into the image. // if docker gets proper squash support, we can rm them instead // This also allows the KubeBit implementations to programmatically // install in the image containerID, err := c.createBuildContainer() cmder := docker.ContainerCmder(containerID) // ensure we will delete it if containerID != "" { defer func() { _ = exec.Command("docker", "rm", "-f", "-v", containerID).Run() }() } if err != nil { c.logger.Errorf("Image build Failed! Failed to create build container: %v", err) return err } c.logger.V(0).Info("Building in container: " + containerID) // copy artifacts in for _, binary := range bits.BinaryPaths() { // TODO: probably should be /usr/local/bin, but the existing kubelet // service file expects /usr/bin/kubelet nodePath := "/usr/bin/" + path.Base(binary) if err := exec.Command("docker", "cp", binary, containerID+":"+nodePath).Run(); err != nil { return err } if err := cmder.Command("chmod", "+x", nodePath).Run(); err != nil { return err } if err := cmder.Command("chown", "root:root", nodePath).Run(); err != nil { return err } } // write version // TODO: support grabbing version from a binary instead? // This may or may not be a good idea ... rawVersion := bits.Version() parsedVersion, err := version.ParseSemantic(rawVersion) if err != nil { return errors.Wrap(err, "invalid Kubernetes version") } if err := createFile(cmder, "/kind/version", rawVersion); err != nil { return err } // pre-pull images that were not part of the build and write CNI / storage // manifests if _, err = c.prePullImagesAndWriteManifests(bits, parsedVersion, containerID); err != nil { c.logger.Errorf("Image build Failed! Failed to pull Images: %v", err) return err } // Save the image changes to a new image if err = exec.Command( "docker", "commit", // we need to put this back after changing it when running the image "--change", `ENTRYPOINT [ "/usr/local/bin/entrypoint", "/sbin/init" ]`, // remove proxy settings since they're for the building process // and should not be carried with the built image "--change", `ENV HTTP_PROXY="" HTTPS_PROXY="" NO_PROXY=""`, containerID, c.image, ).Run(); err != nil { c.logger.Errorf("Image build Failed! Failed to save image: %v", err) return err } c.logger.V(0).Infof("Image %q build completed.", c.image) return nil } // returns a set of image tags that will be side-loaded func (c *buildContext) getBuiltImages(bits kube.Bits) (sets.String, error) { images := sets.NewString() for _, path := range bits.ImagePaths() { tags, err := docker.GetArchiveTags(path) if err != nil { return nil, err } images.Insert(tags...) } return images, nil } // must be run after kubernetes has been installed on the node func (c *buildContext) prePullImagesAndWriteManifests(bits kube.Bits, parsedVersion *version.Version, containerID string) ([]string, error) { // first get the images we actually built builtImages, err := c.getBuiltImages(bits) if err != nil { c.logger.Errorf("Image build Failed! Failed to get built images: %v", err) return nil, err } // helpers to run things in the build container cmder := docker.ContainerCmder(containerID) // For kubernetes v1.15+ (actually 1.16 alpha versions) we may need to // drop the arch suffix from images to get the expected image archSuffix := "-" + c.arch fixRepository := func(repository string) string { if strings.HasSuffix(repository, archSuffix) { fixed := strings.TrimSuffix(repository, archSuffix) c.logger.V(1).Info("fixed: " + repository + " -> " + fixed) repository = fixed } return repository } // Determine accurate built tags using the logic that will be applied // when rewriting tags during archive loading fixedImages := sets.NewString() fixedImagesMap := make(map[string]string, builtImages.Len()) // key: original images, value: fixed images for _, image := range builtImages.List() { registry, tag, err := docker.SplitImage(image) if err != nil { return nil, err } registry = fixRepository(registry) fixedImage := registry + ":" + tag fixedImages.Insert(fixedImage) fixedImagesMap[image] = fixedImage } builtImages = fixedImages c.logger.V(1).Info("Detected built images: " + strings.Join(builtImages.List(), ", ")) // gets the list of images required by kubeadm requiredImages, err := exec.OutputLines(cmder.Command( "kubeadm", "config", "images", "list", "--kubernetes-version", bits.Version(), )) if err != nil { return nil, err } // replace pause image with our own containerdConfig, err := exec.Output(cmder.Command("cat", containerdConfigPath)) if err != nil { return nil, err } pauseImage, err := findSandboxImage(string(containerdConfig)) if err != nil { return nil, err } n := 0 for _, image := range requiredImages { if !strings.Contains(image, "pause") { requiredImages[n] = image n++ } } requiredImages = append(requiredImages[:n], pauseImage) if parsedVersion.LessThan(version.MustParseSemantic("v1.24.0")) { if err := configureContainerdSystemdCgroupFalse(cmder, string(containerdConfig)); err != nil { return nil, err } } // write the default CNI manifest if err := createFile(cmder, defaultCNIManifestLocation, defaultCNIManifest); err != nil { c.logger.Errorf("Image build Failed! Failed write default CNI Manifest: %v", err) return nil, err } // all builds should install the default CNI images from the above manifest currently requiredImages = append(requiredImages, defaultCNIImages...) // write the default Storage manifest if err := createFile(cmder, defaultStorageManifestLocation, defaultStorageManifest); err != nil { c.logger.Errorf("Image build Failed! Failed write default Storage Manifest: %v", err) return nil, err } // all builds should install the default storage driver images currently requiredImages = append(requiredImages, defaultStorageImages...) // setup image importer importer := newContainerdImporter(cmder) if err := importer.Prepare(); err != nil { c.logger.Errorf("Image build Failed! Failed to prepare containerd to load images %v", err) return nil, err } // TODO: return this error? defer func() { if err := importer.End(); err != nil { c.logger.Errorf("Image build Failed! Failed to tear down containerd after loading images %v", err) } }() fns := []func() error{} osArch := dockerBuildOsAndArch(c.arch) for _, image := range requiredImages { image := image // https://golang.org/doc/faq#closures_and_goroutines if !builtImages.Has(image) { fns = append(fns, func() error { if err = importer.Pull(image, osArch); err != nil { c.logger.Warnf("Failed to pull %s with error: %v", image, err) runE := exec.RunErrorForError(err) c.logger.Warn(string(runE.Output)) c.logger.Warnf("Retrying %s pull after 1s ...", image) time.Sleep(time.Second) return importer.Pull(image, osArch) } return nil }) } } // Wait for containerd socket to be ready, which may take 1s when running under emulation if err := importer.WaitForReady(); err != nil { c.logger.Errorf("Image build failed, containerd did not become ready %v", err) return nil, err } if err := errors.AggregateConcurrent(fns); err != nil { return nil, err } // create a plan of image loading loadFns := []func() error{} for _, image := range bits.ImagePaths() { image := image // capture loop var loadFns = append(loadFns, func() error { f, err := os.Open(image) if err != nil { return err } defer f.Close() return importer.LoadCommand().SetStdout(os.Stdout).SetStderr(os.Stderr).SetStdin(f).Run() // we will rewrite / correct the tags in tagFns below }) } // run all image loading concurrently until one fails or all succeed if err := errors.UntilErrorConcurrent(loadFns); err != nil { c.logger.Errorf("Image build Failed! Failed to load images %v", err) return nil, err } // create a plan of image re-tagging tagFns := []func() error{} for unfixed, fixed := range fixedImagesMap { unfixed, fixed := unfixed, fixed // capture loop var if unfixed != fixed { tagFns = append(tagFns, func() error { return importer.Tag(unfixed, fixed) }) } } // run all image re-tagging concurrently until one fails or all succeed if err := errors.UntilErrorConcurrent(tagFns); err != nil { c.logger.Errorf("Image build Failed! Failed to re-tag images %v", err) return nil, err } return importer.ListImported() } func (c *buildContext) createBuildContainer() (id string, err error) { // attempt to explicitly pull the image if it doesn't exist locally // errors here are non-critical; we'll proceed with execution, which includes a pull operation _ = docker.Pull(c.logger, c.baseImage, dockerBuildOsAndArch(c.arch), 4) // this should be good enough: a specific prefix, the current unix time, // and a little random bits in case we have multiple builds simultaneously random := rand.New(rand.NewSource(time.Now().UnixNano())).Int31() id = fmt.Sprintf("kind-build-%d-%d", time.Now().UTC().Unix(), random) runArgs := []string{ "-d", // make the client exit while the container continues to run "--entrypoint=sleep", // the container should hang forever, so we can exec in it "--name=" + id, "--platform=" + dockerBuildOsAndArch(c.arch), "--security-opt", "seccomp=unconfined", } // pass proxy settings from environment variables to the building container // to make them work during the building process for _, name := range []string{httpProxy, httpsProxy, noProxy} { val := os.Getenv(name) if val == "" { val = os.Getenv(strings.ToLower(name)) } if val != "" { runArgs = append(runArgs, "--env", name+"="+val) } } err = docker.Run( c.baseImage, runArgs, []string{ "infinity", // sleep infinitely to keep container running indefinitely }, ) if err != nil { return id, errors.Wrap(err, "failed to create build container") } return id, nil } kubernetes-sigs-kind-49aeee6/pkg/build/nodeimage/const.go000066400000000000000000000016261524365506300235560ustar00rootroot00000000000000/* Copyright 2019 The Kubernetes Authors. 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 nodeimage // these are well known paths within the node image const ( // TODO: refactor kubernetesVersionLocation to a common internal package kubernetesVersionLocation = "/kind/version" defaultCNIManifestLocation = "/kind/manifests/default-cni.yaml" defaultStorageManifestLocation = "/kind/manifests/default-storage.yaml" ) kubernetes-sigs-kind-49aeee6/pkg/build/nodeimage/const_cni.go000066400000000000000000000067311524365506300244110ustar00rootroot00000000000000/* Copyright 2019 The Kubernetes Authors. 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 nodeimage /* The default CNI manifest and images are our own tiny kindnet */ const kindnetdImage = "docker.io/kindest/kindnetd:v20260820-69b56db7" var defaultCNIImages = []string{kindnetdImage} // TODO: migrate to fully patching and deprecate the template const defaultCNIManifest = ` # kindnetd networking manifest # would you kindly template this file # would you kindly patch this file --- kind: ClusterRole apiVersion: rbac.authorization.k8s.io/v1 metadata: name: kindnet rules: - apiGroups: - policy resources: - podsecuritypolicies verbs: - use resourceNames: - kindnet - apiGroups: - "" resources: - nodes - pods - namespaces verbs: - list - watch - apiGroups: - "networking.k8s.io" resources: - networkpolicies verbs: - list - watch --- kind: ClusterRoleBinding apiVersion: rbac.authorization.k8s.io/v1 metadata: name: kindnet roleRef: apiGroup: rbac.authorization.k8s.io kind: ClusterRole name: kindnet subjects: - kind: ServiceAccount name: kindnet namespace: kube-system --- apiVersion: v1 kind: ServiceAccount metadata: name: kindnet namespace: kube-system --- apiVersion: apps/v1 kind: DaemonSet metadata: name: kindnet namespace: kube-system labels: tier: node app: kindnet k8s-app: kindnet spec: selector: matchLabels: app: kindnet template: metadata: labels: tier: node app: kindnet k8s-app: kindnet spec: hostNetwork: true nodeSelector: kubernetes.io/os: linux tolerations: - operator: Exists priorityClassName: system-node-critical serviceAccountName: kindnet containers: - name: kindnet-cni image: ` + kindnetdImage + ` env: - name: HOST_IP valueFrom: fieldRef: fieldPath: status.hostIP - name: POD_IP valueFrom: fieldRef: fieldPath: status.podIP - name: POD_SUBNET value: {{ .PodSubnet }} volumeMounts: - name: cni-cfg mountPath: /etc/cni/net.d - name: xtables-lock mountPath: /run/xtables.lock readOnly: false - name: lib-modules mountPath: /lib/modules readOnly: true - name: nri-plugin mountPath: /var/run/nri resources: requests: cpu: "100m" memory: "50Mi" securityContext: privileged: false capabilities: add: ["NET_RAW", "NET_ADMIN"] volumes: - name: cni-cfg hostPath: path: /etc/cni/net.d - name: xtables-lock hostPath: path: /run/xtables.lock type: FileOrCreate - name: lib-modules hostPath: path: /lib/modules - name: nri-plugin hostPath: path: /var/run/nri --- ` kubernetes-sigs-kind-49aeee6/pkg/build/nodeimage/const_storage.go000066400000000000000000000131461524365506300253020ustar00rootroot00000000000000/* Copyright 2019 The Kubernetes Authors. 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 nodeimage /* The default PV driver manifest and images are provisionally rancher.io/local-path-provisioner NOTE: we have customized it in the following ways: - storage is under /var instead of /opt - our own image and helper image - schedule to linux nodes only - install as the default storage class - tolerate control plane scheduling taints */ const storageProvisionerImage = "docker.io/kindest/local-path-provisioner:v20260820-69b56db7" const storageHelperImage = "docker.io/kindest/local-path-helper:v20260131-7181c60a" // image we need to preload var defaultStorageImages = []string{storageProvisionerImage, storageHelperImage} const defaultStorageManifest = ` apiVersion: v1 kind: Namespace metadata: name: local-path-storage --- apiVersion: v1 kind: ServiceAccount metadata: name: local-path-provisioner-service-account namespace: local-path-storage --- apiVersion: rbac.authorization.k8s.io/v1 kind: Role metadata: name: local-path-provisioner-role namespace: local-path-storage rules: - apiGroups: [""] resources: ["pods"] verbs: ["get", "list", "watch", "create", "patch", "update", "delete"] --- apiVersion: rbac.authorization.k8s.io/v1 kind: ClusterRole metadata: name: local-path-provisioner-role rules: - apiGroups: [""] resources: ["nodes", "persistentvolumeclaims", "configmaps", "pods", "pods/log"] verbs: ["get", "list", "watch"] - apiGroups: [""] resources: ["persistentvolumes"] verbs: ["get", "list", "watch", "create", "patch", "update", "delete"] - apiGroups: [""] resources: ["events"] verbs: ["create", "patch"] - apiGroups: ["storage.k8s.io"] resources: ["storageclasses"] verbs: ["get", "list", "watch"] --- apiVersion: rbac.authorization.k8s.io/v1 kind: RoleBinding metadata: name: local-path-provisioner-bind namespace: local-path-storage roleRef: apiGroup: rbac.authorization.k8s.io kind: Role name: local-path-provisioner-role subjects: - kind: ServiceAccount name: local-path-provisioner-service-account namespace: local-path-storage --- apiVersion: rbac.authorization.k8s.io/v1 kind: ClusterRoleBinding metadata: name: local-path-provisioner-bind roleRef: apiGroup: rbac.authorization.k8s.io kind: ClusterRole name: local-path-provisioner-role subjects: - kind: ServiceAccount name: local-path-provisioner-service-account namespace: local-path-storage --- apiVersion: apps/v1 kind: Deployment metadata: name: local-path-provisioner namespace: local-path-storage spec: replicas: 1 selector: matchLabels: app: local-path-provisioner template: metadata: labels: app: local-path-provisioner spec: nodeSelector: kubernetes.io/os: linux # TODO: Remove the "master" taint after kubeadm nodes no longer have it. # This can be done once kind no longer supports kubeadm 1.24. # https://github.com/kubernetes-sigs/kind/issues/1699 tolerations: - key: node-role.kubernetes.io/control-plane operator: Equal effect: NoSchedule - key: node-role.kubernetes.io/master operator: Equal effect: NoSchedule serviceAccountName: local-path-provisioner-service-account containers: - name: local-path-provisioner image: ` + storageProvisionerImage + ` imagePullPolicy: IfNotPresent command: - local-path-provisioner - --debug - start - --helper-image - ` + storageHelperImage + ` - --config - /etc/config/config.json volumeMounts: - name: config-volume mountPath: /etc/config/ env: - name: POD_NAMESPACE valueFrom: fieldRef: fieldPath: metadata.namespace - name: CONFIG_MOUNT_PATH value: /etc/config/ volumes: - name: config-volume configMap: name: local-path-config --- apiVersion: storage.k8s.io/v1 kind: StorageClass metadata: name: standard namespace: kube-system annotations: storageclass.kubernetes.io/is-default-class: "true" provisioner: rancher.io/local-path volumeBindingMode: WaitForFirstConsumer reclaimPolicy: Delete --- kind: ConfigMap apiVersion: v1 metadata: name: local-path-config namespace: local-path-storage data: config.json: |- { "nodePathMap":[ { "node":"DEFAULT_PATH_FOR_NON_LISTED_NODES", "paths":["/var/local-path-provisioner"] } ] } setup: |- #!/bin/sh set -eu mkdir -m 0777 -p "$VOL_DIR" teardown: |- #!/bin/sh set -eu rm -rf "$VOL_DIR" helperPod.yaml: |- apiVersion: v1 kind: Pod metadata: name: helper-pod spec: priorityClassName: system-node-critical tolerations: - operator: Exists effect: NoSchedule - operator: Exists effect: NoExecute containers: - name: helper-pod image: ` + storageHelperImage + ` imagePullPolicy: IfNotPresent ` kubernetes-sigs-kind-49aeee6/pkg/build/nodeimage/containerd.go000066400000000000000000000030311524365506300245460ustar00rootroot00000000000000/* Copyright 2022 The Kubernetes Authors. 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 nodeimage import ( "strings" "sigs.k8s.io/kind/pkg/errors" "sigs.k8s.io/kind/pkg/exec" "sigs.k8s.io/kind/pkg/internal/patch" ) const containerdConfigPath = "/etc/containerd/config.toml" const containerdConfigPatchSystemdCgroupFalse = ` [plugins."io.containerd.grpc.v1.cri".containerd.runtimes.runc.options] SystemdCgroup = false [plugins."io.containerd.grpc.v1.cri".containerd.runtimes.test-handler.options] SystemdCgroup = false ` func configureContainerdSystemdCgroupFalse(containerCmdr exec.Cmder, config string) error { patched, err := patch.ContainerdTOML(config, []string{containerdConfigPatchSystemdCgroupFalse}, []string{}) if err != nil { return errors.Wrap(err, "failed to configure containerd SystemdCgroup=false") } err = containerCmdr.Command( "cp", "/dev/stdin", containerdConfigPath, ).SetStdin(strings.NewReader(patched)).Run() if err != nil { return errors.Wrap(err, "failed to configure containerd SystemdCgroup=false") } return nil } kubernetes-sigs-kind-49aeee6/pkg/build/nodeimage/defaults.go000066400000000000000000000016311524365506300242330ustar00rootroot00000000000000/* Copyright 2020 The Kubernetes Authors. 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 nodeimage // DefaultImage is the default name:tag for the built image const DefaultImage = "kindest/node:latest" // DefaultBaseImage is the default base image used // TODO: come up with a reasonable solution to digest pinning // https://github.com/moby/moby/issues/43188 const DefaultBaseImage = "docker.io/kindest/base:v20260820-69b56db7" kubernetes-sigs-kind-49aeee6/pkg/build/nodeimage/doc.go000066400000000000000000000012301524365506300231640ustar00rootroot00000000000000/* Copyright 2018 The Kubernetes Authors. 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 nodeimage implements functionality to build the kind node image package nodeimage kubernetes-sigs-kind-49aeee6/pkg/build/nodeimage/helpers.go000066400000000000000000000032221524365506300240640ustar00rootroot00000000000000/* Copyright 2020 The Kubernetes Authors. 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 nodeimage import ( "path" "regexp" "strings" "sigs.k8s.io/kind/pkg/errors" "sigs.k8s.io/kind/pkg/exec" ) // createFile creates the file at filePath in the container, // ensuring the directory exists and writing contents to the file func createFile(containerCmder exec.Cmder, filePath, contents string) error { // NOTE: the paths inside the container should use the path package // and not filepath (!), we want posixy paths in the linux container, NOT // whatever path format the host uses. For paths on the host we use filepath if err := containerCmder.Command("mkdir", "-p", path.Dir(filePath)).Run(); err != nil { return err } return containerCmder.Command( "cp", "/dev/stdin", filePath, ).SetStdin( strings.NewReader(contents), ).Run() } func findSandboxImage(config string) (string, error) { match := regexp.MustCompile(`sandbox_image\s+=\s+"([^\n]+)"`).FindStringSubmatch(config) if len(match) < 2 { return "", errors.New("failed to parse sandbox_image from config") } return match[1], nil } func dockerBuildOsAndArch(arch string) string { return "linux/" + arch } kubernetes-sigs-kind-49aeee6/pkg/build/nodeimage/imageimporter.go000066400000000000000000000051761524365506300253000ustar00rootroot00000000000000/* Copyright 2019 The Kubernetes Authors. 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 nodeimage import ( "io" "sigs.k8s.io/kind/pkg/errors" "sigs.k8s.io/kind/pkg/exec" ) type containerdImporter struct { containerCmder exec.Cmder } func newContainerdImporter(containerCmder exec.Cmder) *containerdImporter { return &containerdImporter{ containerCmder: containerCmder, } } func (c *containerdImporter) Prepare() error { if err := c.containerCmder.Command( "bash", "-c", "nohup containerd > /dev/null 2>&1 &", ).Run(); err != nil { return err } return nil } func (c *containerdImporter) WaitForReady() error { // ctr doesn't respect timeouts when the socket doesn't exist // so we'll look for the socket to exist ourselves, THEN attempt ctr info // TODO: we are assuming the socket path, and this is kind of hacky if err := c.containerCmder.Command( "bash", "-c", `set -e # wait for socket to exist for i in {0..3}; do if [ -S /run/containerd/containerd.sock ]; then break fi sleep "$i" done # check healthy ctr info `, ).Run(); err != nil { return errors.Wrap(err, "failed to wait for containerd to become ready") } return nil } func (c *containerdImporter) End() error { return c.containerCmder.Command("pkill", "containerd").Run() } func (c *containerdImporter) Pull(image, platform string) error { return c.containerCmder.Command( "ctr", "--namespace=k8s.io", "content", "fetch", "--platform="+platform, image, ).SetStdout(io.Discard).SetStderr(io.Discard).Run() } func (c *containerdImporter) LoadCommand() exec.Cmd { return c.containerCmder.Command( // TODO: ideally we do not need this in the future. we have fixed at least one image "ctr", "--namespace=k8s.io", "images", "import", "--label=io.cri-containerd.pinned=pinned", "--all-platforms", "--no-unpack", "--digests", "-", ) } func (c *containerdImporter) Tag(src, target string) error { return c.containerCmder.Command( "ctr", "--namespace=k8s.io", "images", "tag", "--force", src, target, ).Run() } func (c *containerdImporter) ListImported() ([]string, error) { return exec.OutputLines(c.containerCmder.Command("ctr", "--namespace=k8s.io", "images", "list", "-q")) } kubernetes-sigs-kind-49aeee6/pkg/build/nodeimage/internal/000077500000000000000000000000001524365506300237105ustar00rootroot00000000000000kubernetes-sigs-kind-49aeee6/pkg/build/nodeimage/internal/container/000077500000000000000000000000001524365506300256725ustar00rootroot00000000000000kubernetes-sigs-kind-49aeee6/pkg/build/nodeimage/internal/container/docker/000077500000000000000000000000001524365506300271415ustar00rootroot00000000000000kubernetes-sigs-kind-49aeee6/pkg/build/nodeimage/internal/container/docker/archive.go000066400000000000000000000064651524365506300311240ustar00rootroot00000000000000/* Copyright 2018 The Kubernetes Authors. 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 docker contains helpers for working with docker // This package has no stability guarantees whatsoever! package docker import ( "archive/tar" "encoding/json" "fmt" "io" "os" "sigs.k8s.io/kind/pkg/errors" ) // GetArchiveTags obtains a list of "repo:tag" docker image tags from a // given docker image archive (tarball) path // compatible with all known specs: // https://github.com/moby/moby/blob/master/image/spec/v1.md // https://github.com/moby/moby/blob/master/image/spec/v1.1.md // https://github.com/moby/moby/blob/master/image/spec/v1.2.md func GetArchiveTags(path string) ([]string, error) { // open the archive and find the repositories entry f, err := os.Open(path) if err != nil { return nil, err } defer f.Close() tr := tar.NewReader(f) var hdr *tar.Header for { hdr, err = tr.Next() if err == io.EOF { return nil, errors.New("could not find image metadata") } if err != nil { return nil, err } if hdr.Name == "manifest.json" || hdr.Name == "repositories" { break } } // read and parse the tags b, err := io.ReadAll(tr) if err != nil { return nil, err } res := []string{} // parse switch hdr.Name { case "repositories": repoTags, err := parseRepositories(b) if err != nil { return nil, err } // convert to tags in the docker CLI sense for repo, tags := range repoTags { for tag := range tags { res = append(res, fmt.Sprintf("%s:%s", repo, tag)) } } case "manifest.json": manifest, err := parseDockerV1Manifest(b) if err != nil { return nil, err } res = append(res, manifest[0].RepoTags...) } return res, nil } // archiveRepositories represents repository:tag:ref // // https://github.com/moby/moby/blob/master/image/spec/v1.md // https://github.com/moby/moby/blob/master/image/spec/v1.1.md // https://github.com/moby/moby/blob/master/image/spec/v1.2.md type archiveRepositories map[string]map[string]string // https://github.com/moby/moby/blob/master/image/spec/v1.2.md#combined-image-json--filesystem-changeset-format type metadataEntry struct { Config string `json:"Config"` RepoTags []string `json:"RepoTags"` Layers []string `json:"Layers"` } // returns repository:tag:ref func parseRepositories(data []byte) (archiveRepositories, error) { var repoTags archiveRepositories if err := json.Unmarshal(data, &repoTags); err != nil { return nil, err } return repoTags, nil } // parseDockerV1Manifest parses Docker Image Spec v1 manifest (not OCI Image Spec manifest) // https://github.com/moby/moby/blob/v20.10.22/image/spec/v1.2.md#combined-image-json--filesystem-changeset-format func parseDockerV1Manifest(data []byte) ([]metadataEntry, error) { var entries []metadataEntry if err := json.Unmarshal(data, &entries); err != nil { return nil, err } return entries, nil } kubernetes-sigs-kind-49aeee6/pkg/build/nodeimage/internal/container/docker/doc.go000066400000000000000000000012751524365506300302420ustar00rootroot00000000000000/* Copyright 2018 The Kubernetes Authors. 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 docker contains helpers for working with docker // This package has no stability guarantees whatsoever! package docker kubernetes-sigs-kind-49aeee6/pkg/build/nodeimage/internal/container/docker/exec.go000066400000000000000000000056461524365506300304270ustar00rootroot00000000000000/* Copyright 2018 The Kubernetes Authors. 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 docker import ( "context" "io" "sigs.k8s.io/kind/pkg/exec" ) // containerCmder implements exec.Cmder for docker containers type containerCmder struct { nameOrID string } // ContainerCmder creates a new exec.Cmder against a docker container func ContainerCmder(containerNameOrID string) exec.Cmder { return &containerCmder{ nameOrID: containerNameOrID, } } func (c *containerCmder) Command(command string, args ...string) exec.Cmd { return &containerCmd{ nameOrID: c.nameOrID, command: command, args: args, } } func (c *containerCmder) CommandContext(ctx context.Context, command string, args ...string) exec.Cmd { return &containerCmd{ nameOrID: c.nameOrID, command: command, args: args, ctx: ctx, } } // containerCmd implements exec.Cmd for docker containers type containerCmd struct { nameOrID string // the container name or ID command string args []string env []string stdin io.Reader stdout io.Writer stderr io.Writer ctx context.Context } func (c *containerCmd) Run() error { args := []string{ "exec", // run with privileges so we can remount etc.. // this might not make sense in the most general sense, but it is // important to many kind commands "--privileged", } if c.stdin != nil { args = append(args, "-i", // interactive so we can supply input ) } // set env for _, env := range c.env { args = append(args, "-e", env) } // specify the container and command, after this everything will be // args the command in the container rather than to docker args = append( args, c.nameOrID, // ... against the container c.command, // with the command specified ) args = append( args, // finally, with the caller args c.args..., ) var cmd exec.Cmd if c.ctx != nil { cmd = exec.CommandContext(c.ctx, "docker", args...) } else { cmd = exec.Command("docker", args...) } if c.stdin != nil { cmd.SetStdin(c.stdin) } if c.stderr != nil { cmd.SetStderr(c.stderr) } if c.stdout != nil { cmd.SetStdout(c.stdout) } return cmd.Run() } func (c *containerCmd) SetEnv(env ...string) exec.Cmd { c.env = env return c } func (c *containerCmd) SetStdin(r io.Reader) exec.Cmd { c.stdin = r return c } func (c *containerCmd) SetStdout(w io.Writer) exec.Cmd { c.stdout = w return c } func (c *containerCmd) SetStderr(w io.Writer) exec.Cmd { c.stderr = w return c } kubernetes-sigs-kind-49aeee6/pkg/build/nodeimage/internal/container/docker/image.go000066400000000000000000000055741524365506300305650ustar00rootroot00000000000000/* Copyright 2019 The Kubernetes Authors. 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 docker import ( "fmt" "strings" "sigs.k8s.io/kind/pkg/errors" "sigs.k8s.io/kind/pkg/exec" ) // SplitImage splits an image into (registry,tag) following these cases: // // alpine -> (alpine, latest) // // alpine:latest -> (alpine, latest) // // alpine@sha256:28ef97b8686a0b5399129e9b763d5b7e5ff03576aa5580d6f4182a49c5fe1913 -> (alpine, latest@sha256:28ef97b8686a0b5399129e9b763d5b7e5ff03576aa5580d6f4182a49c5fe1913) // // alpine:latest@sha256:28ef97b8686a0b5399129e9b763d5b7e5ff03576aa5580d6f4182a49c5fe1913 -> (alpine, latest@sha256:28ef97b8686a0b5399129e9b763d5b7e5ff03576aa5580d6f4182a49c5fe1913) // // NOTE: for our purposes we consider the sha to be part of the tag, and we // resolve the implicit :latest func SplitImage(image string) (registry, tag string, err error) { // we are looking for ':' and '@' firstColon := strings.IndexByte(image, 58) firstAt := strings.IndexByte(image, 64) // there should be a registry before the tag, and @/: should not be the last // character, these cases are assumed not to exist by the rest of the code if firstColon == 0 || firstAt == 0 || firstColon+1 == len(image) || firstAt+1 == len(image) { return "", "", fmt.Errorf("unexpected image: %q", image) } // NOTE: The order of these cases matters // case: alpine if firstColon == -1 && firstAt == -1 { return image, "latest", nil } // case: alpine@sha256:28ef97b8686a0b5399129e9b763d5b7e5ff03576aa5580d6f4182a49c5fe1913 if firstAt != -1 && firstAt < firstColon { return image[:firstAt], "latest" + image[firstAt:], nil } // case: alpine:latest // case: alpine:latest@sha256:28ef97b8686a0b5399129e9b763d5b7e5ff03576aa5580d6f4182a49c5fe1913 return image[:firstColon], image[firstColon+1:], nil } // ImageInspect return low-level information on containers images func ImageInspect(containerNameOrID, format string) ([]string, error) { cmd := exec.Command("docker", "image", "inspect", "-f", format, containerNameOrID, // ... against the container ) return exec.OutputLines(cmd) } // ImageID return the Id of the container image func ImageID(containerNameOrID string) (string, error) { lines, err := ImageInspect(containerNameOrID, "{{ .Id }}") if err != nil { return "", err } if len(lines) != 1 { return "", errors.Errorf("Docker image ID should only be one line, got %d lines", len(lines)) } return lines[0], nil } kubernetes-sigs-kind-49aeee6/pkg/build/nodeimage/internal/container/docker/image_test.go000066400000000000000000000100541524365506300316110ustar00rootroot00000000000000/* Copyright 2019 The Kubernetes Authors. 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 docker import "testing" func TestSplitImage(t *testing.T) { t.Parallel() /* alpine -> (alpine, latest) alpine:latest -> (alpine, latest) alpine@sha256:28ef97b8686a0b5399129e9b763d5b7e5ff03576aa5580d6f4182a49c5fe1913 -> (alpine, latest@sha256:28ef97b8686a0b5399129e9b763d5b7e5ff03576aa5580d6f4182a49c5fe1913) alpine:latest@sha256:28ef97b8686a0b5399129e9b763d5b7e5ff03576aa5580d6f4182a49c5fe1913 -> (alpine, latest@sha256:28ef97b8686a0b5399129e9b763d5b7e5ff03576aa5580d6f4182a49c5fe1913) */ cases := []struct { Image string ExpectedRegistry string ExpectedTag string ExpectError bool }{ { Image: "alpine", ExpectedRegistry: "alpine", ExpectedTag: "latest", ExpectError: false, }, { Image: "alpine:latest", ExpectedRegistry: "alpine", ExpectedTag: "latest", ExpectError: false, }, { Image: "alpine@sha256:28ef97b8686a0b5399129e9b763d5b7e5ff03576aa5580d6f4182a49c5fe1913", ExpectedRegistry: "alpine", ExpectedTag: "latest@sha256:28ef97b8686a0b5399129e9b763d5b7e5ff03576aa5580d6f4182a49c5fe1913", ExpectError: false, }, { Image: "alpine:latest@sha256:28ef97b8686a0b5399129e9b763d5b7e5ff03576aa5580d6f4182a49c5fe1913", ExpectedRegistry: "alpine", ExpectedTag: "latest@sha256:28ef97b8686a0b5399129e9b763d5b7e5ff03576aa5580d6f4182a49c5fe1913", ExpectError: false, }, { Image: "registry.k8s.io/coredns:1.1.3", ExpectedRegistry: "registry.k8s.io/coredns", ExpectedTag: "1.1.3", ExpectError: false, }, { Image: "registry.k8s.io/coredns:1.1.3@sha256:28ef97b8686a0b5399129e9b763d5b7e5ff03576aa5580d6f4182a49c5fe1913", ExpectedRegistry: "registry.k8s.io/coredns", ExpectedTag: "1.1.3@sha256:28ef97b8686a0b5399129e9b763d5b7e5ff03576aa5580d6f4182a49c5fe1913", ExpectError: false, }, { Image: "registry.k8s.io/coredns:latest@sha256:28ef97b8686a0b5399129e9b763d5b7e5ff03576aa5580d6f4182a49c5fe1913", ExpectedRegistry: "registry.k8s.io/coredns", ExpectedTag: "latest@sha256:28ef97b8686a0b5399129e9b763d5b7e5ff03576aa5580d6f4182a49c5fe1913", ExpectError: false, }, { Image: "registry.k8s.io/coredns@sha256:28ef97b8686a0b5399129e9b763d5b7e5ff03576aa5580d6f4182a49c5fe1913", ExpectedRegistry: "registry.k8s.io/coredns", ExpectedTag: "latest@sha256:28ef97b8686a0b5399129e9b763d5b7e5ff03576aa5580d6f4182a49c5fe1913", ExpectError: false, }, { Image: ":", ExpectedRegistry: "", ExpectedTag: "", ExpectError: true, }, { Image: "@", ExpectedRegistry: "", ExpectedTag: "", ExpectError: true, }, { Image: "a@", ExpectedRegistry: "", ExpectedTag: "", ExpectError: true, }, { Image: "a:", ExpectedRegistry: "", ExpectedTag: "", ExpectError: true, }, } for _, tc := range cases { tc := tc // capture tc t.Run(tc.Image, func(t *testing.T) { t.Parallel() registry, tag, err := SplitImage(tc.Image) if err != nil && !tc.ExpectError { t.Fatalf("Unexpected error: %q", err) } else if err == nil && tc.ExpectError { t.Fatalf("Expected error but got nil") } if registry != tc.ExpectedRegistry { t.Fatalf("ExpectedRegistry %q != %q", tc.ExpectedRegistry, registry) } if tag != tc.ExpectedTag { t.Fatalf("ExpectedTag %q != %q", tc.ExpectedTag, tag) } }) } } kubernetes-sigs-kind-49aeee6/pkg/build/nodeimage/internal/container/docker/pull.go000066400000000000000000000025161524365506300304500ustar00rootroot00000000000000/* Copyright 2018 The Kubernetes Authors. 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 docker import ( "time" "sigs.k8s.io/kind/pkg/exec" "sigs.k8s.io/kind/pkg/log" ) // Pull pulls an image, retrying up to retries times func Pull(logger log.Logger, image string, platform string, retries int) error { logger.V(1).Infof("Pulling image: %s for platform %s ...", image, platform) err := exec.Command("docker", "pull", "--platform="+platform, image).Run() // retry pulling up to retries times if necessary if err != nil { for i := 0; i < retries; i++ { time.Sleep(time.Second * time.Duration(i+1)) logger.V(1).Infof("Trying again to pull image: %q ... %v", image, err) // TODO(bentheelder): add some backoff / sleep? err = exec.Command("docker", "pull", "--platform="+platform, image).Run() if err == nil { break } } } return err } kubernetes-sigs-kind-49aeee6/pkg/build/nodeimage/internal/container/docker/run.go000066400000000000000000000017461524365506300303040ustar00rootroot00000000000000/* Copyright 2018 The Kubernetes Authors. 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 docker import ( "sigs.k8s.io/kind/pkg/exec" ) // Run creates a container with "docker run", with some error handling func Run(image string, runArgs []string, containerArgs []string) error { // construct the actual docker run argv args := []string{"run"} args = append(args, runArgs...) args = append(args, image) args = append(args, containerArgs...) cmd := exec.Command("docker", args...) return cmd.Run() } kubernetes-sigs-kind-49aeee6/pkg/build/nodeimage/internal/container/docker/save.go000066400000000000000000000014151524365506300304270ustar00rootroot00000000000000/* Copyright 2018 The Kubernetes Authors. 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 docker import ( "sigs.k8s.io/kind/pkg/exec" ) // Save saves image to dest, as in `docker save` func Save(image, dest string) error { return exec.Command("docker", "save", "-o", dest, image).Run() } kubernetes-sigs-kind-49aeee6/pkg/build/nodeimage/internal/kube/000077500000000000000000000000001524365506300246365ustar00rootroot00000000000000kubernetes-sigs-kind-49aeee6/pkg/build/nodeimage/internal/kube/bits.go000066400000000000000000000026101524365506300261250ustar00rootroot00000000000000/* Copyright 2018 The Kubernetes Authors. 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 kube // Bits provides the locations of Kubernetes Binaries / Images // needed on the cluster nodes // Implementations should be registered with RegisterNamedBits type Bits interface { // BinaryPaths returns a list of paths to binaries on the host machine that // should be added to PATH in the Node image BinaryPaths() []string // ImagePaths returns a list of paths to image archives to be loaded into // the Node ImagePaths() []string // Version Version() string } // shared real bits implementation for now type bits struct { // computed at build time binaryPaths []string imagePaths []string version string } var _ Bits = &bits{} func (b *bits) BinaryPaths() []string { return b.binaryPaths } func (b *bits) ImagePaths() []string { return b.imagePaths } func (b *bits) Version() string { return b.version } kubernetes-sigs-kind-49aeee6/pkg/build/nodeimage/internal/kube/builder.go000066400000000000000000000016421524365506300266160ustar00rootroot00000000000000/* Copyright 2018 The Kubernetes Authors. 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 kube // Builder represents and implementation of building Kubernetes // building may constitute downloading a release type Builder interface { // Build returns a Bits and any errors encountered while building Kubernetes. // Some implementations (upstream binaries) may use this step to obtain // an existing build instead Build() (Bits, error) } kubernetes-sigs-kind-49aeee6/pkg/build/nodeimage/internal/kube/builder_docker.go000066400000000000000000000076551524365506300301570ustar00rootroot00000000000000/* Copyright 2018 The Kubernetes Authors. 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 kube import ( "os" "path/filepath" "strings" "sigs.k8s.io/kind/pkg/errors" "sigs.k8s.io/kind/pkg/exec" "sigs.k8s.io/kind/pkg/log" "sigs.k8s.io/kind/pkg/internal/version" ) // TODO(bentheelder): plumb through arch // dockerBuilder implements Bits for a local docker-ized make / bash build type dockerBuilder struct { kubeRoot string arch string logger log.Logger } var _ Builder = &dockerBuilder{} // NewDockerBuilder returns a new Bits backed by the docker-ized build, // given kubeRoot, the path to the kubernetes source directory func NewDockerBuilder(logger log.Logger, kubeRoot, arch string) (Builder, error) { return &dockerBuilder{ kubeRoot: kubeRoot, arch: arch, logger: logger, }, nil } // Build implements Bits.Build func (b *dockerBuilder) Build() (Bits, error) { // capture version info sourceVersionRaw, err := sourceVersion(b.kubeRoot) if err != nil { return nil, err } kubeVersion, err := version.ParseSemantic(sourceVersionRaw) if err != nil { return nil, errors.Wrap(err, "failed to parse source version") } makeVars := []string{ // ensure the build isn't especially noisy.. "KUBE_VERBOSE=0", // we don't want to build these images as we don't use them ... "KUBE_BUILD_HYPERKUBE=n", "KUBE_BUILD_CONFORMANCE=n", // build for the host platform "KUBE_BUILD_PLATFORMS=" + dockerBuildOsAndArch(b.arch), } // we will pass through the environment variables, prepending defaults // NOTE: if env are specified multiple times the last one wins // NOTE: currently there are no defaults so this is essentially a deep copy env := append([]string{}, os.Environ()...) // binaries we want to build what := []string{ // binaries we use directly "cmd/kubeadm", "cmd/kubectl", "cmd/kubelet", } // build images + binaries (binaries only on 1.21+) cmd := exec.Command("make", append( []string{ "-C", b.kubeRoot, "quick-release-images", "KUBE_EXTRA_WHAT=" + strings.Join(what, " "), }, makeVars..., )..., ).SetEnv(env...) exec.InheritOutput(cmd) if err := cmd.Run(); err != nil { return nil, errors.Wrap(err, "failed to build images") } // KUBE_EXTRA_WHAT added in this commit // https://github.com/kubernetes/kubernetes/commit/35061acc28a666569fdd4d1c8a7693e3c01e14be if kubeVersion.LessThan(version.MustParseSemantic("v1.21.0-beta.1.153+35061acc28a666")) { // on older versions we still need to build binaries separately cmd = exec.Command( "build/run.sh", append( []string{ "make", "all", "WHAT=" + strings.Join(what, " "), }, makeVars..., )..., ).SetEnv(env...) exec.InheritOutput(cmd) if err := cmd.Run(); err != nil { return nil, errors.Wrap(err, "failed to build binaries") } } binDir := filepath.Join(b.kubeRoot, "_output", "dockerized", "bin", "linux", b.arch, ) imageDir := filepath.Join(b.kubeRoot, "_output", "release-images", b.arch, ) return &bits{ binaryPaths: []string{ filepath.Join(binDir, "kubeadm"), filepath.Join(binDir, "kubelet"), filepath.Join(binDir, "kubectl"), }, imagePaths: []string{ filepath.Join(imageDir, "kube-apiserver.tar"), filepath.Join(imageDir, "kube-controller-manager.tar"), filepath.Join(imageDir, "kube-scheduler.tar"), filepath.Join(imageDir, "kube-proxy.tar"), }, version: sourceVersionRaw, }, nil } func dockerBuildOsAndArch(arch string) string { return "linux/" + arch } kubernetes-sigs-kind-49aeee6/pkg/build/nodeimage/internal/kube/builder_remote.go000066400000000000000000000121221524365506300301640ustar00rootroot00000000000000/* Copyright 2024 The Kubernetes Authors. 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 kube import ( "context" "fmt" "io" "net" "net/http" "os" "path/filepath" "strings" "time" "sigs.k8s.io/kind/pkg/errors" "sigs.k8s.io/kind/pkg/log" ) type remoteBuilder struct { version string logger log.Logger url string } var _ Builder = &remoteBuilder{} // NewURLBuilder used to specify a complete url to a gzipped tarball func NewURLBuilder(logger log.Logger, url string) (Builder, error) { return &remoteBuilder{ version: "", logger: logger, url: url, }, nil } // NewReleaseBuilder used to specify a release semver and constructs a url to release artifacts func NewReleaseBuilder(logger log.Logger, version, arch string) (Builder, error) { url := "https://dl.k8s.io/" + version + "/kubernetes-server-linux-" + arch + ".tar.gz" return &remoteBuilder{ version: version, logger: logger, url: url, }, nil } // NewCIBuilder used to specify a CI semver and constructs a url to CI artifacts func NewCIBuilder(logger log.Logger, version, arch string) (Builder, error) { url := "https://dl.k8s.io/ci/" + version + "/kubernetes-server-linux-" + arch + ".tar.gz" return &remoteBuilder{ version: version, logger: logger, url: url, }, nil } // Build implements Bits.Build func (b *remoteBuilder) Build() (Bits, error) { tmpDir, err := os.MkdirTemp(os.TempDir(), "k8s-tar-extract-") if err != nil { return nil, fmt.Errorf("error creating temporary directory for tar extraction: %w", err) } tgzFile := filepath.Join(tmpDir, "kubernetes-"+b.version+"-server-linux-amd64.tar.gz") err = b.downloadURL(b.url, tgzFile) if err != nil { return nil, fmt.Errorf("error downloading file: %w", err) } err = extractTarball(tgzFile, tmpDir, b.logger) if err != nil { return nil, fmt.Errorf("error extracting tgz file: %w", err) } binDir := filepath.Join(tmpDir, "kubernetes/server/bin") contents, err := os.ReadFile(filepath.Join(tmpDir, "kubernetes/version")) // fallback for Kubernetes < v1.31 which doesn't have the version file // this approach only works for release tags as the format happens to match // for pre-release builds the docker tag is mangled and not valid semver if err != nil && os.IsNotExist(err) { b.logger.Warn("WARNING: Using fallback version detection due to missing version file (This command works best with Kubernetes v1.31+)") contents, err = os.ReadFile(filepath.Join(binDir, "kube-apiserver.docker_tag")) } if err != nil { return nil, errors.Wrap(err, "failed to get version") } sourceVersionRaw := strings.TrimSpace(string(contents)) return &bits{ binaryPaths: []string{ filepath.Join(binDir, "kubeadm"), filepath.Join(binDir, "kubelet"), filepath.Join(binDir, "kubectl"), }, imagePaths: []string{ filepath.Join(binDir, "kube-apiserver.tar"), filepath.Join(binDir, "kube-controller-manager.tar"), filepath.Join(binDir, "kube-scheduler.tar"), filepath.Join(binDir, "kube-proxy.tar"), }, version: sourceVersionRaw, }, nil } func (b *remoteBuilder) downloadURL(url string, destPath string) error { output, err := os.Create(destPath) if err != nil { return fmt.Errorf("error creating file for download %q: %v", destPath, err) } defer output.Close() b.logger.V(0).Infof("Downloading %q", url) // Create a client with custom timeouts // to avoid idle downloads to hang the program httpClient := &http.Client{ Transport: &http.Transport{ Proxy: http.ProxyFromEnvironment, DialContext: (&net.Dialer{ Timeout: 30 * time.Second, KeepAlive: 30 * time.Second, }).DialContext, TLSHandshakeTimeout: 10 * time.Second, ResponseHeaderTimeout: 30 * time.Second, IdleConnTimeout: 30 * time.Second, }, } // this will stop slow downloads after 10 minutes // and interrupt reading of the Response.Body ctx, cancel := context.WithTimeout(context.Background(), 10*time.Minute) defer cancel() req, err := http.NewRequestWithContext(ctx, http.MethodGet, url, nil) if err != nil { return fmt.Errorf("cannot create request: %v", err) } response, err := httpClient.Do(req) if err != nil { return fmt.Errorf("error doing HTTP fetch of %q: %v", url, err) } defer response.Body.Close() if response.StatusCode >= 400 { return fmt.Errorf("error response from %q: HTTP %v", url, response.StatusCode) } start := time.Now() defer func() { b.logger.V(2).Infof("Copying %q to %q took %q", url, destPath, time.Since(start)) }() // TODO: we should add some sort of progress indicator _, err = io.Copy(output, response.Body) if err != nil { return fmt.Errorf("error downloading HTTP content from %q: %v", url, err) } return nil } kubernetes-sigs-kind-49aeee6/pkg/build/nodeimage/internal/kube/builder_tarball.go000066400000000000000000000054541524365506300303240ustar00rootroot00000000000000/* Copyright 2024 The Kubernetes Authors. 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 kube import ( "fmt" "os" "path/filepath" "strings" "sigs.k8s.io/kind/pkg/errors" "sigs.k8s.io/kind/pkg/log" ) // TODO(bentheelder): plumb through arch // directoryBuilder implements Bits for a local docker-ized make / bash build type directoryBuilder struct { tarballPath string logger log.Logger } var _ Builder = &directoryBuilder{} // NewTarballBuilder returns a new Bits backed by the docker-ized build, // given kubeRoot, the path to the kubernetes source directory func NewTarballBuilder(logger log.Logger, tarballPath string) (Builder, error) { return &directoryBuilder{ tarballPath: tarballPath, logger: logger, }, nil } // Build implements Bits.Build func (b *directoryBuilder) Build() (Bits, error) { tmpDir, err := os.MkdirTemp(os.TempDir(), "k8s-tar-extract-") if err != nil { return nil, fmt.Errorf("error creating temporary directory for tar extraction: %w", err) } b.logger.V(0).Infof("Extracting %q", b.tarballPath) err = extractTarball(b.tarballPath, tmpDir, b.logger) if err != nil { return nil, fmt.Errorf("error extracting tar file: %w", err) } binDir := filepath.Join(tmpDir, "kubernetes/server/bin") contents, err := os.ReadFile(filepath.Join(tmpDir, "kubernetes/version")) // fallback for Kubernetes < v1.31 which doesn't have the version file // this approach only works for release tags as the format happens to match // for pre-release builds the docker tag is mangled and not valid semver if err != nil && os.IsNotExist(err) { b.logger.Warn("WARNING: Using fallback version detection due to missing version file (This command works best with Kubernetes v1.31+)") contents, err = os.ReadFile(filepath.Join(binDir, "kube-apiserver.docker_tag")) } if err != nil { return nil, errors.Wrap(err, "failed to get version") } sourceVersionRaw := strings.TrimSpace(string(contents)) return &bits{ binaryPaths: []string{ filepath.Join(binDir, "kubeadm"), filepath.Join(binDir, "kubelet"), filepath.Join(binDir, "kubectl"), }, imagePaths: []string{ filepath.Join(binDir, "kube-apiserver.tar"), filepath.Join(binDir, "kube-controller-manager.tar"), filepath.Join(binDir, "kube-scheduler.tar"), filepath.Join(binDir, "kube-proxy.tar"), }, version: sourceVersionRaw, }, nil } kubernetes-sigs-kind-49aeee6/pkg/build/nodeimage/internal/kube/doc.go000066400000000000000000000013001524365506300257240ustar00rootroot00000000000000/* Copyright 2018 The Kubernetes Authors. 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 kube implements functionality to build Kubernetes for the purposes // of installing into the kind node image package kube kubernetes-sigs-kind-49aeee6/pkg/build/nodeimage/internal/kube/source.go000066400000000000000000000062531524365506300264730ustar00rootroot00000000000000/* Copyright 2018 The Kubernetes Authors. 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 kube import ( "fmt" "go/build" "os" "path/filepath" "strings" "al.essio.dev/pkg/shellescape" "sigs.k8s.io/kind/pkg/errors" "sigs.k8s.io/kind/pkg/exec" ) // FindSource attempts to locate a kubernetes checkout using go's build package func FindSource() (root string, err error) { // check current working directory first wd, err := os.Getwd() if err != nil { return "", fmt.Errorf("failed to locate kubernetes source, could not current working directory: %w", err) } if probablyKubeDir(wd) { return wd, nil } // then look under GOPATH gopath := build.Default.GOPATH if gopath == "" { return "", errors.New("could not find Kubernetes source under current working directory and GOPATH is not set") } // try k8s.io/kubernetes first (old canonical GOPATH locaation) if dir := filepath.Join(gopath, "src", "k8s.io", "kubernetes"); probablyKubeDir(dir) { return dir, nil } // then try github.com/kubernetes/kubernetes (CI without path_alias set) if dir := filepath.Join(gopath, "src", "github.com", "kubernetes", "kubernetes"); probablyKubeDir(dir) { return dir, nil } return "", fmt.Errorf("could not find Kubernetes source under current working directory or GOPATH=%s", build.Default.GOPATH) } // probablyKubeDir returns true if the dir looks plausibly like a kubernetes // source directory func probablyKubeDir(dir string) bool { // TODO: should we do more checks? // NOTE: go.mod with this line has existed since Kubernetes 1.15 const sentinelLine = "module k8s.io/kubernetes" contents, err := os.ReadFile(filepath.Join(dir, "go.mod")) if err != nil { return false } return strings.Contains(string(contents), sentinelLine) } // sourceVersion the kubernetes git version based on hack/print-workspace-status.sh // the raw version is also returned func sourceVersion(kubeRoot string) (string, error) { // get the version output cmd := exec.Command( "sh", "-c", fmt.Sprintf( "cd %s && hack/print-workspace-status.sh", shellescape.Quote(kubeRoot), ), ) output, err := exec.OutputLines(cmd) if err != nil { return "", err } // parse it, and populate it into _output/git_version version := "" for _, line := range output { parts := strings.SplitN(line, " ", 2) if len(parts) != 2 { return "", errors.Errorf("could not parse kubernetes version: %q", strings.Join(output, "\n")) } if parts[0] == "gitVersion" { version = parts[1] return version, nil } } if version == "" { return "", errors.Errorf("could not obtain kubernetes version: %q", strings.Join(output, "\n")) } return "", errors.Errorf("could not find kubernetes version in output: %q", strings.Join(output, "\n")) } kubernetes-sigs-kind-49aeee6/pkg/build/nodeimage/internal/kube/tar.go000066400000000000000000000036511524365506300257600ustar00rootroot00000000000000/* Copyright The Kubernetes Authors. 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 kube import ( "archive/tar" "compress/gzip" "fmt" "io" "os" "path/filepath" "sigs.k8s.io/kind/pkg/log" ) // extractTarball takes a gzipped-tarball and extracts the contents into a specified directory func extractTarball(tarPath, destDirectory string, logger log.Logger) (err error) { // Open the tar file f, err := os.Open(tarPath) if err != nil { return fmt.Errorf("opening tarball: %w", err) } defer f.Close() gzipReader, err := gzip.NewReader(f) if err != nil { return err } tr := tar.NewReader(gzipReader) numFiles := 0 for { hdr, err := tr.Next() if err == io.EOF { break } if err != nil { return fmt.Errorf("reading tarfile %s: %w", tarPath, err) } if hdr.FileInfo().IsDir() { continue } if err := os.MkdirAll( filepath.Join(destDirectory, filepath.Dir(hdr.Name)), os.FileMode(0o755), ); err != nil { return fmt.Errorf("creating image directory structure: %w", err) } f, err := os.Create(filepath.Join(destDirectory, hdr.Name)) if err != nil { return fmt.Errorf("creating image layer file: %w", err) } if _, err := io.CopyN(f, tr, hdr.Size); err != nil { f.Close() if err == io.EOF { break } return fmt.Errorf("extracting image data: %w", err) } f.Close() numFiles++ } logger.V(2).Infof("Successfully extracted %d files from image tarball %s", numFiles, tarPath) return err } kubernetes-sigs-kind-49aeee6/pkg/build/nodeimage/options.go000066400000000000000000000040351524365506300241200ustar00rootroot00000000000000/* Copyright 2020 The Kubernetes Authors. 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 nodeimage import ( "sigs.k8s.io/kind/pkg/log" ) // Option is a configuration option supplied to Build type Option interface { apply(*buildContext) error } type optionAdapter func(*buildContext) error func (c optionAdapter) apply(o *buildContext) error { return c(o) } // WithImage configures a build to tag the built image with `image` func WithImage(image string) Option { return optionAdapter(func(b *buildContext) error { b.image = image return nil }) } // WithBaseImage configures a build to use `image` as the base image func WithBaseImage(image string) Option { return optionAdapter(func(b *buildContext) error { b.baseImage = image return nil }) } // WithKubeParam sets the path to the Kubernetes source directory (if empty, the path will be autodetected) func WithKubeParam(root string) Option { return optionAdapter(func(b *buildContext) error { b.kubeParam = root return nil }) } // WithLogger sets the logger func WithLogger(logger log.Logger) Option { return optionAdapter(func(b *buildContext) error { b.logger = logger return nil }) } // WithArch sets the architecture to build for func WithArch(arch string) Option { return optionAdapter(func(b *buildContext) error { if arch != "" { b.arch = arch } return nil }) } // WithBuildType sets the build type to perform func WithBuildType(buildType string) Option { return optionAdapter(func(b *buildContext) error { if buildType != "" { b.buildType = buildType } return nil }) } kubernetes-sigs-kind-49aeee6/pkg/cluster/000077500000000000000000000000001524365506300205265ustar00rootroot00000000000000kubernetes-sigs-kind-49aeee6/pkg/cluster/constants/000077500000000000000000000000001524365506300225425ustar00rootroot00000000000000kubernetes-sigs-kind-49aeee6/pkg/cluster/constants/constants.go000066400000000000000000000032731524365506300251120ustar00rootroot00000000000000/* Copyright 2018 The Kubernetes Authors. 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 contains well known constants for kind clusters package constants // DefaultClusterName is the default cluster Context name const DefaultClusterName = "kind" /* node role value constants */ const ( // ControlPlaneNodeRoleValue identifies a node that hosts a Kubernetes // control-plane. // // NOTE: in single node clusters, control-plane nodes act as worker nodes ControlPlaneNodeRoleValue string = "control-plane" // WorkerNodeRoleValue identifies a node that hosts a Kubernetes worker WorkerNodeRoleValue string = "worker" // ExternalLoadBalancerNodeRoleValue identifies a node that hosts an // external load balancer for the API server in HA configurations. // // Please note that `kind` nodes hosting external load balancer are not // kubernetes nodes ExternalLoadBalancerNodeRoleValue string = "external-load-balancer" // ExternalEtcdNodeRoleValue identifies a node that hosts an external-etcd // instance. // // WARNING: this node type is not yet implemented! // // Please note that `kind` nodes hosting external etcd are not // kubernetes nodes ExternalEtcdNodeRoleValue string = "external-etcd" ) kubernetes-sigs-kind-49aeee6/pkg/cluster/createoption.go000066400000000000000000000102441524365506300235520ustar00rootroot00000000000000/* Copyright 2019 The Kubernetes Authors. 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 cluster import ( "time" "sigs.k8s.io/kind/pkg/apis/config/v1alpha4" internalcreate "sigs.k8s.io/kind/pkg/cluster/internal/create" internalencoding "sigs.k8s.io/kind/pkg/internal/apis/config/encoding" ) // CreateOption is a Provider.Create option type CreateOption interface { apply(*internalcreate.ClusterOptions) error } type createOptionAdapter func(*internalcreate.ClusterOptions) error func (c createOptionAdapter) apply(o *internalcreate.ClusterOptions) error { return c(o) } // CreateWithConfigFile configures the config file path to use func CreateWithConfigFile(path string) CreateOption { return createOptionAdapter(func(o *internalcreate.ClusterOptions) error { var err error o.Config, err = internalencoding.Load(path) return err }) } // CreateWithRawConfig configures the config to use from raw (yaml) bytes func CreateWithRawConfig(raw []byte) CreateOption { return createOptionAdapter(func(o *internalcreate.ClusterOptions) error { var err error o.Config, err = internalencoding.Parse(raw) return err }) } // CreateWithV1Alpha4Config configures the cluster with a v1alpha4 config func CreateWithV1Alpha4Config(config *v1alpha4.Cluster) CreateOption { return createOptionAdapter(func(o *internalcreate.ClusterOptions) error { o.Config = internalencoding.V1Alpha4ToInternal(config) return nil }) } // CreateWithNodeImage overrides the image on all nodes in config // as an easy way to change the Kubernetes version func CreateWithNodeImage(nodeImage string) CreateOption { return createOptionAdapter(func(o *internalcreate.ClusterOptions) error { o.NodeImage = nodeImage return nil }) } // CreateWithRetain disables deletion of nodes and any other cleanup // that would normally occur after a failure to create // This is mainly used for debugging purposes func CreateWithRetain(retain bool) CreateOption { return createOptionAdapter(func(o *internalcreate.ClusterOptions) error { o.Retain = retain return nil }) } // CreateWithWaitForReady configures a maximum wait time for the control plane // node(s) to be ready. By default no waiting is performed func CreateWithWaitForReady(waitTime time.Duration) CreateOption { return createOptionAdapter(func(o *internalcreate.ClusterOptions) error { o.WaitForReady = waitTime return nil }) } // CreateWithKubeconfigPath sets the explicit --kubeconfig path func CreateWithKubeconfigPath(explicitPath string) CreateOption { return createOptionAdapter(func(o *internalcreate.ClusterOptions) error { o.KubeconfigPath = explicitPath return nil }) } // CreateWithStopBeforeSettingUpKubernetes enables skipping setting up // kubernetes (kubeadm init etc.) after creating node containers // This generally shouldn't be used and is only lightly supported, but allows // provisioning node containers for experimentation func CreateWithStopBeforeSettingUpKubernetes(stopBeforeSettingUpKubernetes bool) CreateOption { return createOptionAdapter(func(o *internalcreate.ClusterOptions) error { o.StopBeforeSettingUpKubernetes = stopBeforeSettingUpKubernetes return nil }) } // CreateWithDisplayUsage enables displaying usage if displayUsage is true func CreateWithDisplayUsage(displayUsage bool) CreateOption { return createOptionAdapter(func(o *internalcreate.ClusterOptions) error { o.DisplayUsage = displayUsage return nil }) } // CreateWithDisplaySalutation enables display a salutation at the end of create // cluster if displaySalutation is true func CreateWithDisplaySalutation(displaySalutation bool) CreateOption { return createOptionAdapter(func(o *internalcreate.ClusterOptions) error { o.DisplaySalutation = displaySalutation return nil }) } kubernetes-sigs-kind-49aeee6/pkg/cluster/doc.go000066400000000000000000000012261524365506300216230ustar00rootroot00000000000000/* Copyright 2018 The Kubernetes Authors. 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 cluster implements kind kubernetes-in-docker cluster management package cluster kubernetes-sigs-kind-49aeee6/pkg/cluster/internal/000077500000000000000000000000001524365506300223425ustar00rootroot00000000000000kubernetes-sigs-kind-49aeee6/pkg/cluster/internal/create/000077500000000000000000000000001524365506300236055ustar00rootroot00000000000000kubernetes-sigs-kind-49aeee6/pkg/cluster/internal/create/actions/000077500000000000000000000000001524365506300252455ustar00rootroot00000000000000kubernetes-sigs-kind-49aeee6/pkg/cluster/internal/create/actions/action.go000066400000000000000000000042401524365506300270510ustar00rootroot00000000000000/* Copyright 2019 The Kubernetes Authors. 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 actions contains logic for steps to perform once an initial node // container has been created. package actions import ( "sync" "sigs.k8s.io/kind/pkg/cluster/nodes" "sigs.k8s.io/kind/pkg/internal/apis/config" "sigs.k8s.io/kind/pkg/internal/cli" "sigs.k8s.io/kind/pkg/log" "sigs.k8s.io/kind/pkg/cluster/internal/providers" ) // Action defines a step of bringing up a kind cluster after initial node // container creation type Action interface { Execute(ctx *ActionContext) error } // ActionContext is data supplied to all actions type ActionContext struct { Logger log.Logger Status *cli.Status Config *config.Cluster Provider providers.Provider cache *cachedData } // NewActionContext returns a new ActionContext func NewActionContext( logger log.Logger, status *cli.Status, provider providers.Provider, cfg *config.Cluster, ) *ActionContext { return &ActionContext{ Logger: logger, Status: status, Provider: provider, Config: cfg, cache: &cachedData{}, } } type cachedData struct { mu sync.RWMutex nodes []nodes.Node } func (cd *cachedData) getNodes() []nodes.Node { cd.mu.RLock() defer cd.mu.RUnlock() return cd.nodes } func (cd *cachedData) setNodes(n []nodes.Node) { cd.mu.Lock() defer cd.mu.Unlock() cd.nodes = n } // Nodes returns the list of cluster nodes, this is a cached call func (ac *ActionContext) Nodes() ([]nodes.Node, error) { cachedNodes := ac.cache.getNodes() if cachedNodes != nil { return cachedNodes, nil } n, err := ac.Provider.ListNodes(ac.Config.Name) if err != nil { return nil, err } ac.cache.setNodes(n) return n, nil } kubernetes-sigs-kind-49aeee6/pkg/cluster/internal/create/actions/config/000077500000000000000000000000001524365506300265125ustar00rootroot00000000000000kubernetes-sigs-kind-49aeee6/pkg/cluster/internal/create/actions/config/config.go000066400000000000000000000226201524365506300303100ustar00rootroot00000000000000/* Copyright 2019 The Kubernetes Authors. 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 implements the kubeadm config action package config import ( "bytes" "fmt" "net" "strings" "sigs.k8s.io/kind/pkg/cluster/constants" "sigs.k8s.io/kind/pkg/cluster/nodes" "sigs.k8s.io/kind/pkg/errors" "sigs.k8s.io/kind/pkg/cluster/internal/create/actions" "sigs.k8s.io/kind/pkg/cluster/internal/kubeadm" "sigs.k8s.io/kind/pkg/cluster/internal/providers/common" "sigs.k8s.io/kind/pkg/cluster/nodeutils" "sigs.k8s.io/kind/pkg/internal/apis/config" "sigs.k8s.io/kind/pkg/internal/patch" ) // Action implements action for creating the node config files type Action struct{} // NewAction returns a new action for creating the config files func NewAction() actions.Action { return &Action{} } // Execute runs the action func (a *Action) Execute(ctx *actions.ActionContext) error { ctx.Status.Start("Writing configuration 📜") defer ctx.Status.End(false) providerInfo, err := ctx.Provider.Info() if err != nil { return err } allNodes, err := ctx.Nodes() if err != nil { return err } controlPlaneEndpoint, err := ctx.Provider.GetAPIServerInternalEndpoint(ctx.Config.Name) if err != nil { return err } // create kubeadm init config fns := []func() error{} provider := fmt.Sprintf("%s", ctx.Provider) configData := kubeadm.ConfigData{ NodeProvider: provider, ClusterName: ctx.Config.Name, ControlPlaneEndpoint: controlPlaneEndpoint, APIBindPort: common.APIServerInternalPort, APIServerAddress: ctx.Config.Networking.APIServerAddress, Token: kubeadm.Token, PodSubnet: ctx.Config.Networking.PodSubnet, KubeProxyMode: string(ctx.Config.Networking.KubeProxyMode), ServiceSubnet: ctx.Config.Networking.ServiceSubnet, ControlPlane: true, IPFamily: ctx.Config.Networking.IPFamily, FeatureGates: ctx.Config.FeatureGates, RuntimeConfig: ctx.Config.RuntimeConfig, RootlessProvider: providerInfo.Rootless, } kubeadmConfigPlusPatches := func(node nodes.Node, data kubeadm.ConfigData) func() error { return func() error { data.NodeName = node.String() kubeadmConfig, err := getKubeadmConfig(ctx.Config, data, node, provider) if err != nil { // TODO(bentheelder): logging here return errors.Wrap(err, "failed to generate kubeadm config content") } ctx.Logger.V(2).Infof("Using the following kubeadm config for node %s:\n%s", node.String(), kubeadmConfig) return writeKubeadmConfig(kubeadmConfig, node) } } // create the kubeadm join configuration for the kubernetes cluster nodes only kubeNodes, err := nodeutils.InternalNodes(allNodes) if err != nil { return err } for _, node := range kubeNodes { node := node // capture loop variable configData := configData // copy config data fns = append(fns, kubeadmConfigPlusPatches(node, configData)) } // Create the kubeadm config in all nodes concurrently if err := errors.UntilErrorConcurrent(fns); err != nil { return err } // if we have containerd config, patch all the nodes concurrently if len(ctx.Config.ContainerdConfigPatches) > 0 || len(ctx.Config.ContainerdConfigPatchesJSON6902) > 0 { fns := make([]func() error, len(kubeNodes)) for i, node := range kubeNodes { node := node // capture loop variable fns[i] = func() error { // read and patch the config const containerdConfigPath = "/etc/containerd/config.toml" var buff bytes.Buffer if err := node.Command("cat", containerdConfigPath).SetStdout(&buff).Run(); err != nil { return errors.Wrap(err, "failed to read containerd config from node") } patched, err := patch.ContainerdTOML(buff.String(), ctx.Config.ContainerdConfigPatches, ctx.Config.ContainerdConfigPatchesJSON6902) if err != nil { return errors.Wrap(err, "failed to patch containerd config") } if err := nodeutils.WriteFile(node, containerdConfigPath, patched); err != nil { return errors.Wrap(err, "failed to write patched containerd config") } // restart containerd now that we've re-configured it // skip if containerd is not running if err := node.Command("bash", "-c", `! pgrep --exact containerd || systemctl restart containerd`).Run(); err != nil { return errors.Wrap(err, "failed to restart containerd after patching config") } return nil } } if err := errors.UntilErrorConcurrent(fns); err != nil { return err } } // mark success ctx.Status.End(true) return nil } // getKubeadmConfig generates the kubeadm config contents for the cluster // by running data through the template and applying patches as needed. func getKubeadmConfig(cfg *config.Cluster, data kubeadm.ConfigData, node nodes.Node, provider string) (path string, err error) { kubeVersion, err := nodeutils.KubeVersion(node) if err != nil { // TODO(bentheelder): logging here return "", errors.Wrap(err, "failed to get kubernetes version from node") } data.KubernetesVersion = kubeVersion // TODO: gross hack! // identify node in config by matching name (since these are named in order) // we should really just streamline the bootstrap code and maintain // this mapping ... something for the next major refactor var configNode *config.Node namer := common.MakeNodeNamer("") for i := range cfg.Nodes { n := &cfg.Nodes[i] nodeSuffix := namer(string(n.Role)) if strings.HasSuffix(node.String(), nodeSuffix) { configNode = n } } if configNode == nil { return "", errors.Errorf("failed to match node %q to config", node.String()) } // get the node ip address nodeAddress, nodeAddressIPv6, err := node.IP() if err != nil { return "", errors.Wrap(err, "failed to get IP for node") } data.NodeAddress = nodeAddress // configure the right protocol addresses if cfg.Networking.IPFamily == config.IPv6Family || cfg.Networking.IPFamily == config.DualStackFamily { if ip := net.ParseIP(nodeAddressIPv6); ip.To16() == nil { return "", errors.Errorf("failed to get IPv6 address for node %s; is %s configured to use IPv6 correctly?", node.String(), provider) } data.NodeAddress = nodeAddressIPv6 if cfg.Networking.IPFamily == config.DualStackFamily { // order matters since the nodeAddress will be used later to configure the apiserver advertise address // Ref: #2484 primaryServiceSubnet := strings.Split(cfg.Networking.ServiceSubnet, ",")[0] ip, _, err := net.ParseCIDR(primaryServiceSubnet) if err != nil { return "", fmt.Errorf("failed to parse primary Service Subnet %s (%s): %w", primaryServiceSubnet, cfg.Networking.ServiceSubnet, err) } if ip.To4() != nil { data.NodeAddress = fmt.Sprintf("%s,%s", nodeAddress, nodeAddressIPv6) } else { data.NodeAddress = fmt.Sprintf("%s,%s", nodeAddressIPv6, nodeAddress) } } } // configure the node labels if len(configNode.Labels) > 0 { data.NodeLabels = hashMapLabelsToCommaSeparatedLabels(configNode.Labels) } // set the node role data.ControlPlane = string(configNode.Role) == constants.ControlPlaneNodeRoleValue // generate the config contents cf, err := kubeadm.Config(data) if err != nil { return "", err } clusterPatches, clusterJSONPatches := allPatchesFromConfig(cfg) // apply cluster-level patches first patchedConfig, err := patch.KubeYAML(cf, clusterPatches, clusterJSONPatches) if err != nil { return "", err } // if needed, apply current node's patches if len(configNode.KubeadmConfigPatches) > 0 || len(configNode.KubeadmConfigPatchesJSON6902) > 0 { patchedConfig, err = patch.KubeYAML(patchedConfig, configNode.KubeadmConfigPatches, configNode.KubeadmConfigPatchesJSON6902) if err != nil { return "", err } } // fix all the patches to have name metadata matching the generated config return removeMetadata(patchedConfig), nil } // trims out the metadata.name we put in the config for kustomize matching, // kubeadm will complain about this otherwise func removeMetadata(kustomized string) string { return strings.ReplaceAll( kustomized, `metadata: name: config `, "", ) } func allPatchesFromConfig(cfg *config.Cluster) (patches []string, jsonPatches []config.PatchJSON6902) { return cfg.KubeadmConfigPatches, cfg.KubeadmConfigPatchesJSON6902 } // writeKubeadmConfig writes the kubeadm configuration in the specified node func writeKubeadmConfig(kubeadmConfig string, node nodes.Node) error { // copy the config to the node if err := nodeutils.WriteFile(node, "/kind/kubeadm.conf", kubeadmConfig); err != nil { // TODO(bentheelder): logging here return errors.Wrap(err, "failed to copy kubeadm config to node") } return nil } // hashMapLabelsToCommaSeparatedLabels converts labels in hashmap form to labels in a comma-separated string form like "key1=value1,key2=value2" func hashMapLabelsToCommaSeparatedLabels(labels map[string]string) string { output := "" for key, value := range labels { output += fmt.Sprintf("%s=%s,", key, value) } return strings.TrimSuffix(output, ",") // remove the last character (comma) in the output string } kubernetes-sigs-kind-49aeee6/pkg/cluster/internal/create/actions/installcni/000077500000000000000000000000001524365506300274055ustar00rootroot00000000000000kubernetes-sigs-kind-49aeee6/pkg/cluster/internal/create/actions/installcni/cni.go000066400000000000000000000076271524365506300305210ustar00rootroot00000000000000/* Copyright 2019 The Kubernetes Authors. 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 installcni implements the install CNI action package installcni import ( "bytes" "strings" "text/template" "sigs.k8s.io/kind/pkg/errors" "sigs.k8s.io/kind/pkg/internal/apis/config" "sigs.k8s.io/kind/pkg/cluster/internal/create/actions" "sigs.k8s.io/kind/pkg/cluster/nodeutils" "sigs.k8s.io/kind/pkg/internal/patch" ) type action struct{} // NewAction returns a new action for installing default CNI func NewAction() actions.Action { return &action{} } // Execute runs the action func (a *action) Execute(ctx *actions.ActionContext) error { ctx.Status.Start("Installing CNI 🔌") defer ctx.Status.End(false) allNodes, err := ctx.Nodes() if err != nil { return err } // get the target node for this task controlPlanes, err := nodeutils.ControlPlaneNodes(allNodes) if err != nil { return err } node := controlPlanes[0] // kind expects at least one always // read the manifest from the node var raw bytes.Buffer if err := node.Command("cat", "/kind/manifests/default-cni.yaml").SetStdout(&raw).Run(); err != nil { return errors.Wrap(err, "failed to read CNI manifest") } manifest := raw.String() // TODO: remove this check? // backwards compatibility for mounting your own manifest file to the default // location // NOTE: this is intentionally undocumented, as an internal implementation // detail. Going forward users should disable the default CNI and install // their own, or use the default. The internal templating mechanism is // not intended for external usage and is unstable. if strings.Contains(manifest, "would you kindly template this file") { t, err := template.New("cni-manifest").Parse(manifest) if err != nil { return errors.Wrap(err, "failed to parse CNI manifest template") } var out bytes.Buffer err = t.Execute(&out, &struct { PodSubnet string }{ PodSubnet: ctx.Config.Networking.PodSubnet, }) if err != nil { return errors.Wrap(err, "failed to execute CNI manifest template") } manifest = out.String() } // NOTE: this is intentionally undocumented, as an internal implementation // detail. Going forward users should disable the default CNI and install // their own, or use the default. The internal templating mechanism is // not intended for external usage and is unstable. if strings.Contains(manifest, "would you kindly patch this file") { // Add the controlplane endpoint so kindnet doesn´t have to wait for kube-proxy controlPlaneEndpoint, err := ctx.Provider.GetAPIServerInternalEndpoint(ctx.Config.Name) if err != nil { return err } patchValue := ` - op: add path: /spec/template/spec/containers/0/env/- value: name: CONTROL_PLANE_ENDPOINT value: ` + controlPlaneEndpoint controlPlanePatch6902 := config.PatchJSON6902{ Group: "apps", Version: "v1", Kind: "DaemonSet", Patch: patchValue, } patchedConfig, err := patch.KubeYAML(manifest, nil, []config.PatchJSON6902{controlPlanePatch6902}) if err != nil { return err } manifest = patchedConfig } ctx.Logger.V(5).Infof("Using the following Kindnetd config:\n%s", manifest) // install the manifest if err := node.Command( "kubectl", "create", "--kubeconfig=/etc/kubernetes/admin.conf", "-f", "-", ).SetStdin(strings.NewReader(manifest)).Run(); err != nil { return errors.Wrap(err, "failed to apply overlay network") } // mark success ctx.Status.End(true) return nil } kubernetes-sigs-kind-49aeee6/pkg/cluster/internal/create/actions/installstorage/000077500000000000000000000000001524365506300303005ustar00rootroot00000000000000kubernetes-sigs-kind-49aeee6/pkg/cluster/internal/create/actions/installstorage/storage.go000066400000000000000000000053541524365506300323020ustar00rootroot00000000000000/* Copyright 2019 The Kubernetes Authors. 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 installstorage implements the an action to install a default // storageclass package installstorage import ( "bytes" "strings" "sigs.k8s.io/kind/pkg/cluster/nodes" "sigs.k8s.io/kind/pkg/errors" "sigs.k8s.io/kind/pkg/log" "sigs.k8s.io/kind/pkg/cluster/internal/create/actions" "sigs.k8s.io/kind/pkg/cluster/nodeutils" ) type action struct{} // NewAction returns a new action for installing storage func NewAction() actions.Action { return &action{} } // Execute runs the action func (a *action) Execute(ctx *actions.ActionContext) error { ctx.Status.Start("Installing StorageClass 💾") defer ctx.Status.End(false) allNodes, err := ctx.Nodes() if err != nil { return err } // get the target node for this task controlPlanes, err := nodeutils.ControlPlaneNodes(allNodes) if err != nil { return err } node := controlPlanes[0] // kind expects at least one always // add the default storage class if err := addDefaultStorage(ctx.Logger, node); err != nil { return errors.Wrap(err, "failed to add default storage class") } // mark success ctx.Status.End(true) return nil } // legacy default storage class // we need this for e2es (StatefulSet) // newer kind images ship a storage driver manifest const defaultStorageManifest = `# host-path based default storage class apiVersion: storage.k8s.io/v1 kind: StorageClass metadata: namespace: kube-system name: standard annotations: storageclass.kubernetes.io/is-default-class: "true" provisioner: kubernetes.io/host-path` func addDefaultStorage(logger log.Logger, controlPlane nodes.Node) error { // start with fallback default, and then try to get the newer kind node // storage manifest if present manifest := defaultStorageManifest var raw bytes.Buffer if err := controlPlane.Command("cat", "/kind/manifests/default-storage.yaml").SetStdout(&raw).Run(); err != nil { logger.Warn("Could not read storage manifest, falling back on old k8s.io/host-path default ...") } else { manifest = raw.String() } // apply the manifest in := strings.NewReader(manifest) cmd := controlPlane.Command( "kubectl", "--kubeconfig=/etc/kubernetes/admin.conf", "apply", "-f", "-", ) cmd.SetStdin(in) return cmd.Run() } kubernetes-sigs-kind-49aeee6/pkg/cluster/internal/create/actions/kubeadminit/000077500000000000000000000000001524365506300275415ustar00rootroot00000000000000kubernetes-sigs-kind-49aeee6/pkg/cluster/internal/create/actions/kubeadminit/init.go000066400000000000000000000136731524365506300310450ustar00rootroot00000000000000/* Copyright 2019 The Kubernetes Authors. 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 kubeadminit implements the kubeadm init action package kubeadminit import ( "strings" "sigs.k8s.io/kind/pkg/errors" "sigs.k8s.io/kind/pkg/exec" "sigs.k8s.io/kind/pkg/cluster/nodeutils" "sigs.k8s.io/kind/pkg/cluster/internal/create/actions" "sigs.k8s.io/kind/pkg/internal/apis/config" "sigs.k8s.io/kind/pkg/internal/version" ) // kubeadmInitAction implements action for executing the kubeadm init // and a set of default post init operations like e.g. install the // CNI network plugin. type action struct { skipKubeProxy bool } // NewAction returns a new action for kubeadm init func NewAction(cfg *config.Cluster) actions.Action { return &action{skipKubeProxy: cfg.Networking.KubeProxyMode == config.NoneProxyMode} } // Execute runs the action func (a *action) Execute(ctx *actions.ActionContext) error { ctx.Status.Start("Starting control-plane 🕹ï¸�") defer ctx.Status.End(false) allNodes, err := ctx.Nodes() if err != nil { return err } // get the target node for this task // TODO: eliminate the concept of bootstrapcontrolplane node entirely // outside this method node, err := nodeutils.BootstrapControlPlaneNode(allNodes) if err != nil { return err } kubeVersionStr, err := nodeutils.KubeVersion(node) if err != nil { return errors.Wrap(err, "failed to get kubernetes version from node") } kubeVersion, err := version.ParseGeneric(kubeVersionStr) if err != nil { return errors.Wrapf(err, "failed to parse kubernetes version %q", kubeVersionStr) } args := []string{ // init because this is the control plane node "init", // specify our generated config file "--config=/kind/kubeadm.conf", "--skip-token-print", // increase verbosity for debugging "--v=6", } // Newer versions set this in the config file. if kubeVersion.LessThan(version.MustParseSemantic("v1.23.0")) { // Skip preflight to avoid pulling images. // Kind pre-pulls images and preflight may conflict with that. skipPhases := "preflight" if a.skipKubeProxy { skipPhases += ",addon/kube-proxy" } args = append(args, "--skip-phases="+skipPhases) } // run kubeadm cmd := node.Command("kubeadm", args...) lines, err := exec.CombinedOutputLines(cmd) ctx.Logger.V(3).Info(strings.Join(lines, "\n")) if err != nil { return errors.Wrap(err, "failed to init node with kubeadm") } // copy some files to the other control plane nodes otherControlPlanes, err := nodeutils.SecondaryControlPlaneNodes(allNodes) if err != nil { return err } for _, otherNode := range otherControlPlanes { for _, file := range []string{ // copy over admin config so we can use any control plane to get it later "/etc/kubernetes/admin.conf", // copy over certs "/etc/kubernetes/pki/ca.crt", "/etc/kubernetes/pki/ca.key", "/etc/kubernetes/pki/front-proxy-ca.crt", "/etc/kubernetes/pki/front-proxy-ca.key", "/etc/kubernetes/pki/sa.pub", "/etc/kubernetes/pki/sa.key", // TODO: if we gain external etcd support these will be // handled differently "/etc/kubernetes/pki/etcd/ca.crt", "/etc/kubernetes/pki/etcd/ca.key", } { if err := nodeutils.CopyNodeToNode(node, otherNode, file); err != nil { return errors.Wrap(err, "failed to copy admin kubeconfig") } } } // if we are only provisioning one node, remove the control plane taint // https://kubernetes.io/docs/setup/independent/create-cluster-kubeadm/#master-isolation if len(allNodes) == 1 { // TODO: Once kubeadm 1.23 is no longer supported remove the <1.24 handling. // TODO: Once kubeadm 1.24 is no longer supported remove the <1.25 handling. // https://github.com/kubernetes-sigs/kind/issues/1699 rawVersion, err := nodeutils.KubeVersion(node) if err != nil { return errors.Wrap(err, "failed to get Kubernetes version from node") } kubeVersion, err := version.ParseSemantic(rawVersion) if err != nil { return errors.Wrap(err, "could not parse Kubernetes version") } var taints []string if kubeVersion.LessThan(version.MustParseSemantic("v1.24.0-alpha.1.592+370031cadac624")) { // for versions older than 1.24 prerelease remove only the old taint taints = []string{"node-role.kubernetes.io/master-"} } else if kubeVersion.LessThan(version.MustParseSemantic("v1.25.0-alpha.0.557+84c8afeba39ec9")) { // for versions between 1.24 and 1.25 prerelease remove both the old and new taint taints = []string{"node-role.kubernetes.io/control-plane-", "node-role.kubernetes.io/master-"} } else { // for any newer version only remove the new taint taints = []string{"node-role.kubernetes.io/control-plane-"} } taintArgs := []string{"--kubeconfig=/etc/kubernetes/admin.conf", "taint", "nodes", "--all"} taintArgs = append(taintArgs, taints...) if err := node.Command( "kubectl", taintArgs..., ).Run(); err != nil { return errors.Wrap(err, "failed to remove control plane taint") } } // Kubeadm will add `node.kubernetes.io/exclude-from-external-load-balancers` on control plane nodes. // For single node clusters, this means we cannot have a load balancer at all (MetalLB, etc), so remove the label. if len(allNodes) == 1 { labelArgs := []string{"--kubeconfig=/etc/kubernetes/admin.conf", "label", "nodes", "--all", "node.kubernetes.io/exclude-from-external-load-balancers-"} if err := node.Command( "kubectl", labelArgs..., ).Run(); err != nil { return errors.Wrap(err, "failed to remove control plane load balancer label") } } // mark success ctx.Status.End(true) return nil } kubernetes-sigs-kind-49aeee6/pkg/cluster/internal/create/actions/kubeadmjoin/000077500000000000000000000000001524365506300275355ustar00rootroot00000000000000kubernetes-sigs-kind-49aeee6/pkg/cluster/internal/create/actions/kubeadmjoin/join.go000066400000000000000000000077661524365506300310430ustar00rootroot00000000000000/* Copyright 2019 The Kubernetes Authors. 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 kubeadmjoin implements the kubeadm join action package kubeadmjoin import ( "strings" "sigs.k8s.io/kind/pkg/cluster/constants" "sigs.k8s.io/kind/pkg/cluster/nodes" "sigs.k8s.io/kind/pkg/errors" "sigs.k8s.io/kind/pkg/exec" "sigs.k8s.io/kind/pkg/internal/version" "sigs.k8s.io/kind/pkg/log" "sigs.k8s.io/kind/pkg/cluster/nodeutils" "sigs.k8s.io/kind/pkg/cluster/internal/create/actions" ) // Action implements action for creating the kubeadm join // and deploying it on the bootstrap control-plane node. type Action struct{} // NewAction returns a new action for creating the kubeadm jion func NewAction() actions.Action { return &Action{} } // Execute runs the action func (a *Action) Execute(ctx *actions.ActionContext) error { allNodes, err := ctx.Nodes() if err != nil { return err } // join secondary control plane nodes if any secondaryControlPlanes, err := nodeutils.SecondaryControlPlaneNodes(allNodes) if err != nil { return err } if len(secondaryControlPlanes) > 0 { if err := joinSecondaryControlPlanes(ctx, secondaryControlPlanes); err != nil { return err } } // then join worker nodes if any workers, err := nodeutils.SelectNodesByRole(allNodes, constants.WorkerNodeRoleValue) if err != nil { return err } if len(workers) > 0 { if err := joinWorkers(ctx, workers); err != nil { return err } } return nil } func joinSecondaryControlPlanes( ctx *actions.ActionContext, secondaryControlPlanes []nodes.Node, ) error { ctx.Status.Start("Joining more control-plane nodes 🎮") defer ctx.Status.End(false) // TODO(bentheelder): it's too bad we can't do this concurrently // (this is not safe currently) for _, node := range secondaryControlPlanes { node := node // capture loop variable if err := runKubeadmJoin(ctx.Logger, node); err != nil { return err } } ctx.Status.End(true) return nil } func joinWorkers( ctx *actions.ActionContext, workers []nodes.Node, ) error { ctx.Status.Start("Joining worker nodes 🚜") defer ctx.Status.End(false) // create the workers concurrently fns := []func() error{} for _, node := range workers { node := node // capture loop variable fns = append(fns, func() error { return runKubeadmJoin(ctx.Logger, node) }) } if err := errors.UntilErrorConcurrent(fns); err != nil { return err } ctx.Status.End(true) return nil } // runKubeadmJoin executes kubeadm join command func runKubeadmJoin(logger log.Logger, node nodes.Node) error { kubeVersionStr, err := nodeutils.KubeVersion(node) if err != nil { return errors.Wrap(err, "failed to get kubernetes version from node") } kubeVersion, err := version.ParseGeneric(kubeVersionStr) if err != nil { return errors.Wrapf(err, "failed to parse kubernetes version %q", kubeVersionStr) } args := []string{ "join", // the join command uses the config file generated in a well known location "--config", "/kind/kubeadm.conf", // increase verbosity for debugging "--v=6", } // Newer versions set this in the config file. if kubeVersion.LessThan(version.MustParseSemantic("v1.23.0")) { // Skip preflight to avoid pulling images. // Kind pre-pulls images and preflight may conflict with that. args = append(args, "--skip-phases=preflight") } // run kubeadm join cmd := node.Command("kubeadm", args...) lines, err := exec.CombinedOutputLines(cmd) logger.V(3).Info(strings.Join(lines, "\n")) if err != nil { return errors.Wrap(err, "failed to join node with kubeadm") } return nil } kubernetes-sigs-kind-49aeee6/pkg/cluster/internal/create/actions/loadbalancer/000077500000000000000000000000001524365506300276545ustar00rootroot00000000000000kubernetes-sigs-kind-49aeee6/pkg/cluster/internal/create/actions/loadbalancer/loadbalancer.go000066400000000000000000000070361524365506300326200ustar00rootroot00000000000000/* Copyright 2019 The Kubernetes Authors. 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 loadbalancer implements the load balancer configuration action package loadbalancer import ( "fmt" "sigs.k8s.io/kind/pkg/cluster/constants" "sigs.k8s.io/kind/pkg/errors" "sigs.k8s.io/kind/pkg/internal/apis/config" "sigs.k8s.io/kind/pkg/cluster/internal/create/actions" "sigs.k8s.io/kind/pkg/cluster/internal/loadbalancer" "sigs.k8s.io/kind/pkg/cluster/internal/providers/common" "sigs.k8s.io/kind/pkg/cluster/nodeutils" ) // Action implements and action for configuring and starting the // external load balancer in front of the control-plane nodes. type Action struct{} // NewAction returns a new Action for configuring the load balancer func NewAction() actions.Action { return &Action{} } // Execute runs the action func (a *Action) Execute(ctx *actions.ActionContext) error { allNodes, err := ctx.Nodes() if err != nil { return err } // identify external load balancer node loadBalancerNode, err := nodeutils.ExternalLoadBalancerNode(allNodes) if err != nil { return err } // if there's no loadbalancer we're done if loadBalancerNode == nil { return nil } // otherwise notify the user ctx.Status.Start("Configuring the external load balancer âš–ï¸�") defer ctx.Status.End(false) // collect info about the existing controlplane nodes var backendServers = map[string]string{} controlPlaneNodes, err := nodeutils.SelectNodesByRole( allNodes, constants.ControlPlaneNodeRoleValue, ) if err != nil { return err } for _, n := range controlPlaneNodes { backendServers[n.String()] = fmt.Sprintf("%s:%d", n.String(), common.APIServerInternalPort) } loadbalancerConfigdata := &loadbalancer.ConfigData{ ControlPlanePort: common.APIServerInternalPort, BackendServers: backendServers, IPv6: ctx.Config.Networking.IPFamily == config.IPv6Family, } // Generate the Dynamic Config strings ldsConfig, err := loadbalancer.Config(loadbalancerConfigdata, loadbalancer.ProxyLDSConfigTemplate) if err != nil { return errors.Wrap(err, "failed to generate loadbalancer config data") } cdsConfig, err := loadbalancer.Config(loadbalancerConfigdata, loadbalancer.ProxyCDSConfigTemplate) if err != nil { return errors.Wrap(err, "failed to generate loadbalancer config data") } // Atomic Update inside the container tmpLDS := loadbalancer.ProxyConfigPathLDS + ".tmp" tmpCDS := loadbalancer.ProxyConfigPathCDS + ".tmp" if err := nodeutils.WriteFile(loadBalancerNode, tmpLDS, ldsConfig); err != nil { return errors.Wrap(err, "failed to copy loadbalancer config to node") } if err := nodeutils.WriteFile(loadBalancerNode, tmpCDS, cdsConfig); err != nil { return errors.Wrap(err, "failed to copy loadbalancer config to node") } cmd := fmt.Sprintf("chmod 666 %s %s && mv %s %s && mv %s %s", tmpCDS, tmpLDS, tmpCDS, loadbalancer.ProxyConfigPathCDS, tmpLDS, loadbalancer.ProxyConfigPathLDS) if err := loadBalancerNode.Command("sh", "-c", cmd).Run(); err != nil { return errors.Wrap(err, "failed to reload envoy config") } ctx.Status.End(true) return nil } kubernetes-sigs-kind-49aeee6/pkg/cluster/internal/create/actions/waitforready/000077500000000000000000000000001524365506300277455ustar00rootroot00000000000000kubernetes-sigs-kind-49aeee6/pkg/cluster/internal/create/actions/waitforready/waitforready.go000066400000000000000000000103051524365506300327730ustar00rootroot00000000000000/* Copyright 2019 The Kubernetes Authors. 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 waitforready implements the wait for ready action package waitforready import ( "fmt" "strings" "time" "sigs.k8s.io/kind/pkg/cluster/internal/create/actions" "sigs.k8s.io/kind/pkg/cluster/nodes" "sigs.k8s.io/kind/pkg/cluster/nodeutils" "sigs.k8s.io/kind/pkg/errors" "sigs.k8s.io/kind/pkg/exec" "sigs.k8s.io/kind/pkg/internal/version" ) // Action implements an action for waiting for the cluster to be ready type Action struct { waitTime time.Duration } // NewAction returns a new action for waiting for the cluster to be ready func NewAction(waitTime time.Duration) actions.Action { return &Action{ waitTime: waitTime, } } // Execute runs the action func (a *Action) Execute(ctx *actions.ActionContext) error { // skip entirely if the wait time is 0 if a.waitTime == time.Duration(0) { return nil } ctx.Status.Start( fmt.Sprintf( "Waiting ≤ %s for control-plane = Ready â�³", formatDuration(a.waitTime), ), ) allNodes, err := ctx.Nodes() if err != nil { return err } // get a control plane node to use to check cluster status controlPlanes, err := nodeutils.ControlPlaneNodes(allNodes) if err != nil { return err } node := controlPlanes[0] // kind expects at least one always // Wait for the nodes to reach Ready status. startTime := time.Now() // TODO: Remove the below handling once kubeadm 1.23 is no longer supported. // https://github.com/kubernetes-sigs/kind/issues/1699 rawVersion, err := nodeutils.KubeVersion(node) if err != nil { return errors.Wrap(err, "failed to get Kubernetes version from node") } kubeVersion, err := version.ParseSemantic(rawVersion) if err != nil { return errors.Wrap(err, "could not parse Kubernetes version") } selectorLabel := "node-role.kubernetes.io/control-plane" if kubeVersion.LessThan(version.MustParseSemantic("v1.24.0-alpha.1.591+a3d5e5598290df")) { selectorLabel = "node-role.kubernetes.io/master" } isReady := waitForReady(node, startTime.Add(a.waitTime), selectorLabel) if !isReady { ctx.Status.End(false) ctx.Logger.V(0).Info(" • WARNING: Timed out waiting for Ready âš ï¸�") return nil } // mark success ctx.Status.End(true) ctx.Logger.V(0).Infof(" • Ready after %s 💚", formatDuration(time.Since(startTime))) return nil } // WaitForReady uses kubectl inside the "node" container to check if the // control plane nodes are "Ready". func waitForReady(node nodes.Node, until time.Time, selectorLabel string) bool { return tryUntil(until, func() bool { cmd := node.Command( "kubectl", "--kubeconfig=/etc/kubernetes/admin.conf", "get", "nodes", "--selector="+selectorLabel, // When the node reaches status ready, the status field will be set // to true. "-o=jsonpath='{.items..status.conditions[-1:].status}'", ) lines, err := exec.OutputLines(cmd) if err != nil { return false } // 'lines' will return the status of all nodes labeled as master. For // example, if we have three control plane nodes, and all are ready, // then the status will have the following format: `True True True'. status := strings.Fields(lines[0]) for _, s := range status { // Check node status. If node is ready then this will be 'True', // 'False' or 'Unknown' otherwise. if !strings.Contains(s, "True") { return false } } return true }) } // helper that calls `try()“ in a loop until the deadline `until` // has passed or `try()`returns true, returns whether try ever returned true func tryUntil(until time.Time, try func() bool) bool { for until.After(time.Now()) { if try() { return true } } return false } func formatDuration(duration time.Duration) string { return duration.Round(time.Second).String() } kubernetes-sigs-kind-49aeee6/pkg/cluster/internal/create/create.go000066400000000000000000000206441524365506300254050ustar00rootroot00000000000000/* Copyright 2019 The Kubernetes Authors. 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 contains functionality for cluster creation. package create import ( "fmt" "math/rand" "time" "al.essio.dev/pkg/shellescape" "sigs.k8s.io/kind/pkg/cluster/internal/delete" "sigs.k8s.io/kind/pkg/cluster/internal/providers" "sigs.k8s.io/kind/pkg/errors" "sigs.k8s.io/kind/pkg/internal/apis/config" "sigs.k8s.io/kind/pkg/internal/apis/config/encoding" "sigs.k8s.io/kind/pkg/internal/cli" "sigs.k8s.io/kind/pkg/log" "sigs.k8s.io/kind/pkg/cluster/internal/create/actions" configaction "sigs.k8s.io/kind/pkg/cluster/internal/create/actions/config" "sigs.k8s.io/kind/pkg/cluster/internal/create/actions/installcni" "sigs.k8s.io/kind/pkg/cluster/internal/create/actions/installstorage" "sigs.k8s.io/kind/pkg/cluster/internal/create/actions/kubeadminit" "sigs.k8s.io/kind/pkg/cluster/internal/create/actions/kubeadmjoin" "sigs.k8s.io/kind/pkg/cluster/internal/create/actions/loadbalancer" "sigs.k8s.io/kind/pkg/cluster/internal/create/actions/waitforready" "sigs.k8s.io/kind/pkg/cluster/internal/kubeconfig" ) const ( // Typical host name max limit is 64 characters (https://linux.die.net/man/2/sethostname) // We append -control-plane (14 characters) to the cluster name on the control plane container clusterNameMax = 50 ) // ClusterOptions holds cluster creation options type ClusterOptions struct { Config *config.Cluster NameOverride string // overrides config.Name // NodeImage overrides the nodes' images in Config if non-zero NodeImage string Retain bool WaitForReady time.Duration KubeconfigPath string // see https://github.com/kubernetes-sigs/kind/issues/324 StopBeforeSettingUpKubernetes bool // if false kind should setup kubernetes after creating nodes // Options to control output DisplayUsage bool DisplaySalutation bool } // Cluster creates a cluster func Cluster(logger log.Logger, p providers.Provider, opts *ClusterOptions) error { // validate provider first if err := validateProvider(logger, p); err != nil { return err } // default / process options (namely config) if err := fixupOptions(opts); err != nil { return err } // Check if the cluster name already exists if err := alreadyExists(p, opts.Config.Name); err != nil { return err } // warn if cluster name might typically be too long if len(opts.Config.Name) > clusterNameMax { logger.Warnf("cluster name %q is probably too long, this might not work properly on some systems", opts.Config.Name) } // then validate if err := opts.Config.Validate(); err != nil { return err } // setup a status object to show progress to the user status := cli.StatusForLogger(logger) // we're going to start creating now, tell the user logger.V(0).Infof("Creating cluster %q ...\n", opts.Config.Name) // Create node containers implementing defined config Nodes if err := p.Provision(status, opts.Config); err != nil { // In case of errors nodes are deleted (except if retain is explicitly set) if !opts.Retain { _ = delete.Cluster(logger, p, opts.Config.Name, opts.KubeconfigPath) } return err } // TODO(bentheelder): make this controllable from the command line? actionsToRun := []actions.Action{ loadbalancer.NewAction(), // setup external loadbalancer configaction.NewAction(), // setup kubeadm config } if !opts.StopBeforeSettingUpKubernetes { actionsToRun = append(actionsToRun, kubeadminit.NewAction(opts.Config), // run kubeadm init ) // this step might be skipped, but is next after init if !opts.Config.Networking.DisableDefaultCNI { actionsToRun = append(actionsToRun, installcni.NewAction(), // install CNI ) } // add remaining steps actionsToRun = append(actionsToRun, installstorage.NewAction(), // install StorageClass kubeadmjoin.NewAction(), // run kubeadm join waitforready.NewAction(opts.WaitForReady), // wait for cluster readiness ) } // run all actions actionsContext := actions.NewActionContext(logger, status, p, opts.Config) for _, action := range actionsToRun { if err := action.Execute(actionsContext); err != nil { if !opts.Retain { _ = delete.Cluster(logger, p, opts.Config.Name, opts.KubeconfigPath) } return err } } // skip the rest if we're not setting up kubernetes if opts.StopBeforeSettingUpKubernetes { return nil } // try exporting kubeconfig with backoff for locking failures // TODO: factor out into a public errors API w/ backoff handling? // for now this is easier than coming up with a good API var err error for _, b := range []time.Duration{0, time.Millisecond, time.Millisecond * 50, time.Millisecond * 100} { time.Sleep(b) if err = kubeconfig.Export(p, opts.Config.Name, opts.KubeconfigPath, true); err == nil { break } } if err != nil { return err } // optionally display usage if opts.DisplayUsage { logUsage(logger, opts.Config.Name, opts.KubeconfigPath) } // optionally give the user a friendly salutation if opts.DisplaySalutation { logger.V(0).Info("") logSalutation(logger) } return nil } // alreadyExists returns an error if the cluster name already exists // or if we had an error checking func alreadyExists(p providers.Provider, name string) error { n, err := p.ListNodes(name) if err != nil { return err } if len(n) != 0 { return errors.Errorf("node(s) already exist for a cluster with the name %q", name) } return nil } func logUsage(logger log.Logger, name, explicitKubeconfigPath string) { // construct a sample command for interacting with the cluster kctx := kubeconfig.ContextForCluster(name) sampleCommand := fmt.Sprintf("kubectl cluster-info --context %s", kctx) if explicitKubeconfigPath != "" { // explicit path, include this sampleCommand += " --kubeconfig " + shellescape.Quote(explicitKubeconfigPath) } logger.V(0).Infof(`Set kubectl context to "%s"`, kctx) logger.V(0).Infof("You can now use your cluster with:\n\n" + sampleCommand) } func logSalutation(logger log.Logger) { salutations := []string{ "Have a nice day! 👋", "Thanks for using kind! 😊", "Not sure what to do next? 😅 Check out https://kind.sigs.k8s.io/docs/user/quick-start/", "Have a question, bug, or feature request? Let us know! https://kind.sigs.k8s.io/#community 🙂", } r := rand.New(rand.NewSource(time.Now().UTC().UnixNano())) s := salutations[r.Intn(len(salutations))] logger.V(0).Info(s) } func fixupOptions(opts *ClusterOptions) error { // do post processing for options // first ensure we at least have a default cluster config if opts.Config == nil { cfg, err := encoding.Load("") if err != nil { return err } opts.Config = cfg } if opts.NameOverride != "" { opts.Config.Name = opts.NameOverride } // if NodeImage was set, override the image on all nodes if opts.NodeImage != "" { // Apply image override to all the Nodes defined in Config // TODO(fabrizio pandini): this should be reconsidered when implementing // https://github.com/kubernetes-sigs/kind/issues/133 for i := range opts.Config.Nodes { opts.Config.Nodes[i].Image = opts.NodeImage } } // default config fields (important for usage as a library, where the config // may be constructed in memory rather than from disk) config.SetDefaultsCluster(opts.Config) return nil } func validateProvider(logger log.Logger, p providers.Provider) error { info, err := p.Info() if err != nil { return err } if info.Rootless { if !info.Cgroup2 { return errors.New("running kind with rootless provider requires cgroup v2, see https://kind.sigs.k8s.io/docs/user/rootless/") } if !info.SupportsMemoryLimit || !info.SupportsPidsLimit || !info.SupportsCPUShares { return errors.New("running kind with rootless provider requires setting systemd property \"Delegate=yes\", see https://kind.sigs.k8s.io/docs/user/rootless/") } } else if !info.Cgroup2 { logger.Warn("cgroup v1 is deprecated in Kubernetes and will not be supported in a future kind release, please upgrade to cgroup v2") } return nil } kubernetes-sigs-kind-49aeee6/pkg/cluster/internal/delete/000077500000000000000000000000001524365506300236045ustar00rootroot00000000000000kubernetes-sigs-kind-49aeee6/pkg/cluster/internal/delete/delete.go000066400000000000000000000027761524365506300254110ustar00rootroot00000000000000/* Copyright 2019 The Kubernetes Authors. 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 delete contains the logic for performing cluster deletion. package delete import ( "sigs.k8s.io/kind/pkg/errors" "sigs.k8s.io/kind/pkg/log" "sigs.k8s.io/kind/pkg/cluster/internal/kubeconfig" "sigs.k8s.io/kind/pkg/cluster/internal/providers" ) // Cluster deletes the cluster identified by ctx // explicitKubeconfigPath is --kubeconfig, following the rules from // https://kubernetes.io/docs/reference/generated/kubectl/kubectl-commands func Cluster(logger log.Logger, p providers.Provider, name, explicitKubeconfigPath string) error { n, err := p.ListNodes(name) if err != nil { return errors.Wrap(err, "error listing nodes") } kerr := kubeconfig.Remove(name, explicitKubeconfigPath) if kerr != nil { logger.Errorf("failed to update kubeconfig: %v", kerr) } if len(n) > 0 { err = p.DeleteNodes(n) if err != nil { return err } logger.V(0).Infof("Deleted nodes: %q", n) } if kerr != nil { return kerr } return nil } kubernetes-sigs-kind-49aeee6/pkg/cluster/internal/kubeadm/000077500000000000000000000000001524365506300237525ustar00rootroot00000000000000kubernetes-sigs-kind-49aeee6/pkg/cluster/internal/kubeadm/config.go000066400000000000000000000544441524365506300255610ustar00rootroot00000000000000/* Copyright 2018 The Kubernetes Authors. 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 kubeadm import ( "bytes" "fmt" "sort" "strings" "text/template" "sigs.k8s.io/kind/pkg/errors" "sigs.k8s.io/kind/pkg/internal/apis/config" "sigs.k8s.io/kind/pkg/internal/version" ) // ConfigData is supplied to the kubeadm config template, with values populated // by the cluster package type ConfigData struct { ClusterName string KubernetesVersion string // The ControlPlaneEndpoint, that is the address of the external loadbalancer // if defined or the bootstrap node ControlPlaneEndpoint string // The Local API Server port APIBindPort int // The API server external listen IP (which we will port forward) APIServerAddress string // this should really be used for the --provider-id flag // ideally cluster config should not depend on the node backend otherwise ... NodeProvider string // ControlPlane flag specifies the node belongs to the control plane ControlPlane bool // The IP address or comma separated list IP addresses of of the node NodeAddress string // The name for the node (not the address) NodeName string // The Token for TLS bootstrap Token string // KubeProxyMode defines the kube-proxy mode between iptables, ipvs or nftables KubeProxyMode string // The subnet used for pods PodSubnet string // The subnet used for services ServiceSubnet string // Kubernetes FeatureGates FeatureGates map[string]bool // Kubernetes API Server RuntimeConfig RuntimeConfig map[string]string // IPFamily of the cluster, it can be IPv4, IPv6 or DualStack IPFamily config.ClusterIPFamily // Labels are the labels, in the format "key1=val1,key2=val2", with which the respective node will be labeled NodeLabels string // RootlessProvider is true if kind is running with rootless mode RootlessProvider bool // DerivedConfigData contains fields computed from the other fields for use // in the config templates and should only be populated by calling Derive() DerivedConfigData } // DerivedConfigData fields are automatically derived by // ConfigData.Derive if they are not specified / zero valued type DerivedConfigData struct { // AdvertiseAddress is the first address in NodeAddress AdvertiseAddress string // DockerStableTag is automatically derived from KubernetesVersion DockerStableTag string // SortedFeatureGates allows us to iterate FeatureGates deterministically SortedFeatureGates []FeatureGate // FeatureGatesString is of the form `Foo=true,Baz=false` FeatureGatesString string // RuntimeConfigString is of the form `Foo=true,Baz=false` RuntimeConfigString string // KubeadmFeatureGates contains Kubeadm only feature gates KubeadmFeatureGates map[string]bool // IPv4 values take precedence over IPv6 by default, if true set IPv6 default values IPv6 bool // kubelet cgroup driver, based on kubernetes version CgroupDriver string // JoinSkipPhases are the skipPhases values for the JoinConfiguration. JoinSkipPhases []string // InitSkipPhases are the skipPhases values for the InitConfiguration. InitSkipPhases []string } // FeatureGate contains the enablement setting for a feature gate. type FeatureGate struct { Name string Value bool } // Derive automatically derives DockerStableTag if not specified func (c *ConfigData) Derive() { // default cgroup driver // TODO: refactor and move all deriving logic to this method c.CgroupDriver = "systemd" // get the first address to use it as the API advertised address c.AdvertiseAddress = strings.Split(c.NodeAddress, ",")[0] if c.DockerStableTag == "" { c.DockerStableTag = strings.ReplaceAll(c.KubernetesVersion, "+", "_") } // get the IP addresses family for defaulting components c.IPv6 = c.IPFamily == config.IPv6Family // get sorted list of FeatureGate keys featureGateKeys := make([]string, 0, len(c.FeatureGates)) for k := range c.FeatureGates { featureGateKeys = append(featureGateKeys, k) } sort.Strings(featureGateKeys) // create a sorted key=value,... string of FeatureGates c.SortedFeatureGates = make([]FeatureGate, 0, len(c.FeatureGates)) featureGates := make([]string, 0, len(c.FeatureGates)) for _, k := range featureGateKeys { v := c.FeatureGates[k] featureGates = append(featureGates, fmt.Sprintf("%s=%t", k, v)) c.SortedFeatureGates = append(c.SortedFeatureGates, FeatureGate{ Name: k, Value: v, }) } c.FeatureGatesString = strings.Join(featureGates, ",") // create a sorted key=value,... string of RuntimeConfig // first get sorted list of FeatureGate keys runtimeConfigKeys := make([]string, 0, len(c.RuntimeConfig)) for k := range c.RuntimeConfig { runtimeConfigKeys = append(runtimeConfigKeys, k) } sort.Strings(runtimeConfigKeys) // stringify var runtimeConfig []string for _, k := range runtimeConfigKeys { v := c.RuntimeConfig[k] // TODO: do we need to quote / escape these in the future? // Currently runtime config is in practice booleans, no special characters runtimeConfig = append(runtimeConfig, fmt.Sprintf("%s=%s", k, v)) } c.RuntimeConfigString = strings.Join(runtimeConfig, ",") // Skip preflight to avoid pulling images. // Kind pre-pulls images and preflight may conflict with that. // requires kubeadm 1.22+ c.JoinSkipPhases = []string{"preflight"} c.InitSkipPhases = []string{"preflight"} if c.KubeProxyMode == string(config.NoneProxyMode) { c.InitSkipPhases = append(c.InitSkipPhases, "addon/kube-proxy") } } // See docs for these APIs at: // https://godoc.org/k8s.io/kubernetes/cmd/kubeadm/app/apis/kubeadm#pkg-subdirectories // EG: // https://godoc.org/k8s.io/kubernetes/cmd/kubeadm/app/apis/kubeadm/v1beta1 // ConfigTemplateBetaV2 is the kubeadm config template for API version v1beta2 const ConfigTemplateBetaV2 = `# config generated by kind apiVersion: kubeadm.k8s.io/v1beta2 kind: ClusterConfiguration metadata: name: config kubernetesVersion: {{.KubernetesVersion}} clusterName: "{{.ClusterName}}" {{ if .KubeadmFeatureGates}}featureGates: {{ range $key, $value := .KubeadmFeatureGates }} "{{ $key }}": {{ $value }} {{end}}{{end}} controlPlaneEndpoint: "{{ .ControlPlaneEndpoint }}" # on docker for mac we have to expose the api server via port forward, # so we need to ensure the cert is valid for localhost so we can talk # to the cluster after rewriting the kubeconfig to point to localhost apiServer: certSANs: [localhost, "{{.APIServerAddress}}"] extraArgs: "runtime-config": "{{ .RuntimeConfigString }}" {{ if .FeatureGates }} "feature-gates": "{{ .FeatureGatesString }}" {{ end}} controllerManager: extraArgs: {{ if .FeatureGates }} "feature-gates": "{{ .FeatureGatesString }}" {{ end }} enable-hostpath-provisioner: "true" # configure ipv6 default addresses for IPv6 clusters {{ if .IPv6 -}} bind-address: "::" {{- end }} scheduler: extraArgs: {{ if .FeatureGates }} "feature-gates": "{{ .FeatureGatesString }}" {{ end }} # configure ipv6 default addresses for IPv6 clusters {{ if .IPv6 -}} bind-address: "::1" {{- end }} networking: podSubnet: "{{ .PodSubnet }}" serviceSubnet: "{{ .ServiceSubnet }}" --- apiVersion: kubeadm.k8s.io/v1beta2 kind: InitConfiguration metadata: name: config # we use a well know token for TLS bootstrap bootstrapTokens: - token: "{{ .Token }}" # we use a well know port for making the API server discoverable inside docker network. # from the host machine such port will be accessible via a random local port instead. localAPIEndpoint: advertiseAddress: "{{ .AdvertiseAddress }}" bindPort: {{.APIBindPort}} nodeRegistration: criSocket: "unix:///run/containerd/containerd.sock" kubeletExtraArgs: node-ip: "{{ .NodeAddress }}" provider-id: "kind://{{.NodeProvider}}/{{.ClusterName}}/{{.NodeName}}" node-labels: "{{ .NodeLabels }}" --- # no-op entry that exists solely so it can be patched apiVersion: kubeadm.k8s.io/v1beta2 kind: JoinConfiguration metadata: name: config {{ if .ControlPlane -}} controlPlane: localAPIEndpoint: advertiseAddress: "{{ .AdvertiseAddress }}" bindPort: {{.APIBindPort}} {{- end }} nodeRegistration: criSocket: "unix:///run/containerd/containerd.sock" kubeletExtraArgs: node-ip: "{{ .NodeAddress }}" provider-id: "kind://{{.NodeProvider}}/{{.ClusterName}}/{{.NodeName}}" node-labels: "{{ .NodeLabels }}" discovery: bootstrapToken: apiServerEndpoint: "{{ .ControlPlaneEndpoint }}" token: "{{ .Token }}" unsafeSkipCAVerification: true --- apiVersion: kubelet.config.k8s.io/v1beta1 kind: KubeletConfiguration metadata: name: config cgroupDriver: {{ .CgroupDriver }} cgroupRoot: /kubelet failSwapOn: false # configure ipv6 addresses in IPv6 mode {{ if .IPv6 -}} address: "::" healthzBindAddress: "::" {{- end }} # disable disk resource management by default # kubelet will see the host disk that the inner container runtime # is ultimately backed by and attempt to recover disk space. we don't want that. imageGCHighThresholdPercent: 100 evictionHard: nodefs.available: "0%" nodefs.inodesFree: "0%" imagefs.available: "0%" {{if .FeatureGates}}featureGates: {{ range $index, $gate := .SortedFeatureGates }} "{{ $gate.Name }}": {{ $gate.Value }} {{end}}{{end}} {{if ne .KubeProxyMode "none"}} --- apiVersion: kubeproxy.config.k8s.io/v1alpha1 kind: KubeProxyConfiguration metadata: name: config mode: "{{ .KubeProxyMode }}" {{if .FeatureGates}}featureGates: {{ range $index, $gate := .SortedFeatureGates }} "{{ $gate.Name }}": {{ $gate.Value }} {{end}}{{end}} iptables: minSyncPeriod: 1s conntrack: # Skip setting sysctl value "net.netfilter.nf_conntrack_max" # It is a global variable that affects other namespaces maxPerCore: 0 # Set sysctl value "net.netfilter.nf_conntrack_tcp_be_liberal" # for nftables proxy (theoretically for kernels older than 6.1) # xref: https://github.com/kubernetes/kubernetes/issues/117924 {{if and (eq .KubeProxyMode "nftables") (not .RootlessProvider)}} tcpBeLiberal: true {{end}} {{if .RootlessProvider}} # Skip setting "net.netfilter.nf_conntrack_tcp_timeout_established" tcpEstablishedTimeout: 0s # Skip setting "net.netfilter.nf_conntrack_tcp_timeout_close" tcpCloseWaitTimeout: 0s {{end}}{{end}} ` // ConfigTemplateBetaV3 is the kubeadm config template for API version v1beta3 const ConfigTemplateBetaV3 = `# config generated by kind apiVersion: kubeadm.k8s.io/v1beta3 kind: ClusterConfiguration metadata: name: config kubernetesVersion: {{.KubernetesVersion}} clusterName: "{{.ClusterName}}" {{ if .KubeadmFeatureGates}}featureGates: {{ range $key, $value := .KubeadmFeatureGates }} "{{ $key }}": {{ $value }} {{end}}{{end}} controlPlaneEndpoint: "{{ .ControlPlaneEndpoint }}" # on docker for mac we have to expose the api server via port forward, # so we need to ensure the cert is valid for localhost so we can talk # to the cluster after rewriting the kubeconfig to point to localhost apiServer: certSANs: [localhost, "{{.APIServerAddress}}"] extraArgs: "runtime-config": "{{ .RuntimeConfigString }}" {{ if .FeatureGates }} "feature-gates": "{{ .FeatureGatesString }}" {{ end}} controllerManager: extraArgs: {{ if .FeatureGates }} "feature-gates": "{{ .FeatureGatesString }}" {{ end }} enable-hostpath-provisioner: "true" # configure ipv6 default addresses for IPv6 clusters {{ if .IPv6 -}} bind-address: "::" {{- end }} scheduler: extraArgs: {{ if .FeatureGates }} "feature-gates": "{{ .FeatureGatesString }}" {{ end }} # configure ipv6 default addresses for IPv6 clusters {{ if .IPv6 -}} bind-address: "::1" {{- end }} networking: podSubnet: "{{ .PodSubnet }}" serviceSubnet: "{{ .ServiceSubnet }}" --- apiVersion: kubeadm.k8s.io/v1beta3 kind: InitConfiguration metadata: name: config # we use a well know token for TLS bootstrap bootstrapTokens: - token: "{{ .Token }}" # we use a well know port for making the API server discoverable inside docker network. # from the host machine such port will be accessible via a random local port instead. localAPIEndpoint: advertiseAddress: "{{ .AdvertiseAddress }}" bindPort: {{.APIBindPort}} nodeRegistration: criSocket: "unix:///run/containerd/containerd.sock" kubeletExtraArgs: node-ip: "{{ .NodeAddress }}" provider-id: "kind://{{.NodeProvider}}/{{.ClusterName}}/{{.NodeName}}" node-labels: "{{ .NodeLabels }}" {{ if .InitSkipPhases -}} skipPhases: {{- range $phase := .InitSkipPhases }} - "{{ $phase }}" {{- end }} {{- end }} --- # no-op entry that exists solely so it can be patched apiVersion: kubeadm.k8s.io/v1beta3 kind: JoinConfiguration metadata: name: config {{ if .ControlPlane -}} controlPlane: localAPIEndpoint: advertiseAddress: "{{ .AdvertiseAddress }}" bindPort: {{.APIBindPort}} {{- end }} nodeRegistration: criSocket: "unix:///run/containerd/containerd.sock" kubeletExtraArgs: node-ip: "{{ .NodeAddress }}" provider-id: "kind://{{.NodeProvider}}/{{.ClusterName}}/{{.NodeName}}" node-labels: "{{ .NodeLabels }}" discovery: bootstrapToken: apiServerEndpoint: "{{ .ControlPlaneEndpoint }}" token: "{{ .Token }}" unsafeSkipCAVerification: true {{ if .JoinSkipPhases -}} skipPhases: {{ range $phase := .JoinSkipPhases -}} - "{{ $phase }}" {{- end }} {{- end }} --- apiVersion: kubelet.config.k8s.io/v1beta1 kind: KubeletConfiguration metadata: name: config cgroupDriver: {{ .CgroupDriver }} cgroupRoot: /kubelet failSwapOn: false # configure ipv6 addresses in IPv6 mode {{ if .IPv6 -}} address: "::" healthzBindAddress: "::" {{- end }} # disable disk resource management by default # kubelet will see the host disk that the inner container runtime # is ultimately backed by and attempt to recover disk space. we don't want that. imageGCHighThresholdPercent: 100 evictionHard: nodefs.available: "0%" nodefs.inodesFree: "0%" imagefs.available: "0%" {{if .FeatureGates}}featureGates: {{ range $index, $gate := .SortedFeatureGates }} "{{ $gate.Name }}": {{ $gate.Value }} {{end}}{{end}} {{if ne .KubeProxyMode "none"}} --- apiVersion: kubeproxy.config.k8s.io/v1alpha1 kind: KubeProxyConfiguration metadata: name: config mode: "{{ .KubeProxyMode }}" {{if .FeatureGates}}featureGates: {{ range $index, $gate := .SortedFeatureGates }} "{{ $gate.Name }}": {{ $gate.Value }} {{end}}{{end}} iptables: minSyncPeriod: 1s conntrack: # Skip setting sysctl value "net.netfilter.nf_conntrack_max" # It is a global variable that affects other namespaces maxPerCore: 0 # Set sysctl value "net.netfilter.nf_conntrack_tcp_be_liberal" # for nftables proxy (theoretically for kernels older than 6.1) # xref: https://github.com/kubernetes/kubernetes/issues/117924 {{if and (eq .KubeProxyMode "nftables") (not .RootlessProvider)}} tcpBeLiberal: true {{end}} {{if .RootlessProvider}} # Skip setting "net.netfilter.nf_conntrack_tcp_timeout_established" tcpEstablishedTimeout: 0s # Skip setting "net.netfilter.nf_conntrack_tcp_timeout_close" tcpCloseWaitTimeout: 0s {{end}}{{end}} ` // ConfigTemplateBetaV4 is the kubeadm config template for API version v1beta4 const ConfigTemplateBetaV4 = `# config generated by kind apiVersion: kubeadm.k8s.io/v1beta4 kind: ClusterConfiguration metadata: name: config kubernetesVersion: {{.KubernetesVersion}} clusterName: "{{.ClusterName}}" {{ if .KubeadmFeatureGates}}featureGates: {{ range $key, $value := .KubeadmFeatureGates }} "{{ $key }}": {{ $value }} {{end}}{{- end}} controlPlaneEndpoint: "{{ .ControlPlaneEndpoint }}" # on docker for mac we have to expose the api server via port forward, # so we need to ensure the cert is valid for localhost so we can talk # to the cluster after rewriting the kubeconfig to point to localhost apiServer: certSANs: [localhost, "{{.APIServerAddress}}"] extraArgs: - name: "runtime-config" value: "{{ .RuntimeConfigString }}" {{ if .FeatureGates }} - name: "feature-gates" value: "{{ .FeatureGatesString }}" {{- end}} controllerManager: extraArgs: {{ if .FeatureGates }} - name: "feature-gates" value: "{{ .FeatureGatesString }}" {{- end }} - name: "enable-hostpath-provisioner" value: "true" # configure ipv6 default addresses for IPv6 clusters {{ if .IPv6 }} - name: "bind-address" value: "::" {{- end }} scheduler: extraArgs: {{ if .FeatureGates }} - name: "feature-gates" value: "{{ .FeatureGatesString }}" {{- end }} # configure ipv6 default addresses for IPv6 clusters {{ if .IPv6 }} - name: "bind-address" value: "::1" {{- end }} networking: podSubnet: "{{ .PodSubnet }}" serviceSubnet: "{{ .ServiceSubnet }}" --- apiVersion: kubeadm.k8s.io/v1beta4 kind: InitConfiguration metadata: name: config # we use a well know token for TLS bootstrap bootstrapTokens: - token: "{{ .Token }}" # we use a well know port for making the API server discoverable inside docker network. # from the host machine such port will be accessible via a random local port instead. localAPIEndpoint: advertiseAddress: "{{ .AdvertiseAddress }}" bindPort: {{.APIBindPort}} nodeRegistration: criSocket: "unix:///run/containerd/containerd.sock" kubeletExtraArgs: - name: "node-ip" value: "{{ .NodeAddress }}" - name: "provider-id" value: "kind://{{.NodeProvider}}/{{.ClusterName}}/{{.NodeName}}" - name: "node-labels" value: "{{ .NodeLabels }}" {{ if .InitSkipPhases -}} skipPhases: {{- range $phase := .InitSkipPhases }} - "{{ $phase }}" {{- end }} {{- end }} --- # no-op entry that exists solely so it can be patched apiVersion: kubeadm.k8s.io/v1beta4 kind: JoinConfiguration metadata: name: config {{ if .ControlPlane -}} controlPlane: localAPIEndpoint: advertiseAddress: "{{ .AdvertiseAddress }}" bindPort: {{.APIBindPort}} {{- end }} nodeRegistration: criSocket: "unix:///run/containerd/containerd.sock" kubeletExtraArgs: - name: "node-ip" value: "{{ .NodeAddress }}" - name: "provider-id" value: "kind://{{.NodeProvider}}/{{.ClusterName}}/{{.NodeName}}" - name: "node-labels" value: "{{ .NodeLabels }}" discovery: bootstrapToken: apiServerEndpoint: "{{ .ControlPlaneEndpoint }}" token: "{{ .Token }}" unsafeSkipCAVerification: true {{ if .JoinSkipPhases -}} skipPhases: {{ range $phase := .JoinSkipPhases -}} - "{{ $phase }}" {{- end }} {{- end }} --- apiVersion: kubelet.config.k8s.io/v1beta1 kind: KubeletConfiguration metadata: name: config cgroupDriver: {{ .CgroupDriver }} cgroupRoot: /kubelet failSwapOn: false # configure ipv6 addresses in IPv6 mode {{ if .IPv6 -}} address: "::" healthzBindAddress: "::" {{- end }} # disable disk resource management by default # kubelet will see the host disk that the inner container runtime # is ultimately backed by and attempt to recover disk space. we don't want that. imageGCHighThresholdPercent: 100 evictionHard: nodefs.available: "0%" nodefs.inodesFree: "0%" imagefs.available: "0%" {{if .FeatureGates}}featureGates: {{ range $index, $gate := .SortedFeatureGates }} "{{ $gate.Name }}": {{ $gate.Value }} {{end}}{{- end}} {{if ne .KubeProxyMode "none"}} --- apiVersion: kubeproxy.config.k8s.io/v1alpha1 kind: KubeProxyConfiguration metadata: name: config mode: "{{ .KubeProxyMode }}" {{if .FeatureGates}}featureGates: {{ range $index, $gate := .SortedFeatureGates }} "{{ $gate.Name }}": {{ $gate.Value }} {{end}}{{- end}} iptables: minSyncPeriod: 1s conntrack: # Skip setting sysctl value "net.netfilter.nf_conntrack_max" # It is a global variable that affects other namespaces maxPerCore: 0 # Set sysctl value "net.netfilter.nf_conntrack_tcp_be_liberal" # for nftables proxy (theoretically for kernels older than 6.1) # xref: https://github.com/kubernetes/kubernetes/issues/117924 {{if and (eq .KubeProxyMode "nftables") (not .RootlessProvider)}} tcpBeLiberal: true {{end}} {{if .RootlessProvider}} # Skip setting "net.netfilter.nf_conntrack_tcp_timeout_established" tcpEstablishedTimeout: 0s # Skip setting "net.netfilter.nf_conntrack_tcp_timeout_close" tcpCloseWaitTimeout: 0s {{end}}{{end}} ` // Config returns a kubeadm config generated from config data, in particular // the kubernetes version func Config(data ConfigData) (config string, err error) { ver, err := version.ParseGeneric(data.KubernetesVersion) if err != nil { return "", err } // ensure featureGates is non-nil, as we may add entries if data.FeatureGates == nil { data.FeatureGates = make(map[string]bool) } if data.RootlessProvider { if ver.LessThan(version.MustParseSemantic("v1.22.0")) { // rootless kind v0.12.x supports Kubernetes v1.22 with KubeletInUserNamespace gate. // rootless kind v0.11.x supports older Kubernetes with fake procfs. return "", errors.Errorf("version %q is not compatible with rootless provider (hint: kind v0.11.x may work with this version)", ver) } data.FeatureGates["KubeletInUserNamespace"] = true } // assume the latest API version, then fallback if the k8s version is too low templateSource := ConfigTemplateBetaV4 if ver.LessThan(version.MustParseSemantic("v1.23.0")) { templateSource = ConfigTemplateBetaV2 } else if ver.LessThan(version.MustParseSemantic("v1.36.0")) { templateSource = ConfigTemplateBetaV3 } t, err := template.New("kubeadm-config").Parse(templateSource) if err != nil { return "", errors.Wrap(err, "failed to parse config template") } // derive any automatic fields if not supplied data.Derive() // Kubeadm has its own feature-gate for dual stack // we need to enable it for Kubernetes version 1.20 only // dual-stack is only supported in 1.20+ // TODO: remove this when 1.20 is EOL or we no longer support // dual-stack for 1.20 in KIND if ver.LessThan(version.MustParseSemantic("v1.21.0")) && ver.AtLeast(version.MustParseSemantic("v1.20.0")) { data.KubeadmFeatureGates = make(map[string]bool) data.KubeadmFeatureGates["IPv6DualStack"] = true } // before 1.24 kind uses cgroupfs // after 1.24 kind uses systemd starting in kind v0.13.0 // before kind v0.13.0 kubernetes 1.24 wasn't released yet if ver.LessThan(version.MustParseSemantic("v1.24.0")) { data.CgroupDriver = "cgroupfs" } // execute the template var buff bytes.Buffer err = t.Execute(&buff, data) if err != nil { return "", errors.Wrap(err, "error executing config template") } return buff.String(), nil } kubernetes-sigs-kind-49aeee6/pkg/cluster/internal/kubeadm/config_test.go000066400000000000000000000032221524365506300266040ustar00rootroot00000000000000/* Copyright The Kubernetes Authors. 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 kubeadm import ( "strings" "testing" ) func TestConfigVersion(t *testing.T) { cases := []struct { name string kubernetesVersion string expectedVersion string }{ { name: "v1.22.0 - v1beta2", kubernetesVersion: "v1.22.0", expectedVersion: "kubeadm.k8s.io/v1beta2", }, { name: "v1.23.0 - v1beta3", kubernetesVersion: "v1.23.0", expectedVersion: "kubeadm.k8s.io/v1beta3", }, { name: "v1.35.0 - v1beta3", kubernetesVersion: "v1.35.0", expectedVersion: "kubeadm.k8s.io/v1beta3", }, { name: "v1.36.0 - v1beta4", kubernetesVersion: "v1.36.0", expectedVersion: "kubeadm.k8s.io/v1beta4", }, } for _, tc := range cases { t.Run(tc.name, func(t *testing.T) { data := ConfigData{ KubernetesVersion: tc.kubernetesVersion, } cfg, err := Config(data) if err != nil { t.Fatalf("unexpected error: %v", err) } if !strings.Contains(cfg, tc.expectedVersion) { t.Errorf("expected config to contain %q, but got:\n%s", tc.expectedVersion, cfg) } }) } } kubernetes-sigs-kind-49aeee6/pkg/cluster/internal/kubeadm/const.go000066400000000000000000000014761524365506300254370ustar00rootroot00000000000000/* Copyright 2018 The Kubernetes Authors. 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 kubeadm // Token defines a dummy, well known token for automating TLS bootstrap process const Token = "abcdef.0123456789abcdef" // ObjectName is the name every generated object will have // I.E. `metadata:\nname: config` const ObjectName = "config" kubernetes-sigs-kind-49aeee6/pkg/cluster/internal/kubeadm/doc.go000066400000000000000000000012231524365506300250440ustar00rootroot00000000000000/* Copyright 2018 The Kubernetes Authors. 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 kubeadm contains kubeadm related constants and configuration package kubeadm kubernetes-sigs-kind-49aeee6/pkg/cluster/internal/kubeconfig/000077500000000000000000000000001524365506300244565ustar00rootroot00000000000000kubernetes-sigs-kind-49aeee6/pkg/cluster/internal/kubeconfig/internal/000077500000000000000000000000001524365506300262725ustar00rootroot00000000000000kubernetes-sigs-kind-49aeee6/pkg/cluster/internal/kubeconfig/internal/kubeconfig/000077500000000000000000000000001524365506300304065ustar00rootroot00000000000000kubernetes-sigs-kind-49aeee6/pkg/cluster/internal/kubeconfig/internal/kubeconfig/encode.go000066400000000000000000000036001524365506300321710ustar00rootroot00000000000000/* Copyright 2019 The Kubernetes Authors. 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 kubeconfig has various functions for working with the kubeconfig. package kubeconfig import ( "bytes" yaml "go.yaml.in/yaml/v3" kubeyaml "sigs.k8s.io/yaml" "sigs.k8s.io/kind/pkg/errors" ) // Encode encodes the cfg to yaml func Encode(cfg *Config) ([]byte, error) { // NOTE: kubernetes's yaml library doesn't handle inline fields very well // so we're not using that to marshal encoded, err := yaml.Marshal(cfg) if err != nil { return nil, errors.Wrap(err, "failed to encode KUBECONFIG") } // normalize with kubernetes's yaml library // this is not strictly necessary, but it ensures minimal diffs when // modifying kubeconfig files, which is nice to have encoded, err = normYaml(encoded) if err != nil { return nil, errors.Wrap(err, "failed to normalize KUBECONFIG encoding") } return encoded, nil } // normYaml round trips yaml bytes through sigs.k8s.io/yaml to normalize them // versus other kubernetes ecosystem yaml output func normYaml(y []byte) ([]byte, error) { var unstructured interface{} if err := kubeyaml.Unmarshal(y, &unstructured); err != nil { return nil, err } encoded, err := kubeyaml.Marshal(&unstructured) if err != nil { return nil, err } // special case: don't write anything when empty if bytes.Equal(encoded, []byte("{}\n")) { return []byte{}, nil } return encoded, nil } kubernetes-sigs-kind-49aeee6/pkg/cluster/internal/kubeconfig/internal/kubeconfig/encode_test.go000066400000000000000000000031251524365506300332320ustar00rootroot00000000000000/* Copyright 2019 The Kubernetes Authors. 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 kubeconfig import ( "testing" "sigs.k8s.io/kind/pkg/internal/assert" ) func TestEncodeRoundtrip(t *testing.T) { t.Parallel() // test round tripping a kubeconfig const aConfig = `apiVersion: v1 clusters: - cluster: certificate-authority-data: definitelyacert server: https://192.168.9.4:6443 name: kind-kind contexts: - context: cluster: kind-kind user: kind-kind name: kind-kind current-context: kind-kind kind: Config preferences: {} users: - name: kind-kind user: client-certificate-data: seemslegit client-key-data: yup ` cfg, err := KINDFromRawKubeadm(aConfig, "kind", "") if err != nil { t.Fatalf("failed to decode kubeconfig: %v", err) } encoded, err := Encode(cfg) if err != nil { t.Fatalf("failed to encode kubeconfig: %v", err) } assert.StringEqual(t, aConfig, string(encoded)) } func TestEncodeEmpty(t *testing.T) { t.Parallel() encoded, err := Encode(&Config{}) if err != nil { t.Fatalf("failed to encode kubeconfig: %v", err) } assert.StringEqual(t, "", string(encoded)) } kubernetes-sigs-kind-49aeee6/pkg/cluster/internal/kubeconfig/internal/kubeconfig/helpers.go000066400000000000000000000025251524365506300324030ustar00rootroot00000000000000/* Copyright 2019 The Kubernetes Authors. 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 kubeconfig import ( "sigs.k8s.io/kind/pkg/errors" ) // KINDClusterKey identifies kind clusters in kubeconfig files func KINDClusterKey(clusterName string) string { return "kind-" + clusterName } // checkKubeadmExpectations validates that a kubeadm created KUBECONFIG meets // our expectations, namely on the number of entries func checkKubeadmExpectations(cfg *Config) error { if len(cfg.Clusters) != 1 { return errors.Errorf("kubeadm KUBECONFIG should have one cluster, but read %d", len(cfg.Clusters)) } if len(cfg.Users) != 1 { return errors.Errorf("kubeadm KUBECONFIG should have one user, but read %d", len(cfg.Users)) } if len(cfg.Contexts) != 1 { return errors.Errorf("kubeadm KUBECONFIG should have one context, but read %d", len(cfg.Contexts)) } return nil } kubernetes-sigs-kind-49aeee6/pkg/cluster/internal/kubeconfig/internal/kubeconfig/helpers_test.go000066400000000000000000000041011524365506300334320ustar00rootroot00000000000000/* Copyright 2019 The Kubernetes Authors. 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 kubeconfig import ( "testing" "sigs.k8s.io/kind/pkg/internal/assert" ) func TestKINDClusterKey(t *testing.T) { t.Parallel() assert.StringEqual(t, "kind-foobar", KINDClusterKey("foobar")) } func TestCheckKubeadmExpectations(t *testing.T) { t.Parallel() cases := []struct { Name string Config *Config ExpectError bool }{ { Name: "too many of all entries", Config: &Config{ Clusters: make([]NamedCluster, 5), Contexts: make([]NamedContext, 5), Users: make([]NamedUser, 5), }, ExpectError: true, }, { Name: "too many users", Config: &Config{ Clusters: make([]NamedCluster, 1), Contexts: make([]NamedContext, 1), Users: make([]NamedUser, 2), }, ExpectError: true, }, { Name: "too many clusters", Config: &Config{ Clusters: make([]NamedCluster, 2), Contexts: make([]NamedContext, 1), Users: make([]NamedUser, 1), }, ExpectError: true, }, { Name: "too many contexts", Config: &Config{ Clusters: make([]NamedCluster, 1), Contexts: make([]NamedContext, 2), Users: make([]NamedUser, 1), }, ExpectError: true, }, { Name: "just right", Config: &Config{ Clusters: make([]NamedCluster, 1), Contexts: make([]NamedContext, 1), Users: make([]NamedUser, 1), }, ExpectError: false, }, } for _, tc := range cases { tc := tc t.Run(tc.Name, func(t *testing.T) { t.Parallel() assert.ExpectError(t, tc.ExpectError, checkKubeadmExpectations(tc.Config)) }) } } kubernetes-sigs-kind-49aeee6/pkg/cluster/internal/kubeconfig/internal/kubeconfig/lock.go000066400000000000000000000024271524365506300316720ustar00rootroot00000000000000/* Copyright 2019 The Kubernetes Authors. 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 kubeconfig import ( "os" "path/filepath" ) // these are from // https://github.com/kubernetes/client-go/blob/611184f7c43ae2d520727f01d49620c7ed33412d/tools/clientcmd/loader.go#L439-L440 func lockFile(filename string) error { // Make sure the dir exists before we try to create a lock file. dir := filepath.Dir(filename) if _, err := os.Stat(dir); os.IsNotExist(err) { if err = os.MkdirAll(dir, 0755); err != nil { return err } } f, err := os.OpenFile(lockName(filename), os.O_CREATE|os.O_EXCL, 0) if err != nil { return err } f.Close() return nil } func unlockFile(filename string) error { return os.Remove(lockName(filename)) } func lockName(filename string) string { return filename + ".lock" } kubernetes-sigs-kind-49aeee6/pkg/cluster/internal/kubeconfig/internal/kubeconfig/merge.go000066400000000000000000000061331524365506300320370ustar00rootroot00000000000000/* Copyright 2019 The Kubernetes Authors. 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 kubeconfig import ( "os" "sigs.k8s.io/kind/pkg/errors" ) // WriteMerged writes a kind kubeconfig (see KINDFromRawKubeadm) into configPath // merging with the existing contents if any and setting the current context to // the kind config's current context. func WriteMerged(kindConfig *Config, explicitConfigPath string) error { // figure out what filepath we should use configPath := pathForMerge(explicitConfigPath, os.Getenv) // lock config file the same as client-go if err := lockFile(configPath); err != nil { return errors.Wrap(err, "failed to lock config file") } defer func() { _ = unlockFile(configPath) }() // read in existing existing, err := read(configPath) if err != nil { return errors.Wrap(err, "failed to get kubeconfig to merge") } // merge with kind kubeconfig if err := merge(existing, kindConfig); err != nil { return err } // write back out return write(existing, configPath) } // merge kind config into an existing config func merge(existing, kind *Config) error { // verify assumptions about kubeadm / kind kubeconfigs if err := checkKubeadmExpectations(kind); err != nil { return err } // insert or append cluster entry shouldAppend := true for i := range existing.Clusters { if existing.Clusters[i].Name == kind.Clusters[0].Name { existing.Clusters[i] = kind.Clusters[0] shouldAppend = false } } if shouldAppend { existing.Clusters = append(existing.Clusters, kind.Clusters[0]) } // insert or append user entry shouldAppend = true for i := range existing.Users { if existing.Users[i].Name == kind.Users[0].Name { existing.Users[i] = kind.Users[0] shouldAppend = false } } if shouldAppend { existing.Users = append(existing.Users, kind.Users[0]) } // insert or append context entry shouldAppend = true for i := range existing.Contexts { if existing.Contexts[i].Name == kind.Contexts[0].Name { existing.Contexts[i] = kind.Contexts[0] shouldAppend = false } } if shouldAppend { existing.Contexts = append(existing.Contexts, kind.Contexts[0]) } // set the current context existing.CurrentContext = kind.CurrentContext // TODO: We should not need this, but it allows broken clients that depend // on apiVersion and kind to work. Notably the upstream javascript client. // See: https://github.com/kubernetes-sigs/kind/issues/1242 if len(existing.OtherFields) == 0 { // TODO: Should we be deep-copying? for now we don't need to // and doing so would be a pain (re and de-serialize maybe?) :shrug: existing.OtherFields = kind.OtherFields } return nil } kubernetes-sigs-kind-49aeee6/pkg/cluster/internal/kubeconfig/internal/kubeconfig/merge_test.go000066400000000000000000000215741524365506300331040ustar00rootroot00000000000000/* Copyright 2019 The Kubernetes Authors. 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 kubeconfig import ( "io" "os" "path/filepath" "reflect" "testing" "sigs.k8s.io/kind/pkg/internal/assert" ) func TestMerge(t *testing.T) { t.Parallel() cases := []struct { Name string Existing *Config Kind *Config Expected *Config ExpectError bool }{ { Name: "bad kind config", Existing: &Config{}, Kind: &Config{}, Expected: &Config{}, ExpectError: true, }, { Name: "empty existing", Existing: &Config{}, Kind: &Config{ Clusters: []NamedCluster{ { Name: "kind-kind", }, }, Users: []NamedUser{ { Name: "kind-kind", }, }, Contexts: []NamedContext{ { Name: "kind-kind", }, }, }, Expected: &Config{ Clusters: []NamedCluster{ { Name: "kind-kind", }, }, Users: []NamedUser{ { Name: "kind-kind", }, }, Contexts: []NamedContext{ { Name: "kind-kind", }, }, }, ExpectError: false, }, { Name: "replace existing", Existing: &Config{ Clusters: []NamedCluster{ { Name: "kind-kind", Cluster: Cluster{ Server: "foo", }, }, }, Users: []NamedUser{ { Name: "kind-kind", }, }, Contexts: []NamedContext{ { Name: "kind-kind", }, }, }, Kind: &Config{ Clusters: []NamedCluster{ { Name: "kind-kind", }, }, Users: []NamedUser{ { Name: "kind-kind", }, }, Contexts: []NamedContext{ { Name: "kind-kind", }, }, }, Expected: &Config{ Clusters: []NamedCluster{ { Name: "kind-kind", }, }, Users: []NamedUser{ { Name: "kind-kind", }, }, Contexts: []NamedContext{ { Name: "kind-kind", }, }, }, ExpectError: false, }, { Name: "add to existing", Existing: &Config{ Clusters: []NamedCluster{ { Name: "kops-blah", Cluster: Cluster{ Server: "foo", }, }, }, Users: []NamedUser{ { Name: "kops-blah", }, }, Contexts: []NamedContext{ { Name: "kops-blah", }, }, }, Kind: &Config{ Clusters: []NamedCluster{ { Name: "kind-kind", }, }, Users: []NamedUser{ { Name: "kind-kind", }, }, Contexts: []NamedContext{ { Name: "kind-kind", }, }, }, Expected: &Config{ Clusters: []NamedCluster{ { Name: "kops-blah", Cluster: Cluster{ Server: "foo", }, }, { Name: "kind-kind", }, }, Users: []NamedUser{ { Name: "kops-blah", }, { Name: "kind-kind", }, }, Contexts: []NamedContext{ { Name: "kops-blah", }, { Name: "kind-kind", }, }, }, ExpectError: false, }, } for _, tc := range cases { tc := tc t.Run(tc.Name, func(t *testing.T) { t.Parallel() err := merge(tc.Existing, tc.Kind) assert.ExpectError(t, tc.ExpectError, err) if !tc.ExpectError && !reflect.DeepEqual(tc.Existing, tc.Expected) { t.Errorf("Merged Config did not equal Expected") t.Errorf("Expected: %+v", tc.Expected) t.Errorf("Actual: %+v", tc.Existing) } }) } } func TestWriteMerged(t *testing.T) { t.Parallel() t.Run("normal merge", testWriteMergedNormal) t.Run("bad kind config", testWriteMergedBogusConfig) t.Run("merge into non-existent file", testWriteMergedNoExistingFile) } func testWriteMergedNormal(t *testing.T) { t.Parallel() dir, err := os.MkdirTemp("", "kind-testwritemerged") if err != nil { t.Fatalf("Failed to create tempdir: %d", err) } defer os.RemoveAll(dir) // create an existing kubeconfig const existingConfig = `clusters: - cluster: certificate-authority-data: definitelyacert server: https://192.168.9.4:6443 name: kind-foo contexts: - context: cluster: kind-foo user: kind-foo name: kind-foo current-context: kind-foo kind: Config apiVersion: v1 preferences: {} users: - name: kind-foo user: client-certificate-data: seemslegit client-key-data: yep ` existingConfigPath := filepath.Join(dir, "existing-kubeconfig") if err := os.WriteFile(existingConfigPath, []byte(existingConfig), os.ModePerm); err != nil { t.Fatalf("Failed to create existing kubeconfig: %d", err) } kindConfig := &Config{ Clusters: []NamedCluster{ { Name: "kind-kind", Cluster: Cluster{ Server: "https://127.0.0.1:6443", OtherFields: map[string]interface{}{ "certificate-authority-data": "definitelyacert", }, }, }, }, Contexts: []NamedContext{ { Name: "kind-kind", Context: Context{ User: "kind-kind", Cluster: "kind-kind", }, }, }, Users: []NamedUser{ { Name: "kind-kind", User: map[string]interface{}{ "client-certificate-data": "seemslegit", "client-key-data": "yep", }, }, }, CurrentContext: "kind-kind", OtherFields: map[string]interface{}{ "apiVersion": "v1", "kind": "Config", "preferences": map[string]interface{}{}, }, } // ensure that we can write this merged config if err := WriteMerged(kindConfig, existingConfigPath); err != nil { t.Fatalf("Failed to write merged kubeconfig: %v", err) } // ensure the output matches expected f, err := os.Open(existingConfigPath) if err != nil { t.Fatalf("Failed to open merged kubeconfig: %v", err) } contents, err := io.ReadAll(f) if err != nil { t.Fatalf("Failed to read merged kubeconfig: %v", err) } expected := `apiVersion: v1 clusters: - cluster: certificate-authority-data: definitelyacert server: https://192.168.9.4:6443 name: kind-foo - cluster: certificate-authority-data: definitelyacert server: https://127.0.0.1:6443 name: kind-kind contexts: - context: cluster: kind-foo user: kind-foo name: kind-foo - context: cluster: kind-kind user: kind-kind name: kind-kind current-context: kind-kind kind: Config preferences: {} users: - name: kind-foo user: client-certificate-data: seemslegit client-key-data: yep - name: kind-kind user: client-certificate-data: seemslegit client-key-data: yep ` assert.StringEqual(t, expected, string(contents)) } func testWriteMergedBogusConfig(t *testing.T) { t.Parallel() dir, err := os.MkdirTemp("", "kind-testwritemerged") if err != nil { t.Fatalf("Failed to create tempdir: %d", err) } defer os.RemoveAll(dir) err = WriteMerged(&Config{}, filepath.Join(dir, "bogus")) assert.ExpectError(t, true, err) } func testWriteMergedNoExistingFile(t *testing.T) { t.Parallel() dir, err := os.MkdirTemp("", "kind-testwritemerged") if err != nil { t.Fatalf("Failed to create tempdir: %d", err) } defer os.RemoveAll(dir) kindConfig := &Config{ Clusters: []NamedCluster{ { Name: "kind-kind", Cluster: Cluster{ Server: "https://127.0.0.1:6443", OtherFields: map[string]interface{}{ "certificate-authority-data": "definitelyacert", }, }, }, }, Contexts: []NamedContext{ { Name: "kind-kind", Context: Context{ User: "kind-kind", Cluster: "kind-kind", }, }, }, Users: []NamedUser{ { Name: "kind-kind", User: map[string]interface{}{ "client-certificate-data": "seemslegit", "client-key-data": "yep", }, }, }, CurrentContext: "kind-kind", OtherFields: map[string]interface{}{ "apiVersion": "v1", "kind": "Config", "preferences": map[string]interface{}{}, }, } nonExistentPath := filepath.Join(dir, "bogus", "extra-bogus") err = WriteMerged(kindConfig, nonExistentPath) assert.ExpectError(t, false, err) // ensure the output matches expected f, err := os.Open(nonExistentPath) if err != nil { t.Fatalf("Failed to open merged kubeconfig: %v", err) } contents, err := io.ReadAll(f) if err != nil { t.Fatalf("Failed to read merged kubeconfig: %v", err) } expected := `apiVersion: v1 clusters: - cluster: certificate-authority-data: definitelyacert server: https://127.0.0.1:6443 name: kind-kind contexts: - context: cluster: kind-kind user: kind-kind name: kind-kind current-context: kind-kind kind: Config preferences: {} users: - name: kind-kind user: client-certificate-data: seemslegit client-key-data: yep ` assert.StringEqual(t, expected, string(contents)) } kubernetes-sigs-kind-49aeee6/pkg/cluster/internal/kubeconfig/internal/kubeconfig/paths.go000066400000000000000000000122061524365506300320550ustar00rootroot00000000000000/* Copyright 2019 The Kubernetes Authors. 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 kubeconfig import ( "os" "path" "path/filepath" "runtime" "sigs.k8s.io/kind/pkg/internal/sets" ) const kubeconfigEnv = "KUBECONFIG" /* paths returns the list of paths to be considered for kubeconfig files where explicitPath is the value of --kubeconfig # Logic based on kubectl https://kubernetes.io/docs/reference/generated/kubectl/kubectl-commands - If the --kubeconfig flag is set, then only that file is loaded. The flag may only be set once and no merging takes place. - If $KUBECONFIG environment variable is set, then it is used as a list of paths (normal path delimiting rules for your system). These paths are merged. When a value is modified, it is modified in the file that defines the stanza. When a value is created, it is created in the first file that exists. - If no files in the chain exist, then it creates the last file in the list. - Otherwise, ${HOME}/.kube/config is used and no merging takes place. */ func paths(explicitPath string, getEnv func(string) string) []string { if explicitPath != "" { return []string{explicitPath} } paths := discardEmptyAndDuplicates( filepath.SplitList(getEnv(kubeconfigEnv)), ) if len(paths) != 0 { return paths } return []string{path.Join(homeDir(runtime.GOOS, getEnv), ".kube", "config")} } // pathForMerge returns the file that kubectl would merge into func pathForMerge(explicitPath string, getEnv func(string) string) string { // find the first file that exists p := paths(explicitPath, getEnv) if len(p) == 1 { return p[0] } for _, filename := range p { if fileExists(filename) { return filename } } // otherwise the last file return p[len(p)-1] } func fileExists(filename string) bool { info, err := os.Stat(filename) if err != nil { return false } return !info.IsDir() } func discardEmptyAndDuplicates(paths []string) []string { seen := sets.NewString() kept := 0 for _, p := range paths { if p != "" && !seen.Has(p) { paths[kept] = p kept++ seen.Insert(p) } } return paths[:kept] } // homeDir returns the home directory for the current user. // On Windows: // 1. the first of %HOME%, %HOMEDRIVE%%HOMEPATH%, %USERPROFILE% containing a `.kube\config` file is returned. // 2. if none of those locations contain a `.kube\config` file, the first of %HOME%, %USERPROFILE%, %HOMEDRIVE%%HOMEPATH% that exists and is writeable is returned. // 3. if none of those locations are writeable, the first of %HOME%, %USERPROFILE%, %HOMEDRIVE%%HOMEPATH% that exists is returned. // 4. if none of those locations exists, the first of %HOME%, %USERPROFILE%, %HOMEDRIVE%%HOMEPATH% that is set is returned. // NOTE this is from client-go. Rather than pull in client-go for this one // standalone method, we have a fork here. // https://github.com/kubernetes/client-go/blob/6d7018244d72350e2e8c4a19ccdbe4c8083a9143/util/homedir/homedir.go // We've modified this to require injecting os.Getenv and runtime.GOOS as a dependencies for testing purposes func homeDir(GOOS string, getEnv func(string) string) string { if GOOS == "windows" { home := getEnv("HOME") homeDriveHomePath := "" if homeDrive, homePath := getEnv("HOMEDRIVE"), getEnv("HOMEPATH"); len(homeDrive) > 0 && len(homePath) > 0 { homeDriveHomePath = homeDrive + homePath } userProfile := getEnv("USERPROFILE") // Return first of %HOME%, %HOMEDRIVE%/%HOMEPATH%, %USERPROFILE% that contains a `.kube\config` file. // %HOMEDRIVE%/%HOMEPATH% is preferred over %USERPROFILE% for backwards-compatibility. for _, p := range []string{home, homeDriveHomePath, userProfile} { if len(p) == 0 { continue } if _, err := os.Stat(filepath.Join(p, ".kube", "config")); err != nil { continue } return p } firstSetPath := "" firstExistingPath := "" // Prefer %USERPROFILE% over %HOMEDRIVE%/%HOMEPATH% for compatibility with other auth-writing tools for _, p := range []string{home, userProfile, homeDriveHomePath} { if len(p) == 0 { continue } if len(firstSetPath) == 0 { // remember the first path that is set firstSetPath = p } info, err := os.Stat(p) if err != nil { continue } if len(firstExistingPath) == 0 { // remember the first path that exists firstExistingPath = p } if info.IsDir() && info.Mode().Perm()&(1<<(uint(7))) != 0 { // return first path that is writeable return p } } // If none are writeable, return first location that exists if len(firstExistingPath) > 0 { return firstExistingPath } // If none exist, return first location that is set if len(firstSetPath) > 0 { return firstSetPath } // We've got nothing return "" } return getEnv("HOME") } kubernetes-sigs-kind-49aeee6/pkg/cluster/internal/kubeconfig/internal/kubeconfig/paths_test.go000066400000000000000000000152541524365506300331220ustar00rootroot00000000000000/* Copyright 2019 The Kubernetes Authors. 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 kubeconfig import ( "os" "path" "path/filepath" "strings" "testing" "sigs.k8s.io/kind/pkg/fs" "sigs.k8s.io/kind/pkg/internal/assert" ) func TestPaths(t *testing.T) { t.Parallel() // test explicit kubeconfig t.Run("explicit path", func(t *testing.T) { t.Parallel() explicitPath := "foo" result := paths(explicitPath, func(s string) string { return map[string]string{ "KUBECONFIG": strings.Join([]string{"/foo", "/bar", "", "/foo", "/bar"}, string(filepath.ListSeparator)), "HOME": "/home", }[s] }) expected := []string{explicitPath} assert.DeepEqual(t, expected, result) }) t.Run("KUBECONFIG list", func(t *testing.T) { t.Parallel() result := paths("", func(s string) string { return map[string]string{ "KUBECONFIG": strings.Join([]string{"/foo", "/bar", "", "/foo", "/bar"}, string(filepath.ListSeparator)), "HOME": "/home", }[s] }) expected := []string{"/foo", "/bar"} assert.DeepEqual(t, expected, result) }) t.Run("$HOME/.kube/config", func(t *testing.T) { t.Parallel() result := paths("", func(s string) string { return map[string]string{ "HOME": "/home", }[s] }) expected := []string{"/home/.kube/config"} assert.DeepEqual(t, expected, result) }) } func TestPathForMerge(t *testing.T) { t.Parallel() // create a directory structure with some files to be "kubeconfigs" dir, err := fs.TempDir("", "kind-testwritemerged") if err != nil { t.Fatalf("Failed to create tempdir: %v", err) } defer os.RemoveAll(dir) // create a fake homedir homeDir := filepath.Join(dir, "fake-home") if err := os.Mkdir(homeDir, os.ModePerm); err != nil { t.Fatalf("failed to create fake home dir: %v", err) } // create some fake KUBECONFIG files fakeKubeconfigs := []string{} for _, partialPath := range []string{"foo", "bar", "baz"} { p := filepath.Join(dir, partialPath) fakeKubeconfigs = append(fakeKubeconfigs, p) f, err := os.Create(p) if err != nil { t.Fatalf("failed to create fake kubeconfig file: %v", err) } f.Close() } // test explicit kubeconfig t.Run("explicit path", func(t *testing.T) { explicitPath := "foo" result := pathForMerge(explicitPath, func(s string) string { return map[string]string{ "KUBECONFIG": strings.Join([]string{"/foo", "/bar", "", "/foo", "/bar"}, string(filepath.ListSeparator)), "HOME": "/home", }[s] }) expected := explicitPath assert.StringEqual(t, expected, result) }) t.Run("KUBECONFIG list", func(t *testing.T) { result := pathForMerge("", func(s string) string { return map[string]string{ "KUBECONFIG": strings.Join(fakeKubeconfigs, string(filepath.ListSeparator)), }[s] }) expected := fakeKubeconfigs[0] assert.StringEqual(t, expected, result) }) t.Run("KUBECONFIG select last if none exist", func(t *testing.T) { kubeconfigEnvValue := strings.Join([]string{"/bogus/path", "/bogus/path/two"}, string(filepath.ListSeparator)) result := pathForMerge("", func(s string) string { return map[string]string{ "KUBECONFIG": kubeconfigEnvValue, }[s] }) expected := "/bogus/path/two" assert.StringEqual(t, expected, result) }) t.Run("KUBECONFIG skips inaccessible entry", func(t *testing.T) { inaccessibleDir := filepath.Join(dir, "inaccessible") if err := os.Mkdir(inaccessibleDir, 0o700); err != nil { t.Fatalf("failed to create inaccessible dir: %v", err) } defer func() { if err := os.Chmod(inaccessibleDir, 0o700); err != nil { t.Fatalf("failed to restore dir permissions: %v", err) } }() if err := os.Chmod(inaccessibleDir, 0); err != nil { t.Fatalf("failed to chmod inaccessible dir: %v", err) } inaccessibleFile := filepath.Join(inaccessibleDir, "config") kubeconfigEnvValue := strings.Join([]string{inaccessibleFile, fakeKubeconfigs[1]}, string(filepath.ListSeparator)) result := pathForMerge("", func(s string) string { return map[string]string{ "KUBECONFIG": kubeconfigEnvValue, }[s] }) assert.StringEqual(t, fakeKubeconfigs[1], result) }) } func TestHomeDir(t *testing.T) { t.Parallel() t.Run("windows HOME with .kube/config", func(t *testing.T) { t.Parallel() // create a directory structure with a "kubeconfigs" dir, err := fs.TempDir("", "kind-testwritemerged") if err != nil { t.Fatalf("Failed to create tempdir: %v", err) } defer os.RemoveAll(dir) // create the fake kubeconfig fakeHomeDir := path.Join(dir, "fake-home") fakeKubeConfig := path.Join(fakeHomeDir, ".kube", "config") if err := os.MkdirAll(path.Dir(fakeKubeConfig), os.ModePerm); err != nil { t.Fatalf("Failed to create fake kubeconfig dir: %v", err) } f, err := os.Create(fakeKubeConfig) if err != nil { t.Fatalf("Failed to create tempdir: %v", err) } f.Close() // this should return the fake kubeconfig result := homeDir("windows", func(e string) string { return map[string]string{ "HOME": fakeHomeDir, "HOMEDRIVE": "ZZ:", "HOMEPATH": `ZZ:\Users\fake-user-zzz`, }[e] }) assert.StringEqual(t, fakeHomeDir, result) }) t.Run("windows HOME without .kube/config", func(t *testing.T) { t.Parallel() // create a fake home dir fakeHomeDir, err := fs.TempDir("", "kind-testwritemerged") if err != nil { t.Fatalf("Failed to create tempdir: %v", err) } defer os.RemoveAll(fakeHomeDir) // this should return the fake kubeconfig result := homeDir("windows", func(e string) string { return map[string]string{ "HOME": fakeHomeDir, "HOMEDRIVE": filepath.VolumeName(fakeHomeDir), "HOMEPATH": path.Join("Users", "fake-user-zzz"), }[e] }) assert.StringEqual(t, fakeHomeDir, result) }) t.Run("windows HOME none exist", func(t *testing.T) { t.Parallel() // this should return the fake kubeconfig result := homeDir("windows", func(e string) string { return map[string]string{ "HOME": "Z:/faaaaake", "HOMEDRIVE": "Z:/", "HOMEPATH": path.Join("Users", "fake-user-zzz"), }[e] }) assert.StringEqual(t, "Z:/faaaaake", result) }) t.Run("windows no path", func(t *testing.T) { t.Parallel() // this should return the fake kubeconfig result := homeDir("windows", func(e string) string { return "" }) assert.StringEqual(t, "", result) }) } kubernetes-sigs-kind-49aeee6/pkg/cluster/internal/kubeconfig/internal/kubeconfig/read.go000066400000000000000000000041671524365506300316600ustar00rootroot00000000000000/* Copyright 2019 The Kubernetes Authors. 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 kubeconfig import ( "io" "os" yaml "go.yaml.in/yaml/v3" "sigs.k8s.io/kind/pkg/errors" ) // KINDFromRawKubeadm returns a kind kubeconfig derived from the raw kubeadm kubeconfig, // the kind clusterName, and the server. // server is ignored if unset. func KINDFromRawKubeadm(rawKubeadmKubeConfig, clusterName, server string) (*Config, error) { cfg := &Config{} if err := yaml.Unmarshal([]byte(rawKubeadmKubeConfig), cfg); err != nil { return nil, err } // verify assumptions about kubeadm kubeconfigs if err := checkKubeadmExpectations(cfg); err != nil { return nil, err } // compute unique kubeconfig key for this cluster key := KINDClusterKey(clusterName) // use the unique key for all named references cfg.Clusters[0].Name = key cfg.Users[0].Name = key cfg.Contexts[0].Name = key cfg.Contexts[0].Context.User = key cfg.Contexts[0].Context.Cluster = key cfg.CurrentContext = key // patch server field if server was set if server != "" { cfg.Clusters[0].Cluster.Server = server } return cfg, nil } // read loads a KUBECONFIG file from configPath func read(configPath string) (*Config, error) { // try to open, return default if no such file f, err := os.Open(configPath) if os.IsNotExist(err) { return &Config{}, nil } else if err != nil { return nil, errors.WithStack(err) } // otherwise read in and deserialize cfg := &Config{} rawExisting, err := io.ReadAll(f) if err != nil { return nil, errors.WithStack(err) } if err := yaml.Unmarshal(rawExisting, cfg); err != nil { return nil, errors.WithStack(err) } return cfg, nil } kubernetes-sigs-kind-49aeee6/pkg/cluster/internal/kubeconfig/internal/kubeconfig/read_test.go000066400000000000000000000051501524365506300327100ustar00rootroot00000000000000/* Copyright 2019 The Kubernetes Authors. 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 kubeconfig import ( "reflect" "testing" "sigs.k8s.io/kind/pkg/internal/assert" ) func TestKINDFromRawKubeadm(t *testing.T) { t.Parallel() // test that a bogus config is caught t.Run("bad config", func(t *testing.T) { t.Parallel() _, err := KINDFromRawKubeadm(" ", "kind", "") assert.ExpectError(t, true, err) }) // test reading a legitimate kubeadm config and converting it to a kind config t.Run("valid config", func(t *testing.T) { const rawConfig = `apiVersion: v1 clusters: - cluster: certificate-authority-data: definitelyacert server: https://192.168.9.4:6443 name: kind contexts: - context: cluster: kind user: kubernetes-admin name: kubernetes-admin@kind current-context: kubernetes-admin@kind kind: Config preferences: {} users: - name: kubernetes-admin user: client-certificate-data: seemslegit client-key-data: yep ` server := "https://127.0.0.1:6443" expected := &Config{ Clusters: []NamedCluster{ { Name: "kind-kind", Cluster: Cluster{ Server: server, OtherFields: map[string]interface{}{ "certificate-authority-data": "definitelyacert", }, }, }, }, Contexts: []NamedContext{ { Name: "kind-kind", Context: Context{ User: "kind-kind", Cluster: "kind-kind", }, }, }, Users: []NamedUser{ { Name: "kind-kind", User: map[string]interface{}{ "client-certificate-data": "seemslegit", "client-key-data": "yep", }, }, }, CurrentContext: "kind-kind", OtherFields: map[string]interface{}{ "apiVersion": "v1", "kind": "Config", "preferences": map[string]interface{}{}, }, } cfg, err := KINDFromRawKubeadm(rawConfig, "kind", server) if err != nil { t.Fatalf("failed to decode kubeconfig: %v", err) } if !reflect.DeepEqual(cfg, expected) { t.Errorf("Read Config did not equal Expected") t.Errorf("Expected: %+v", expected) t.Errorf("Actual: %+v", cfg) t.Errorf("type: %s", reflect.TypeOf(cfg.OtherFields["preferences"])) } }) } kubernetes-sigs-kind-49aeee6/pkg/cluster/internal/kubeconfig/internal/kubeconfig/remove.go000066400000000000000000000051141524365506300322330ustar00rootroot00000000000000/* Copyright 2019 The Kubernetes Authors. 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 kubeconfig import ( "os" "sigs.k8s.io/kind/pkg/errors" ) // RemoveKIND removes the kind cluster kindClusterName from the KUBECONFIG // files at configPaths func RemoveKIND(kindClusterName string, explicitPath string) error { // remove kind from each if present for _, configPath := range paths(explicitPath, os.Getenv) { if err := func(configPath string) error { // lock before modifying if err := lockFile(configPath); err != nil { return errors.Wrap(err, "failed to lock config file") } defer func(configPath string) { _ = unlockFile(configPath) }(configPath) // read in existing existing, err := read(configPath) if err != nil { return errors.Wrap(err, "failed to read kubeconfig to remove KIND entry") } // remove the kind cluster from the config if remove(existing, kindClusterName) { // write out the updated config if we modified anything if err := write(existing, configPath); err != nil { return err } } return nil }(configPath); err != nil { return err } } return nil } // remove drops kindClusterName entries from the cfg func remove(cfg *Config, kindClusterName string) bool { mutated := false // get kind cluster identifier key := KINDClusterKey(kindClusterName) // filter out kind cluster from clusters kept := 0 for _, c := range cfg.Clusters { if c.Name != key { cfg.Clusters[kept] = c kept++ } else { mutated = true } } cfg.Clusters = cfg.Clusters[:kept] // filter out kind cluster from users kept = 0 for _, u := range cfg.Users { if u.Name != key { cfg.Users[kept] = u kept++ } else { mutated = true } } cfg.Users = cfg.Users[:kept] // filter out kind cluster from contexts kept = 0 for _, c := range cfg.Contexts { if c.Name != key { cfg.Contexts[kept] = c kept++ } else { mutated = true } } cfg.Contexts = cfg.Contexts[:kept] // unset current context if it points to this cluster if cfg.CurrentContext == key { cfg.CurrentContext = "" mutated = true } return mutated } kubernetes-sigs-kind-49aeee6/pkg/cluster/internal/kubeconfig/internal/kubeconfig/remove_test.go000066400000000000000000000145011524365506300332720ustar00rootroot00000000000000/* Copyright 2019 The Kubernetes Authors. 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 kubeconfig import ( "io" "os" "path/filepath" "testing" "sigs.k8s.io/kind/pkg/internal/assert" ) func TestRemove(t *testing.T) { t.Parallel() cases := []struct { Name string Existing *Config ClusterName string Expected *Config ExpectModified bool }{ { Name: "empty config", Existing: &Config{}, ClusterName: "foo", Expected: &Config{}, ExpectModified: false, }, { Name: "remove kind from only kind", Existing: &Config{ Clusters: []NamedCluster{ { Name: "kind-kind", }, }, Users: []NamedUser{ { Name: "kind-kind", }, }, Contexts: []NamedContext{ { Name: "kind-kind", }, }, }, ClusterName: "kind", Expected: &Config{ Clusters: []NamedCluster{}, Users: []NamedUser{}, Contexts: []NamedContext{}, }, ExpectModified: true, }, { Name: "remove kind, leave kops", Existing: &Config{ Clusters: []NamedCluster{ { Name: "kops-blah", Cluster: Cluster{ Server: "foo", }, }, { Name: "kind-kind", }, }, Users: []NamedUser{ { Name: "kops-blah", }, { Name: "kind-kind", }, }, Contexts: []NamedContext{ { Name: "kops-blah", }, { Name: "kind-kind", }, }, CurrentContext: "kind-kind", }, ClusterName: "kind", Expected: &Config{ Clusters: []NamedCluster{ { Name: "kops-blah", Cluster: Cluster{ Server: "foo", }, }, }, Users: []NamedUser{ { Name: "kops-blah", }, }, Contexts: []NamedContext{ { Name: "kops-blah", }, }, CurrentContext: "", }, ExpectModified: true, }, } for _, tc := range cases { tc := tc t.Run(tc.Name, func(t *testing.T) { t.Parallel() modified := remove(tc.Existing, tc.ClusterName) if modified != tc.ExpectModified { if tc.ExpectModified { t.Errorf("Expected config to be modified but got modified == false") } else { t.Errorf("Expected config to be modified but got modified == true") } } assert.DeepEqual(t, tc.Expected, tc.Existing) }) } } func TestRemoveKIND(t *testing.T) { t.Parallel() t.Run("only kind", testRemoveKINDTrivial) t.Run("leave another cluster", testRemoveKINDKeepOther) } func testRemoveKINDTrivial(t *testing.T) { t.Parallel() dir, err := os.MkdirTemp("", "kind-testremovekind") if err != nil { t.Fatalf("Failed to create tempdir: %d", err) } defer os.RemoveAll(dir) // create an existing kubeconfig const existingConfig = `clusters: - cluster: certificate-authority-data: definitelyacert server: https://192.168.9.4:6443 name: kind-foo contexts: - context: cluster: kind-foo user: kind-foo name: kind-foo current-context: kind-foo kind: Config apiVersion: v1 preferences: {} users: - name: kind-foo user: client-certificate-data: seemslegit client-key-data: yep ` existingConfigPath := filepath.Join(dir, "existing-kubeconfig") if err := os.WriteFile(existingConfigPath, []byte(existingConfig), os.ModePerm); err != nil { t.Fatalf("Failed to create existing kubeconfig: %d", err) } // ensure that we can write this merged config if err := RemoveKIND("foo", existingConfigPath); err != nil { t.Fatalf("Failed to remove kind from kubeconfig: %v", err) } // ensure the output matches expected f, err := os.Open(existingConfigPath) if err != nil { t.Fatalf("Failed to open merged kubeconfig: %v", err) } contents, err := io.ReadAll(f) if err != nil { t.Fatalf("Failed to read merged kubeconfig: %v", err) } expected := `apiVersion: v1 kind: Config preferences: {} ` assert.StringEqual(t, expected, string(contents)) } func testRemoveKINDKeepOther(t *testing.T) { // tests removing a kind cluster but keeping another cluster t.Parallel() dir, err := os.MkdirTemp("", "kind-testremovekind") if err != nil { t.Fatalf("Failed to create tempdir: %d", err) } defer os.RemoveAll(dir) // create an existing kubeconfig const existingConfig = `clusters: - cluster: certificate-authority-data: definitelyacert server: https://192.168.9.4:6443 name: kind-foo - cluster: certificate-authority-data: definitelyacert server: https://192.168.9.4:6443 name: kops-foo contexts: - context: cluster: kind-foo user: kind-foo name: kind-foo - context: cluster: kops-foo user: kops-foo name: kops-foo current-context: kops-foo kind: Config apiVersion: v1 preferences: {} users: - name: kind-foo user: client-certificate-data: seemslegit client-key-data: yep - name: kops-foo user: client-certificate-data: seemslegit client-key-data: yep ` existingConfigPath := filepath.Join(dir, "existing-kubeconfig") if err := os.WriteFile(existingConfigPath, []byte(existingConfig), os.ModePerm); err != nil { t.Fatalf("Failed to create existing kubeconfig: %d", err) } // ensure that we can write this merged config if err := RemoveKIND("foo", existingConfigPath); err != nil { t.Fatalf("Failed to remove kind from kubeconfig: %v", err) } // ensure the output matches expected f, err := os.Open(existingConfigPath) if err != nil { t.Fatalf("Failed to open merged kubeconfig: %v", err) } contents, err := io.ReadAll(f) if err != nil { t.Fatalf("Failed to read merged kubeconfig: %v", err) } expected := `apiVersion: v1 clusters: - cluster: certificate-authority-data: definitelyacert server: https://192.168.9.4:6443 name: kops-foo contexts: - context: cluster: kops-foo user: kops-foo name: kops-foo current-context: kops-foo kind: Config preferences: {} users: - name: kops-foo user: client-certificate-data: seemslegit client-key-data: yep ` assert.StringEqual(t, expected, string(contents)) } kubernetes-sigs-kind-49aeee6/pkg/cluster/internal/kubeconfig/internal/kubeconfig/types.go000066400000000000000000000067341524365506300321130ustar00rootroot00000000000000/* Copyright 2019 The Kubernetes Authors. 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 kubeconfig /* NOTE: all of these types are based on the upstream v1 types from client-go https://github.com/kubernetes/client-go/blob/0bdba2f9188006fc64057c2f6d82a0f9ee0ee422/tools/clientcmd/api/v1/types.go We've forked them to: - remove types and fields kind does not need to inspect / modify - generically support fields kind doesn't inspect / modify using yaml.v3 - have clearer names (AuthInfo -> User) */ // Config represents a KUBECONFIG, with the fields kind is likely to use // Other fields are handled as unstructured data purely read for writing back // to disk via the OtherFields field type Config struct { // Clusters is a map of referenceable names to cluster configs Clusters []NamedCluster `yaml:"clusters,omitempty"` // Users is a map of referenceable names to user configs Users []NamedUser `yaml:"users,omitempty"` // Contexts is a map of referenceable names to context configs Contexts []NamedContext `yaml:"contexts,omitempty"` // CurrentContext is the name of the context that you would like to use by default CurrentContext string `yaml:"current-context,omitempty"` // OtherFields contains fields kind does not inspect or modify, these are // read purely for writing back OtherFields map[string]interface{} `yaml:",inline,omitempty"` } // NamedCluster relates nicknames to cluster information type NamedCluster struct { // Name is the nickname for this Cluster Name string `yaml:"name"` // Cluster holds the cluster information Cluster Cluster `yaml:"cluster"` } // Cluster contains information about how to communicate with a kubernetes cluster type Cluster struct { // Server is the address of the kubernetes cluster (https://hostname:port). Server string `yaml:"server,omitempty"` // OtherFields contains fields kind does not inspect or modify, these are // read purely for writing back OtherFields map[string]interface{} `yaml:",inline,omitempty"` } // NamedUser relates nicknames to user information type NamedUser struct { // Name is the nickname for this User Name string `yaml:"name"` // User holds the user information // We do not touch this and merely write it back User map[string]interface{} `yaml:"user"` } // NamedContext relates nicknames to context information type NamedContext struct { // Name is the nickname for this Context Name string `yaml:"name"` // Context holds the context information Context Context `yaml:"context"` } // Context is a tuple of references to a cluster (how do I communicate with a kubernetes cluster), a user (how do I identify myself), and a namespace (what subset of resources do I want to work with) type Context struct { // Cluster is the name of the cluster for this context Cluster string `yaml:"cluster"` // User is the name of the User for this context User string `yaml:"user"` // OtherFields contains fields kind does not inspect or modify, these are // read purely for writing back OtherFields map[string]interface{} `yaml:",inline,omitempty"` } kubernetes-sigs-kind-49aeee6/pkg/cluster/internal/kubeconfig/internal/kubeconfig/write.go000066400000000000000000000023501524365506300320670ustar00rootroot00000000000000/* Copyright 2019 The Kubernetes Authors. 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 kubeconfig import ( "os" "path/filepath" "sigs.k8s.io/kind/pkg/errors" ) // write writes cfg to configPath // it will ensure the directories in the path if necessary func write(cfg *Config, configPath string) error { encoded, err := Encode(cfg) if err != nil { return err } // NOTE: 0755 / 0600 are to match client-go dir := filepath.Dir(configPath) if _, err := os.Stat(dir); os.IsNotExist(err) { if err = os.MkdirAll(dir, 0755); err != nil { return errors.Wrap(err, "failed to create directory for KUBECONFIG") } } if err := os.WriteFile(configPath, encoded, 0600); err != nil { return errors.Wrap(err, "failed to write KUBECONFIG") } return nil } kubernetes-sigs-kind-49aeee6/pkg/cluster/internal/kubeconfig/internal/kubeconfig/write_test.go000066400000000000000000000050621524365506300331310ustar00rootroot00000000000000/* Copyright 2019 The Kubernetes Authors. 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 kubeconfig import ( "io" "os" "path/filepath" "testing" "sigs.k8s.io/kind/pkg/internal/assert" ) func TestWrite(t *testing.T) { t.Parallel() t.Run("non-existent file", testWriteNoExistingFile) } func testWriteNoExistingFile(t *testing.T) { t.Parallel() dir, err := os.MkdirTemp("", "kind-testwritemerged") if err != nil { t.Fatalf("Failed to create tempdir: %d", err) } defer os.RemoveAll(dir) kindConfig := &Config{ Clusters: []NamedCluster{ { Name: "kind-kind", Cluster: Cluster{ Server: "https://127.0.0.1:6443", OtherFields: map[string]interface{}{ "certificate-authority-data": "definitelyacert", }, }, }, }, Contexts: []NamedContext{ { Name: "kind-kind", Context: Context{ User: "kind-kind", Cluster: "kind-kind", }, }, }, Users: []NamedUser{ { Name: "kind-kind", User: map[string]interface{}{ "client-certificate-data": "seemslegit", "client-key-data": "yep", }, }, }, CurrentContext: "kind-kind", OtherFields: map[string]interface{}{ "apiVersion": "v1", "kind": "Config", "preferences": map[string]interface{}{}, }, } nonExistentPath := filepath.Join(dir, "bogus", "extra-bogus") err = write(kindConfig, nonExistentPath) assert.ExpectError(t, false, err) // ensure the output matches expected f, err := os.Open(nonExistentPath) if err != nil { t.Fatalf("Failed to open merged kubeconfig: %v", err) } contents, err := io.ReadAll(f) if err != nil { t.Fatalf("Failed to read merged kubeconfig: %v", err) } expected := `apiVersion: v1 clusters: - cluster: certificate-authority-data: definitelyacert server: https://127.0.0.1:6443 name: kind-kind contexts: - context: cluster: kind-kind user: kind-kind name: kind-kind current-context: kind-kind kind: Config preferences: {} users: - name: kind-kind user: client-certificate-data: seemslegit client-key-data: yep ` assert.StringEqual(t, expected, string(contents)) } kubernetes-sigs-kind-49aeee6/pkg/cluster/internal/kubeconfig/kubeconfig.go000066400000000000000000000064661524365506300271350ustar00rootroot00000000000000/* Copyright 2019 The Kubernetes Authors. 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 kubeconfig provides utilities kind uses internally to manage // kind cluster kubeconfigs package kubeconfig import ( "bytes" "sigs.k8s.io/kind/pkg/cluster/nodeutils" "sigs.k8s.io/kind/pkg/errors" // this package has slightly more generic kubeconfig helpers // and minimal dependencies on the rest of kind "sigs.k8s.io/kind/pkg/cluster/internal/kubeconfig/internal/kubeconfig" "sigs.k8s.io/kind/pkg/cluster/internal/providers" ) // Export exports the kubeconfig given the cluster context and a path to write it to // This will always be an external kubeconfig func Export(p providers.Provider, name, explicitPath string, external bool) error { cfg, err := get(p, name, external) if err != nil { return err } return kubeconfig.WriteMerged(cfg, explicitPath) } // Remove removes clusterName from the kubeconfig paths detected based on // either explicitPath being set or $KUBECONFIG or $HOME/.kube/config, following // the rules set by kubectl // clusterName must identify a kind cluster. func Remove(clusterName, explicitPath string) error { return kubeconfig.RemoveKIND(clusterName, explicitPath) } // Get returns the kubeconfig for the cluster // external controls if the internal IP address is used or the host endpoint func Get(p providers.Provider, name string, external bool) (string, error) { cfg, err := get(p, name, external) if err != nil { return "", err } b, err := kubeconfig.Encode(cfg) if err != nil { return "", err } return string(b), err } // ContextForCluster returns the context name for a kind cluster based on // its name. This key is used for all list entries of kind clusters func ContextForCluster(kindClusterName string) string { return kubeconfig.KINDClusterKey(kindClusterName) } func get(p providers.Provider, name string, external bool) (*kubeconfig.Config, error) { // find a control plane node to get the kubeadm config from n, err := p.ListNodes(name) if err != nil { return nil, err } var buff bytes.Buffer nodes, err := nodeutils.ControlPlaneNodes(n) if err != nil { return nil, err } if len(nodes) < 1 { return nil, errors.Errorf("could not locate any control plane nodes for cluster named '%s'. "+ "Use the --name option to select a different cluster", name) } node := nodes[0] // grab kubeconfig version from the node if err := node.Command("cat", "/etc/kubernetes/admin.conf").SetStdout(&buff).Run(); err != nil { return nil, errors.Wrap(err, "failed to get cluster internal kubeconfig") } // if we're doing external we need to override the server endpoint server := "" if external { endpoint, err := p.GetAPIServerEndpoint(name) if err != nil { return nil, err } server = "https://" + endpoint } // actually encode return kubeconfig.KINDFromRawKubeadm(buff.String(), name, server) } kubernetes-sigs-kind-49aeee6/pkg/cluster/internal/loadbalancer/000077500000000000000000000000001524365506300247515ustar00rootroot00000000000000kubernetes-sigs-kind-49aeee6/pkg/cluster/internal/loadbalancer/config.go000066400000000000000000000127331524365506300265530ustar00rootroot00000000000000/* Copyright 2019 The Kubernetes Authors. 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 loadbalancer import ( "bytes" "fmt" "net" "text/template" "sigs.k8s.io/kind/pkg/errors" ) // ConfigData is supplied to the loadbalancer config template type ConfigData struct { ControlPlanePort int BackendServers map[string]string IPv6 bool } // DynamicFilesystemConfigTemplate holds the Envoy bootstrap configuration template // for file-based dynamic xDS (CDS and LDS). // https://www.envoyproxy.io/docs/envoy/latest/start/quick-start/configuration-dynamic-filesystem const DynamicFilesystemConfigTemplate = ` node: cluster: %s id: %s dynamic_resources: cds_config: resource_api_version: V3 path_config_source: path: %s lds_config: resource_api_version: V3 path_config_source: path: %s admin: access_log_path: /dev/stdout address: socket_address: address: 0.0.0.0 port_value: 10000 ` // keep in sync with dynamicFilesystemConfig const ( ProxyConfigPathCDS = "/home/envoy/cds.yaml" ProxyConfigPathLDS = "/home/envoy/lds.yaml" ProxyConfigPath = "/home/envoy/envoy.yaml" ProxyConfigDir = "/home/envoy" ) // ProxyLDSConfigTemplate is the loadbalancer config template for listeners const ProxyLDSConfigTemplate = ` resources: - "@type": type.googleapis.com/envoy.config.listener.v3.Listener name: listener_apiserver address: socket_address: address: {{ if .IPv6 }}"::"{{ else }}"0.0.0.0"{{ end }} port_value: {{ .ControlPlanePort }} filter_chains: - filters: - name: envoy.filters.network.tcp_proxy typed_config: "@type": type.googleapis.com/envoy.extensions.filters.network.tcp_proxy.v3.TcpProxy stat_prefix: ingress_tcp cluster: kube_apiservers ` // ProxyCDSConfigTemplate is the loadbalancer config template for clusters // https://www.envoyproxy.io/docs/envoy/latest/api-v3/config/core/v3/health_check.proto#envoy-v3-api-msg-config-core-v3-healthcheck-httphealthcheck const ProxyCDSConfigTemplate = ` resources: - "@type": type.googleapis.com/envoy.config.cluster.v3.Cluster name: kube_apiservers connect_timeout: 0.25s type: STRICT_DNS lb_policy: ROUND_ROBIN dns_lookup_family: {{ if $.IPv6 -}} AUTO {{- else -}} V4_PREFERRED {{- end }} health_checks: - timeout: 3s interval: 2s unhealthy_threshold: 2 healthy_threshold: 1 initial_jitter: 0s no_traffic_interval: 3s always_log_health_check_failures: true always_log_health_check_success: true event_log_path: /dev/stdout http_health_check: path: /healthz transport_socket_match_criteria: tls_mode: "true" transport_socket_matches: - name: "health_check_tls" match: tls_mode: "true" transport_socket: name: envoy.transport_sockets.tls typed_config: "@type": type.googleapis.com/envoy.extensions.transport_sockets.tls.v3.UpstreamTlsContext common_tls_context: validation_context: trust_chain_verification: ACCEPT_UNTRUSTED load_assignment: cluster_name: kube_apiservers endpoints: - lb_endpoints: {{- range $server, $address := .BackendServers }} {{- $hp := hostPort $address }} - endpoint: address: socket_address: address: {{ $hp.host }} port_value: {{ $hp.port }} {{- end }} ` func hostPort(addr string) (map[string]string, error) { host, port, err := net.SplitHostPort(addr) if err != nil { return nil, err } return map[string]string{"host": host, "port": port}, nil } // Config returns a kubeadm config generated from config data, in particular // the kubernetes version func Config(data *ConfigData, configTemplate string) (config string, err error) { funcs := template.FuncMap{ "hostPort": hostPort, } t, err := template.New("loadbalancer-config").Funcs(funcs).Parse(configTemplate) if err != nil { return "", errors.Wrap(err, "failed to parse config template") } // execute the template var buff bytes.Buffer err = t.Execute(&buff, data) if err != nil { return "", errors.Wrap(err, "error executing config template") } return buff.String(), nil } func GenerateBootstrapCommand(clusterName, containerName string) []string { // populate the values to dynamic template envoyConfig := fmt.Sprintf( DynamicFilesystemConfigTemplate, clusterName, // node.cluster = Kind cluster name containerName, // node.id = container name ProxyConfigPathCDS, ProxyConfigPathLDS, ) // Create dynamic Envoy config files with valid empty resources emptyConfig := "resources: []" return []string{"bash", "-c", fmt.Sprintf(`mkdir -p %s && echo -en '%s' > %s && { [ ! -f %s ] && echo -en '%s' > %s || true; } && { [ ! -f %s ] && echo -en '%s' > %s || true; } && while true; do envoy -c %s && break; sleep 1; done`, ProxyConfigDir, envoyConfig, ProxyConfigPath, ProxyConfigPathCDS, emptyConfig, ProxyConfigPathCDS, // Initialize CDS only if not exists ProxyConfigPathLDS, emptyConfig, ProxyConfigPathLDS, // Initialize LDS only if not exists ProxyConfigPath)} } kubernetes-sigs-kind-49aeee6/pkg/cluster/internal/loadbalancer/config_test.go000066400000000000000000000144051524365506300276100ustar00rootroot00000000000000/* Copyright The Kubernetes Authors. 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 loadbalancer import ( "strings" "testing" ) func TestConfig(t *testing.T) { t.Parallel() tests := []struct { name string data *ConfigData configTemplate string wantConfig string wantErrContains string }{ { name: "renders lds template", data: &ConfigData{ ControlPlanePort: 6443, BackendServers: map[string]string{ "node0": "node0:6443", }, IPv6: false, }, configTemplate: ProxyLDSConfigTemplate, wantConfig: "\n" + "resources:\n" + "- \"@type\": type.googleapis.com/envoy.config.listener.v3.Listener\n" + " name: listener_apiserver\n" + " address:\n" + " socket_address:\n" + " address: \"0.0.0.0\"\n" + " port_value: 6443\n" + " filter_chains:\n" + " - filters:\n" + " - name: envoy.filters.network.tcp_proxy\n" + " typed_config:\n" + " \"@type\": type.googleapis.com/envoy.extensions.filters.network.tcp_proxy.v3.TcpProxy\n" + " stat_prefix: ingress_tcp\n" + " cluster: kube_apiservers\n", }, { name: "renders cds template", data: &ConfigData{ BackendServers: map[string]string{ "node0": "node0:6443", }, IPv6: false, }, configTemplate: ProxyCDSConfigTemplate, wantConfig: "\n" + "resources:\n" + "- \"@type\": type.googleapis.com/envoy.config.cluster.v3.Cluster\n" + " name: kube_apiservers\n" + " connect_timeout: 0.25s\n" + " type: STRICT_DNS\n" + " lb_policy: ROUND_ROBIN\n" + " dns_lookup_family: V4_PREFERRED\n" + " health_checks:\n" + " - timeout: 3s\n" + " interval: 2s\n" + " unhealthy_threshold: 2\n" + " healthy_threshold: 1\n" + " initial_jitter: 0s\n" + " no_traffic_interval: 3s\n" + " always_log_health_check_failures: true\n" + " always_log_health_check_success: true\n" + " event_log_path: /dev/stdout\n" + " http_health_check:\n" + " path: /healthz\n" + " transport_socket_match_criteria:\n" + " tls_mode: \"true\"\n" + " transport_socket_matches:\n" + " - name: \"health_check_tls\"\n" + " match:\n" + " tls_mode: \"true\"\n" + " transport_socket:\n" + " name: envoy.transport_sockets.tls\n" + " typed_config:\n" + " \"@type\": type.googleapis.com/envoy.extensions.transport_sockets.tls.v3.UpstreamTlsContext\n" + " common_tls_context:\n" + " validation_context:\n" + " trust_chain_verification: ACCEPT_UNTRUSTED\n" + " load_assignment:\n" + " cluster_name: kube_apiservers\n" + " endpoints:\n" + " - lb_endpoints:\n" + " - endpoint:\n" + " address:\n" + " socket_address:\n" + " address: node0\n" + " port_value: 6443\n", }, { name: "renders cds template ipv6", data: &ConfigData{ BackendServers: map[string]string{ "node0": "node0:6443", }, IPv6: true, }, configTemplate: ProxyCDSConfigTemplate, wantConfig: "\n" + "resources:\n" + "- \"@type\": type.googleapis.com/envoy.config.cluster.v3.Cluster\n" + " name: kube_apiservers\n" + " connect_timeout: 0.25s\n" + " type: STRICT_DNS\n" + " lb_policy: ROUND_ROBIN\n" + " dns_lookup_family: AUTO\n" + " health_checks:\n" + " - timeout: 3s\n" + " interval: 2s\n" + " unhealthy_threshold: 2\n" + " healthy_threshold: 1\n" + " initial_jitter: 0s\n" + " no_traffic_interval: 3s\n" + " always_log_health_check_failures: true\n" + " always_log_health_check_success: true\n" + " event_log_path: /dev/stdout\n" + " http_health_check:\n" + " path: /healthz\n" + " transport_socket_match_criteria:\n" + " tls_mode: \"true\"\n" + " transport_socket_matches:\n" + " - name: \"health_check_tls\"\n" + " match:\n" + " tls_mode: \"true\"\n" + " transport_socket:\n" + " name: envoy.transport_sockets.tls\n" + " typed_config:\n" + " \"@type\": type.googleapis.com/envoy.extensions.transport_sockets.tls.v3.UpstreamTlsContext\n" + " common_tls_context:\n" + " validation_context:\n" + " trust_chain_verification: ACCEPT_UNTRUSTED\n" + " load_assignment:\n" + " cluster_name: kube_apiservers\n" + " endpoints:\n" + " - lb_endpoints:\n" + " - endpoint:\n" + " address:\n" + " socket_address:\n" + " address: node0\n" + " port_value: 6443\n", }, { name: "returns wrapped parse error", data: &ConfigData{}, configTemplate: `{{`, wantErrContains: "failed to parse config template", }, { name: "returns wrapped execute error from cds template hostPort", data: &ConfigData{ BackendServers: map[string]string{ "node0": "node0", }, }, configTemplate: ProxyCDSConfigTemplate, wantErrContains: "error executing config template", }, } for _, tt := range tests { tt := tt t.Run(tt.name, func(t *testing.T) { t.Parallel() got, err := Config(tt.data, tt.configTemplate) if tt.wantErrContains != "" { if err == nil { t.Fatalf("Config() error = nil, want error containing %q", tt.wantErrContains) } if !strings.Contains(err.Error(), tt.wantErrContains) { t.Fatalf("Config() error = %q, want to contain %q", err.Error(), tt.wantErrContains) } return } if err != nil { t.Fatalf("Config() unexpected error: %v", err) } if got != tt.wantConfig { t.Fatalf("Config() output mismatch\n got:\n%q\nwant:\n%q", got, tt.wantConfig) } }) } } kubernetes-sigs-kind-49aeee6/pkg/cluster/internal/loadbalancer/const.go000066400000000000000000000012601524365506300264250ustar00rootroot00000000000000/* Copyright 2019 The Kubernetes Authors. 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 loadbalancer // Image defines the loadbalancer image:tag const Image = "docker.io/envoyproxy/envoy:v1.36.2" kubernetes-sigs-kind-49aeee6/pkg/cluster/internal/loadbalancer/doc.go000066400000000000000000000012531524365506300260460ustar00rootroot00000000000000/* Copyright 2019 The Kubernetes Authors. 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 loadbalancer contains external loadbalancer related constants and configuration package loadbalancer kubernetes-sigs-kind-49aeee6/pkg/cluster/internal/logs/000077500000000000000000000000001524365506300233065ustar00rootroot00000000000000kubernetes-sigs-kind-49aeee6/pkg/cluster/internal/logs/doc.go000066400000000000000000000012041524365506300243770ustar00rootroot00000000000000/* Copyright 2018 The Kubernetes Authors. 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 logs contains tooling for obtaining cluster logs package logs kubernetes-sigs-kind-49aeee6/pkg/cluster/internal/logs/logs.go000066400000000000000000000055611524365506300246100ustar00rootroot00000000000000/* Copyright 2018 The Kubernetes Authors. 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 logs import ( "archive/tar" "fmt" "io" "os" "path" "path/filepath" "al.essio.dev/pkg/shellescape" "sigs.k8s.io/kind/pkg/cluster/nodes" "sigs.k8s.io/kind/pkg/errors" "sigs.k8s.io/kind/pkg/exec" "sigs.k8s.io/kind/pkg/log" ) // DumpDir dumps the dir nodeDir on the node to the dir hostDir on the host func DumpDir(logger log.Logger, node nodes.Node, nodeDir, hostDir string) (err error) { cmd := node.Command( "sh", "-c", // Tar will exit 1 if a file changed during the archival. // We don't care about this, so we're invoking it in a shell // And masking out 1 as a return value. // Fatal errors will return exit code 2. // http://man7.org/linux/man-pages/man1/tar.1.html#RETURN_VALUE fmt.Sprintf( `tar --hard-dereference -C %s -chf - . || (r=$?; [ $r -eq 1 ] || exit $r)`, shellescape.Quote(path.Clean(nodeDir)+"/"), ), ) return exec.RunWithStdoutReader(cmd, func(outReader io.Reader) error { if err := untar(logger, outReader, hostDir); err != nil { return errors.Wrapf(err, "Untarring %q: %v", nodeDir, err) } return nil }) } // untar reads the tar file from r and writes it into dir. func untar(logger log.Logger, r io.Reader, dir string) (err error) { tr := tar.NewReader(r) for { f, err := tr.Next() switch { case err == io.EOF: // drain the reader, which may have trailing null bytes // we don't want to leave the writer hanging _, err := io.Copy(io.Discard, r) return err case err != nil: return errors.Wrapf(err, "tar reading error: %v", err) case f == nil: continue } rel := filepath.FromSlash(f.Name) abs := filepath.Join(dir, rel) switch f.Typeflag { case tar.TypeReg: wf, err := os.OpenFile(abs, os.O_CREATE|os.O_RDWR, os.FileMode(f.Mode)) if err != nil { return err } n, err := io.Copy(wf, tr) if closeErr := wf.Close(); closeErr != nil && err == nil { err = closeErr } if err != nil { return errors.Errorf("error writing to %s: %v", abs, err) } if n != f.Size { return errors.Errorf("only wrote %d bytes to %s; expected %d", n, abs, f.Size) } case tar.TypeDir: if _, err := os.Stat(abs); err != nil { if err := os.MkdirAll(abs, 0755); err != nil { return err } } default: logger.Warnf("tar file entry %s contained unsupported file type %v", f.Name, f.Typeflag) } } } kubernetes-sigs-kind-49aeee6/pkg/cluster/internal/providers/000077500000000000000000000000001524365506300243575ustar00rootroot00000000000000kubernetes-sigs-kind-49aeee6/pkg/cluster/internal/providers/common/000077500000000000000000000000001524365506300256475ustar00rootroot00000000000000kubernetes-sigs-kind-49aeee6/pkg/cluster/internal/providers/common/cgroups.go000066400000000000000000000054651524365506300276720ustar00rootroot00000000000000/* Copyright 2021 The Kubernetes Authors. 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 common import ( "bufio" "context" "os" "regexp" "sync" "sigs.k8s.io/kind/pkg/errors" "sigs.k8s.io/kind/pkg/exec" ) var nodeReachedCgroupsReadyRegexp *regexp.Regexp var nodeReachedCgroupsReadyRegexpCompileOnce sync.Once // NodeReachedCgroupsReadyRegexp returns a regexp for use with WaitUntilLogRegexpMatches // // This is used to avoid "ERROR: this script needs /sys/fs/cgroup/cgroup.procs to be empty (for writing the top-level cgroup.subtree_control)" // See https://github.com/kubernetes-sigs/kind/issues/2409 // // This pattern matches either "detected cgroupv1" from the kind node image's entrypoint logs // or "Multi-User System" target if is using cgroups v2, // so that `docker exec` can be executed safely without breaking cgroup v2 hierarchy. func NodeReachedCgroupsReadyRegexp() *regexp.Regexp { nodeReachedCgroupsReadyRegexpCompileOnce.Do(func() { // This is an approximation, see: https://github.com/kubernetes-sigs/kind/pull/2421 nodeReachedCgroupsReadyRegexp = regexp.MustCompile("Reached target .*Multi-User System.*|detected cgroup v1") }) return nodeReachedCgroupsReadyRegexp } // WaitUntilLogRegexpMatches waits until logCmd output produces a line matching re. // It will use logCtx to determine if the logCmd deadline was exceeded for producing // the most useful error message in failure cases, logCtx should be the context // supplied to create logCmd with CommandContext func WaitUntilLogRegexpMatches(logCtx context.Context, logCmd exec.Cmd, re *regexp.Regexp) error { pr, pw, err := os.Pipe() if err != nil { return err } logCmd.SetStdout(pw) logCmd.SetStderr(pw) defer pr.Close() cmdErrC := make(chan error, 1) go func() { defer pw.Close() cmdErrC <- logCmd.Run() }() sc := bufio.NewScanner(pr) for sc.Scan() { line := sc.Text() if re.MatchString(line) { return nil } } // when we timeout the process will have been killed due to the timeout, which is not interesting // in other cases if the command errored this may be a useful error if ctxErr := logCtx.Err(); ctxErr != context.DeadlineExceeded { if cmdErr := <-cmdErrC; cmdErr != nil { return errors.Wrap(cmdErr, "failed to read logs") } } // otherwise generic error return errors.Errorf("could not find a log line that matches %q", re.String()) } kubernetes-sigs-kind-49aeee6/pkg/cluster/internal/providers/common/constants.go000066400000000000000000000013321524365506300302110ustar00rootroot00000000000000/* Copyright 2019 The Kubernetes Authors. 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 common // APIServerInternalPort defines the port where the control plane is listening // _inside_ the node network const APIServerInternalPort = 6443 kubernetes-sigs-kind-49aeee6/pkg/cluster/internal/providers/common/doc.go000066400000000000000000000012141524365506300267410ustar00rootroot00000000000000/* Copyright 2019 The Kubernetes Authors. 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 common contains common code for implementing providers package common kubernetes-sigs-kind-49aeee6/pkg/cluster/internal/providers/common/getport.go000066400000000000000000000032251524365506300276640ustar00rootroot00000000000000/* Copyright 2019 The Kubernetes Authors. 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 common import ( "net" ) // PortOrGetFreePort is a helper that either returns the provided port // if valid or returns a new free port on listenAddr and a cleanup function func PortOrGetFreePort(port int32, listenAddr string) (int32, func(), error) { // in the case of -1 we actually want to pass 0 to the backend to let it pick if port == -1 { return 0, nil, nil } // in the case of 0 (unset) we want kind to pick one and supply it to the backend if port == 0 { return GetFreePort(listenAddr) } // otherwise keep the port return port, nil, nil } // GetFreePort is a helper used to get a free TCP port on the host // returns the free port and a cleanup function, the cleanup function must be called // after all free ports have been determined to ensure the same port is not returned // multiple times func GetFreePort(listenAddr string) (int32, func(), error) { dummyListener, err := net.Listen("tcp", net.JoinHostPort(listenAddr, "0")) if err != nil { return 0, nil, err } port := dummyListener.Addr().(*net.TCPAddr).Port return int32(port), func() { dummyListener.Close() }, nil } kubernetes-sigs-kind-49aeee6/pkg/cluster/internal/providers/common/getport_test.go000066400000000000000000000045331524365506300307260ustar00rootroot00000000000000/* Copyright 2019 The Kubernetes Authors. 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 common import "testing" func TestPortOrGetFreePort(t *testing.T) { t.Parallel() tests := []struct { name string port int32 want int32 wantErr bool }{ { name: "Valid port", port: 80, want: 80, wantErr: false, }, { name: "No port", wantErr: false, }, } for _, tt := range tests { tt := tt t.Run(tt.name, func(t *testing.T) { t.Parallel() got, releaseHostPortFn, err := PortOrGetFreePort(tt.port, "localhost") if releaseHostPortFn != nil { releaseHostPortFn() } if (err != nil) != tt.wantErr { t.Errorf("PortOrGetFreePort() error = %v, wantErr %v", err, tt.wantErr) return } if tt.want != 0 && got != tt.want { t.Errorf("PortOrGetFreePort() = %v, want %v", got, tt.want) } }) } } func TestGetFreePort(t *testing.T) { tests := []struct { name string listenAddr string wantErr bool }{ { name: "listen on localhost", listenAddr: "localhost", wantErr: false, }, { name: "listen on IPv4 localhost address", listenAddr: "127.0.0.1", wantErr: false, }, { name: "listen on IPv4 non existent address", listenAddr: "88.88.88.0", wantErr: true, }, { name: "listen on IPv6 non existent address", listenAddr: "2112:beaf:beaf:2:3", wantErr: true, }, } for _, tt := range tests { tt := tt t.Run(tt.name, func(t *testing.T) { t.Parallel() got, releaseHostPortFn, err := GetFreePort(tt.listenAddr) if releaseHostPortFn != nil { releaseHostPortFn() } if (err != nil) != tt.wantErr { t.Errorf("GetFreePort() error = %v, wantErr %v", err, tt.wantErr) return } if got < 0 || got > 65535 && err != nil { t.Errorf("GetFreePort() = %v is not a valid port number ", got) } }) } } kubernetes-sigs-kind-49aeee6/pkg/cluster/internal/providers/common/images.go000066400000000000000000000020561524365506300274460ustar00rootroot00000000000000/* Copyright 2019 The Kubernetes Authors. 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 common import ( "sigs.k8s.io/kind/pkg/internal/apis/config" "sigs.k8s.io/kind/pkg/internal/sets" ) // RequiredNodeImages returns the set of _node_ images specified by the config // This does not include the loadbalancer image, and is only used to improve // the UX by explicit pulling the node images prior to running func RequiredNodeImages(cfg *config.Cluster) sets.String { images := sets.NewString() for _, node := range cfg.Nodes { images.Insert(node.Image) } return images } kubernetes-sigs-kind-49aeee6/pkg/cluster/internal/providers/common/images_test.go000066400000000000000000000032531524365506300305050ustar00rootroot00000000000000/* Copyright 2019 The Kubernetes Authors. 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 common import ( "reflect" "testing" "sigs.k8s.io/kind/pkg/internal/apis/config" "sigs.k8s.io/kind/pkg/internal/sets" ) func TestRequiredNodeImages(t *testing.T) { t.Parallel() tests := []struct { name string cluster *config.Cluster want sets.String }{ { name: "Cluster with different images", cluster: func() *config.Cluster { c := config.Cluster{} n, n2 := config.Node{}, config.Node{} n.Image = "node1" n2.Image = "node2" c.Nodes = []config.Node{n, n2} return &c }(), want: sets.NewString("node1", "node2"), }, { name: "Cluster with nodes with same image", cluster: func() *config.Cluster { c := config.Cluster{} n, n2 := config.Node{}, config.Node{} n.Image = "node1" n2.Image = "node1" c.Nodes = []config.Node{n, n2} return &c }(), want: sets.NewString("node1"), }, } for _, tt := range tests { tt := tt t.Run(tt.name, func(t *testing.T) { t.Parallel() if got := RequiredNodeImages(tt.cluster); !reflect.DeepEqual(got, tt.want) { t.Errorf("RequiredNodeImages() = %v, want %v", got, tt.want) } }) } } kubernetes-sigs-kind-49aeee6/pkg/cluster/internal/providers/common/logs.go000066400000000000000000000016421524365506300271450ustar00rootroot00000000000000/* Copyright The Kubernetes Authors. 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 common import ( "os" "path/filepath" ) // FileOnHost is a helper to create a file at path // even if the parent directory doesn't exist // in which case it will be created with ModePerm func FileOnHost(path string) (*os.File, error) { if err := os.MkdirAll(filepath.Dir(path), os.ModePerm); err != nil { return nil, err } return os.Create(path) } kubernetes-sigs-kind-49aeee6/pkg/cluster/internal/providers/common/namer.go000066400000000000000000000020501524365506300272750ustar00rootroot00000000000000/* Copyright 2019 The Kubernetes Authors. 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 common import ( "fmt" ) // MakeNodeNamer returns a func(role string)(nodeName string) // used to name nodes based on their role and the clusterName func MakeNodeNamer(clusterName string) func(string) string { counter := make(map[string]int) return func(role string) string { count := 1 suffix := "" if v, ok := counter[role]; ok { count += v suffix = fmt.Sprintf("%d", count) } counter[role] = count return fmt.Sprintf("%s-%s%s", clusterName, role, suffix) } } kubernetes-sigs-kind-49aeee6/pkg/cluster/internal/providers/common/namer_test.go000066400000000000000000000036371524365506300303500ustar00rootroot00000000000000/* Copyright 2019 The Kubernetes Authors. 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 common import ( "testing" "sigs.k8s.io/kind/pkg/internal/assert" ) func TestMakeNodeNamer(t *testing.T) { t.Parallel() cases := []struct { name string clusterName string nodes []string // list of role nodes that belong to the cluster want []string }{ { name: "Default cluster name one node", clusterName: "kind", nodes: []string{"control-plane"}, want: []string{"kind-control-plane"}, }, { name: "Cluster with 3 nodes", clusterName: "kind-test", nodes: []string{"control-plane", "worker", "worker"}, want: []string{"kind-test-control-plane", "kind-test-worker", "kind-test-worker2"}, }, { name: "Cluster with many nodes", clusterName: "ab1", nodes: []string{"control-plane", "control-plane", "control-plane", "external-load-balancer", "worker", "worker", "worker"}, want: []string{"ab1-control-plane", "ab1-control-plane2", "ab1-control-plane3", "ab1-external-load-balancer", "ab1-worker", "ab1-worker2", "ab1-worker3"}, }, } for _, tc := range cases { tc := tc t.Run(tc.name, func(t *testing.T) { t.Parallel() var names []string nodeNamer := MakeNodeNamer(tc.clusterName) for _, nodeRole := range tc.nodes { names = append(names, nodeNamer(nodeRole)) } assert.DeepEqual(t, tc.want, names) }) } } kubernetes-sigs-kind-49aeee6/pkg/cluster/internal/providers/common/proxy.go000066400000000000000000000034751524365506300273700ustar00rootroot00000000000000/* Copyright 2019 The Kubernetes Authors. 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 common import ( "os" "strings" "sigs.k8s.io/kind/pkg/internal/apis/config" ) const ( // HTTPProxy is the HTTP_PROXY environment variable key HTTPProxy = "HTTP_PROXY" // HTTPSProxy is the HTTPS_PROXY environment variable key HTTPSProxy = "HTTPS_PROXY" // NOProxy is the NO_PROXY environment variable key NOProxy = "NO_PROXY" ) // GetProxyEnvs returns a map of proxy environment variables to their values // If proxy settings are set, NO_PROXY is modified to include the cluster subnets func GetProxyEnvs(cfg *config.Cluster) map[string]string { return getProxyEnvs(cfg, os.Getenv) } func getProxyEnvs(cfg *config.Cluster, getEnv func(string) string) map[string]string { envs := make(map[string]string) for _, name := range []string{HTTPProxy, HTTPSProxy, NOProxy} { val := getEnv(name) if val == "" { val = getEnv(strings.ToLower(name)) } if val != "" { envs[name] = val envs[strings.ToLower(name)] = val } } // Specifically add the cluster subnets to NO_PROXY if we are using a proxy if len(envs) > 0 { noProxy := envs[NOProxy] if noProxy != "" { noProxy += "," } noProxy += cfg.Networking.ServiceSubnet + "," + cfg.Networking.PodSubnet envs[NOProxy] = noProxy envs[strings.ToLower(NOProxy)] = noProxy } return envs } kubernetes-sigs-kind-49aeee6/pkg/cluster/internal/providers/common/proxy_test.go000066400000000000000000000060251524365506300304210ustar00rootroot00000000000000/* Copyright 2019 The Kubernetes Authors. 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 common import ( "testing" "sigs.k8s.io/kind/pkg/internal/apis/config" "sigs.k8s.io/kind/pkg/internal/assert" ) func TestGetProxyEnvs(t *testing.T) { t.Parallel() // first test the public method cfg := &config.Cluster{} config.SetDefaultsCluster(cfg) envs := GetProxyEnvs(cfg) // GetProxyEnvs should always return a valid map if envs == nil { t.Errorf("GetProxyEnvs returned nil but should not") } // now test the internal one (with all of the logic) cases := []struct { name string cluster *config.Cluster env map[string]string want map[string]string }{ { name: "No environment variables", cluster: func() *config.Cluster { c := config.Cluster{} c.Networking.ServiceSubnet = "10.0.0.0/24" c.Networking.PodSubnet = "12.0.0.0/24" return &c }(), want: map[string]string{}, }, { name: "HTTP_PROXY environment variables", cluster: func() *config.Cluster { c := config.Cluster{} c.Networking.ServiceSubnet = "10.0.0.0/24" c.Networking.PodSubnet = "12.0.0.0/24" return &c }(), env: map[string]string{ "HTTP_PROXY": "5.5.5.5", }, want: map[string]string{"HTTP_PROXY": "5.5.5.5", "http_proxy": "5.5.5.5", "NO_PROXY": "10.0.0.0/24,12.0.0.0/24", "no_proxy": "10.0.0.0/24,12.0.0.0/24"}, }, { name: "HTTPS_PROXY environment variables", cluster: func() *config.Cluster { c := config.Cluster{} c.Networking.ServiceSubnet = "10.0.0.0/24" c.Networking.PodSubnet = "12.0.0.0/24" return &c }(), env: map[string]string{ "HTTPS_PROXY": "5.5.5.5", }, want: map[string]string{"HTTPS_PROXY": "5.5.5.5", "https_proxy": "5.5.5.5", "NO_PROXY": "10.0.0.0/24,12.0.0.0/24", "no_proxy": "10.0.0.0/24,12.0.0.0/24"}, }, { name: "NO_PROXY environment variables", cluster: func() *config.Cluster { c := config.Cluster{} c.Networking.ServiceSubnet = "10.0.0.0/24" c.Networking.PodSubnet = "12.0.0.0/24" return &c }(), env: map[string]string{ "HTTPS_PROXY": "5.5.5.5", "NO_PROXY": "8.8.8.8", }, want: map[string]string{"HTTPS_PROXY": "5.5.5.5", "https_proxy": "5.5.5.5", "NO_PROXY": "8.8.8.8,10.0.0.0/24,12.0.0.0/24", "no_proxy": "8.8.8.8,10.0.0.0/24,12.0.0.0/24"}, }, } for _, tc := range cases { tc := tc t.Run(tc.name, func(t *testing.T) { t.Parallel() result := getProxyEnvs(tc.cluster, func(e string) string { if tc.env == nil { return "" } return tc.env[e] }) assert.DeepEqual(t, tc.want, result) }) } } kubernetes-sigs-kind-49aeee6/pkg/cluster/internal/providers/docker/000077500000000000000000000000001524365506300256265ustar00rootroot00000000000000kubernetes-sigs-kind-49aeee6/pkg/cluster/internal/providers/docker/OWNERS000066400000000000000000000000371524365506300265660ustar00rootroot00000000000000labels: - area/provider/docker kubernetes-sigs-kind-49aeee6/pkg/cluster/internal/providers/docker/constants.go000066400000000000000000000016471524365506300302010ustar00rootroot00000000000000/* Copyright 2019 The Kubernetes Authors. 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 docker is the implementation for the docker kind provider. package docker // clusterLabelKey is applied to each "node" docker container for identification const clusterLabelKey = "io.x-k8s.kind.cluster" // nodeRoleLabelKey is applied to each "node" docker container for categorization // of nodes by role const nodeRoleLabelKey = "io.x-k8s.kind.role" kubernetes-sigs-kind-49aeee6/pkg/cluster/internal/providers/docker/images.go000066400000000000000000000060061524365506300274240ustar00rootroot00000000000000/* Copyright 2019 The Kubernetes Authors. 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 docker import ( "fmt" "strings" "time" "sigs.k8s.io/kind/pkg/errors" "sigs.k8s.io/kind/pkg/exec" "sigs.k8s.io/kind/pkg/log" "sigs.k8s.io/kind/pkg/cluster/internal/providers/common" "sigs.k8s.io/kind/pkg/internal/apis/config" "sigs.k8s.io/kind/pkg/internal/cli" ) // ensureNodeImages ensures that the node images used by the create // configuration are present func ensureNodeImages(logger log.Logger, status *cli.Status, cfg *config.Cluster) error { // pull each required image for _, image := range common.RequiredNodeImages(cfg).List() { // prints user friendly message friendlyImageName, image := sanitizeImage(image) status.Start(fmt.Sprintf("Ensuring node image (%s) 🖼ï¸�", friendlyImageName)) if _, err := pullIfNotPresent(logger, image, 4); err != nil { status.End(false) return err } } return nil } // pullIfNotPresent will pull an image if it is not present locally // retrying up to retries times // it returns true if it attempted to pull, and any errors from pulling func pullIfNotPresent(logger log.Logger, image string, retries int) (pulled bool, err error) { // TODO(bentheelder): switch most (all) of the logging here to debug level // once we have configurable log levels // if this did not return an error, then the image exists locally cmd := exec.Command("docker", "inspect", "--type=image", image) if err := cmd.Run(); err == nil { logger.V(1).Infof("Image: %s present locally", image) return false, nil } // otherwise try to pull it return true, pull(logger, image, retries) } // pull pulls an image, retrying up to retries times func pull(logger log.Logger, image string, retries int) error { logger.V(1).Infof("Pulling image: %s ...", image) err := exec.Command("docker", "pull", image).Run() // retry pulling up to retries times if necessary if err != nil { for i := 0; i < retries; i++ { time.Sleep(time.Second * time.Duration(i+1)) logger.V(1).Infof("Trying again to pull image: %q ... %v", image, err) // TODO(bentheelder): add some backoff / sleep? err = exec.Command("docker", "pull", image).Run() if err == nil { break } } } return errors.Wrapf(err, "failed to pull image %q", image) } // sanitizeImage is a helper to return human readable image name and // the docker pullable image name from the provided image func sanitizeImage(image string) (string, string) { if strings.Contains(image, "@sha256:") { return strings.Split(image, "@sha256:")[0], image } return image, image } kubernetes-sigs-kind-49aeee6/pkg/cluster/internal/providers/docker/network.go000066400000000000000000000246041524365506300276540ustar00rootroot00000000000000/* Copyright 2020 The Kubernetes Authors. 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 docker import ( "bytes" "crypto/sha1" "encoding/binary" "encoding/json" "fmt" "io" "net" "regexp" "sort" "strconv" "strings" "sigs.k8s.io/kind/pkg/errors" "sigs.k8s.io/kind/pkg/exec" ) // This may be overridden by KIND_EXPERIMENTAL_DOCKER_NETWORK env, // experimentally... // // By default currently picking a single network is equivalent to the previous // behavior *except* that we moved from the default bridge to a user defined // network because the default bridge is actually special versus any other // docker network and lacks the embedded DNS // // For now this also makes it easier for apps to join the same network, and // leaves users with complex networking desires to create and manage their own // networks. const fixedNetworkName = "kind" // ensureNetwork checks if docker network by name exists, if not it creates it func ensureNetwork(name string) error { // check if network exists already and remove any duplicate networks exists, err := removeDuplicateNetworks(name) if err != nil { return err } // network already exists, we're good // TODO: the network might already exist and not have ipv6 ... :| // discussion: https://github.com/kubernetes-sigs/kind/pull/1508#discussion_r414594198 if exists { return nil } // Generate unique subnet per network based on the name // obtained from the ULA fc00::/8 range // Use the MTU configured for the docker default network // Make N attempts with "probing" in case we happen to collide subnet := generateULASubnetFromName(name, 0) mtu := getDefaultNetworkMTU() err = createNetworkNoDuplicates(name, subnet, mtu) if err == nil { // Success! return nil } // On the first try check if ipv6 fails entirely on this machine // https://github.com/kubernetes-sigs/kind/issues/1544 // Otherwise if it's not a pool overlap error, fail // If it is, make more attempts below if isIPv6UnavailableError(err) { // only one attempt, IPAM is automatic in ipv4 only return createNetworkNoDuplicates(name, "", mtu) } if isPoolOverlapError(err) { // pool overlap suggests perhaps another process created the network // check if network exists already and remove any duplicate networks exists, err := checkIfNetworkExists(name) if err != nil { return err } if exists { return nil } // otherwise we'll start trying with different subnets } else { // unknown error ... return err } // keep trying for ipv6 subnets const maxAttempts = 5 for attempt := int32(1); attempt < maxAttempts; attempt++ { subnet := generateULASubnetFromName(name, attempt) err = createNetworkNoDuplicates(name, subnet, mtu) if err == nil { // success! return nil } if isPoolOverlapError(err) { // pool overlap suggests perhaps another process created the network // check if network exists already and remove any duplicate networks exists, err := checkIfNetworkExists(name) if err != nil { return err } if exists { return nil } // otherwise we'll try again continue } // unknown error ... return err } return errors.New("exhausted attempts trying to find a non-overlapping subnet") } func createNetworkNoDuplicates(name, ipv6Subnet string, mtu int) error { if err := createNetwork(name, ipv6Subnet, mtu); err != nil && !isNetworkAlreadyExistsError(err) { return err } _, err := removeDuplicateNetworks(name) return err } func removeDuplicateNetworks(name string) (bool, error) { networks, err := sortedNetworksWithName(name) if err != nil { return false, err } if len(networks) > 1 { if err := deleteNetworks(networks[1:]...); err != nil && !isOnlyErrorNoSuchNetwork(err) { return false, err } } return len(networks) > 0, nil } func createNetwork(name, ipv6Subnet string, mtu int) error { args := []string{"network", "create", "-d=bridge", "-o", "com.docker.network.bridge.enable_ip_masquerade=true", } if mtu > 0 { args = append(args, "-o", fmt.Sprintf("com.docker.network.driver.mtu=%d", mtu)) } if ipv6Subnet != "" { args = append(args, "--ipv6", "--subnet", ipv6Subnet) } args = append(args, name) return exec.Command("docker", args...).Run() } // getDefaultNetworkMTU obtains the MTU from the docker default network func getDefaultNetworkMTU() int { cmd := exec.Command("docker", "network", "inspect", "bridge", "-f", `{{ index .Options "com.docker.network.driver.mtu" }}`) lines, err := exec.OutputLines(cmd) if err != nil || len(lines) != 1 { return 0 } mtu, err := strconv.Atoi(lines[0]) if err != nil { return 0 } return mtu } func sortedNetworksWithName(name string) ([]string, error) { // query which networks exist with the name ids, err := networksWithName(name) if err != nil { return nil, err } // we can skip sorting if there are less than 2 if len(ids) < 2 { return ids, nil } // inspect them to get more detail for sorting networks, err := inspectNetworks(ids) if err != nil { return nil, err } // deterministically sort networks // NOTE: THIS PART IS IMPORTANT! sortNetworkInspectEntries(networks) // return network IDs sortedIDs := make([]string, 0, len(networks)) for i := range networks { sortedIDs = append(sortedIDs, networks[i].ID) } return sortedIDs, nil } func sortNetworkInspectEntries(networks []networkInspectEntry) { sort.Slice(networks, func(i, j int) bool { // we want networks with active containers first if len(networks[i].Containers) > len(networks[j].Containers) { return true } return networks[i].ID < networks[j].ID }) } func inspectNetworks(networkIDs []string) ([]networkInspectEntry, error) { inspectOut, err := exec.Output(exec.Command("docker", append([]string{"network", "inspect"}, networkIDs...)...)) // NOTE: the caller can detect if the network isn't present in the output anyhow // we don't want to fail on this here. if err != nil && !isOnlyErrorNoSuchNetwork(err) { return nil, err } // parse networks := []networkInspectEntry{} if err := json.Unmarshal(inspectOut, &networks); err != nil { return nil, errors.Wrap(err, "failed to decode networks list") } return networks, nil } type networkInspectEntry struct { ID string `json:"Id"` // NOTE: we don't care about the contents here but we need to parse // how many entries exist in the containers map Containers map[string]map[string]string `json:"Containers"` } // networksWithName returns a list of network IDs for networks with this name func networksWithName(name string) ([]string, error) { lsOut, err := exec.Output(exec.Command( "docker", "network", "ls", "--filter=name=^"+regexp.QuoteMeta(name)+"$", "--format={{.ID}}", // output as unambiguous IDs )) if err != nil { return nil, err } cleaned := strings.TrimSuffix(string(lsOut), "\n") if cleaned == "" { // avoid returning []string{""} return nil, nil } return strings.Split(cleaned, "\n"), nil } func checkIfNetworkExists(name string) (bool, error) { out, err := exec.Output(exec.Command( "docker", "network", "ls", "--filter=name=^"+regexp.QuoteMeta(name)+"$", "--format={{.Name}}", )) return strings.HasPrefix(string(out), name), err } func isIPv6UnavailableError(err error) bool { rerr := exec.RunErrorForError(err) if rerr == nil { return false } errorMessage := string(rerr.Output) // we get this error when ipv6 was disabled in docker const dockerIPV6DisabledError = "Error response from daemon: Cannot read IPv6 setup for bridge" // TODO: this is fragile, and only necessary due to docker enabling ipv6 by default // even on hosts that lack ip6tables setup. // Preferably users would either have ip6tables setup properly or else disable ipv6 in docker const dockerIPV6TablesError = "Error response from daemon: Failed to Setup IP tables: Unable to enable NAT rule: (iptables failed: ip6tables" // we get this error when ipv6 is missing in kernel const dockerIPV6PolicyError = "Error response from daemon: setting default policy to DROP in FORWARD chain failed: (iptables failed: ip6tables" return strings.HasPrefix(errorMessage, dockerIPV6DisabledError) || strings.HasPrefix(errorMessage, dockerIPV6TablesError) || strings.HasPrefix(errorMessage, dockerIPV6PolicyError) } func isPoolOverlapError(err error) bool { rerr := exec.RunErrorForError(err) return rerr != nil && strings.HasPrefix(string(rerr.Output), "Error response from daemon: Pool overlaps with other one on this address space") || strings.Contains(string(rerr.Output), "networks have overlapping") } func isNetworkAlreadyExistsError(err error) bool { rerr := exec.RunErrorForError(err) return rerr != nil && strings.HasPrefix(string(rerr.Output), "Error response from daemon: network with name") && strings.Contains(string(rerr.Output), "already exists") } // returns true if: // - err only contains no such network errors func isOnlyErrorNoSuchNetwork(err error) bool { rerr := exec.RunErrorForError(err) if rerr == nil { return false } // check all lines of output from errored command b := bytes.NewBuffer(rerr.Output) for { l, err := b.ReadBytes('\n') if err == io.EOF { break } else if err != nil { return false } // if the line begins with Error: No such network: it's fine s := string(l) if strings.HasPrefix(s, "Error: No such network:") { continue } // other errors are not fine if strings.HasPrefix(s, "Error: ") { return false } // other line contents should just be network references } return true } func deleteNetworks(networks ...string) error { return exec.Command("docker", append([]string{"network", "rm"}, networks...)...).Run() } // generateULASubnetFromName generate an IPv6 subnet based on the // name and Nth probing attempt func generateULASubnetFromName(name string, attempt int32) string { ip := make([]byte, 16) ip[0] = 0xfc ip[1] = 0x00 h := sha1.New() _, _ = h.Write([]byte(name)) _ = binary.Write(h, binary.LittleEndian, attempt) bs := h.Sum(nil) for i := 2; i < 8; i++ { ip[i] = bs[i] } subnet := &net.IPNet{ IP: net.IP(ip), Mask: net.CIDRMask(64, 128), } return subnet.String() } kubernetes-sigs-kind-49aeee6/pkg/cluster/internal/providers/docker/network_integration_test.go000066400000000000000000000037071524365506300333170ustar00rootroot00000000000000//go:build !nointegration // +build !nointegration /* Copyright 2020 The Kubernetes Authors. 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 docker import ( "fmt" "regexp" "testing" "sigs.k8s.io/kind/pkg/errors" "sigs.k8s.io/kind/pkg/exec" "sigs.k8s.io/kind/pkg/internal/integration" ) func TestIntegrationEnsureNetworkConcurrent(t *testing.T) { integration.MaybeSkip(t) testNetworkName := "integration-test-ensure-kind-network" // cleanup cleanup := func() { ids, _ := networksWithName(testNetworkName) if len(ids) > 0 { _ = deleteNetworks(ids...) } } cleanup() defer cleanup() // this is more than enough to trigger race conditions networkConcurrency := 10 // Create multiple networks concurrently errCh := make(chan error, networkConcurrency) for i := 0; i < networkConcurrency; i++ { go func() { errCh <- ensureNetwork(testNetworkName) }() } for i := 0; i < networkConcurrency; i++ { if err := <-errCh; err != nil { t.Errorf("error creating network: %v", err) rerr := exec.RunErrorForError(err) if rerr != nil { t.Errorf("%q", rerr.Output) } t.Errorf("%+v", errors.StackTrace(err)) } } cmd := exec.Command( "docker", "network", "ls", fmt.Sprintf("--filter=name=^%s$", regexp.QuoteMeta(testNetworkName)), "--format={{.Name}}", ) lines, err := exec.OutputLines(cmd) if err != nil { t.Errorf("obtaining the docker networks") } if len(lines) != 1 { t.Errorf("wrong number of networks created: %d", len(lines)) } } kubernetes-sigs-kind-49aeee6/pkg/cluster/internal/providers/docker/network_test.go000066400000000000000000000105111524365506300307030ustar00rootroot00000000000000/* Copyright 2020 The Kubernetes Authors. 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 docker import ( "fmt" "testing" "sigs.k8s.io/kind/pkg/internal/assert" ) func Test_generateULASubnetFromName(t *testing.T) { t.Parallel() cases := []struct { name string attempt int32 subnet string }{ { name: "kind", subnet: "fc00:f853:ccd:e793::/64", }, { name: "foo", attempt: 1, subnet: "fc00:8edf:7f02:ec8f::/64", }, { name: "foo", attempt: 2, subnet: "fc00:9968:306b:2c65::/64", }, { name: "kind2", subnet: "fc00:444c:147a:44ab::/64", }, { name: "kin", subnet: "fc00:fcd9:c2be:8e23::/64", }, { name: "mysupernetwork", subnet: "fc00:7ae1:1e0d:b4d4::/64", }, } for _, tc := range cases { tc := tc // capture variable t.Run(fmt.Sprintf("%s,%d", tc.name, tc.attempt), func(t *testing.T) { t.Parallel() subnet := generateULASubnetFromName(tc.name, tc.attempt) if subnet != tc.subnet { t.Errorf("Wrong subnet from %v: expected %v, received %v", tc.name, tc.subnet, subnet) } }) } } func Test_sortNetworkInspectEntries(t *testing.T) { cases := []struct { Name string Networks []networkInspectEntry Sorted []networkInspectEntry }{ { Name: "simple ID sort", Networks: []networkInspectEntry{ { ID: "dc7f897c237215c3b73d2c9ba1d4e116d872793a6c1c0e5bf083762998de8b4e", }, { ID: "1ed9912325a0d08594ee786de91ebd961e631643877b5ee58ec906b640813eae", }, }, Sorted: []networkInspectEntry{ { ID: "1ed9912325a0d08594ee786de91ebd961e631643877b5ee58ec906b640813eae", }, { ID: "dc7f897c237215c3b73d2c9ba1d4e116d872793a6c1c0e5bf083762998de8b4e", }, }, }, { Name: "containers attached sort", Networks: []networkInspectEntry{ { ID: "1ed9912325a0d08594ee786de91ebd961e631643877b5ee58ec906b640813eae", }, { ID: "dc7f897c237215c3b73d2c9ba1d4e116d872793a6c1c0e5bf083762998de8b4e", Containers: map[string]map[string]string{ "a37779e06f3b694eba491dd450aad18bbbaa0a0fce2952e7c9195ea45ae79d41": { "Name": "buildx_buildkit_kind-builder0", "EndpointID": "8f6411fb4360059b2f91028f91ef03130abc96d6381afc265ce53c9df89d5a3d", }, }, }, { ID: "f0445f08b9989921da00250d778975202267fbab364e5fbad0ceb6db24f3f91e", }, { ID: "128154205c7d88c7bb9c255d389bc9e222b58a48cf83619976e7665a48e79918", Containers: map[string]map[string]string{ "aad18bbbaa0a0fce2952e7c9195ea45ae79d41a37779e06f3b694eba491dd450": { "Name": "fakey-fake", "EndpointID": "f03130abc96d6381afc265ce53c9df89d5a3d8f6411fb4360059b2f91028f91e", }, }, }, }, Sorted: []networkInspectEntry{ { ID: "128154205c7d88c7bb9c255d389bc9e222b58a48cf83619976e7665a48e79918", Containers: map[string]map[string]string{ "aad18bbbaa0a0fce2952e7c9195ea45ae79d41a37779e06f3b694eba491dd450": { "Name": "fakey-fake", "EndpointID": "f03130abc96d6381afc265ce53c9df89d5a3d8f6411fb4360059b2f91028f91e", }, }, }, { ID: "dc7f897c237215c3b73d2c9ba1d4e116d872793a6c1c0e5bf083762998de8b4e", Containers: map[string]map[string]string{ "a37779e06f3b694eba491dd450aad18bbbaa0a0fce2952e7c9195ea45ae79d41": { "Name": "buildx_buildkit_kind-builder0", "EndpointID": "8f6411fb4360059b2f91028f91ef03130abc96d6381afc265ce53c9df89d5a3d", }, }, }, { ID: "1ed9912325a0d08594ee786de91ebd961e631643877b5ee58ec906b640813eae", }, { ID: "f0445f08b9989921da00250d778975202267fbab364e5fbad0ceb6db24f3f91e", }, }, }, } for _, tc := range cases { tc := tc t.Run(tc.Name, func(t *testing.T) { toSort := make([]networkInspectEntry, len(tc.Networks)) copy(toSort, tc.Networks) sortNetworkInspectEntries(toSort) assert.DeepEqual(t, tc.Sorted, toSort) }) } } kubernetes-sigs-kind-49aeee6/pkg/cluster/internal/providers/docker/node.go000066400000000000000000000077671524365506300271230ustar00rootroot00000000000000/* Copyright 2019 The Kubernetes Authors. 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 docker import ( "context" "fmt" "io" "strings" "sigs.k8s.io/kind/pkg/errors" "sigs.k8s.io/kind/pkg/exec" ) // nodes.Node implementation for the docker provider type node struct { name string } func (n *node) String() string { return n.name } func (n *node) Role() (string, error) { cmd := exec.Command("docker", "inspect", "--format", fmt.Sprintf(`{{ index .Config.Labels "%s"}}`, nodeRoleLabelKey), n.name, ) lines, err := exec.OutputLines(cmd) if err != nil { return "", errors.Wrap(err, "failed to get role for node") } if len(lines) != 1 { return "", errors.Errorf("failed to get role for node: output lines %d != 1", len(lines)) } return lines[0], nil } func (n *node) IP() (ipv4 string, ipv6 string, err error) { // retrieve the IP address of the node using docker inspect cmd := exec.Command("docker", "inspect", "-f", "{{range .NetworkSettings.Networks}}{{.IPAddress}},{{.GlobalIPv6Address}}{{end}}", n.name, // ... against the "node" container ) lines, err := exec.OutputLines(cmd) if err != nil { return "", "", errors.Wrap(err, "failed to get container details") } if len(lines) != 1 { return "", "", errors.Errorf("file should only be one line, got %d lines", len(lines)) } ips := strings.Split(lines[0], ",") if len(ips) != 2 { return "", "", errors.Errorf("container addresses should have 2 values, got %d values", len(ips)) } return ips[0], ips[1], nil } func (n *node) Command(command string, args ...string) exec.Cmd { return &nodeCmd{ nameOrID: n.name, command: command, args: args, } } func (n *node) CommandContext(ctx context.Context, command string, args ...string) exec.Cmd { return &nodeCmd{ nameOrID: n.name, command: command, args: args, ctx: ctx, } } // nodeCmd implements exec.Cmd for docker nodes type nodeCmd struct { nameOrID string // the container name or ID command string args []string env []string stdin io.Reader stdout io.Writer stderr io.Writer ctx context.Context } func (c *nodeCmd) Run() error { args := []string{ "exec", // run with privileges so we can remount etc.. // this might not make sense in the most general sense, but it is // important to many kind commands "--privileged", } if c.stdin != nil { args = append(args, "-i", // interactive so we can supply input ) } // set env for _, env := range c.env { args = append(args, "-e", env) } // specify the container and command, after this everything will be // args the command in the container rather than to docker args = append( args, c.nameOrID, // ... against the container c.command, // with the command specified ) args = append( args, // finally, with the caller args c.args..., ) var cmd exec.Cmd if c.ctx != nil { cmd = exec.CommandContext(c.ctx, "docker", args...) } else { cmd = exec.Command("docker", args...) } if c.stdin != nil { cmd.SetStdin(c.stdin) } if c.stderr != nil { cmd.SetStderr(c.stderr) } if c.stdout != nil { cmd.SetStdout(c.stdout) } return cmd.Run() } func (c *nodeCmd) SetEnv(env ...string) exec.Cmd { c.env = env return c } func (c *nodeCmd) SetStdin(r io.Reader) exec.Cmd { c.stdin = r return c } func (c *nodeCmd) SetStdout(w io.Writer) exec.Cmd { c.stdout = w return c } func (c *nodeCmd) SetStderr(w io.Writer) exec.Cmd { c.stderr = w return c } func (n *node) SerialLogs(w io.Writer) error { return exec.Command("docker", "logs", n.name).SetStdout(w).SetStderr(w).Run() } kubernetes-sigs-kind-49aeee6/pkg/cluster/internal/providers/docker/provider.go000066400000000000000000000231341524365506300300120ustar00rootroot00000000000000/* Copyright 2019 The Kubernetes Authors. 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 docker import ( "encoding/csv" "encoding/json" "fmt" "net" "os" "path/filepath" "strings" "sigs.k8s.io/kind/pkg/cluster/nodes" "sigs.k8s.io/kind/pkg/errors" "sigs.k8s.io/kind/pkg/exec" "sigs.k8s.io/kind/pkg/log" "sigs.k8s.io/kind/pkg/cluster/internal/providers" "sigs.k8s.io/kind/pkg/cluster/internal/providers/common" "sigs.k8s.io/kind/pkg/cluster/nodeutils" "sigs.k8s.io/kind/pkg/internal/apis/config" "sigs.k8s.io/kind/pkg/internal/cli" "sigs.k8s.io/kind/pkg/internal/sets" ) // NewProvider returns a new provider based on executing `docker ...` func NewProvider(logger log.Logger) providers.Provider { return &provider{ logger: logger, } } // Provider implements provider.Provider // see NewProvider type provider struct { logger log.Logger info *providers.ProviderInfo } // String implements fmt.Stringer // NOTE: the value of this should not currently be relied upon for anything! // This is only used for setting the Node's providerID func (p *provider) String() string { return "docker" } // Provision is part of the providers.Provider interface func (p *provider) Provision(status *cli.Status, cfg *config.Cluster) (err error) { // TODO: validate cfg // ensure node images are pulled before actually provisioning if err := ensureNodeImages(p.logger, status, cfg); err != nil { return err } // ensure the pre-requisite network exists networkName := fixedNetworkName if n := os.Getenv("KIND_EXPERIMENTAL_DOCKER_NETWORK"); n != "" { p.logger.Warn("WARNING: Overriding docker network due to KIND_EXPERIMENTAL_DOCKER_NETWORK") p.logger.Warn("WARNING: Here be dragons! This is not supported currently.") networkName = n } if err := ensureNetwork(networkName); err != nil { return errors.Wrap(err, "failed to ensure docker network") } // actually provision the cluster icons := strings.Repeat("📦 ", len(cfg.Nodes)) status.Start(fmt.Sprintf("Preparing nodes %s", icons)) defer func() { status.End(err == nil) }() // plan creating the containers createContainerFuncs, err := planCreation(cfg, networkName) if err != nil { return err } // actually create nodes return errors.UntilErrorConcurrent(createContainerFuncs) } // ListClusters is part of the providers.Provider interface func (p *provider) ListClusters() ([]string, error) { cmd := exec.Command("docker", "ps", "-a", // show stopped nodes // filter for nodes with the cluster label "--filter", "label="+clusterLabelKey, // format to include the cluster name "--format", fmt.Sprintf(`{{.Label "%s"}}`, clusterLabelKey), ) lines, err := exec.OutputLines(cmd) if err != nil { return nil, errors.Wrap(err, "failed to list clusters") } return sets.NewString(lines...).List(), nil } // ListNodes is part of the providers.Provider interface func (p *provider) ListNodes(cluster string) ([]nodes.Node, error) { cmd := exec.Command("docker", "ps", "-a", // show stopped nodes // filter for nodes with the cluster label "--filter", fmt.Sprintf("label=%s=%s", clusterLabelKey, cluster), // format to include the cluster name "--format", `{{.Names}}`, ) lines, err := exec.OutputLines(cmd) if err != nil { return nil, errors.Wrap(err, "failed to list nodes") } // convert names to node handles ret := make([]nodes.Node, 0, len(lines)) for _, name := range lines { ret = append(ret, p.node(name)) } return ret, nil } // DeleteNodes is part of the providers.Provider interface func (p *provider) DeleteNodes(n []nodes.Node) error { if len(n) == 0 { return nil } const command = "docker" args := make([]string, 0, len(n)+3) // allocate once args = append(args, "rm", "-f", // force the container to be delete now "-v", // delete volumes ) for _, node := range n { args = append(args, node.String()) } if err := exec.Command(command, args...).Run(); err != nil { return errors.Wrap(err, "failed to delete nodes") } return nil } // GetAPIServerEndpoint is part of the providers.Provider interface func (p *provider) GetAPIServerEndpoint(cluster string) (string, error) { // locate the node that hosts this allNodes, err := p.ListNodes(cluster) if err != nil { return "", errors.Wrap(err, "failed to list nodes") } n, err := nodeutils.APIServerEndpointNode(allNodes) if err != nil { return "", errors.Wrap(err, "failed to get api server endpoint") } // if the 'desktop.docker.io/ports//tcp' label is present, // defer to its value for the api server endpoint // // For example: // "Labels": { // "desktop.docker.io/ports/6443/tcp": "10.0.1.7:6443", // } cmd := exec.Command( "docker", "inspect", "--format", fmt.Sprintf( "{{ index .Config.Labels \"desktop.docker.io/ports/%d/tcp\" }}", common.APIServerInternalPort, ), n.String(), ) lines, err := exec.OutputLines(cmd) if err != nil { return "", errors.Wrap(err, "failed to get api server port") } if len(lines) == 1 && lines[0] != "" { return lines[0], nil } // else, retrieve the specific port mapping via NetworkSettings.Ports cmd = exec.Command( "docker", "inspect", "--format", fmt.Sprintf( "{{ with (index (index .NetworkSettings.Ports \"%d/tcp\") 0) }}{{ printf \"%%s\t%%s\" .HostIp .HostPort }}{{ end }}", common.APIServerInternalPort, ), n.String(), ) lines, err = exec.OutputLines(cmd) if err != nil { return "", errors.Wrap(err, "failed to get api server port") } if len(lines) != 1 { return "", errors.Errorf("network details should only be one line, got %d lines", len(lines)) } parts := strings.Split(lines[0], "\t") if len(parts) != 2 { return "", errors.Errorf("network details should only be two parts, got %d", len(parts)) } // join host and port return net.JoinHostPort(parts[0], parts[1]), nil } // GetAPIServerInternalEndpoint is part of the providers.Provider interface func (p *provider) GetAPIServerInternalEndpoint(cluster string) (string, error) { // locate the node that hosts this allNodes, err := p.ListNodes(cluster) if err != nil { return "", errors.Wrap(err, "failed to list nodes") } n, err := nodeutils.APIServerEndpointNode(allNodes) if err != nil { return "", errors.Wrap(err, "failed to get api server endpoint") } // NOTE: we're using the nodes's hostnames which are their names return net.JoinHostPort(n.String(), fmt.Sprintf("%d", common.APIServerInternalPort)), nil } // node returns a new node handle for this provider func (p *provider) node(name string) nodes.Node { return &node{ name: name, } } // CollectLogs will populate dir with cluster logs and other debug files func (p *provider) CollectLogs(dir string, nodes []nodes.Node) error { execToPathFn := func(cmd exec.Cmd, path string) func() error { return func() error { f, err := common.FileOnHost(path) if err != nil { return err } defer f.Close() return cmd.SetStdout(f).SetStderr(f).Run() } } // construct a slice of methods to collect logs fns := []func() error{ // record info about the host docker execToPathFn( exec.Command("docker", "info"), filepath.Join(dir, "docker-info.txt"), ), } // inspect each node for _, n := range nodes { node := n // https://golang.org/doc/faq#closures_and_goroutines name := node.String() path := filepath.Join(dir, name) fns = append(fns, execToPathFn(exec.Command("docker", "inspect", name), filepath.Join(path, "inspect.json")), ) } // run and collect up all errors return errors.AggregateConcurrent(fns) } // Info returns the provider info. // The info is cached on the first time of the execution. func (p *provider) Info() (*providers.ProviderInfo, error) { var err error if p.info == nil { p.info, err = info() } return p.info, err } // dockerInfo corresponds to `docker info --format '{{json .}}'` type dockerInfo struct { CgroupDriver string `json:"CgroupDriver"` // "systemd", "cgroupfs", "none" CgroupVersion string `json:"CgroupVersion"` // e.g. "2" MemoryLimit bool `json:"MemoryLimit"` PidsLimit bool `json:"PidsLimit"` CPUShares bool `json:"CPUShares"` SecurityOptions []string `json:"SecurityOptions"` } func info() (*providers.ProviderInfo, error) { cmd := exec.Command("docker", "info", "--format", "{{json .}}") out, err := exec.Output(cmd) if err != nil { return nil, errors.Wrap(err, "failed to get docker info") } var dInfo dockerInfo if err := json.Unmarshal(out, &dInfo); err != nil { return nil, err } info := providers.ProviderInfo{ Cgroup2: dInfo.CgroupVersion == "2", } // When CgroupDriver == "none", the MemoryLimit/PidsLimit/CPUShares // values are meaningless and need to be considered false. // https://github.com/moby/moby/issues/42151 if dInfo.CgroupDriver != "none" { info.SupportsMemoryLimit = dInfo.MemoryLimit info.SupportsPidsLimit = dInfo.PidsLimit info.SupportsCPUShares = dInfo.CPUShares } for _, o := range dInfo.SecurityOptions { // o is like "name=seccomp,profile=default", or "name=rootless", csvReader := csv.NewReader(strings.NewReader(o)) sliceSlice, err := csvReader.ReadAll() if err != nil { return nil, err } for _, f := range sliceSlice { for _, ff := range f { if ff == "name=rootless" { info.Rootless = true } } } } return &info, nil } kubernetes-sigs-kind-49aeee6/pkg/cluster/internal/providers/docker/provision.go000066400000000000000000000400601524365506300302050ustar00rootroot00000000000000/* Copyright 2019 The Kubernetes Authors. 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 docker import ( "context" "fmt" "net" "os" "path/filepath" "strings" "time" "sigs.k8s.io/kind/pkg/cluster/constants" "sigs.k8s.io/kind/pkg/errors" "sigs.k8s.io/kind/pkg/exec" "sigs.k8s.io/kind/pkg/fs" "sigs.k8s.io/kind/pkg/cluster/internal/loadbalancer" "sigs.k8s.io/kind/pkg/cluster/internal/providers/common" "sigs.k8s.io/kind/pkg/internal/apis/config" ) // planCreation creates a slice of funcs that will create the containers func planCreation(cfg *config.Cluster, networkName string) (createContainerFuncs []func() error, err error) { // we need to know all the names for NO_PROXY // compute the names first before any actual node details nodeNamer := common.MakeNodeNamer(cfg.Name) names := make([]string, len(cfg.Nodes)) for i, node := range cfg.Nodes { name := nodeNamer(string(node.Role)) // name the node names[i] = name } haveLoadbalancer := config.ClusterHasImplicitLoadBalancer(cfg) if haveLoadbalancer { names = append(names, nodeNamer(constants.ExternalLoadBalancerNodeRoleValue)) } // these apply to all container creation genericArgs, err := commonArgs(cfg.Name, cfg, networkName, names) if err != nil { return nil, err } // only the external LB should reflect the port if we have multiple control planes apiServerPort := cfg.Networking.APIServerPort apiServerAddress := cfg.Networking.APIServerAddress if haveLoadbalancer { // TODO: picking ports locally is less than ideal with remote docker // but this is supposed to be an implementation detail and NOT picking // them breaks host reboot ... // For now remote docker + multi control plane is not supported apiServerPort = 0 // replaced with random ports apiServerAddress = "127.0.0.1" // only the LB needs to be non-local // only for IPv6 only clusters if cfg.Networking.IPFamily == config.IPv6Family { apiServerAddress = "::1" // only the LB needs to be non-local } // plan loadbalancer node name := names[len(names)-1] createContainerFuncs = append(createContainerFuncs, func() error { args, err := runArgsForLoadBalancer(cfg, name, genericArgs) if err != nil { return err } return createContainer(name, args) }) } // plan normal nodes for i, node := range cfg.Nodes { node := node.DeepCopy() // copy so we can modify name := names[i] // fixup relative paths, docker can only handle absolute paths for m := range node.ExtraMounts { hostPath := node.ExtraMounts[m].HostPath if !fs.IsAbs(hostPath) { absHostPath, err := filepath.Abs(hostPath) if err != nil { return nil, errors.Wrapf(err, "unable to resolve absolute path for hostPath: %q", hostPath) } node.ExtraMounts[m].HostPath = absHostPath } } // plan actual creation based on role switch node.Role { case config.ControlPlaneRole: createContainerFuncs = append(createContainerFuncs, func() error { node.ExtraPortMappings = append(node.ExtraPortMappings, config.PortMapping{ ListenAddress: apiServerAddress, HostPort: apiServerPort, ContainerPort: common.APIServerInternalPort, }, ) args, err := runArgsForNode(node, cfg.Networking.IPFamily, name, genericArgs) if err != nil { return err } return createContainerWithWaitUntilSystemdReachesMultiUserSystem(name, args) }) case config.WorkerRole: createContainerFuncs = append(createContainerFuncs, func() error { args, err := runArgsForNode(node, cfg.Networking.IPFamily, name, genericArgs) if err != nil { return err } return createContainerWithWaitUntilSystemdReachesMultiUserSystem(name, args) }) default: return nil, errors.Errorf("unknown node role: %q", node.Role) } } return createContainerFuncs, nil } // commonArgs computes static arguments that apply to all containers func commonArgs(cluster string, cfg *config.Cluster, networkName string, nodeNames []string) ([]string, error) { // standard arguments all nodes containers need, computed once args := []string{ "--detach", // run the container detached "--tty", // allocate a tty for entrypoint logs // label the node with the cluster ID "--label", fmt.Sprintf("%s=%s", clusterLabelKey, cluster), // user a user defined docker network so we get embedded DNS "--net", networkName, // Docker supports the following restart modes: // - no // - on-failure[:max-retries] // - unless-stopped // - always // https://docs.docker.com/engine/reference/commandline/run/#restart-policies---restart // // What we desire is: // - restart on host / dockerd reboot // - don't restart for any other reason // // This means: // - no is out of the question ... it never restarts // - always is a poor choice, we'll keep trying to restart nodes that were // never going to work // - unless-stopped will also retry failures indefinitely, similar to always // except that it won't restart when the container is `docker stop`ed // - on-failure is not great, we're only interested in restarting on // reboots, not failures. *however* we can limit the number of retries // *and* it forgets all state on dockerd restart and retries anyhow. // - on-failure:0 is what we want .. restart on failures, except max // retries is 0, so only restart on reboots. // however this _actually_ means the same thing as always // so the closest thing is on-failure:1, which will retry *once* "--restart=on-failure:1", // this can be enabled by default in docker daemon.json, so we explicitly // disable it, we want our entrypoint to be PID1, not docker-init / tini "--init=false", // note: requires API v1.41+ from Dec 2020 in Docker 20.10.0 // this is the default with cgroups v2 but not with cgroups v1, unless // overridden in the daemon --default-cgroupns-mode // https://github.com/docker/cli/pull/3699#issuecomment-1191675788 "--cgroupns=private", } // enable IPv6 if necessary if config.ClusterHasIPv6(cfg) { args = append(args, "--sysctl=net.ipv6.conf.all.disable_ipv6=0", "--sysctl=net.ipv6.conf.all.forwarding=1") } // pass proxy environment variables proxyEnv, err := getProxyEnv(cfg, networkName, nodeNames) if err != nil { return nil, errors.Wrap(err, "proxy setup error") } for key, val := range proxyEnv { args = append(args, "-e", fmt.Sprintf("%s=%s", key, val)) } // handle hosts that have user namespace remapping enabled if usernsRemap() { args = append(args, "--userns=host") } // handle Docker on Btrfs or ZFS // https://github.com/kubernetes-sigs/kind/issues/1416#issuecomment-606514724 if mountDevMapper() { args = append(args, "--volume", "/dev/mapper:/dev/mapper") } // enable /dev/fuse explicitly for fuse-overlayfs // (Rootless Docker does not automatically mount /dev/fuse with --privileged) if mountFuse() { args = append(args, "--device", "/dev/fuse") } if cfg.Networking.DNSSearch != nil { args = append(args, "-e", "KIND_DNS_SEARCH="+strings.Join(*cfg.Networking.DNSSearch, " ")) } return args, nil } func runArgsForNode(node *config.Node, clusterIPFamily config.ClusterIPFamily, name string, args []string) ([]string, error) { args = append([]string{ "--hostname", name, // make hostname match container name // label the node with the role ID "--label", fmt.Sprintf("%s=%s", nodeRoleLabelKey, node.Role), // running containers in a container requires privileged // NOTE: we could try to replicate this with --cap-add, and use less // privileges, but this flag also changes some mounts that are necessary // including some ones docker would otherwise do by default. // for now this is what we want. in the future we may revisit this. "--privileged", "--security-opt", "seccomp=unconfined", // also ignore seccomp "--security-opt", "apparmor=unconfined", // also ignore apparmor // runtime temporary storage "--tmpfs", "/tmp", // various things depend on working /tmp "--tmpfs", "/run", // systemd wants a writable /run // runtime persistent storage // this ensures that E.G. pods, logs etc. are not on the container // filesystem, which is not only better for performance, but allows // running kind in kind for "party tricks" // (please don't depend on doing this though!) "--volume", "/var", // some k8s things want to read /lib/modules "--volume", "/lib/modules:/lib/modules:ro", // propagate KIND_EXPERIMENTAL_CONTAINERD_SNAPSHOTTER to the entrypoint script "-e", "KIND_EXPERIMENTAL_CONTAINERD_SNAPSHOTTER", }, args..., ) // convert mounts and port mappings to container run args args = append(args, generateMountBindings(node.ExtraMounts...)...) mappingArgs, err := generatePortMappings(clusterIPFamily, node.ExtraPortMappings...) if err != nil { return nil, err } args = append(args, mappingArgs...) switch node.Role { case config.ControlPlaneRole: args = append(args, "-e", "KUBECONFIG=/etc/kubernetes/admin.conf") } // finally, specify the image to run return append(args, node.Image), nil } func runArgsForLoadBalancer(cfg *config.Cluster, name string, args []string) ([]string, error) { args = append([]string{ "--hostname", name, // make hostname match container name // label the node with the role ID "--label", fmt.Sprintf("%s=%s", nodeRoleLabelKey, constants.ExternalLoadBalancerNodeRoleValue), }, args..., ) // load balancer port mapping mappingArgs, err := generatePortMappings(cfg.Networking.IPFamily, config.PortMapping{ ListenAddress: cfg.Networking.APIServerAddress, HostPort: cfg.Networking.APIServerPort, ContainerPort: common.APIServerInternalPort, }, ) if err != nil { return nil, err } args = append(args, mappingArgs...) // finally, specify the image to run args = append(args, loadbalancer.Image) args = append(args, loadbalancer.GenerateBootstrapCommand(cfg.Name, name)...) return args, nil } func getProxyEnv(cfg *config.Cluster, networkName string, nodeNames []string) (map[string]string, error) { envs := common.GetProxyEnvs(cfg) if !kindProxyEnvOverridesDockerConfig(os.Getenv) { envs = mergeProxyEnvWithDockerConfig(cfg, envs, dockerConfigProxyEnvs(os.Getenv, os.ReadFile, inspectDockerContextHost)) } // Specifically add the docker network subnets to NO_PROXY if we are using a proxy if len(envs) > 0 { subnets, err := getSubnets(networkName) if err != nil { return nil, err } noProxyList := append(subnets, envs[common.NOProxy]) noProxyList = append(noProxyList, nodeNames...) // Add pod and service dns names to no_proxy to allow in cluster // Note: this is best effort based on the default CoreDNS spec // https://github.com/kubernetes/dns/blob/master/docs/specification.md // Any user created pod/service hostnames, namespaces, custom DNS services // are expected to be no-proxied by the user explicitly. noProxyList = append(noProxyList, ".svc", ".svc.cluster", ".svc.cluster.local") noProxyJoined := strings.Join(noProxyList, ",") envs[common.NOProxy] = noProxyJoined envs[strings.ToLower(common.NOProxy)] = noProxyJoined } return envs, nil } func mergeProxyEnvWithDockerConfig(cfg *config.Cluster, envs, dockerEnv map[string]string) map[string]string { if len(envs) == 0 && len(dockerEnv) > 0 { envs = dockerEnv noProxy := envs[common.NOProxy] if noProxy != "" { noProxy += "," } noProxy += cfg.Networking.ServiceSubnet + "," + cfg.Networking.PodSubnet envs[common.NOProxy] = noProxy envs[strings.ToLower(common.NOProxy)] = noProxy return envs } for _, name := range []string{common.HTTPProxy, common.HTTPSProxy, common.NOProxy} { if envs[name] == "" && dockerEnv[name] != "" { envs[name] = dockerEnv[name] envs[strings.ToLower(name)] = dockerEnv[name] } } return envs } func getSubnets(networkName string) ([]string, error) { format := `{{range (index (index . "IPAM") "Config")}}{{index . "Subnet"}} {{end}}` cmd := exec.Command("docker", "network", "inspect", "-f", format, networkName) lines, err := exec.OutputLines(cmd) if err != nil { return nil, errors.Wrap(err, "failed to get subnets") } return strings.Split(strings.TrimSpace(lines[0]), " "), nil } // generateMountBindings converts the mount list to a list of args for docker // ':[:options]', where 'options' // is a comma-separated list of the following strings: // 'ro', if the path is read only // 'Z', if the volume requires SELinux relabeling func generateMountBindings(mounts ...config.Mount) []string { args := make([]string, 0, len(mounts)) for _, m := range mounts { bind := fmt.Sprintf("%s:%s", m.HostPath, m.ContainerPath) var attrs []string if m.Readonly { attrs = append(attrs, "ro") } // Only request relabeling if the pod provides an SELinux context. If the pod // does not provide an SELinux context relabeling will label the volume with // the container's randomly allocated MCS label. This would restrict access // to the volume to the container which mounts it first. if m.SelinuxRelabel { attrs = append(attrs, "Z") } switch m.Propagation { case config.MountPropagationNone: // noop, private is default case config.MountPropagationBidirectional: attrs = append(attrs, "rshared") case config.MountPropagationHostToContainer: attrs = append(attrs, "rslave") default: // Falls back to "private" } if len(attrs) > 0 { bind = fmt.Sprintf("%s:%s", bind, strings.Join(attrs, ",")) } args = append(args, fmt.Sprintf("--volume=%s", bind)) } return args } // generatePortMappings converts the portMappings list to a list of args for docker func generatePortMappings(clusterIPFamily config.ClusterIPFamily, portMappings ...config.PortMapping) ([]string, error) { args := make([]string, 0, len(portMappings)) for _, pm := range portMappings { // do provider internal defaulting // in a future API revision we will handle this at the API level and remove this if pm.ListenAddress == "" { switch clusterIPFamily { case config.IPv4Family, config.DualStackFamily: pm.ListenAddress = "0.0.0.0" // this is the docker default anyhow case config.IPv6Family: pm.ListenAddress = "::" default: return nil, errors.Errorf("unknown cluster IP family: %v", clusterIPFamily) } } if string(pm.Protocol) == "" { pm.Protocol = config.PortMappingProtocolTCP // TCP is the default } // validate that the provider can handle this binding switch pm.Protocol { case config.PortMappingProtocolTCP: case config.PortMappingProtocolUDP: case config.PortMappingProtocolSCTP: default: return nil, errors.Errorf("unknown port mapping protocol: %v", pm.Protocol) } // get a random port if necessary (port = 0) hostPort, releaseHostPortFn, err := common.PortOrGetFreePort(pm.HostPort, pm.ListenAddress) if err != nil { return nil, errors.Wrap(err, "failed to get random host port for port mapping") } if releaseHostPortFn != nil { defer releaseHostPortFn() } // generate the actual mapping arg protocol := string(pm.Protocol) hostPortBinding := net.JoinHostPort(pm.ListenAddress, fmt.Sprintf("%d", hostPort)) args = append(args, fmt.Sprintf("--publish=%s:%d/%s", hostPortBinding, pm.ContainerPort, protocol)) } return args, nil } func createContainer(name string, args []string) error { return exec.Command("docker", append([]string{"run", "--name", name}, args...)...).Run() } func createContainerWithWaitUntilSystemdReachesMultiUserSystem(name string, args []string) error { if err := exec.Command("docker", append([]string{"run", "--name", name}, args...)...).Run(); err != nil { return err } logCtx, logCancel := context.WithTimeout(context.Background(), 30*time.Second) logCmd := exec.CommandContext(logCtx, "docker", "logs", "-f", name) defer logCancel() return common.WaitUntilLogRegexpMatches(logCtx, logCmd, common.NodeReachedCgroupsReadyRegexp()) } kubernetes-sigs-kind-49aeee6/pkg/cluster/internal/providers/docker/proxyconfig.go000066400000000000000000000103041524365506300305220ustar00rootroot00000000000000/* Copyright The Kubernetes Authors. 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 docker import ( "encoding/json" "path/filepath" "strings" "sigs.k8s.io/kind/pkg/cluster/internal/providers/common" "sigs.k8s.io/kind/pkg/exec" ) const ( dockerConfigEnv = "DOCKER_CONFIG" dockerContextEnv = "DOCKER_CONTEXT" dockerHostEnv = "DOCKER_HOST" ) type dockerConfigFile struct { CurrentContext string `json:"currentContext"` Proxies map[string]dockerProxyConfig `json:"proxies"` } type dockerProxyConfig struct { HTTPProxy string `json:"httpProxy"` HTTPSProxy string `json:"httpsProxy"` NOProxy string `json:"noProxy"` } func dockerConfigProxyEnvs( getEnv func(string) string, readFile func(string) ([]byte, error), inspectContextHost func(string) (string, error), ) map[string]string { configPath := dockerConfigPath(getEnv) if configPath == "" { return map[string]string{} } rawConfig, err := readFile(configPath) if err != nil { return map[string]string{} } cfg := dockerConfigFile{} if err := json.Unmarshal(rawConfig, &cfg); err != nil { return map[string]string{} } proxyCfg, ok := dockerProxySettings(cfg.Proxies, dockerHostForProxyLookup(getEnv, cfg, inspectContextHost)) if !ok { return map[string]string{} } envs := map[string]string{} setProxyEnv(envs, common.HTTPProxy, proxyCfg.HTTPProxy) setProxyEnv(envs, common.HTTPSProxy, proxyCfg.HTTPSProxy) setProxyEnv(envs, common.NOProxy, proxyCfg.NOProxy) return envs } func dockerConfigPath(getEnv func(string) string) string { // Docker CLI config defaults to ~/.docker/config.json and can be overridden // with DOCKER_CONFIG. The same config file also stores the current context. // See https://docs.docker.com/reference/cli/docker/ if dockerConfigDir := getEnv(dockerConfigEnv); dockerConfigDir != "" { return filepath.Join(dockerConfigDir, "config.json") } if homeDir := getEnv("HOME"); homeDir != "" { return filepath.Join(homeDir, ".docker", "config.json") } return "" } func dockerHostForProxyLookup( getEnv func(string) string, cfg dockerConfigFile, inspectContextHost func(string) (string, error), ) string { if dockerHost := getEnv(dockerHostEnv); dockerHost != "" { return dockerHost } contextName := getEnv(dockerContextEnv) if contextName == "" { contextName = cfg.CurrentContext } if contextName == "" { contextName = "default" } host, err := inspectContextHost(contextName) if err != nil { return "" } return strings.TrimSpace(host) } func dockerProxySettings(proxies map[string]dockerProxyConfig, dockerHost string) (dockerProxyConfig, bool) { if len(proxies) == 0 { return dockerProxyConfig{}, false } // Docker's proxies config supports a "default" entry plus per-daemon entries // keyed by the daemon host string, for example // "https://manager1.mycorp.example.com:2377". // See https://docs.docker.com/reference/cli/docker/ if dockerHost != "" { if proxyCfg, ok := proxies[dockerHost]; ok { return proxyCfg, true } } proxyCfg, ok := proxies["default"] return proxyCfg, ok } func setProxyEnv(envs map[string]string, name, value string) { if value == "" { return } envs[name] = value envs[strings.ToLower(name)] = value } func kindProxyEnvOverridesDockerConfig(getEnv func(string) string) bool { for _, name := range []string{common.HTTPProxy, common.HTTPSProxy} { if getEnv(name) != "" || getEnv(strings.ToLower(name)) != "" { return true } } return false } func inspectDockerContextHost(contextName string) (string, error) { format := `{{ (index .Endpoints "docker").Host }}` lines, err := exec.OutputLines(exec.Command("docker", "context", "inspect", "--format", format, contextName)) if err != nil || len(lines) == 0 { return "", err } return lines[0], nil } kubernetes-sigs-kind-49aeee6/pkg/cluster/internal/providers/docker/proxyconfig_test.go000066400000000000000000000217771524365506300316010ustar00rootroot00000000000000/* Copyright The Kubernetes Authors. 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 docker import ( "path/filepath" "testing" "sigs.k8s.io/kind/pkg/cluster/internal/providers/common" "sigs.k8s.io/kind/pkg/internal/apis/config" "sigs.k8s.io/kind/pkg/internal/assert" ) func TestDockerConfigProxyEnvs(t *testing.T) { t.Parallel() const configJSON = `{ "proxies": { "default": { "httpProxy": "http://proxy.default:3128", "httpsProxy": "https://proxy.default:3129", "noProxy": "default.internal" }, "tcp://remote.example.com:2376": { "httpProxy": "http://proxy.remote:4128", "httpsProxy": "https://proxy.remote:4129", "noProxy": "remote.internal" } } }` cases := []struct { name string env map[string]string want map[string]string }{ { name: "uses default docker config", env: map[string]string{ "DOCKER_CONFIG": "/tmp/docker-config", }, want: map[string]string{ common.HTTPProxy: "http://proxy.default:3128", "http_proxy": "http://proxy.default:3128", common.HTTPSProxy: "https://proxy.default:3129", "https_proxy": "https://proxy.default:3129", common.NOProxy: "default.internal", "no_proxy": "default.internal", }, }, { name: "uses host specific docker config when DOCKER_HOST matches", env: map[string]string{ "DOCKER_CONFIG": "/tmp/docker-config", "DOCKER_HOST": "tcp://remote.example.com:2376", }, want: map[string]string{ common.HTTPProxy: "http://proxy.remote:4128", "http_proxy": "http://proxy.remote:4128", common.HTTPSProxy: "https://proxy.remote:4129", "https_proxy": "https://proxy.remote:4129", common.NOProxy: "remote.internal", "no_proxy": "remote.internal", }, }, { name: "uses host specific docker config when DOCKER_CONTEXT matches a remote host", env: map[string]string{ "DOCKER_CONFIG": "/tmp/docker-config", "DOCKER_CONTEXT": "remote-context", }, want: map[string]string{ common.HTTPProxy: "http://proxy.remote:4128", "http_proxy": "http://proxy.remote:4128", common.HTTPSProxy: "https://proxy.remote:4129", "https_proxy": "https://proxy.remote:4129", common.NOProxy: "remote.internal", "no_proxy": "remote.internal", }, }, { name: "uses host specific docker config when currentContext matches a remote host", env: map[string]string{ "DOCKER_CONFIG": "/tmp/docker-config", }, want: map[string]string{ common.HTTPProxy: "http://proxy.remote:4128", "http_proxy": "http://proxy.remote:4128", common.HTTPSProxy: "https://proxy.remote:4129", "https_proxy": "https://proxy.remote:4129", common.NOProxy: "remote.internal", "no_proxy": "remote.internal", }, }, { name: "falls back to HOME docker config path", env: map[string]string{ "HOME": "/home/tester", }, want: map[string]string{ common.HTTPProxy: "http://proxy.default:3128", "http_proxy": "http://proxy.default:3128", common.HTTPSProxy: "https://proxy.default:3129", "https_proxy": "https://proxy.default:3129", common.NOProxy: "default.internal", "no_proxy": "default.internal", }, }, } for _, tc := range cases { tc := tc t.Run(tc.name, func(t *testing.T) { t.Parallel() cfgJSON := configJSON if tc.name == "uses host specific docker config when currentContext matches a remote host" { cfgJSON = `{ "currentContext": "remote-context", "proxies": { "default": { "httpProxy": "http://proxy.default:3128", "httpsProxy": "https://proxy.default:3129", "noProxy": "default.internal" }, "tcp://remote.example.com:2376": { "httpProxy": "http://proxy.remote:4128", "httpsProxy": "https://proxy.remote:4129", "noProxy": "remote.internal" } } }` } result := dockerConfigProxyEnvs(func(key string) string { return tc.env[key] }, func(name string) ([]byte, error) { switch name { case filepath.Join("/tmp/docker-config", "config.json"), filepath.Join("/home/tester", ".docker", "config.json"): return []byte(cfgJSON), nil default: t.Fatalf("unexpected config path %q", name) return nil, nil } }, func(contextName string) (string, error) { switch contextName { case "default": return "unix:///var/run/docker.sock", nil case "remote-context": return "tcp://remote.example.com:2376", nil default: t.Fatalf("unexpected context %q", contextName) return "", nil } }) assert.DeepEqual(t, tc.want, result) }) } } func TestDockerConfigProxyEnvsIgnoresInvalidConfig(t *testing.T) { t.Parallel() result := dockerConfigProxyEnvs(func(key string) string { if key == "DOCKER_CONFIG" { return "/tmp/docker-config" } return "" }, func(name string) ([]byte, error) { return []byte("{not-json"), nil }, func(string) (string, error) { t.Fatal("context inspection should not be called for invalid config") return "", nil }) assert.DeepEqual(t, map[string]string{}, result) } func TestKindProxyEnvOverridesDockerConfig(t *testing.T) { t.Parallel() cases := []struct { name string env map[string]string want bool }{ { name: "http proxy set", env: map[string]string{ common.HTTPProxy: "http://proxy.example.com:3128", }, want: true, }, { name: "https proxy set in lower case", env: map[string]string{ "https_proxy": "https://proxy.example.com:3129", }, want: true, }, { name: "only no proxy set", env: map[string]string{ common.NOProxy: "example.internal", }, want: false, }, { name: "no proxy env set", env: map[string]string{}, want: false, }, } for _, tc := range cases { tc := tc t.Run(tc.name, func(t *testing.T) { t.Parallel() result := kindProxyEnvOverridesDockerConfig(func(key string) string { return tc.env[key] }) assert.BoolEqual(t, tc.want, result) }) } } func TestMergeProxyEnvWithDockerConfig(t *testing.T) { t.Parallel() cluster := &config.Cluster{} cluster.Networking.ServiceSubnet = "10.96.0.0/16" cluster.Networking.PodSubnet = "10.244.0.0/16" const configJSON = `{ "proxies": { "default": { "httpProxy": "http://proxy.default:3128", "httpsProxy": "https://proxy.default:3129", "noProxy": "default.internal" } } }` cases := []struct { name string env map[string]string want map[string]string }{ { name: "uses docker config when shell proxy env is unset", env: map[string]string{ "DOCKER_CONFIG": "/tmp/docker-config", }, want: map[string]string{ common.HTTPProxy: "http://proxy.default:3128", "http_proxy": "http://proxy.default:3128", common.HTTPSProxy: "https://proxy.default:3129", "https_proxy": "https://proxy.default:3129", common.NOProxy: "default.internal,10.96.0.0/16,10.244.0.0/16", "no_proxy": "default.internal,10.96.0.0/16,10.244.0.0/16", }, }, { name: "shell no proxy is preserved while docker fills http vars", env: map[string]string{ "DOCKER_CONFIG": "/tmp/docker-config", common.NOProxy: "shell.internal", }, want: map[string]string{ common.HTTPProxy: "http://proxy.default:3128", "http_proxy": "http://proxy.default:3128", common.HTTPSProxy: "https://proxy.default:3129", "https_proxy": "https://proxy.default:3129", common.NOProxy: "shell.internal,10.96.0.0/16,10.244.0.0/16", "no_proxy": "shell.internal,10.96.0.0/16,10.244.0.0/16", }, }, } for _, tc := range cases { tc := tc t.Run(tc.name, func(t *testing.T) { t.Parallel() baseEnv := map[string]string{} for _, name := range []string{common.HTTPProxy, common.HTTPSProxy, common.NOProxy, "http_proxy", "https_proxy", "no_proxy"} { if value := tc.env[name]; value != "" { baseEnv[name] = value } } if len(baseEnv) > 0 { noProxy := baseEnv[common.NOProxy] if noProxy == "" { noProxy = baseEnv["no_proxy"] } if noProxy != "" { noProxy += "," } noProxy += cluster.Networking.ServiceSubnet + "," + cluster.Networking.PodSubnet baseEnv[common.NOProxy] = noProxy baseEnv["no_proxy"] = noProxy } result := mergeProxyEnvWithDockerConfig(cluster, baseEnv, dockerConfigProxyEnvs(func(key string) string { return tc.env[key] }, func(name string) ([]byte, error) { if name != filepath.Join("/tmp/docker-config", "config.json") { t.Fatalf("unexpected config path %q", name) } return []byte(configJSON), nil }, func(string) (string, error) { return "", nil })) assert.DeepEqual(t, tc.want, result) }) } } kubernetes-sigs-kind-49aeee6/pkg/cluster/internal/providers/docker/util.go000066400000000000000000000053351524365506300271400ustar00rootroot00000000000000/* Copyright 2019 The Kubernetes Authors. 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 docker import ( "encoding/json" "strings" "sigs.k8s.io/kind/pkg/exec" ) // IsAvailable checks if docker is available in the system func IsAvailable() bool { cmd := exec.Command("docker", "-v") lines, err := exec.OutputLines(cmd) if err != nil || len(lines) != 1 { return false } return strings.HasPrefix(lines[0], "Docker version") } // usernsRemap checks if userns-remap is enabled in dockerd func usernsRemap() bool { cmd := exec.Command("docker", "info", "--format", "'{{json .SecurityOptions}}'") lines, err := exec.OutputLines(cmd) if err != nil { return false } if len(lines) > 0 { if strings.Contains(lines[0], "name=userns") { return true } } return false } // mountDevMapper checks if the Docker storage driver is Btrfs or ZFS // or if the backing filesystem is Btrfs. // Rootless Docker cannot create device nodes, so skip the mount. func mountDevMapper() bool { i, err := info() if err == nil && i != nil && i.Rootless { return false } storage := "" // check the docker storage driver cmd := exec.Command("docker", "info", "-f", "{{.Driver}}") lines, err := exec.OutputLines(cmd) if err != nil || len(lines) != 1 { return false } storage = strings.ToLower(strings.TrimSpace(lines[0])) if storage == "btrfs" || storage == "zfs" || storage == "devicemapper" { return true } // check the backing file system // docker info -f '{{json .DriverStatus }}' // [["Backing Filesystem","extfs"],["Supports d_type","true"],["Native Overlay Diff","true"]] cmd = exec.Command("docker", "info", "-f", "{{json .DriverStatus }}") lines, err = exec.OutputLines(cmd) if err != nil || len(lines) != 1 { return false } var dat [][]string if err := json.Unmarshal([]byte(lines[0]), &dat); err != nil { return false } for _, item := range dat { if item[0] == "Backing Filesystem" { storage = strings.ToLower(item[1]) break } } return storage == "btrfs" || storage == "zfs" || storage == "xfs" } // rootless: use fuse-overlayfs by default // https://github.com/kubernetes-sigs/kind/issues/2275 func mountFuse() bool { i, err := info() if err != nil { return false } if i != nil && i.Rootless { return true } return false } kubernetes-sigs-kind-49aeee6/pkg/cluster/internal/providers/nerdctl/000077500000000000000000000000001524365506300260125ustar00rootroot00000000000000kubernetes-sigs-kind-49aeee6/pkg/cluster/internal/providers/nerdctl/OWNERS000066400000000000000000000000401524365506300267440ustar00rootroot00000000000000labels: - area/provider/nerdctl kubernetes-sigs-kind-49aeee6/pkg/cluster/internal/providers/nerdctl/constants.go000066400000000000000000000016151524365506300303600ustar00rootroot00000000000000/* Copyright 2019 The Kubernetes Authors. 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 nerdctl implements the nerdctl kind provider. package nerdctl // clusterLabelKey is applied to each "node" container for identification const clusterLabelKey = "io.x-k8s.kind.cluster" // nodeRoleLabelKey is applied to each "node" container for categorization // of nodes by role const nodeRoleLabelKey = "io.x-k8s.kind.role" kubernetes-sigs-kind-49aeee6/pkg/cluster/internal/providers/nerdctl/images.go000066400000000000000000000061361524365506300276140ustar00rootroot00000000000000/* Copyright 2019 The Kubernetes Authors. 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 nerdctl import ( "fmt" "strings" "time" "sigs.k8s.io/kind/pkg/errors" "sigs.k8s.io/kind/pkg/exec" "sigs.k8s.io/kind/pkg/log" "sigs.k8s.io/kind/pkg/cluster/internal/providers/common" "sigs.k8s.io/kind/pkg/internal/apis/config" "sigs.k8s.io/kind/pkg/internal/cli" ) // ensureNodeImages ensures that the node images used by the create // configuration are present func ensureNodeImages(logger log.Logger, status *cli.Status, cfg *config.Cluster, binaryName string) error { // pull each required image for _, image := range common.RequiredNodeImages(cfg).List() { // prints user friendly message friendlyImageName, image := sanitizeImage(image) status.Start(fmt.Sprintf("Ensuring node image (%s) 🖼ï¸�", friendlyImageName)) if _, err := pullIfNotPresent(logger, image, 4, binaryName); err != nil { status.End(false) return err } } return nil } // pullIfNotPresent will pull an image if it is not present locally // retrying up to retries times // it returns true if it attempted to pull, and any errors from pulling func pullIfNotPresent(logger log.Logger, image string, retries int, binaryName string) (pulled bool, err error) { // TODO(bentheelder): switch most (all) of the logging here to debug level // once we have configurable log levels // if this did not return an error, then the image exists locally cmd := exec.Command(binaryName, "inspect", "--type=image", image) if err := cmd.Run(); err == nil { logger.V(1).Infof("Image: %s present locally", image) return false, nil } // otherwise try to pull it return true, pull(logger, image, retries, binaryName) } // pull pulls an image, retrying up to retries times func pull(logger log.Logger, image string, retries int, binaryName string) error { logger.V(1).Infof("Pulling image: %s ...", image) err := exec.Command(binaryName, "pull", image).Run() // retry pulling up to retries times if necessary if err != nil { for i := 0; i < retries; i++ { time.Sleep(time.Second * time.Duration(i+1)) logger.V(1).Infof("Trying again to pull image: %q ... %v", image, err) // TODO(bentheelder): add some backoff / sleep? err = exec.Command(binaryName, "pull", image).Run() if err == nil { break } } } return errors.Wrapf(err, "failed to pull image %q", image) } // sanitizeImage is a helper to return human readable image name and // the docker pullable image name from the provided image func sanitizeImage(image string) (string, string) { if strings.Contains(image, "@sha256:") { return strings.Split(image, "@sha256:")[0], image } return image, image } kubernetes-sigs-kind-49aeee6/pkg/cluster/internal/providers/nerdctl/network.go000066400000000000000000000130661524365506300300400ustar00rootroot00000000000000/* Copyright 2020 The Kubernetes Authors. 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 nerdctl import ( "crypto/sha1" "encoding/binary" "fmt" "net" "strconv" "strings" "sigs.k8s.io/kind/pkg/errors" "sigs.k8s.io/kind/pkg/exec" ) // This may be overridden by KIND_EXPERIMENTAL_DOCKER_NETWORK env, // experimentally... // // By default currently picking a single network is equivalent to the previous // behavior *except* that we moved from the default bridge to a user defined // network because the default bridge is actually special versus any other // docker network and lacks the embedded DNS // // For now this also makes it easier for apps to join the same network, and // leaves users with complex networking desires to create and manage their own // networks. const fixedNetworkName = "kind" // ensureNetwork checks if docker network by name exists, if not it creates it func ensureNetwork(name, binaryName string) error { // check if network exists already and remove any duplicate networks exists, err := checkIfNetworkExists(name, binaryName) if err != nil { return err } // network already exists, we're good // TODO: the network might already exist and not have ipv6 ... :| // discussion: https://github.com/kubernetes-sigs/kind/pull/1508#discussion_r414594198 if exists { return nil } subnet := generateULASubnetFromName(name, 0) mtu := getDefaultNetworkMTU(binaryName) err = createNetwork(name, subnet, mtu, binaryName) if err == nil { // Success! return nil } // On the first try check if ipv6 fails entirely on this machine // https://github.com/kubernetes-sigs/kind/issues/1544 // Otherwise if it's not a pool overlap error, fail // If it is, make more attempts below if isIPv6UnavailableError(err) { // only one attempt, IPAM is automatic in ipv4 only return createNetwork(name, "", mtu, binaryName) } if isPoolOverlapError(err) { // pool overlap suggests perhaps another process created the network // check if network exists already and remove any duplicate networks exists, err := checkIfNetworkExists(name, binaryName) if err != nil { return err } if exists { return nil } // otherwise we'll start trying with different subnets } else { // unknown error ... return err } // keep trying for ipv6 subnets const maxAttempts = 5 for attempt := int32(1); attempt < maxAttempts; attempt++ { subnet := generateULASubnetFromName(name, attempt) err = createNetwork(name, subnet, mtu, binaryName) if err == nil { // success! return nil } if isPoolOverlapError(err) { // pool overlap suggests perhaps another process created the network // check if network exists already and remove any duplicate networks exists, err := checkIfNetworkExists(name, binaryName) if err != nil { return err } if exists { return nil } // otherwise we'll try again continue } // unknown error ... return err } return errors.New("exhausted attempts trying to find a non-overlapping subnet") } func createNetwork(name, ipv6Subnet string, mtu int, binaryName string) error { args := []string{"network", "create", "-d=bridge"} // TODO: Not supported in nerdctl yet // "-o", "com.docker.network.bridge.enable_ip_masquerade=true", if mtu > 0 { args = append(args, "-o", fmt.Sprintf("com.docker.network.driver.mtu=%d", mtu)) } if ipv6Subnet != "" { args = append(args, "--ipv6", "--subnet", ipv6Subnet) } args = append(args, name) return exec.Command(binaryName, args...).Run() } // getDefaultNetworkMTU obtains the MTU from the docker default network func getDefaultNetworkMTU(binaryName string) int { cmd := exec.Command(binaryName, "network", "inspect", "bridge", "-f", `{{ index .Options "com.docker.network.driver.mtu" }}`) lines, err := exec.OutputLines(cmd) if err != nil || len(lines) != 1 { return 0 } mtu, err := strconv.Atoi(lines[0]) if err != nil { return 0 } return mtu } func checkIfNetworkExists(name, binaryName string) (bool, error) { out, err := exec.Output(exec.Command( binaryName, "network", "inspect", name, "--format={{.Name}}", )) if err != nil { return false, nil } return strings.HasPrefix(string(out), name), err } func isIPv6UnavailableError(err error) bool { rerr := exec.RunErrorForError(err) return rerr != nil && strings.HasPrefix(string(rerr.Output), "Error response from daemon: Cannot read IPv6 setup for bridge") } func isPoolOverlapError(err error) bool { rerr := exec.RunErrorForError(err) return rerr != nil && strings.HasPrefix(string(rerr.Output), "Error response from daemon: Pool overlaps with other one on this address space") || strings.Contains(string(rerr.Output), "networks have overlapping") } // generateULASubnetFromName generate an IPv6 subnet based on the // name and Nth probing attempt func generateULASubnetFromName(name string, attempt int32) string { ip := make([]byte, 16) ip[0] = 0xfc ip[1] = 0x00 h := sha1.New() _, _ = h.Write([]byte(name)) _ = binary.Write(h, binary.LittleEndian, attempt) bs := h.Sum(nil) for i := 2; i < 8; i++ { ip[i] = bs[i] } subnet := &net.IPNet{ IP: net.IP(ip), Mask: net.CIDRMask(64, 128), } return subnet.String() } kubernetes-sigs-kind-49aeee6/pkg/cluster/internal/providers/nerdctl/network_test.go000066400000000000000000000030121524365506300310650ustar00rootroot00000000000000/* Copyright 2020 The Kubernetes Authors. 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 nerdctl import ( "fmt" "testing" ) func Test_generateULASubnetFromName(t *testing.T) { t.Parallel() cases := []struct { name string attempt int32 subnet string }{ { name: "kind", subnet: "fc00:f853:ccd:e793::/64", }, { name: "foo", attempt: 1, subnet: "fc00:8edf:7f02:ec8f::/64", }, { name: "foo", attempt: 2, subnet: "fc00:9968:306b:2c65::/64", }, { name: "kind2", subnet: "fc00:444c:147a:44ab::/64", }, { name: "kin", subnet: "fc00:fcd9:c2be:8e23::/64", }, { name: "mysupernetwork", subnet: "fc00:7ae1:1e0d:b4d4::/64", }, } for _, tc := range cases { tc := tc // capture variable t.Run(fmt.Sprintf("%s,%d", tc.name, tc.attempt), func(t *testing.T) { t.Parallel() subnet := generateULASubnetFromName(tc.name, tc.attempt) if subnet != tc.subnet { t.Errorf("Wrong subnet from %v: expected %v, received %v", tc.name, tc.subnet, subnet) } }) } } kubernetes-sigs-kind-49aeee6/pkg/cluster/internal/providers/nerdctl/node.go000066400000000000000000000102161524365506300272660ustar00rootroot00000000000000/* Copyright 2019 The Kubernetes Authors. 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 nerdctl import ( "context" "fmt" "io" "strings" "sigs.k8s.io/kind/pkg/errors" "sigs.k8s.io/kind/pkg/exec" ) // nodes.Node implementation for the docker provider type node struct { name string binaryName string } func (n *node) String() string { return n.name } func (n *node) Role() (string, error) { cmd := exec.Command(n.binaryName, "inspect", "--format", fmt.Sprintf(`{{ index .Config.Labels "%s"}}`, nodeRoleLabelKey), n.name, ) lines, err := exec.OutputLines(cmd) if err != nil { return "", errors.Wrap(err, "failed to get role for node") } if len(lines) != 1 { return "", errors.Errorf("failed to get role for node: output lines %d != 1", len(lines)) } return lines[0], nil } func (n *node) IP() (ipv4 string, ipv6 string, err error) { // retrieve the IP address of the node using docker inspect cmd := exec.Command(n.binaryName, "inspect", "-f", "{{range .NetworkSettings.Networks}}{{.IPAddress}},{{.GlobalIPv6Address}}{{end}}", n.name, // ... against the "node" container ) lines, err := exec.OutputLines(cmd) if err != nil { return "", "", errors.Wrap(err, "failed to get container details") } if len(lines) != 1 { return "", "", errors.Errorf("file should only be one line, got %d lines", len(lines)) } ips := strings.Split(lines[0], ",") if len(ips) != 2 { return "", "", errors.Errorf("container addresses should have 2 values, got %d values", len(ips)) } return ips[0], ips[1], nil } func (n *node) Command(command string, args ...string) exec.Cmd { return &nodeCmd{ binaryName: n.binaryName, nameOrID: n.name, command: command, args: args, } } func (n *node) CommandContext(ctx context.Context, command string, args ...string) exec.Cmd { return &nodeCmd{ binaryName: n.binaryName, nameOrID: n.name, command: command, args: args, ctx: ctx, } } // nodeCmd implements exec.Cmd for docker nodes type nodeCmd struct { binaryName string nameOrID string // the container name or ID command string args []string env []string stdin io.Reader stdout io.Writer stderr io.Writer ctx context.Context } func (c *nodeCmd) Run() error { args := []string{ "exec", // run with privileges so we can remount etc.. // this might not make sense in the most general sense, but it is // important to many kind commands "--privileged", } if c.stdin != nil { args = append(args, "-i", // interactive so we can supply input ) } // set env for _, env := range c.env { args = append(args, "-e", env) } // specify the container and command, after this everything will be // args the command in the container rather than to docker args = append( args, c.nameOrID, // ... against the container c.command, // with the command specified ) args = append( args, // finally, with the caller args c.args..., ) var cmd exec.Cmd if c.ctx != nil { cmd = exec.CommandContext(c.ctx, c.binaryName, args...) } else { cmd = exec.Command(c.binaryName, args...) } if c.stdin != nil { cmd.SetStdin(c.stdin) } if c.stderr != nil { cmd.SetStderr(c.stderr) } if c.stdout != nil { cmd.SetStdout(c.stdout) } return cmd.Run() } func (c *nodeCmd) SetEnv(env ...string) exec.Cmd { c.env = env return c } func (c *nodeCmd) SetStdin(r io.Reader) exec.Cmd { c.stdin = r return c } func (c *nodeCmd) SetStdout(w io.Writer) exec.Cmd { c.stdout = w return c } func (c *nodeCmd) SetStderr(w io.Writer) exec.Cmd { c.stderr = w return c } func (n *node) SerialLogs(w io.Writer) error { return exec.Command(n.binaryName, "logs", n.name).SetStdout(w).SetStderr(w).Run() } kubernetes-sigs-kind-49aeee6/pkg/cluster/internal/providers/nerdctl/provider.go000066400000000000000000000262401524365506300301770ustar00rootroot00000000000000/* Copyright 2019 The Kubernetes Authors. 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 nerdctl import ( "encoding/csv" "encoding/json" "fmt" "net" osexec "os/exec" "path/filepath" "strings" "sigs.k8s.io/kind/pkg/cluster/nodes" "sigs.k8s.io/kind/pkg/errors" "sigs.k8s.io/kind/pkg/exec" "sigs.k8s.io/kind/pkg/log" "sigs.k8s.io/kind/pkg/cluster/internal/providers" "sigs.k8s.io/kind/pkg/cluster/internal/providers/common" "sigs.k8s.io/kind/pkg/cluster/nodeutils" "sigs.k8s.io/kind/pkg/internal/apis/config" "sigs.k8s.io/kind/pkg/internal/cli" "sigs.k8s.io/kind/pkg/internal/sets" ) // NewProvider returns a new provider based on executing `nerdctl ...` func NewProvider(logger log.Logger, binaryName string) providers.Provider { // if binaryName is unset, do a lookup; we may be here via a // library call to provider.DetectNodeProvider(), which returns // true from nerdctl.IsAvailable() by checking for both finch // and nerdctl. If we don't redo the lookup here, then a finch // install that triggered IsAvailable() to be true would fail // to be used if we default to nerdctl when unset. if binaryName == "" { // default to "nerdctl"; but look for "finch" if // nerctl binary lookup fails binaryName = "nerdctl" if _, err := osexec.LookPath("nerdctl"); err != nil { if _, err := osexec.LookPath("finch"); err == nil { binaryName = "finch" } } } return &provider{ logger: logger, binaryName: binaryName, } } // Provider implements provider.Provider // see NewProvider type provider struct { logger log.Logger binaryName string info *providers.ProviderInfo } // String implements fmt.Stringer // NOTE: the value of this should not currently be relied upon for anything! // This is only used for setting the Node's providerID func (p *provider) String() string { return "nerdctl" } func (p *provider) Binary() string { return p.binaryName } // Provision is part of the providers.Provider interface func (p *provider) Provision(status *cli.Status, cfg *config.Cluster) (err error) { // TODO: validate cfg // ensure node images are pulled before actually provisioning if err := ensureNodeImages(p.logger, status, cfg, p.Binary()); err != nil { return err } // ensure the pre-requisite network exists if err := ensureNetwork(fixedNetworkName, p.Binary()); err != nil { return errors.Wrap(err, "failed to ensure nerdctl network") } // actually provision the cluster icons := strings.Repeat("📦 ", len(cfg.Nodes)) status.Start(fmt.Sprintf("Preparing nodes %s", icons)) defer func() { status.End(err == nil) }() // plan creating the containers createContainerFuncs, err := planCreation(cfg, fixedNetworkName, p.Binary()) if err != nil { return err } // actually create nodes // TODO: remove once nerdctl handles concurrency better // xref: https://github.com/containerd/nerdctl/issues/2908 for _, f := range createContainerFuncs { if err := f(); err != nil { return err } } return nil } // ListClusters is part of the providers.Provider interface func (p *provider) ListClusters() ([]string, error) { cmd := exec.Command(p.Binary(), "ps", "-a", // show stopped nodes // filter for nodes with the cluster label "--filter", "label="+clusterLabelKey, // format to include the cluster name "--format", fmt.Sprintf(`{{.Label "%s"}}`, clusterLabelKey), ) lines, err := exec.OutputLines(cmd) if err != nil { return nil, errors.Wrap(err, "failed to list clusters") } return sets.NewString(lines...).List(), nil } // ListNodes is part of the providers.Provider interface func (p *provider) ListNodes(cluster string) ([]nodes.Node, error) { cmd := exec.Command(p.Binary(), "ps", "-a", // show stopped nodes // filter for nodes with the cluster label "--filter", fmt.Sprintf("label=%s=%s", clusterLabelKey, cluster), // format to include the cluster name "--format", `{{.Names}}`, ) lines, err := exec.OutputLines(cmd) if err != nil { return nil, errors.Wrap(err, "failed to list nodes") } length := len(lines) // convert names to node handles ret := make([]nodes.Node, 0, length) for _, name := range lines { if name != "" { ret = append(ret, p.node(name)) } } return ret, nil } // DeleteNodes is part of the providers.Provider interface func (p *provider) DeleteNodes(n []nodes.Node) error { if len(n) == 0 { return nil } argsNoRestart := make([]string, 0, len(n)+2) argsNoRestart = append(argsNoRestart, "update", "--restart=no", ) argsStop := make([]string, 0, len(n)+1) argsStop = append(argsStop, "stop") argsWait := make([]string, 0, len(n)+1) argsWait = append(argsWait, "wait") argsRm := make([]string, 0, len(n)+3) // allocate once argsRm = append(argsRm, "rm", "-f", "-v", // delete volumes ) for _, node := range n { argsRm = append(argsRm, node.String()) argsStop = append(argsStop, node.String()) argsWait = append(argsWait, node.String()) argsNoRestart = append(argsNoRestart, node.String()) } if err := exec.Command(p.Binary(), argsNoRestart...).Run(); err != nil { return errors.Wrap(err, "failed to update restart policy to 'no'") } if err := exec.Command(p.Binary(), argsStop...).Run(); err != nil { return errors.Wrap(err, "failed to stop nodes") } if err := exec.Command(p.Binary(), argsWait...).Run(); err != nil { return errors.Wrap(err, "failed to wait for node exit") } if err := exec.Command(p.Binary(), argsRm...).Run(); err != nil { return errors.Wrap(err, "failed to delete nodes") } return nil } // GetAPIServerEndpoint is part of the providers.Provider interface func (p *provider) GetAPIServerEndpoint(cluster string) (string, error) { // locate the node that hosts this allNodes, err := p.ListNodes(cluster) if err != nil { return "", errors.Wrap(err, "failed to list nodes") } n, err := nodeutils.APIServerEndpointNode(allNodes) if err != nil { return "", errors.Wrap(err, "failed to get api server endpoint") } // if the 'desktop.docker.io/ports//tcp' label is present, // defer to its value for the api server endpoint // // For example: // "Labels": { // "desktop.docker.io/ports/6443/tcp": "10.0.1.7:6443", // } cmd := exec.Command( p.Binary(), "inspect", "--format", fmt.Sprintf( "{{ index .Config.Labels \"desktop.docker.io/ports/%d/tcp\" }}", common.APIServerInternalPort, ), n.String(), ) lines, err := exec.OutputLines(cmd) if err != nil { return "", errors.Wrap(err, "failed to get api server port") } if len(lines) == 1 && lines[0] != "" { return lines[0], nil } // else, retrieve the specific port mapping via NetworkSettings.Ports cmd = exec.Command( p.Binary(), "inspect", "--format", fmt.Sprintf( "{{ with (index (index .NetworkSettings.Ports \"%d/tcp\") 0) }}{{ printf \"%%s\t%%s\" .HostIp .HostPort }}{{ end }}", common.APIServerInternalPort, ), n.String(), ) lines, err = exec.OutputLines(cmd) if err != nil { return "", errors.Wrap(err, "failed to get api server port") } if len(lines) != 1 { return "", errors.Errorf("network details should only be one line, got %d lines", len(lines)) } parts := strings.Split(lines[0], "\t") if len(parts) != 2 { return "", errors.Errorf("network details should only be two parts, got %d", len(parts)) } // join host and port return net.JoinHostPort(parts[0], parts[1]), nil } // GetAPIServerInternalEndpoint is part of the providers.Provider interface func (p *provider) GetAPIServerInternalEndpoint(cluster string) (string, error) { // locate the node that hosts this allNodes, err := p.ListNodes(cluster) if err != nil { return "", errors.Wrap(err, "failed to list nodes") } n, err := nodeutils.APIServerEndpointNode(allNodes) if err != nil { return "", errors.Wrap(err, "failed to get api server endpoint") } // NOTE: we're using the nodes's hostnames which are their names return net.JoinHostPort(n.String(), fmt.Sprintf("%d", common.APIServerInternalPort)), nil } // node returns a new node handle for this provider func (p *provider) node(name string) nodes.Node { return &node{ binaryName: p.binaryName, name: name, } } // CollectLogs will populate dir with cluster logs and other debug files func (p *provider) CollectLogs(dir string, nodes []nodes.Node) error { execToPathFn := func(cmd exec.Cmd, path string) func() error { return func() error { f, err := common.FileOnHost(path) if err != nil { return err } defer f.Close() return cmd.SetStdout(f).SetStderr(f).Run() } } // construct a slice of methods to collect logs fns := []func() error{ // record info about the host nerdctl execToPathFn( exec.Command(p.Binary(), "info"), filepath.Join(dir, "docker-info.txt"), ), } // inspect each node for _, n := range nodes { node := n // https://golang.org/doc/faq#closures_and_goroutines name := node.String() path := filepath.Join(dir, name) fns = append(fns, execToPathFn(exec.Command(p.Binary(), "inspect", name), filepath.Join(path, "inspect.json")), ) } // run and collect up all errors return errors.AggregateConcurrent(fns) } // Info returns the provider info. // The info is cached on the first time of the execution. func (p *provider) Info() (*providers.ProviderInfo, error) { var err error if p.info == nil { p.info, err = info(p.Binary()) } return p.info, err } // dockerInfo corresponds to `docker info --format '{{json .}}'` type dockerInfo struct { CgroupDriver string `json:"CgroupDriver"` // "systemd", "cgroupfs", "none" CgroupVersion string `json:"CgroupVersion"` // e.g. "2" MemoryLimit bool `json:"MemoryLimit"` PidsLimit bool `json:"PidsLimit"` CPUShares bool `json:"CPUShares"` SecurityOptions []string `json:"SecurityOptions"` } func info(binaryName string) (*providers.ProviderInfo, error) { cmd := exec.Command(binaryName, "info", "--format", "{{json .}}") out, err := exec.Output(cmd) if err != nil { return nil, errors.Wrap(err, "failed to get nerdctl info") } var dInfo dockerInfo if err := json.Unmarshal(out, &dInfo); err != nil { return nil, err } info := providers.ProviderInfo{ Cgroup2: dInfo.CgroupVersion == "2", } // When CgroupDriver == "none", the MemoryLimit/PidsLimit/CPUShares // values are meaningless and need to be considered false. // https://github.com/moby/moby/issues/42151 if dInfo.CgroupDriver != "none" { info.SupportsMemoryLimit = dInfo.MemoryLimit info.SupportsPidsLimit = dInfo.PidsLimit info.SupportsCPUShares = dInfo.CPUShares } for _, o := range dInfo.SecurityOptions { // o is like "name=seccomp,profile=default", or "name=rootless", csvReader := csv.NewReader(strings.NewReader(o)) sliceSlice, err := csvReader.ReadAll() if err != nil { return nil, err } for _, f := range sliceSlice { for _, ff := range f { if ff == "name=rootless" { info.Rootless = true } } } } return &info, nil } kubernetes-sigs-kind-49aeee6/pkg/cluster/internal/providers/nerdctl/provision.go000066400000000000000000000337331524365506300304020ustar00rootroot00000000000000/* Copyright 2019 The Kubernetes Authors. 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 nerdctl import ( "context" "fmt" "net" "path/filepath" "strings" "time" "sigs.k8s.io/kind/pkg/cluster/constants" "sigs.k8s.io/kind/pkg/errors" "sigs.k8s.io/kind/pkg/exec" "sigs.k8s.io/kind/pkg/fs" "sigs.k8s.io/kind/pkg/cluster/internal/loadbalancer" "sigs.k8s.io/kind/pkg/cluster/internal/providers/common" "sigs.k8s.io/kind/pkg/internal/apis/config" ) // planCreation creates a slice of funcs that will create the containers func planCreation(cfg *config.Cluster, networkName, binaryName string) (createContainerFuncs []func() error, err error) { // we need to know all the names for NO_PROXY // compute the names first before any actual node details nodeNamer := common.MakeNodeNamer(cfg.Name) names := make([]string, len(cfg.Nodes)) for i, node := range cfg.Nodes { name := nodeNamer(string(node.Role)) // name the node names[i] = name } haveLoadbalancer := config.ClusterHasImplicitLoadBalancer(cfg) if haveLoadbalancer { names = append(names, nodeNamer(constants.ExternalLoadBalancerNodeRoleValue)) } // these apply to all container creation genericArgs, err := commonArgs(cfg.Name, cfg, networkName, names, binaryName) if err != nil { return nil, err } // only the external LB should reflect the port if we have multiple control planes apiServerPort := cfg.Networking.APIServerPort apiServerAddress := cfg.Networking.APIServerAddress if haveLoadbalancer { // TODO: picking ports locally is less than ideal with remote docker // but this is supposed to be an implementation detail and NOT picking // them breaks host reboot ... // For now remote docker + multi control plane is not supported apiServerPort = 0 // replaced with random ports apiServerAddress = "127.0.0.1" // only the LB needs to be non-local // only for IPv6 only clusters if cfg.Networking.IPFamily == config.IPv6Family { apiServerAddress = "::1" // only the LB needs to be non-local } // plan loadbalancer node name := names[len(names)-1] createContainerFuncs = append(createContainerFuncs, func() error { args, err := runArgsForLoadBalancer(cfg, name, genericArgs) if err != nil { return err } return createContainer(name, args, binaryName) }) } // plan normal nodes for i, node := range cfg.Nodes { node := node.DeepCopy() // copy so we can modify name := names[i] // fixup relative paths, docker can only handle absolute paths for m := range node.ExtraMounts { hostPath := node.ExtraMounts[m].HostPath if !fs.IsAbs(hostPath) { absHostPath, err := filepath.Abs(hostPath) if err != nil { return nil, errors.Wrapf(err, "unable to resolve absolute path for hostPath: %q", hostPath) } node.ExtraMounts[m].HostPath = absHostPath } } // plan actual creation based on role switch node.Role { case config.ControlPlaneRole: createContainerFuncs = append(createContainerFuncs, func() error { node.ExtraPortMappings = append(node.ExtraPortMappings, config.PortMapping{ ListenAddress: apiServerAddress, HostPort: apiServerPort, ContainerPort: common.APIServerInternalPort, }, ) args, err := runArgsForNode(node, cfg.Networking.IPFamily, name, genericArgs) if err != nil { return err } return createContainerWithWaitUntilSystemdReachesMultiUserSystem(name, args, binaryName) }) case config.WorkerRole: createContainerFuncs = append(createContainerFuncs, func() error { args, err := runArgsForNode(node, cfg.Networking.IPFamily, name, genericArgs) if err != nil { return err } return createContainerWithWaitUntilSystemdReachesMultiUserSystem(name, args, binaryName) }) default: return nil, errors.Errorf("unknown node role: %q", node.Role) } } return createContainerFuncs, nil } // commonArgs computes static arguments that apply to all containers func commonArgs(cluster string, cfg *config.Cluster, networkName string, nodeNames []string, binaryName string) ([]string, error) { // standard arguments all nodes containers need, computed once args := []string{ "--detach", // run the container detached "--tty", // allocate a tty for entrypoint logs // label the node with the cluster ID "--label", fmt.Sprintf("%s=%s", clusterLabelKey, cluster), // user a user defined network so we get embedded DNS "--net", networkName, // containerd supports the following restart modes: // - no // - on-failure[:max-retries] // - unless-stopped // - always // // What we desire is: // - restart on host / container runtime reboot // - don't restart for any other reason // "--restart=on-failure:1", // this can be enabled by default in docker daemon.json, so we explicitly // disable it, we want our entrypoint to be PID1, not docker-init / tini "--init=false", } // enable IPv6 if necessary if config.ClusterHasIPv6(cfg) { args = append(args, "--sysctl=net.ipv6.conf.all.disable_ipv6=0", "--sysctl=net.ipv6.conf.all.forwarding=1") } // pass proxy environment variables proxyEnv, err := getProxyEnv(cfg, networkName, nodeNames, binaryName) if err != nil { return nil, errors.Wrap(err, "proxy setup error") } for key, val := range proxyEnv { args = append(args, "-e", fmt.Sprintf("%s=%s", key, val)) } // enable /dev/fuse explicitly for fuse-overlayfs // (Rootless Docker does not automatically mount /dev/fuse with --privileged) if mountFuse(binaryName) { args = append(args, "--device", "/dev/fuse") } if cfg.Networking.DNSSearch != nil { args = append(args, "-e", "KIND_DNS_SEARCH="+strings.Join(*cfg.Networking.DNSSearch, " ")) } return args, nil } func runArgsForNode(node *config.Node, clusterIPFamily config.ClusterIPFamily, name string, args []string) ([]string, error) { args = append([]string{ "--hostname", name, // make hostname match container name // label the node with the role ID "--label", fmt.Sprintf("%s=%s", nodeRoleLabelKey, node.Role), // running containers in a container requires privileged // NOTE: we could try to replicate this with --cap-add, and use less // privileges, but this flag also changes some mounts that are necessary // including some ones docker would otherwise do by default. // for now this is what we want. in the future we may revisit this. "--privileged", "--security-opt", "seccomp=unconfined", // also ignore seccomp "--security-opt", "apparmor=unconfined", // also ignore apparmor // runtime temporary storage "--tmpfs", "/tmp", // various things depend on working /tmp "--tmpfs", "/run", // systemd wants a writable /run // runtime persistent storage // this ensures that E.G. pods, logs etc. are not on the container // filesystem, which is not only better for performance, but allows // running kind in kind for "party tricks" // (please don't depend on doing this though!) "--volume", "/var", // some k8s things want to read /lib/modules "--volume", "/lib/modules:/lib/modules:ro", // propagate KIND_EXPERIMENTAL_CONTAINERD_SNAPSHOTTER to the entrypoint script "-e", "KIND_EXPERIMENTAL_CONTAINERD_SNAPSHOTTER", }, args..., ) // convert mounts and port mappings to container run args args = append(args, generateMountBindings(node.ExtraMounts...)...) mappingArgs, err := generatePortMappings(clusterIPFamily, node.ExtraPortMappings...) if err != nil { return nil, err } args = append(args, mappingArgs...) switch node.Role { case config.ControlPlaneRole: args = append(args, "-e", "KUBECONFIG=/etc/kubernetes/admin.conf") } // finally, specify the image to run return append(args, node.Image), nil } func runArgsForLoadBalancer(cfg *config.Cluster, name string, args []string) ([]string, error) { args = append([]string{ "--hostname", name, // make hostname match container name // label the node with the role ID "--label", fmt.Sprintf("%s=%s", nodeRoleLabelKey, constants.ExternalLoadBalancerNodeRoleValue), }, args..., ) // load balancer port mapping mappingArgs, err := generatePortMappings(cfg.Networking.IPFamily, config.PortMapping{ ListenAddress: cfg.Networking.APIServerAddress, HostPort: cfg.Networking.APIServerPort, ContainerPort: common.APIServerInternalPort, }, ) if err != nil { return nil, err } args = append(args, mappingArgs...) // finally, specify the image to run args = append(args, loadbalancer.Image) args = append(args, loadbalancer.GenerateBootstrapCommand(cfg.Name, name)...) return args, nil } func getProxyEnv(cfg *config.Cluster, networkName string, nodeNames []string, binaryName string) (map[string]string, error) { envs := common.GetProxyEnvs(cfg) // Specifically add the docker network subnets to NO_PROXY if we are using a proxy if len(envs) > 0 { subnets, err := getSubnets(networkName, binaryName) if err != nil { return nil, err } noProxyList := append(subnets, envs[common.NOProxy]) noProxyList = append(noProxyList, nodeNames...) // Add pod and service dns names to no_proxy to allow in cluster // Note: this is best effort based on the default CoreDNS spec // https://github.com/kubernetes/dns/blob/master/docs/specification.md // Any user created pod/service hostnames, namespaces, custom DNS services // are expected to be no-proxied by the user explicitly. noProxyList = append(noProxyList, ".svc", ".svc.cluster", ".svc.cluster.local") noProxyJoined := strings.Join(noProxyList, ",") envs[common.NOProxy] = noProxyJoined envs[strings.ToLower(common.NOProxy)] = noProxyJoined } return envs, nil } func getSubnets(networkName, binaryName string) ([]string, error) { format := `{{range (index (index . "IPAM") "Config")}}{{index . "Subnet"}} {{end}}` cmd := exec.Command(binaryName, "network", "inspect", "-f", format, networkName) lines, err := exec.OutputLines(cmd) if err != nil { return nil, errors.Wrap(err, "failed to get subnets") } return strings.Split(strings.TrimSpace(lines[0]), " "), nil } // generateMountBindings converts the mount list to a list of args for docker // ':[:options]', where 'options' // is a comma-separated list of the following strings: // 'ro', if the path is read only // 'Z', if the volume requires SELinux relabeling func generateMountBindings(mounts ...config.Mount) []string { args := make([]string, 0, len(mounts)) for _, m := range mounts { bind := fmt.Sprintf("%s:%s", m.HostPath, m.ContainerPath) var attrs []string if m.Readonly { attrs = append(attrs, "ro") } // Only request relabeling if the pod provides an SELinux context. If the pod // does not provide an SELinux context relabeling will label the volume with // the container's randomly allocated MCS label. This would restrict access // to the volume to the container which mounts it first. if m.SelinuxRelabel { attrs = append(attrs, "Z") } switch m.Propagation { case config.MountPropagationNone: // noop, private is default case config.MountPropagationBidirectional: attrs = append(attrs, "rshared") case config.MountPropagationHostToContainer: attrs = append(attrs, "rslave") default: // Falls back to "private" } if len(attrs) > 0 { bind = fmt.Sprintf("%s:%s", bind, strings.Join(attrs, ",")) } args = append(args, fmt.Sprintf("--volume=%s", bind)) } return args } // generatePortMappings converts the portMappings list to a list of args for docker func generatePortMappings(clusterIPFamily config.ClusterIPFamily, portMappings ...config.PortMapping) ([]string, error) { args := make([]string, 0, len(portMappings)) for _, pm := range portMappings { // do provider internal defaulting // in a future API revision we will handle this at the API level and remove this if pm.ListenAddress == "" { switch clusterIPFamily { case config.IPv4Family, config.DualStackFamily: pm.ListenAddress = "0.0.0.0" // this is the docker default anyhow case config.IPv6Family: pm.ListenAddress = "::" default: return nil, errors.Errorf("unknown cluster IP family: %v", clusterIPFamily) } } if string(pm.Protocol) == "" { pm.Protocol = config.PortMappingProtocolTCP // TCP is the default } // validate that the provider can handle this binding switch pm.Protocol { case config.PortMappingProtocolTCP: case config.PortMappingProtocolUDP: case config.PortMappingProtocolSCTP: default: return nil, errors.Errorf("unknown port mapping protocol: %v", pm.Protocol) } // get a random port if necessary (port = 0) hostPort, releaseHostPortFn, err := common.PortOrGetFreePort(pm.HostPort, pm.ListenAddress) if err != nil { return nil, errors.Wrap(err, "failed to get random host port for port mapping") } if releaseHostPortFn != nil { defer releaseHostPortFn() } // generate the actual mapping arg protocol := string(pm.Protocol) hostPortBinding := net.JoinHostPort(pm.ListenAddress, fmt.Sprintf("%d", hostPort)) args = append(args, fmt.Sprintf("--publish=%s:%d/%s", hostPortBinding, pm.ContainerPort, protocol)) } return args, nil } func createContainer(name string, args []string, binaryName string) error { return exec.Command(binaryName, append([]string{"run", "--name", name}, args...)...).Run() } func createContainerWithWaitUntilSystemdReachesMultiUserSystem(name string, args []string, binaryName string) error { if err := exec.Command(binaryName, append([]string{"run", "--name", name}, args...)...).Run(); err != nil { return err } logCtx, logCancel := context.WithTimeout(context.Background(), 30*time.Second) logCmd := exec.CommandContext(logCtx, binaryName, "logs", "-f", name) defer logCancel() return common.WaitUntilLogRegexpMatches(logCtx, logCmd, common.NodeReachedCgroupsReadyRegexp()) } kubernetes-sigs-kind-49aeee6/pkg/cluster/internal/providers/nerdctl/util.go000066400000000000000000000025371524365506300273250ustar00rootroot00000000000000/* Copyright 2019 The Kubernetes Authors. 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 nerdctl import ( "strings" "sigs.k8s.io/kind/pkg/exec" ) // IsAvailable checks if nerdctl (or finch) is available in the system func IsAvailable() bool { cmd := exec.Command("nerdctl", "-v") lines, err := exec.OutputLines(cmd) if err != nil || len(lines) != 1 { // check finch cmd = exec.Command("finch", "-v") lines, err = exec.OutputLines(cmd) if err != nil || len(lines) != 1 { return false } return strings.HasPrefix(lines[0], "finch version") } return strings.HasPrefix(lines[0], "nerdctl version") } // rootless: use fuse-overlayfs by default // https://github.com/kubernetes-sigs/kind/issues/2275 func mountFuse(binaryName string) bool { i, err := info(binaryName) if err != nil { return false } if i != nil && i.Rootless { return true } return false } kubernetes-sigs-kind-49aeee6/pkg/cluster/internal/providers/podman/000077500000000000000000000000001524365506300256355ustar00rootroot00000000000000kubernetes-sigs-kind-49aeee6/pkg/cluster/internal/providers/podman/OWNERS000066400000000000000000000002751524365506300266010ustar00rootroot00000000000000# See the OWNERS docs at https://go.k8s.io/owners reviewers: - aojea - BenTheElder approvers: - aojea - BenTheElder emeritus_approvers: - amwat labels: - area/provider/podman kubernetes-sigs-kind-49aeee6/pkg/cluster/internal/providers/podman/constants.go000066400000000000000000000016301524365506300302000ustar00rootroot00000000000000/* Copyright 2019 The Kubernetes Authors. 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 podman implements the podman kind provider. package podman // clusterLabelKey is applied to each "node" podman container for identification const clusterLabelKey = "io.x-k8s.kind.cluster" // nodeRoleLabelKey is applied to each "node" podman container for categorization // of nodes by role const nodeRoleLabelKey = "io.x-k8s.kind.role" kubernetes-sigs-kind-49aeee6/pkg/cluster/internal/providers/podman/images.go000066400000000000000000000074461524365506300274440ustar00rootroot00000000000000/* Copyright 2019 The Kubernetes Authors. 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 podman import ( "fmt" "strings" "time" "sigs.k8s.io/kind/pkg/errors" "sigs.k8s.io/kind/pkg/exec" "sigs.k8s.io/kind/pkg/log" "sigs.k8s.io/kind/pkg/cluster/internal/providers/common" "sigs.k8s.io/kind/pkg/internal/apis/config" "sigs.k8s.io/kind/pkg/internal/cli" ) // ensureNodeImages ensures that the node images used by the create // configuration are present func ensureNodeImages(logger log.Logger, status *cli.Status, cfg *config.Cluster) error { // pull each required image for _, image := range common.RequiredNodeImages(cfg).List() { // prints user friendly message friendlyImageName, image := sanitizeImage(image) status.Start(fmt.Sprintf("Ensuring node image (%s) 🖼ï¸�", friendlyImageName)) if _, err := pullIfNotPresent(logger, image, 4); err != nil { status.End(false) return err } } return nil } // pullIfNotPresent will pull an image if it is not present locally // retrying up to retries times // it returns true if it attempted to pull, and any errors from pulling func pullIfNotPresent(logger log.Logger, image string, retries int) (pulled bool, err error) { // TODO(bentheelder): switch most (all) of the logging here to debug level // once we have configurable log levels // if this did not return an error, then the image exists locally cmd := exec.Command("podman", "inspect", "--type=image", image) if err := cmd.Run(); err == nil { logger.V(1).Infof("Image: %s present locally", image) return false, nil } // otherwise try to pull it return true, pull(logger, image, retries) } // pull pulls an image, retrying up to retries times func pull(logger log.Logger, image string, retries int) error { logger.V(1).Infof("Pulling image: %s ...", image) err := exec.Command("podman", "pull", image).Run() // retry pulling up to retries times if necessary if err != nil { for i := 0; i < retries; i++ { time.Sleep(time.Second * time.Duration(i+1)) logger.V(1).Infof("Trying again to pull image: %q ... %v", image, err) // TODO(bentheelder): add some backoff / sleep? err = exec.Command("podman", "pull", image).Run() if err == nil { break } } } return errors.Wrapf(err, "failed to pull image %q", image) } // sanitizeImage is a helper to return human readable image name and // the podman pullable image name from the provided image func sanitizeImage(image string) (friendlyImageName, pullImageName string) { const ( defaultDomain = "docker.io/" officialRepoName = "library" ) var remainder string if strings.Contains(image, "@sha256:") { splits := strings.SplitN(image, "@sha256:", 2) friendlyImageName = splits[0] remainder = stripTag(splits[0]) + "@sha256:" + splits[1] } else { friendlyImageName = image remainder = image } if !strings.ContainsRune(remainder, '/') { remainder = officialRepoName + "/" + remainder } i := strings.IndexRune(friendlyImageName, '/') if i == -1 || (!strings.ContainsAny(friendlyImageName[:i], ".:") && friendlyImageName[:i] != "localhost") { pullImageName = defaultDomain + remainder } else { pullImageName = remainder } return } func stripTag(image string) string { lastSlash := strings.LastIndex(image, "/") lastColon := strings.LastIndex(image, ":") if lastColon > lastSlash { return image[:lastColon] } return image } kubernetes-sigs-kind-49aeee6/pkg/cluster/internal/providers/podman/images_test.go000066400000000000000000000105301524365506300304670ustar00rootroot00000000000000/* Copyright 2021 The Kubernetes Authors. 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 podman import ( "testing" ) func Test_sanitizeImage(t *testing.T) { cases := []struct { image string friendlyImageName string pullImageName string }{ { image: "kindest/node:v1.21.1@sha256:69860bda5563ac81e3c0057d654b5253219618a22ec3a346306239bba8cfa1a6", friendlyImageName: "kindest/node:v1.21.1", pullImageName: "docker.io/kindest/node@sha256:69860bda5563ac81e3c0057d654b5253219618a22ec3a346306239bba8cfa1a6", }, { image: "kindest/node:v1.21.1", friendlyImageName: "kindest/node:v1.21.1", pullImageName: "docker.io/kindest/node:v1.21.1", }, { image: "kindest/node@sha256:69860bda5563ac81e3c0057d654b5253219618a22ec3a346306239bba8cfa1a6", friendlyImageName: "kindest/node", pullImageName: "docker.io/kindest/node@sha256:69860bda5563ac81e3c0057d654b5253219618a22ec3a346306239bba8cfa1a6", }, { image: "foo.bar/kindest/node:v1.21.1@sha256:69860bda5563ac81e3c0057d654b5253219618a22ec3a346306239bba8cfa1a6", friendlyImageName: "foo.bar/kindest/node:v1.21.1", pullImageName: "foo.bar/kindest/node@sha256:69860bda5563ac81e3c0057d654b5253219618a22ec3a346306239bba8cfa1a6", }, { image: "foo.bar/kindest/node:v1.21.1", friendlyImageName: "foo.bar/kindest/node:v1.21.1", pullImageName: "foo.bar/kindest/node:v1.21.1", }, { image: "foo.bar/kindest/node@sha256:69860bda5563ac81e3c0057d654b5253219618a22ec3a346306239bba8cfa1a6", friendlyImageName: "foo.bar/kindest/node", pullImageName: "foo.bar/kindest/node@sha256:69860bda5563ac81e3c0057d654b5253219618a22ec3a346306239bba8cfa1a6", }, { image: "foo.bar/baz:quux@sha256:69860bda5563ac81e3c0057d654b5253219618a22ec3a346306239bba8cfa1a6", friendlyImageName: "foo.bar/baz:quux", pullImageName: "foo.bar/baz@sha256:69860bda5563ac81e3c0057d654b5253219618a22ec3a346306239bba8cfa1a6", }, { image: "foo.bar/baz:quux", friendlyImageName: "foo.bar/baz:quux", pullImageName: "foo.bar/baz:quux", }, { image: "foo.bar/baz@sha256:69860bda5563ac81e3c0057d654b5253219618a22ec3a346306239bba8cfa1a6", friendlyImageName: "foo.bar/baz", pullImageName: "foo.bar/baz@sha256:69860bda5563ac81e3c0057d654b5253219618a22ec3a346306239bba8cfa1a6", }, { image: "localhost:5000/kindest/node:v1.21.1@sha256:69860bda5563ac81e3c0057d654b5253219618a22ec3a346306239bba8cfa1a6", friendlyImageName: "localhost:5000/kindest/node:v1.21.1", pullImageName: "localhost:5000/kindest/node@sha256:69860bda5563ac81e3c0057d654b5253219618a22ec3a346306239bba8cfa1a6", }, { image: "baz:quux@sha256:69860bda5563ac81e3c0057d654b5253219618a22ec3a346306239bba8cfa1a6", friendlyImageName: "baz:quux", pullImageName: "docker.io/library/baz@sha256:69860bda5563ac81e3c0057d654b5253219618a22ec3a346306239bba8cfa1a6", }, { image: "baz:quux", friendlyImageName: "baz:quux", pullImageName: "docker.io/library/baz:quux", }, { image: "baz@sha256:69860bda5563ac81e3c0057d654b5253219618a22ec3a346306239bba8cfa1a6", friendlyImageName: "baz", pullImageName: "docker.io/library/baz@sha256:69860bda5563ac81e3c0057d654b5253219618a22ec3a346306239bba8cfa1a6", }, } for _, tc := range cases { tc := tc // capture variable t.Run(tc.image, func(t *testing.T) { t.Parallel() friendlyImageName, pullImageName := sanitizeImage(tc.image) if friendlyImageName != tc.friendlyImageName { t.Errorf("Wrong friendlyImageName from %v: expected %v, received %v", tc.image, tc.friendlyImageName, friendlyImageName) } if pullImageName != tc.pullImageName { t.Errorf("Wrong pullImageName from %v: expected %v, received %v", tc.image, tc.pullImageName, pullImageName) } }) } } kubernetes-sigs-kind-49aeee6/pkg/cluster/internal/providers/podman/network.go000066400000000000000000000100201524365506300276460ustar00rootroot00000000000000/* Copyright 2020 The Kubernetes Authors. 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 podman import ( "crypto/sha1" "encoding/binary" "net" "regexp" "strings" "sigs.k8s.io/kind/pkg/errors" "sigs.k8s.io/kind/pkg/exec" ) // This may be overridden by KIND_EXPERIMENTAL_PODMAN_NETWORK env, // experimentally... // // By default currently picking a single network is equivalent to the previous // behavior *except* that we moved from the default bridge to a user defined // network because the default bridge is actually special versus any other // docker network and lacks the embedded DNS // // For now this also makes it easier for apps to join the same network, and // leaves users with complex networking desires to create and manage their own // networks. const fixedNetworkName = "kind" // ensureNetwork creates a new network // podman only creates IPv6 networks for versions >= 2.2.0 func ensureNetwork(name string) error { // network already exists if checkIfNetworkExists(name) { return nil } // generate unique subnet per network based on the name // obtained from the ULA fc00::/8 range // Make N attempts with "probing" in case we happen to collide subnet := generateULASubnetFromName(name, 0) err := createNetwork(name, subnet) if err == nil { // Success! return nil } if isUnknownIPv6FlagError(err) || isIPv6DisabledError(err) { return createNetwork(name, "") } // Only continue if the error is because of the subnet range // is already allocated if !isPoolOverlapError(err) { return err } // keep trying for ipv6 subnets const maxAttempts = 5 for attempt := int32(1); attempt < maxAttempts; attempt++ { subnet := generateULASubnetFromName(name, attempt) err = createNetwork(name, subnet) if err == nil { // success! return nil } else if !isPoolOverlapError(err) { // unknown error ... return err } } return errors.New("exhausted attempts trying to find a non-overlapping subnet") } func createNetwork(name, ipv6Subnet string) error { if ipv6Subnet == "" { return exec.Command("podman", "network", "create", "-d=bridge", name).Run() } return exec.Command("podman", "network", "create", "-d=bridge", "--ipv6", "--subnet", ipv6Subnet, name).Run() } func checkIfNetworkExists(name string) bool { _, err := exec.Output(exec.Command( "podman", "network", "inspect", regexp.QuoteMeta(name), )) return err == nil } func isUnknownIPv6FlagError(err error) bool { rerr := exec.RunErrorForError(err) return rerr != nil && strings.Contains(string(rerr.Output), "unknown flag: --ipv6") } func isIPv6DisabledError(err error) bool { rerr := exec.RunErrorForError(err) return rerr != nil && strings.Contains(string(rerr.Output), "is ipv6 enabled in the kernel") } func isPoolOverlapError(err error) bool { rerr := exec.RunErrorForError(err) if rerr == nil { return false } output := string(rerr.Output) return strings.Contains(output, "is already used on the host or by another config") || strings.Contains(output, "is being used by a network interface") || strings.Contains(output, "is already being used by a cni configuration") } // generateULASubnetFromName generate an IPv6 subnet based on the // name and Nth probing attempt func generateULASubnetFromName(name string, attempt int32) string { ip := make([]byte, 16) ip[0] = 0xfc ip[1] = 0x00 h := sha1.New() _, _ = h.Write([]byte(name)) _ = binary.Write(h, binary.LittleEndian, attempt) bs := h.Sum(nil) for i := 2; i < 8; i++ { ip[i] = bs[i] } subnet := &net.IPNet{ IP: net.IP(ip), Mask: net.CIDRMask(64, 128), } return subnet.String() } kubernetes-sigs-kind-49aeee6/pkg/cluster/internal/providers/podman/node.go000066400000000000000000000077671524365506300271320ustar00rootroot00000000000000/* Copyright 2019 The Kubernetes Authors. 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 podman import ( "context" "fmt" "io" "strings" "sigs.k8s.io/kind/pkg/errors" "sigs.k8s.io/kind/pkg/exec" ) // nodes.Node implementation for the podman provider type node struct { name string } func (n *node) String() string { return n.name } func (n *node) Role() (string, error) { cmd := exec.Command("podman", "inspect", "--format", fmt.Sprintf(`{{ index .Config.Labels "%s"}}`, nodeRoleLabelKey), n.name, ) lines, err := exec.OutputLines(cmd) if err != nil { return "", errors.Wrap(err, "failed to get role for node") } if len(lines) != 1 { return "", errors.Errorf("failed to get role for node: output lines %d != 1", len(lines)) } return lines[0], nil } func (n *node) IP() (ipv4 string, ipv6 string, err error) { // retrieve the IP address of the node using podman inspect cmd := exec.Command("podman", "inspect", "-f", "{{range .NetworkSettings.Networks}}{{.IPAddress}},{{.GlobalIPv6Address}}{{end}}", n.name, // ... against the "node" container ) lines, err := exec.OutputLines(cmd) if err != nil { return "", "", errors.Wrap(err, "failed to get container details") } if len(lines) != 1 { return "", "", errors.Errorf("file should only be one line, got %d lines", len(lines)) } ips := strings.Split(lines[0], ",") if len(ips) != 2 { return "", "", errors.Errorf("container addresses should have 2 values, got %d values", len(ips)) } return ips[0], ips[1], nil } func (n *node) Command(command string, args ...string) exec.Cmd { return &nodeCmd{ nameOrID: n.name, command: command, args: args, } } func (n *node) CommandContext(ctx context.Context, command string, args ...string) exec.Cmd { return &nodeCmd{ nameOrID: n.name, command: command, args: args, ctx: ctx, } } // nodeCmd implements exec.Cmd for podman nodes type nodeCmd struct { nameOrID string // the container name or ID command string args []string env []string stdin io.Reader stdout io.Writer stderr io.Writer ctx context.Context } func (c *nodeCmd) Run() error { args := []string{ "exec", // run with privileges so we can remount etc.. // this might not make sense in the most general sense, but it is // important to many kind commands "--privileged", } if c.stdin != nil { args = append(args, "-i", // interactive so we can supply input ) } // set env for _, env := range c.env { args = append(args, "-e", env) } // specify the container and command, after this everything will be // args the command in the container rather than to podman args = append( args, c.nameOrID, // ... against the container c.command, // with the command specified ) args = append( args, // finally, with the caller args c.args..., ) var cmd exec.Cmd if c.ctx != nil { cmd = exec.CommandContext(c.ctx, "podman", args...) } else { cmd = exec.Command("podman", args...) } if c.stdin != nil { cmd.SetStdin(c.stdin) } if c.stderr != nil { cmd.SetStderr(c.stderr) } if c.stdout != nil { cmd.SetStdout(c.stdout) } return cmd.Run() } func (c *nodeCmd) SetEnv(env ...string) exec.Cmd { c.env = env return c } func (c *nodeCmd) SetStdin(r io.Reader) exec.Cmd { c.stdin = r return c } func (c *nodeCmd) SetStdout(w io.Writer) exec.Cmd { c.stdout = w return c } func (c *nodeCmd) SetStderr(w io.Writer) exec.Cmd { c.stderr = w return c } func (n *node) SerialLogs(w io.Writer) error { return exec.Command("podman", "logs", n.name).SetStdout(w).SetStderr(w).Run() } kubernetes-sigs-kind-49aeee6/pkg/cluster/internal/providers/podman/provider.go000066400000000000000000000340201524365506300300150ustar00rootroot00000000000000/* Copyright 2019 The Kubernetes Authors. 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 podman import ( "encoding/json" "fmt" "net" "os" "path/filepath" "strconv" "strings" "sigs.k8s.io/kind/pkg/cluster/nodes" "sigs.k8s.io/kind/pkg/cluster/nodeutils" "sigs.k8s.io/kind/pkg/errors" "sigs.k8s.io/kind/pkg/exec" "sigs.k8s.io/kind/pkg/log" "sigs.k8s.io/kind/pkg/cluster/internal/providers" "sigs.k8s.io/kind/pkg/cluster/internal/providers/common" "sigs.k8s.io/kind/pkg/internal/apis/config" "sigs.k8s.io/kind/pkg/internal/cli" "sigs.k8s.io/kind/pkg/internal/sets" "sigs.k8s.io/kind/pkg/internal/version" ) // NewProvider returns a new provider based on executing `podman ...` func NewProvider(logger log.Logger) providers.Provider { logger.Warn("enabling experimental podman provider") return &provider{ logger: logger, } } // Provider implements provider.Provider // see NewProvider type provider struct { logger log.Logger info *providers.ProviderInfo } // String implements fmt.Stringer // NOTE: the value of this should not currently be relied upon for anything! // This is only used for setting the Node's providerID func (p *provider) String() string { return "podman" } // Provision is part of the providers.Provider interface func (p *provider) Provision(status *cli.Status, cfg *config.Cluster) (err error) { if err := ensureMinVersion(); err != nil { return err } // TODO: validate cfg // ensure node images are pulled before actually provisioning if err := ensureNodeImages(p.logger, status, cfg); err != nil { return err } // ensure the pre-requisite network exists networkName := fixedNetworkName if n := os.Getenv("KIND_EXPERIMENTAL_PODMAN_NETWORK"); n != "" { p.logger.Warn("WARNING: Overriding podman network due to KIND_EXPERIMENTAL_PODMAN_NETWORK") p.logger.Warn("WARNING: Here be dragons! This is not supported currently.") networkName = n } if err := ensureNetwork(networkName); err != nil { return errors.Wrap(err, "failed to ensure podman network") } // actually provision the cluster icons := strings.Repeat("📦 ", len(cfg.Nodes)) status.Start(fmt.Sprintf("Preparing nodes %s", icons)) defer func() { status.End(err == nil) }() // plan creating the containers createContainerFuncs, err := planCreation(cfg, networkName) if err != nil { return err } // actually create nodes return errors.UntilErrorConcurrent(createContainerFuncs) } // ListClusters is part of the providers.Provider interface func (p *provider) ListClusters() ([]string, error) { // Select the format specifier for extracting the cluster label. // podman 6.0.0 changed `.Labels` from a map to a slice, breaking the // `index .Labels "key"` form; the `.Label "key"` specifier works on // podman 5.0.0+ and across that change, but does not exist on older // versions. See https://github.com/kubernetes-sigs/kind/issues/4201 v, err := getPodmanVersion() if err != nil { return nil, errors.Wrap(err, "failed to check podman version") } var format string if v.AtLeast(version.MustParseSemantic(labelFormatVersion)) { format = fmt.Sprintf(`{{.Label "%s"}}`, clusterLabelKey) } else { format = fmt.Sprintf(`{{index .Labels "%s"}}`, clusterLabelKey) } cmd := exec.Command("podman", "ps", "-a", // show stopped nodes // filter for nodes with the cluster label "--filter", "label="+clusterLabelKey, // format to include the cluster name "--format", format, ) lines, err := exec.OutputLines(cmd) if err != nil { return nil, errors.Wrap(err, "failed to list clusters") } return sets.NewString(lines...).List(), nil } // ListNodes is part of the providers.Provider interface func (p *provider) ListNodes(cluster string) ([]nodes.Node, error) { cmd := exec.Command("podman", "ps", "-a", // show stopped nodes // filter for nodes with the cluster label "--filter", fmt.Sprintf("label=%s=%s", clusterLabelKey, cluster), // format to include the cluster name "--format", `{{.Names}}`, ) lines, err := exec.OutputLines(cmd) if err != nil { return nil, errors.Wrap(err, "failed to list nodes") } // convert names to node handles ret := make([]nodes.Node, 0, len(lines)) for _, name := range lines { ret = append(ret, p.node(name)) } return ret, nil } // DeleteNodes is part of the providers.Provider interface func (p *provider) DeleteNodes(n []nodes.Node) error { if len(n) == 0 { return nil } const command = "podman" args := make([]string, 0, len(n)+3) // allocate once args = append(args, "rm", "-f", // force the container to be delete now "-v", // delete volumes ) for _, node := range n { args = append(args, node.String()) } if err := exec.Command(command, args...).Run(); err != nil { return errors.Wrap(err, "failed to delete nodes") } var nodeVolumes []string for _, node := range n { volumes, err := getVolumes(node.String()) if err != nil { return err } nodeVolumes = append(nodeVolumes, volumes...) } if len(nodeVolumes) == 0 { return nil } return deleteVolumes(nodeVolumes) } // getHostIPOrDefault defaults HostIP to localhost if is not set // xref: https://github.com/kubernetes-sigs/kind/issues/3777 func getHostIPOrDefault(hostIP string) string { if hostIP == "" { return "127.0.0.1" } return hostIP } // GetAPIServerEndpoint is part of the providers.Provider interface func (p *provider) GetAPIServerEndpoint(cluster string) (string, error) { // locate the node that hosts this allNodes, err := p.ListNodes(cluster) if err != nil { return "", errors.Wrap(err, "failed to list nodes") } n, err := nodeutils.APIServerEndpointNode(allNodes) if err != nil { return "", errors.Wrap(err, "failed to get api server endpoint") } // TODO: get rid of this once podman settles on how to get the port mapping using podman inspect // This is only used to get the Kubeconfig server field v, err := getPodmanVersion() if err != nil { return "", errors.Wrap(err, "failed to check podman version") } // podman inspect was broken between 2.2.0 and 3.0.0 // https://github.com/containers/podman/issues/8444 if v.AtLeast(version.MustParseSemantic("2.2.0")) && v.LessThan(version.MustParseSemantic("3.0.0")) { p.logger.Warnf("WARNING: podman version %s not fully supported, please use versions 3.0.0+", v) cmd := exec.Command( "podman", "inspect", "--format", "{{range .NetworkSettings.Ports }}{{range .}}{{.HostIP}}/{{.HostPort}}{{end}}{{end}}", n.String(), ) lines, err := exec.OutputLines(cmd) if err != nil { return "", errors.Wrap(err, "failed to get api server port") } if len(lines) != 1 { return "", errors.Errorf("network details should only be one line, got %d lines", len(lines)) } // output is in the format IP/Port parts := strings.Split(strings.TrimSpace(lines[0]), "/") if len(parts) != 2 { return "", errors.Errorf("network details should be in the format IP/Port, received: %s", parts) } host := parts[0] port, err := strconv.Atoi(parts[1]) if err != nil { return "", errors.Errorf("network port not an integer: %v", err) } return net.JoinHostPort(host, strconv.Itoa(port)), nil } cmd := exec.Command( "podman", "inspect", "--format", "{{ json .NetworkSettings.Ports }}", n.String(), ) lines, err := exec.OutputLines(cmd) if err != nil { return "", errors.Wrap(err, "failed to get api server port") } if len(lines) != 1 { return "", errors.Errorf("network details should only be one line, got %d lines", len(lines)) } // portMapping19 maps to the standard CNI portmapping capability used in podman 1.9 // see: https://github.com/containernetworking/cni/blob/spec-v0.4.0/CONVENTIONS.md type portMapping19 struct { HostPort int32 `json:"hostPort"` ContainerPort int32 `json:"containerPort"` Protocol string `json:"protocol"` HostIP string `json:"hostIP"` } // portMapping20 maps to the podman 2.0 portmap type // see: https://github.com/containers/podman/blob/05988fc74fc25f2ad2256d6e011dfb7ad0b9a4eb/libpod/define/container_inspect.go#L134-L143 type portMapping20 struct { HostPort string `json:"HostPort"` HostIP string `json:"HostIp"` } portMappings20 := make(map[string][]portMapping20) if err := json.Unmarshal([]byte(lines[0]), &portMappings20); err == nil { for k, v := range portMappings20 { protocol := "tcp" parts := strings.Split(k, "/") if len(parts) == 2 { protocol = strings.ToLower(parts[1]) } containerPort, err := strconv.Atoi(parts[0]) if err != nil { return "", err } for _, pm := range v { if containerPort == common.APIServerInternalPort && protocol == "tcp" { return net.JoinHostPort(getHostIPOrDefault(pm.HostIP), pm.HostPort), nil } } } } var portMappings19 []portMapping19 if err := json.Unmarshal([]byte(lines[0]), &portMappings19); err != nil { return "", errors.Errorf("invalid network details: %v", err) } for _, pm := range portMappings19 { if pm.ContainerPort == common.APIServerInternalPort && pm.Protocol == "tcp" { return net.JoinHostPort(getHostIPOrDefault(pm.HostIP), strconv.Itoa(int(pm.HostPort))), nil } } return "", errors.Errorf("failed to get api server port") } // GetAPIServerInternalEndpoint is part of the providers.Provider interface func (p *provider) GetAPIServerInternalEndpoint(cluster string) (string, error) { // locate the node that hosts this allNodes, err := p.ListNodes(cluster) if err != nil { return "", errors.Wrap(err, "failed to list nodes") } n, err := nodeutils.APIServerEndpointNode(allNodes) if err != nil { return "", errors.Wrap(err, "failed to get apiserver endpoint") } // NOTE: we're using the nodes's hostnames which are their names return net.JoinHostPort(n.String(), fmt.Sprintf("%d", common.APIServerInternalPort)), nil } // node returns a new node handle for this provider func (p *provider) node(name string) nodes.Node { return &node{ name: name, } } // CollectLogs will populate dir with cluster logs and other debug files func (p *provider) CollectLogs(dir string, nodes []nodes.Node) error { execToPathFn := func(cmd exec.Cmd, path string) func() error { return func() error { f, err := common.FileOnHost(path) if err != nil { return err } defer f.Close() return cmd.SetStdout(f).SetStderr(f).Run() } } // construct a slice of methods to collect logs fns := []func() error{ // record info about the host podman execToPathFn( exec.Command("podman", "info"), filepath.Join(dir, "podman-info.txt"), ), } // inspect each node for _, n := range nodes { node := n // https://golang.org/doc/faq#closures_and_goroutines name := node.String() path := filepath.Join(dir, name) fns = append(fns, execToPathFn(exec.Command("podman", "inspect", name), filepath.Join(path, "inspect.json")), ) } // run and collect up all errors return errors.AggregateConcurrent(fns) } // Info returns the provider info. // The info is cached on the first time of the execution. func (p *provider) Info() (*providers.ProviderInfo, error) { if p.info == nil { var err error p.info, err = info(p.logger) if err != nil { return p.info, err } } return p.info, nil } // podmanInfo corresponds to `podman info --format 'json`. // The structure is different from `docker info --format '{{json .}}'`, // and lacks information about the availability of the cgroup controllers. type podmanInfo struct { Host struct { CgroupVersion string `json:"cgroupVersion,omitempty"` // "v2" CgroupControllers []string `json:"cgroupControllers,omitempty"` Security struct { Rootless bool `json:"rootless,omitempty"` } `json:"security"` } `json:"host"` } // info detects ProviderInfo by executing `podman info --format json`. func info(logger log.Logger) (*providers.ProviderInfo, error) { const podman = "podman" args := []string{"info", "--format", "json"} cmd := exec.Command(podman, args...) out, err := exec.Output(cmd) if err != nil { return nil, errors.Wrapf(err, "failed to get podman info (%s %s): %q", podman, strings.Join(args, " "), string(out)) } var pInfo podmanInfo if err := json.Unmarshal(out, &pInfo); err != nil { return nil, err } stringSliceContains := func(s []string, str string) bool { for _, v := range s { if v == str { return true } } return false } // Since Podman version before v4.0.0 does not gives controller info. // We assume all the cgroup controllers to be available. // For rootless, this assumption is not always correct, // so we print the warning below. cgroupSupportsMemoryLimit := true cgroupSupportsPidsLimit := true cgroupSupportsCPUShares := true v, err := getPodmanVersion() if err != nil { return nil, errors.Wrap(err, "failed to check podman version") } // Info for controllers must be available after v4.0.0 // via https://github.com/containers/podman/pull/10387 if v.AtLeast(version.MustParseSemantic("4.0.0")) { cgroupSupportsMemoryLimit = stringSliceContains(pInfo.Host.CgroupControllers, "memory") cgroupSupportsPidsLimit = stringSliceContains(pInfo.Host.CgroupControllers, "pids") cgroupSupportsCPUShares = stringSliceContains(pInfo.Host.CgroupControllers, "cpu") } info := &providers.ProviderInfo{ Rootless: pInfo.Host.Security.Rootless, Cgroup2: pInfo.Host.CgroupVersion == "v2", SupportsMemoryLimit: cgroupSupportsMemoryLimit, SupportsPidsLimit: cgroupSupportsPidsLimit, SupportsCPUShares: cgroupSupportsCPUShares, } if info.Rootless && !v.AtLeast(version.MustParseSemantic("4.0.0")) { if logger != nil { logger.Warn("Cgroup controller detection is not implemented for Podman. " + "If you see cgroup-related errors, you might need to set systemd property \"Delegate=yes\", see https://kind.sigs.k8s.io/docs/user/rootless/") } } return info, nil } kubernetes-sigs-kind-49aeee6/pkg/cluster/internal/providers/podman/provision.go000066400000000000000000000361361524365506300302250ustar00rootroot00000000000000/* Copyright 2019 The Kubernetes Authors. 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 podman import ( "context" "encoding/json" "fmt" "net" "path/filepath" "strings" "time" "sigs.k8s.io/kind/pkg/cluster/constants" "sigs.k8s.io/kind/pkg/errors" "sigs.k8s.io/kind/pkg/exec" "sigs.k8s.io/kind/pkg/cluster/internal/loadbalancer" "sigs.k8s.io/kind/pkg/cluster/internal/providers/common" "sigs.k8s.io/kind/pkg/internal/apis/config" ) // planCreation creates a slice of funcs that will create the containers func planCreation(cfg *config.Cluster, networkName string) (createContainerFuncs []func() error, err error) { // these apply to all container creation nodeNamer := common.MakeNodeNamer(cfg.Name) names := make([]string, len(cfg.Nodes)) for i, node := range cfg.Nodes { name := nodeNamer(string(node.Role)) // name the node names[i] = name } haveLoadbalancer := config.ClusterHasImplicitLoadBalancer(cfg) if haveLoadbalancer { names = append(names, nodeNamer(constants.ExternalLoadBalancerNodeRoleValue)) } genericArgs, err := commonArgs(cfg, networkName, names) if err != nil { return nil, err } // only the external LB should reflect the port if we have multiple control planes apiServerPort := cfg.Networking.APIServerPort apiServerAddress := cfg.Networking.APIServerAddress if config.ClusterHasImplicitLoadBalancer(cfg) { // TODO: picking ports locally is less than ideal with a remote runtime // (does podman have this?) // but this is supposed to be an implementation detail and NOT picking // them breaks host reboot ... // For now remote podman + multi control plane is not supported apiServerPort = 0 // replaced with random ports apiServerAddress = "127.0.0.1" // only the LB needs to be non-local // only for IPv6 only clusters if cfg.Networking.IPFamily == config.IPv6Family { apiServerAddress = "::1" // only the LB needs to be non-local } // plan loadbalancer node name := names[len(names)-1] createContainerFuncs = append(createContainerFuncs, func() error { args, err := runArgsForLoadBalancer(cfg, name, genericArgs) if err != nil { return err } return createContainer(name, args) }) } // plan normal nodes for i, node := range cfg.Nodes { node := node.DeepCopy() // copy so we can modify name := names[i] // fixup relative paths, podman can only handle absolute paths for i := range node.ExtraMounts { hostPath := node.ExtraMounts[i].HostPath absHostPath, err := filepath.Abs(hostPath) if err != nil { return nil, errors.Wrapf(err, "unable to resolve absolute path for hostPath: %q", hostPath) } node.ExtraMounts[i].HostPath = absHostPath } // plan actual creation based on role switch node.Role { case config.ControlPlaneRole: createContainerFuncs = append(createContainerFuncs, func() error { node.ExtraPortMappings = append(node.ExtraPortMappings, config.PortMapping{ ListenAddress: apiServerAddress, HostPort: apiServerPort, ContainerPort: common.APIServerInternalPort, }, ) args, err := runArgsForNode(node, cfg.Networking.IPFamily, name, genericArgs) if err != nil { return err } return createContainerWithWaitUntilSystemdReachesMultiUserSystem(name, args) }) case config.WorkerRole: createContainerFuncs = append(createContainerFuncs, func() error { args, err := runArgsForNode(node, cfg.Networking.IPFamily, name, genericArgs) if err != nil { return err } return createContainerWithWaitUntilSystemdReachesMultiUserSystem(name, args) }) default: return nil, errors.Errorf("unknown node role: %q", node.Role) } } return createContainerFuncs, nil } // commonArgs computes static arguments that apply to all containers func commonArgs(cfg *config.Cluster, networkName string, nodeNames []string) ([]string, error) { // standard arguments all nodes containers need, computed once args := []string{ "--detach", // run the container detached "--tty", // allocate a tty for entrypoint logs "--net", networkName, // attach to its own network // label the node with the cluster ID "--label", fmt.Sprintf("%s=%s", clusterLabelKey, cfg.Name), // specify container implementation to systemd "-e", "container=podman", // this is the default in cgroupsv2 but not in v1 "--cgroupns=private", } // enable IPv6 if necessary if config.ClusterHasIPv6(cfg) { args = append(args, "--sysctl=net.ipv6.conf.all.disable_ipv6=0", "--sysctl=net.ipv6.conf.all.forwarding=1") } // pass proxy environment variables proxyEnv, err := getProxyEnv(cfg, networkName, nodeNames) if err != nil { return nil, errors.Wrap(err, "proxy setup error") } for key, val := range proxyEnv { args = append(args, "-e", fmt.Sprintf("%s=%s", key, val)) } // handle Podman on Btrfs or ZFS same as we do with Docker // https://github.com/kubernetes-sigs/kind/issues/1416#issuecomment-606514724 if mountDevMapper() { args = append(args, "--volume", "/dev/mapper:/dev/mapper") } // rootless: use fuse-overlayfs by default // https://github.com/kubernetes-sigs/kind/issues/2275 if mountFuse() { args = append(args, "--device", "/dev/fuse") } if cfg.Networking.DNSSearch != nil { args = append(args, "-e", "KIND_DNS_SEARCH="+strings.Join(*cfg.Networking.DNSSearch, " ")) } return args, nil } func runArgsForNode(node *config.Node, clusterIPFamily config.ClusterIPFamily, name string, args []string) ([]string, error) { // Pre-create anonymous volumes to enable specifying mount options // during container run time varVolume, err := createAnonymousVolume(name) if err != nil { return nil, err } args = append([]string{ "--hostname", name, // make hostname match container name // label the node with the role ID "--label", fmt.Sprintf("%s=%s", nodeRoleLabelKey, node.Role), // running containers in a container requires privileged // NOTE: we could try to replicate this with --cap-add, and use less // privileges, but this flag also changes some mounts that are necessary // including some ones podman would otherwise do by default. // for now this is what we want. in the future we may revisit this. "--privileged", // runtime temporary storage "--tmpfs", "/tmp", // various things depend on working /tmp "--tmpfs", "/run", // systemd wants a writable /run // runtime persistent storage // this ensures that E.G. pods, logs etc. are not on the container // filesystem, which is not only better for performance, but allows // running kind in kind for "party tricks" // (please don't depend on doing this though!) // also enable default docker volume options // suid: SUID applications on the volume will be able to change their privilege // exec: executables on the volume will be able to executed within the container // dev: devices on the volume will be able to be used by processes within the container "--volume", fmt.Sprintf("%s:/var:suid,exec,dev", varVolume), // some k8s things want to read /lib/modules "--volume", "/lib/modules:/lib/modules:ro", // propagate KIND_EXPERIMENTAL_CONTAINERD_SNAPSHOTTER to the entrypoint script "-e", "KIND_EXPERIMENTAL_CONTAINERD_SNAPSHOTTER", }, args..., ) // convert mounts and port mappings to container run args args = append(args, generateMountBindings(node.ExtraMounts...)...) mappingArgs, err := generatePortMappings(clusterIPFamily, node.ExtraPortMappings...) if err != nil { return nil, err } args = append(args, mappingArgs...) switch node.Role { case config.ControlPlaneRole: args = append(args, "-e", "KUBECONFIG=/etc/kubernetes/admin.conf") } // finally, specify the image to run _, image := sanitizeImage(node.Image) return append(args, image), nil } func runArgsForLoadBalancer(cfg *config.Cluster, name string, args []string) ([]string, error) { args = append([]string{ "--hostname", name, // make hostname match container name // label the node with the role ID "--label", fmt.Sprintf("%s=%s", nodeRoleLabelKey, constants.ExternalLoadBalancerNodeRoleValue), }, args..., ) // load balancer port mapping mappingArgs, err := generatePortMappings(cfg.Networking.IPFamily, config.PortMapping{ ListenAddress: cfg.Networking.APIServerAddress, HostPort: cfg.Networking.APIServerPort, ContainerPort: common.APIServerInternalPort, }, ) if err != nil { return nil, err } args = append(args, mappingArgs...) // finally, specify the image to run _, image := sanitizeImage(loadbalancer.Image) args = append(args, image) args = append(args, loadbalancer.GenerateBootstrapCommand(cfg.Name, name)...) return args, nil } func getProxyEnv(cfg *config.Cluster, networkName string, nodeNames []string) (map[string]string, error) { envs := common.GetProxyEnvs(cfg) // Specifically add the podman network subnets to NO_PROXY if we are using a proxy if len(envs) > 0 { // kind default bridge is "kind" subnets, err := getSubnets(networkName) if err != nil { return nil, err } noProxyList := append(subnets, envs[common.NOProxy]) noProxyList = append(noProxyList, nodeNames...) // Add pod,service and all the cluster nodes' dns names to no_proxy to allow in cluster // Note: this is best effort based on the default CoreDNS spec // https://github.com/kubernetes/dns/blob/master/docs/specification.md // Any user created pod/service hostnames, namespaces, custom DNS services // are expected to be no-proxied by the user explicitly. noProxyList = append(noProxyList, ".svc", ".svc.cluster", ".svc.cluster.local") noProxyJoined := strings.Join(noProxyList, ",") envs[common.NOProxy] = noProxyJoined envs[strings.ToLower(common.NOProxy)] = noProxyJoined } return envs, nil } type podmanNetworks []struct { // v4+ Subnets []struct { Subnet string `json:"subnet"` Gateway string `json:"gateway"` } `json:"subnets"` // v3 and anything still using CNI/IPAM Plugins []struct { Ipam struct { Ranges [][]struct { Gateway string `json:"gateway"` Subnet string `json:"subnet"` } `json:"ranges"` } `json:"ipam,omitempty"` } `json:"plugins"` } func getSubnets(networkName string) ([]string, error) { cmd := exec.Command("podman", "network", "inspect", networkName) out, err := exec.Output(cmd) if err != nil { return nil, errors.Wrap(err, "failed to get subnets") } networks := podmanNetworks{} jsonErr := json.Unmarshal([]byte(out), &networks) if jsonErr != nil { return nil, errors.Wrap(jsonErr, "failed to get subnets") } subnets := []string{} for _, network := range networks { if len(network.Subnets) > 0 { for _, subnet := range network.Subnets { subnets = append(subnets, subnet.Subnet) } } if len(network.Plugins) > 0 { for _, plugin := range network.Plugins { for _, r := range plugin.Ipam.Ranges { for _, rr := range r { subnets = append(subnets, rr.Subnet) } } } } } return subnets, nil } // generateMountBindings converts the mount list to a list of args for podman // ':[:options]', where 'options' // is a comma-separated list of the following strings: // 'ro', if the path is read only // 'Z', if the volume requires SELinux relabeling func generateMountBindings(mounts ...config.Mount) []string { args := make([]string, 0, len(mounts)) for _, m := range mounts { bind := fmt.Sprintf("%s:%s", m.HostPath, m.ContainerPath) var attrs []string if m.Readonly { attrs = append(attrs, "ro") } // Only request relabeling if the pod provides an SELinux context. If the pod // does not provide an SELinux context relabeling will label the volume with // the container's randomly allocated MCS label. This would restrict access // to the volume to the container which mounts it first. if m.SelinuxRelabel { attrs = append(attrs, "Z") } switch m.Propagation { case config.MountPropagationNone: // noop, private is default case config.MountPropagationBidirectional: attrs = append(attrs, "rshared") case config.MountPropagationHostToContainer: attrs = append(attrs, "rslave") default: // Falls back to "private" } if len(attrs) > 0 { bind = fmt.Sprintf("%s:%s", bind, strings.Join(attrs, ",")) } args = append(args, fmt.Sprintf("--volume=%s", bind)) } return args } // generatePortMappings converts the portMappings list to a list of args for podman func generatePortMappings(clusterIPFamily config.ClusterIPFamily, portMappings ...config.PortMapping) ([]string, error) { args := make([]string, 0, len(portMappings)) for _, pm := range portMappings { // do provider internal defaulting // in a future API revision we will handle this at the API level and remove this if pm.ListenAddress == "" { switch clusterIPFamily { case config.IPv4Family, config.DualStackFamily: pm.ListenAddress = "0.0.0.0" case config.IPv6Family: pm.ListenAddress = "::" default: return nil, errors.Errorf("unknown cluster IP family: %v", clusterIPFamily) } } if string(pm.Protocol) == "" { pm.Protocol = config.PortMappingProtocolTCP // TCP is the default } // validate that the provider can handle this binding switch pm.Protocol { case config.PortMappingProtocolTCP: case config.PortMappingProtocolUDP: case config.PortMappingProtocolSCTP: default: return nil, errors.Errorf("unknown port mapping protocol: %v", pm.Protocol) } // get a random port if necessary (port = 0) hostPort, releaseHostPortFn, err := common.PortOrGetFreePort(pm.HostPort, pm.ListenAddress) if err != nil { return nil, errors.Wrap(err, "failed to get random host port for port mapping") } if releaseHostPortFn != nil { defer releaseHostPortFn() } // generate the actual mapping arg protocol := string(pm.Protocol) hostPortBinding := net.JoinHostPort(pm.ListenAddress, fmt.Sprintf("%d", hostPort)) // Podman expects empty string instead of 0 to assign a random port // https://github.com/containers/libpod/blob/master/pkg/spec/ports.go#L68-L69 if strings.HasSuffix(hostPortBinding, ":0") { hostPortBinding = strings.TrimSuffix(hostPortBinding, "0") } args = append(args, fmt.Sprintf("--publish=%s:%d/%s", hostPortBinding, pm.ContainerPort, strings.ToLower(protocol))) } return args, nil } func createContainer(name string, args []string) error { return exec.Command("podman", append([]string{"run", "--name", name}, args...)...).Run() } func createContainerWithWaitUntilSystemdReachesMultiUserSystem(name string, args []string) error { if err := exec.Command("podman", append([]string{"run", "--name", name}, args...)...).Run(); err != nil { return err } logCtx, logCancel := context.WithTimeout(context.Background(), 30*time.Second) defer logCancel() logCmd := exec.CommandContext(logCtx, "podman", "logs", "-f", name) return common.WaitUntilLogRegexpMatches(logCtx, logCmd, common.NodeReachedCgroupsReadyRegexp()) } kubernetes-sigs-kind-49aeee6/pkg/cluster/internal/providers/podman/util.go000066400000000000000000000114701524365506300271440ustar00rootroot00000000000000/* Copyright 2019 The Kubernetes Authors. 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 podman import ( "encoding/json" "fmt" "strings" "sigs.k8s.io/kind/pkg/errors" "sigs.k8s.io/kind/pkg/exec" "sigs.k8s.io/kind/pkg/internal/version" ) // IsAvailable checks if podman is available in the system func IsAvailable() bool { cmd := exec.Command("podman", "-v") lines, err := exec.OutputLines(cmd) if err != nil || len(lines) != 1 { return false } return strings.HasPrefix(lines[0], "podman version") } func getPodmanVersion() (*version.Version, error) { cmd := exec.Command("podman", "--version") lines, err := exec.OutputLines(cmd) if err != nil { return nil, err } // output is like `podman version 1.7.1-dev` if len(lines) != 1 { return nil, errors.Errorf("podman version should only be one line, got %d", len(lines)) } parts := strings.Split(lines[0], " ") if len(parts) != 3 { return nil, errors.Errorf("podman --version contents should have 3 parts, got %q", lines[0]) } return version.ParseSemantic(parts[2]) } const ( minSupportedVersion = "1.8.0" // labelFormatVersion is the first podman version that supports the `.Label` // format specifier for `podman ps --format`. From podman 6.0.0 onward the // `.Labels` field is a slice rather than a map, which breaks the previous // `index .Labels` form, so `.Label` must be used on newer podman. // See https://github.com/kubernetes-sigs/kind/issues/4201 labelFormatVersion = "5.0.0" ) func ensureMinVersion() error { // ensure that podman version is a compatible version v, err := getPodmanVersion() if err != nil { return errors.Wrap(err, "failed to check podman version") } if !v.AtLeast(version.MustParseSemantic(minSupportedVersion)) { return errors.Errorf("podman version %q is too old, please upgrade to %q or later", v, minSupportedVersion) } return nil } // createAnonymousVolume creates a new anonymous volume // with the specified label=true // returns the name of the volume created func createAnonymousVolume(label string) (string, error) { cmd := exec.Command("podman", "volume", "create", // podman only support filter on key during list // so we use the unique id as key "--label", fmt.Sprintf("%s=true", label)) name, err := exec.Output(cmd) if err != nil { return "", err } return strings.TrimSuffix(string(name), "\n"), nil } // getVolumes gets volume names filtered on specified label func getVolumes(label string) ([]string, error) { cmd := exec.Command("podman", "volume", "ls", "--filter", fmt.Sprintf("label=%s", label), "--quiet") // `output` from the above command is names of all volumes each followed by `\n`. output, err := exec.Output(cmd) if err != nil { return nil, err } if string(output) == "" { // no volumes return nil, nil } // Trim away the last `\n`. trimmedOutput := strings.TrimSuffix(string(output), "\n") // Get names of all volumes by splitting via `\n`. return strings.Split(string(trimmedOutput), "\n"), nil } func deleteVolumes(names []string) error { args := []string{ "volume", "rm", "--force", } args = append(args, names...) cmd := exec.Command("podman", args...) return cmd.Run() } // mountDevMapper checks if the podman storage driver is Btrfs or ZFS func mountDevMapper() bool { cmd := exec.Command("podman", "info", "--format", "json") out, err := exec.Output(cmd) if err != nil { return false } var pInfo podmanStorageInfo if err := json.Unmarshal(out, &pInfo); err != nil { return false } // match docker logic pkg/cluster/internal/providers/docker/util.go if pInfo.Store.GraphDriverName == "btrfs" || pInfo.Store.GraphDriverName == "zfs" || pInfo.Store.GraphDriverName == "devicemapper" || pInfo.Store.GraphStatus.BackingFilesystem == "btrfs" || pInfo.Store.GraphStatus.BackingFilesystem == "xfs" || pInfo.Store.GraphStatus.BackingFilesystem == "zfs" { return true } return false } type podmanStorageInfo struct { Store struct { GraphDriverName string `json:"graphDriverName,omitempty"` GraphStatus struct { BackingFilesystem string `json:"Backing Filesystem,omitempty"` // "v2" } `json:"graphStatus"` } `json:"store"` } // rootless: use fuse-overlayfs by default // https://github.com/kubernetes-sigs/kind/issues/2275 func mountFuse() bool { i, err := info(nil) if err != nil { return false } if i != nil && i.Rootless { return true } return false } kubernetes-sigs-kind-49aeee6/pkg/cluster/internal/providers/provider.go000066400000000000000000000044161524365506300265450ustar00rootroot00000000000000/* Copyright 2019 The Kubernetes Authors. 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 providers contains the standard interface implemented by // different kind providers. package providers import ( "sigs.k8s.io/kind/pkg/cluster/nodes" "sigs.k8s.io/kind/pkg/internal/apis/config" "sigs.k8s.io/kind/pkg/internal/cli" ) // Provider represents a provider of cluster / node infrastructure // This is an alpha-grade internal API type Provider interface { // Provision should create and start the nodes, just short of // actually starting up Kubernetes, based on the given cluster config Provision(status *cli.Status, cfg *config.Cluster) error // ListClusters discovers the clusters that currently have resources // under this providers ListClusters() ([]string, error) // ListNodes returns the nodes under this provider for the given // cluster name, they may or may not be running correctly ListNodes(cluster string) ([]nodes.Node, error) // DeleteNodes deletes the provided list of nodes // These should be from results previously returned by this provider // E.G. by ListNodes() DeleteNodes([]nodes.Node) error // GetAPIServerEndpoint returns the host endpoint for the cluster's API server GetAPIServerEndpoint(cluster string) (string, error) // GetAPIServerInternalEndpoint returns the internal network endpoint for the cluster's API server GetAPIServerInternalEndpoint(cluster string) (string, error) // CollectLogs will populate dir with cluster logs and other debug files CollectLogs(dir string, nodes []nodes.Node) error // Info returns the provider info Info() (*ProviderInfo, error) } // ProviderInfo is the info of the provider type ProviderInfo struct { Rootless bool Cgroup2 bool SupportsMemoryLimit bool SupportsPidsLimit bool SupportsCPUShares bool } kubernetes-sigs-kind-49aeee6/pkg/cluster/nodes/000077500000000000000000000000001524365506300216365ustar00rootroot00000000000000kubernetes-sigs-kind-49aeee6/pkg/cluster/nodes/doc.go000066400000000000000000000012201524365506300227250ustar00rootroot00000000000000/* Copyright 2019 The Kubernetes Authors. 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 nodes provides a kind specific definition of a cluster node package nodes kubernetes-sigs-kind-49aeee6/pkg/cluster/nodes/types.go000066400000000000000000000024251524365506300233340ustar00rootroot00000000000000/* Copyright 2019 The Kubernetes Authors. 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 nodes import ( "io" "sigs.k8s.io/kind/pkg/exec" ) // Node represents a kind cluster node type Node interface { // The node should implement exec.Cmder for running commands against the node // see: sigs.k8s.io/kind/pkg/exec exec.Cmder // String should return the node name String() string // see also: fmt.Stringer // Role should return the node's role Role() (string, error) // see also: pkg/cluster/constants // TODO(bentheelder): should return node addresses more generally // Possibly remove this method in favor of obtaining this detail with // exec or from the provider IP() (ipv4 string, ipv6 string, err error) // SerialLogs collects the "node" container logs SerialLogs(writer io.Writer) error } kubernetes-sigs-kind-49aeee6/pkg/cluster/nodeutils/000077500000000000000000000000001524365506300225345ustar00rootroot00000000000000kubernetes-sigs-kind-49aeee6/pkg/cluster/nodeutils/doc.go000066400000000000000000000013501524365506300236270ustar00rootroot00000000000000/* Copyright 2018 The Kubernetes Authors. 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 nodeutils contains functionality for Kubernetes-in-Docker nodes // It mostly exists to break up functionality from sigs.k8s.io/kind/pkg/cluster package nodeutils kubernetes-sigs-kind-49aeee6/pkg/cluster/nodeutils/roles.go000066400000000000000000000114611524365506300242120ustar00rootroot00000000000000/* Copyright 2019 The Kubernetes Authors. 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 nodeutils import ( "sort" "strings" "sigs.k8s.io/kind/pkg/cluster/constants" "sigs.k8s.io/kind/pkg/cluster/nodes" "sigs.k8s.io/kind/pkg/errors" ) // SelectNodesByRole returns a list of nodes with the matching role // TODO(bentheelder): remove this in favor of specific role select methods // and avoid the unnecessary error handling func SelectNodesByRole(allNodes []nodes.Node, role string) ([]nodes.Node, error) { out := []nodes.Node{} for _, node := range allNodes { nodeRole, err := node.Role() if err != nil { return nil, err } if nodeRole == role { out = append(out, node) } } return out, nil } // InternalNodes returns the list of container IDs for the "nodes" in the cluster // that are ~Kubernetes nodes, as opposed to e.g. the external loadbalancer for HA func InternalNodes(allNodes []nodes.Node) ([]nodes.Node, error) { selectedNodes := []nodes.Node{} for _, node := range allNodes { nodeRole, err := node.Role() if err != nil { return nil, err } if nodeRole == constants.WorkerNodeRoleValue || nodeRole == constants.ControlPlaneNodeRoleValue { selectedNodes = append(selectedNodes, node) } } return selectedNodes, nil } // ExternalLoadBalancerNode returns a node handle for the external control plane // loadbalancer node or nil if there isn't one func ExternalLoadBalancerNode(allNodes []nodes.Node) (nodes.Node, error) { // identify and validate external load balancer node loadBalancerNodes, err := SelectNodesByRole( allNodes, constants.ExternalLoadBalancerNodeRoleValue, ) if err != nil { return nil, err } if len(loadBalancerNodes) < 1 { return nil, nil } if len(loadBalancerNodes) > 1 { return nil, errors.Errorf( "unexpected number of %s nodes %d", constants.ExternalLoadBalancerNodeRoleValue, len(loadBalancerNodes), ) } return loadBalancerNodes[0], nil } // APIServerEndpointNode selects the node from allNodes which hosts the API Server endpoint // This should be the control plane node if there is one control plane node, or a LoadBalancer otherwise. // It returns an error if the node list is invalid (E.G. two control planes and no load balancer) func APIServerEndpointNode(allNodes []nodes.Node) (nodes.Node, error) { if n, err := ExternalLoadBalancerNode(allNodes); err != nil { return nil, errors.Wrap(err, "failed to find api-server endpoint node") } else if n != nil { return n, nil } n, err := ControlPlaneNodes(allNodes) if err != nil { return nil, errors.Wrap(err, "failed to find api-server endpoint node") } if len(n) != 1 { return nil, errors.Errorf("expected one control plane node or a load balancer, not %d and none", len(n)) } return n[0], nil } // ControlPlaneNodes returns all control plane nodes such that the first entry // is the bootstrap control plane node func ControlPlaneNodes(allNodes []nodes.Node) ([]nodes.Node, error) { controlPlaneNodes, err := SelectNodesByRole( allNodes, constants.ControlPlaneNodeRoleValue, ) if err != nil { return nil, err } // pick the first by sorting // TODO(bentheelder): perhaps in the future we should mark this node // specially at container creation time sort.Slice(controlPlaneNodes, func(i, j int) bool { return strings.Compare(controlPlaneNodes[i].String(), controlPlaneNodes[j].String()) < 0 }) return controlPlaneNodes, nil } // BootstrapControlPlaneNode returns a handle to the bootstrap control plane node // TODO(bentheelder): remove this. This node shouldn't be special (fix that first) func BootstrapControlPlaneNode(allNodes []nodes.Node) (nodes.Node, error) { controlPlaneNodes, err := ControlPlaneNodes(allNodes) if err != nil { return nil, err } if len(controlPlaneNodes) < 1 { return nil, errors.Errorf( "expected at least one %s node", constants.ControlPlaneNodeRoleValue, ) } return controlPlaneNodes[0], nil } // SecondaryControlPlaneNodes returns handles to the secondary // control plane nodes and NOT the bootstrap control plane node func SecondaryControlPlaneNodes(allNodes []nodes.Node) ([]nodes.Node, error) { controlPlaneNodes, err := ControlPlaneNodes(allNodes) if err != nil { return nil, err } if len(controlPlaneNodes) < 1 { return nil, errors.Errorf( "expected at least one %s node", constants.ControlPlaneNodeRoleValue, ) } return controlPlaneNodes[1:], nil } kubernetes-sigs-kind-49aeee6/pkg/cluster/nodeutils/util.go000066400000000000000000000131041524365506300240370ustar00rootroot00000000000000/* Copyright 2019 The Kubernetes Authors. 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 nodeutils import ( "bytes" "encoding/json" "fmt" "io" "path" "strings" "github.com/pelletier/go-toml" "sigs.k8s.io/kind/pkg/cluster/nodes" "sigs.k8s.io/kind/pkg/errors" "sigs.k8s.io/kind/pkg/exec" ) // KubeVersion returns the Kubernetes version installed on the node func KubeVersion(n nodes.Node) (version string, err error) { // grab kubernetes version from the node image cmd := n.Command("cat", "/kind/version") lines, err := exec.OutputLines(cmd) if err != nil { return "", errors.Wrap(err, "failed to get file") } if len(lines) != 1 { return "", errors.Errorf("file should only be one line, got %d lines", len(lines)) } return lines[0], nil } // WriteFile writes content to dest on the node func WriteFile(n nodes.Node, dest, content string) error { // create destination directory err := n.Command("mkdir", "-p", path.Dir(dest)).Run() if err != nil { return errors.Wrapf(err, "failed to create directory %s", path.Dir(dest)) } return n.Command("cp", "/dev/stdin", dest).SetStdin(strings.NewReader(content)).Run() } // CopyNodeToNode copies file from a to b func CopyNodeToNode(a, b nodes.Node, file string) error { // create destination directory err := b.Command("mkdir", "-p", path.Dir(file)).Run() if err != nil { return errors.Wrapf(err, "failed to create directory %q", path.Dir(file)) } // TODO: experiment with streaming instead to avoid the copy // for now we only use this for small files so it's not worth the complexity var buff bytes.Buffer if err := a.Command("cat", file).SetStdout(&buff).Run(); err != nil { return errors.Wrapf(err, "failed to read %q from node", file) } if err := b.Command("cp", "/dev/stdin", file).SetStdin(&buff).Run(); err != nil { return errors.Wrapf(err, "failed to write %q to node", file) } return nil } // LoadImageArchive loads image onto the node, where image is a Reader over an image archive func LoadImageArchive(n nodes.Node, image io.Reader) error { snapshotter, err := getSnapshotter(n) if err != nil { return err } cmd := n.Command("ctr", "--namespace=k8s.io", "images", "import", "--all-platforms", "--digests", "--snapshotter="+snapshotter, "-").SetStdin(image) if err := cmd.Run(); err != nil { return errors.Wrap(err, "failed to load image") } return nil } func getSnapshotter(n nodes.Node) (string, error) { out, err := exec.Output(n.Command("containerd", "config", "dump")) if err != nil { return "", errors.Wrap(err, "failed to detect containerd snapshotter") } return parseSnapshotter(string(out)) } func parseSnapshotter(config string) (string, error) { parsed, err := toml.Load(config) if err != nil { return "", errors.Wrap(err, "failed to detect containerd snapshotter") } configVersion, ok := parsed.Get("version").(int64) if !ok { return "", errors.New("failed to detect containerd config version") } var snapshotter string switch configVersion { case 2: // Introduced in containerd v1.3. Still supported in containerd v2. snapshotter, ok = parsed.GetPath([]string{"plugins", "io.containerd.grpc.v1.cri", "containerd", "snapshotter"}).(string) if !ok { return "", errors.New("failed to detect containerd snapshotter (config version 2)") } case 3, 4: // Introduced in containerd v2.0 / v2.1. snapshotter, ok = parsed.GetPath([]string{"plugins", "io.containerd.cri.v1.images", "snapshotter"}).(string) if !ok { return "", fmt.Errorf("failed to detect containerd snapshotter (config version %d)", configVersion) } default: return "", fmt.Errorf("unknown containerd config version: %d (supported versions: 2, 3 and 4)", configVersion) } return snapshotter, nil } // ImageID returns ID of image on the node with the given image name if present func ImageID(n nodes.Node, image string) (string, error) { var out bytes.Buffer if err := n.Command("crictl", "inspecti", image).SetStdout(&out).Run(); err != nil { return "", err } // we only care about the image ID crictlOut := struct { Status struct { ID string `json:"id"` } `json:"status"` }{} if err := json.Unmarshal(out.Bytes(), &crictlOut); err != nil { return "", err } return crictlOut.Status.ID, nil } // ImageTags is used to perform a reverse lookup of the ImageID to list set of available // RepoTags corresponding to the ImageID in question func ImageTags(n nodes.Node, imageID string) (map[string]bool, error) { var out bytes.Buffer tags := make(map[string]bool, 0) if err := n.Command("crictl", "inspecti", imageID).SetStdout(&out).Run(); err != nil { return tags, err } crictlOut := struct { Status struct { RepoTags []string `json:"repoTags"` } `json:"status"` }{} if err := json.Unmarshal(out.Bytes(), &crictlOut); err != nil { return tags, err } for _, tag := range crictlOut.Status.RepoTags { tags[tag] = true } return tags, nil } // ReTagImage is used to tag an ImageID with a custom tag specified by imageName parameter func ReTagImage(n nodes.Node, imageID, imageName string) error { var out bytes.Buffer return n.Command("ctr", "--namespace=k8s.io", "images", "tag", "--force", imageID, imageName).SetStdout(&out).Run() } kubernetes-sigs-kind-49aeee6/pkg/cluster/nodeutils/util_test.go000066400000000000000000000177021524365506300251060ustar00rootroot00000000000000/* Copyright 2019 The Kubernetes Authors. 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 nodeutils import ( "testing" ) func TestParseSnapshotter(t *testing.T) { // a real, known kind node containerd config config := `disabled_plugins = [] imports = ["/etc/containerd/config.toml"] oom_score = 0 plugin_dir = "" required_plugins = [] root = "/var/lib/containerd" state = "/run/containerd" version = 2 [cgroup] path = "" [debug] address = "" format = "" gid = 0 level = "" uid = 0 [grpc] address = "/run/containerd/containerd.sock" gid = 0 max_recv_message_size = 16777216 max_send_message_size = 16777216 tcp_address = "" tcp_tls_cert = "" tcp_tls_key = "" uid = 0 [metrics] address = "" grpc_histogram = false [plugins] [plugins."io.containerd.gc.v1.scheduler"] deletion_threshold = 0 mutation_threshold = 100 pause_threshold = 0.02 schedule_delay = "0s" startup_delay = "100ms" [plugins."io.containerd.grpc.v1.cri"] disable_apparmor = false disable_cgroup = false disable_hugetlb_controller = true disable_proc_mount = false disable_tcp_service = true enable_selinux = false enable_tls_streaming = false ignore_image_defined_volumes = false max_concurrent_downloads = 3 max_container_log_line_size = 16384 netns_mounts_under_state_dir = false restrict_oom_score_adj = false sandbox_image = "registry.k8s.io/pause:3.7" selinux_category_range = 1024 stats_collect_period = 10 stream_idle_timeout = "4h0m0s" stream_server_address = "127.0.0.1" stream_server_port = "0" systemd_cgroup = false tolerate_missing_hugetlb_controller = true unset_seccomp_profile = "" [plugins."io.containerd.grpc.v1.cri".cni] bin_dir = "/opt/cni/bin" conf_dir = "/etc/cni/net.d" conf_template = "" max_conf_num = 1 [plugins."io.containerd.grpc.v1.cri".containerd] default_runtime_name = "runc" disable_snapshot_annotations = true discard_unpacked_layers = true no_pivot = false snapshotter = "overlayfs" [plugins."io.containerd.grpc.v1.cri".containerd.default_runtime] base_runtime_spec = "" container_annotations = [] pod_annotations = [] privileged_without_host_devices = false runtime_engine = "" runtime_root = "" runtime_type = "" [plugins."io.containerd.grpc.v1.cri".containerd.default_runtime.options] [plugins."io.containerd.grpc.v1.cri".containerd.runtimes] [plugins."io.containerd.grpc.v1.cri".containerd.runtimes.runc] base_runtime_spec = "/etc/containerd/cri-base.json" container_annotations = [] pod_annotations = [] privileged_without_host_devices = false runtime_engine = "" runtime_root = "" runtime_type = "io.containerd.runc.v2" [plugins."io.containerd.grpc.v1.cri".containerd.runtimes.runc.options] [plugins."io.containerd.grpc.v1.cri".containerd.runtimes.test-handler] base_runtime_spec = "" container_annotations = [] pod_annotations = [] privileged_without_host_devices = false runtime_engine = "" runtime_root = "" runtime_type = "io.containerd.runc.v2" [plugins."io.containerd.grpc.v1.cri".containerd.runtimes.test-handler.options] [plugins."io.containerd.grpc.v1.cri".containerd.untrusted_workload_runtime] base_runtime_spec = "" container_annotations = [] pod_annotations = [] privileged_without_host_devices = false runtime_engine = "" runtime_root = "" runtime_type = "" [plugins."io.containerd.grpc.v1.cri".containerd.untrusted_workload_runtime.options] [plugins."io.containerd.grpc.v1.cri".image_decryption] key_model = "node" [plugins."io.containerd.grpc.v1.cri".registry] config_path = "" [plugins."io.containerd.grpc.v1.cri".registry.auths] [plugins."io.containerd.grpc.v1.cri".registry.configs] [plugins."io.containerd.grpc.v1.cri".registry.headers] [plugins."io.containerd.grpc.v1.cri".registry.mirrors] [plugins."io.containerd.grpc.v1.cri".x509_key_pair_streaming] tls_cert_file = "" tls_key_file = "" [plugins."io.containerd.internal.v1.opt"] path = "/opt/containerd" [plugins."io.containerd.internal.v1.restart"] interval = "10s" [plugins."io.containerd.metadata.v1.bolt"] content_sharing_policy = "shared" [plugins."io.containerd.monitor.v1.cgroups"] no_prometheus = false [plugins."io.containerd.runtime.v1.linux"] no_shim = false runtime = "runc" runtime_root = "" shim = "containerd-shim" shim_debug = false [plugins."io.containerd.runtime.v2.task"] platforms = ["linux/amd64"] [plugins."io.containerd.service.v1.diff-service"] default = ["walking"] [plugins."io.containerd.snapshotter.v1.aufs"] root_path = "" [plugins."io.containerd.snapshotter.v1.btrfs"] root_path = "" [plugins."io.containerd.snapshotter.v1.devmapper"] async_remove = false base_image_size = "" pool_name = "" root_path = "" [plugins."io.containerd.snapshotter.v1.native"] root_path = "" [plugins."io.containerd.snapshotter.v1.overlayfs"] root_path = "" [plugins."io.containerd.snapshotter.v1.zfs"] root_path = "" [proxy_plugins] [proxy_plugins.fuse-overlayfs] address = "/run/containerd-fuse-overlayfs.sock" type = "snapshot" [stream_processors] [stream_processors."io.containerd.ocicrypt.decoder.v1.tar"] accepts = ["application/vnd.oci.image.layer.v1.tar+encrypted"] args = ["--decryption-keys-path", "/etc/containerd/ocicrypt/keys"] env = ["OCICRYPT_KEYPROVIDER_CONFIG=/etc/containerd/ocicrypt/ocicrypt_keyprovider.conf"] path = "ctd-decoder" returns = "application/vnd.oci.image.layer.v1.tar" [stream_processors."io.containerd.ocicrypt.decoder.v1.tar.gzip"] accepts = ["application/vnd.oci.image.layer.v1.tar+gzip+encrypted"] args = ["--decryption-keys-path", "/etc/containerd/ocicrypt/keys"] env = ["OCICRYPT_KEYPROVIDER_CONFIG=/etc/containerd/ocicrypt/ocicrypt_keyprovider.conf"] path = "ctd-decoder" returns = "application/vnd.oci.image.layer.v1.tar+gzip" [timeouts] "io.containerd.timeout.shim.cleanup" = "5s" "io.containerd.timeout.shim.load" = "5s" "io.containerd.timeout.shim.shutdown" = "3s" "io.containerd.timeout.task.state" = "2s" [ttrpc] address = "" gid = 0 uid = 0` snapshotter, err := parseSnapshotter(config) if err != nil { t.Fatalf("unexpected error parsing config: %v", err) } if snapshotter != "overlayfs" { t.Fatalf(`unexpected parsed snapshotter: %q, expected "overlayfs"`, snapshotter) } // sanity check parsing an empty config _, err = parseSnapshotter("") if err == nil { t.Fatal("expected error parsing empty config") } // sanity check parsing invalid toml _, err = parseSnapshotter("aaaa") if err == nil { t.Fatal("expected error parsing invalid config") } // test version 3 config configV3 := `version = 3 [plugins] [plugins."io.containerd.cri.v1.images"] snapshotter = "overlayfs"` snapshotter, err = parseSnapshotter(configV3) if err != nil { t.Fatalf("unexpected error parsing config v3: %v", err) } if snapshotter != "overlayfs" { t.Fatalf(`unexpected parsed snapshotter for v3: %q, expected "overlayfs"`, snapshotter) } // test version 4 config configV4 := `version = 4 [plugins] [plugins."io.containerd.cri.v1.images"] snapshotter = "btrfs"` snapshotter, err = parseSnapshotter(configV4) if err != nil { t.Fatalf("unexpected error parsing config v4: %v", err) } if snapshotter != "btrfs" { t.Fatalf(`unexpected parsed snapshotter for v4: %q, expected "btrfs"`, snapshotter) } } kubernetes-sigs-kind-49aeee6/pkg/cluster/provider.go000066400000000000000000000241101524365506300227050ustar00rootroot00000000000000/* Copyright 2018 The Kubernetes Authors. 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 cluster import ( "os" "path/filepath" "sort" "sigs.k8s.io/kind/pkg/cmd/kind/version" "sigs.k8s.io/kind/pkg/cluster/constants" "sigs.k8s.io/kind/pkg/cluster/nodes" "sigs.k8s.io/kind/pkg/cluster/nodeutils" "sigs.k8s.io/kind/pkg/errors" "sigs.k8s.io/kind/pkg/exec" "sigs.k8s.io/kind/pkg/log" internalcreate "sigs.k8s.io/kind/pkg/cluster/internal/create" internaldelete "sigs.k8s.io/kind/pkg/cluster/internal/delete" "sigs.k8s.io/kind/pkg/cluster/internal/kubeconfig" internallogs "sigs.k8s.io/kind/pkg/cluster/internal/logs" internalproviders "sigs.k8s.io/kind/pkg/cluster/internal/providers" "sigs.k8s.io/kind/pkg/cluster/internal/providers/common" "sigs.k8s.io/kind/pkg/cluster/internal/providers/docker" "sigs.k8s.io/kind/pkg/cluster/internal/providers/nerdctl" "sigs.k8s.io/kind/pkg/cluster/internal/providers/podman" ) // DefaultName is the default cluster name const DefaultName = constants.DefaultClusterName // defaultName is a helper that given a name defaults it if unset func defaultName(name string) string { if name == "" { name = DefaultName } return name } // Provider is used to perform cluster operations type Provider struct { provider internalproviders.Provider logger log.Logger } // NewProvider returns a new provider based on the supplied options func NewProvider(options ...ProviderOption) *Provider { p := &Provider{ logger: log.NoopLogger{}, } // Ensure we apply the logger options first, while maintaining the order // otherwise. This way we can trivially init the internal provider with // the logger. sort.SliceStable(options, func(i, j int) bool { _, iIsLogger := options[i].(providerLoggerOption) _, jIsLogger := options[j].(providerLoggerOption) return iIsLogger && !jIsLogger }) for _, o := range options { if o != nil { o.apply(p) } } // ensure a provider if none was set // NOTE: depends on logger being set (see sorting above) if p.provider == nil { // DetectNodeProvider does not fallback to allow callers to determine // this behavior // However for compatibility if the caller of NewProvider supplied no // option and we autodetect internally, we default to the docker provider // for fallback, to avoid a breaking change for now. // This may change in the future. // TODO: consider breaking this API for earlier errors. providerOpt, _ := DetectNodeProvider() if providerOpt == nil { providerOpt = ProviderWithDocker() } providerOpt.apply(p) } return p } // NoNodeProviderDetectedError indicates that we could not autolocate an available // NodeProvider backend on the host var NoNodeProviderDetectedError = errors.NewWithoutStack("failed to detect any supported node provider") // DetectNodeProvider allows callers to autodetect the node provider // *without* fallback to the default. // // Pass the returned ProviderOption to NewProvider to pass the auto-detect Docker // or Podman option explicitly (in the future there will be more options) // // NOTE: The kind *cli* also checks `KIND_EXPERIMENTAL_PROVIDER` for "podman", // "nerctl" or "docker" currently and does not auto-detect / respects this if set. // // This will be replaced with some other mechanism in the future (likely when // podman support is GA), in the meantime though your tool may wish to match this. // // In the future when this is not considered experimental, // that logic will be in a public API as well. func DetectNodeProvider() (ProviderOption, error) { // auto-detect based on each node provider's IsAvailable() function if docker.IsAvailable() { return ProviderWithDocker(), nil } if nerdctl.IsAvailable() { return ProviderWithNerdctl(""), nil } if podman.IsAvailable() { return ProviderWithPodman(), nil } return nil, errors.WithStack(NoNodeProviderDetectedError) } // ProviderOption is an option for configuring a provider type ProviderOption interface { apply(p *Provider) } // providerLoggerOption is a trivial ProviderOption adapter // we use a type specific to logging options so we can handle them first type providerLoggerOption func(p *Provider) func (a providerLoggerOption) apply(p *Provider) { a(p) } var _ ProviderOption = providerLoggerOption(nil) // ProviderWithLogger configures the provider to use Logger logger func ProviderWithLogger(logger log.Logger) ProviderOption { return providerLoggerOption(func(p *Provider) { p.logger = logger }) } // providerRuntimeOption is a trivial ProviderOption adapter // we use a type specific to logging options so we can handle them first type providerRuntimeOption func(p *Provider) func (a providerRuntimeOption) apply(p *Provider) { a(p) } var _ ProviderOption = providerRuntimeOption(nil) // ProviderWithDocker configures the provider to use docker runtime func ProviderWithDocker() ProviderOption { return providerRuntimeOption(func(p *Provider) { p.provider = docker.NewProvider(p.logger) }) } // ProviderWithPodman configures the provider to use podman runtime func ProviderWithPodman() ProviderOption { return providerRuntimeOption(func(p *Provider) { p.provider = podman.NewProvider(p.logger) }) } // ProviderWithNerdctl configures the provider to use the nerdctl runtime func ProviderWithNerdctl(binaryName string) ProviderOption { return providerRuntimeOption(func(p *Provider) { p.provider = nerdctl.NewProvider(p.logger, binaryName) }) } // Create provisions and starts a kubernetes-in-docker cluster func (p *Provider) Create(name string, options ...CreateOption) error { // apply options opts := &internalcreate.ClusterOptions{ NameOverride: name, } for _, o := range options { if err := o.apply(opts); err != nil { return err } } return internalcreate.Cluster(p.logger, p.provider, opts) } // Delete tears down a kubernetes-in-docker cluster func (p *Provider) Delete(name, explicitKubeconfigPath string) error { return internaldelete.Cluster(p.logger, p.provider, defaultName(name), explicitKubeconfigPath) } // List returns a list of clusters for which nodes exist func (p *Provider) List() ([]string, error) { return p.provider.ListClusters() } // KubeConfig returns the KUBECONFIG for the cluster // If internal is true, this will contain the internal IP etc. // If internal is false, this will contain the host IP etc. func (p *Provider) KubeConfig(name string, internal bool) (string, error) { return kubeconfig.Get(p.provider, defaultName(name), !internal) } // ExportKubeConfig exports the KUBECONFIG for the cluster, merging // it into the selected file, following the rules from // https://kubernetes.io/docs/reference/generated/kubectl/kubectl-commands#config // where explicitPath is the --kubeconfig value. func (p *Provider) ExportKubeConfig(name string, explicitPath string, internal bool) error { return kubeconfig.Export(p.provider, defaultName(name), explicitPath, !internal) } // ListNodes returns the list of container IDs for the "nodes" in the cluster func (p *Provider) ListNodes(name string) ([]nodes.Node, error) { return p.provider.ListNodes(defaultName(name)) } // ListInternalNodes returns the list of container IDs for the "nodes" in the cluster // that are not external func (p *Provider) ListInternalNodes(name string) ([]nodes.Node, error) { n, err := p.provider.ListNodes(name) if err != nil { return nil, err } return nodeutils.InternalNodes(n) } // CollectLogs will populate dir with cluster logs and other debug files func (p *Provider) CollectLogs(name, dir string) error { // TODO: should use ListNodes and Collect should handle nodes differently // based on role ... internalNodes, err := p.ListInternalNodes(name) if err != nil { return err } // ensure directory if err := os.MkdirAll(dir, os.ModePerm); err != nil { return errors.Wrap(err, "failed to create logs directory") } // write kind version if err := os.WriteFile( filepath.Join(dir, "kind-version.txt"), []byte(version.DisplayVersion()), 0666, // match os.Create ); err != nil { return errors.Wrap(err, "failed to write kind-version.txt") } // common portable log collection for the nodes fns := []func() error{} var errs []error for _, n := range internalNodes { node := n // https://golang.org/doc/faq#closures_and_goroutines name := node.String() path := filepath.Join(dir, name) fns = append(fns, func() error { return collectNodeLogs(p.logger, node, path) }, ) } errs = append(errs, errors.AggregateConcurrent(fns)) // additional, provider specific log collection errs = append(errs, p.provider.CollectLogs(dir, internalNodes)) // flatten return errors.NewAggregate(errs) } func collectNodeLogs(logger log.Logger, n nodes.Node, dir string) error { execToPathFn := func(cmd exec.Cmd, path string) func() error { return func() error { f, err := common.FileOnHost(filepath.Join(dir, path)) if err != nil { return err } defer f.Close() return cmd.SetStdout(f).SetStderr(f).Run() } } return errors.AggregateConcurrent([]func() error{ func() error { f, err := common.FileOnHost(filepath.Join(dir, "serial.log")) if err != nil { return err } defer f.Close() return n.SerialLogs(f) }, func() error { return internallogs.DumpDir(logger, n, "/var/log", dir) }, // record info about the node container execToPathFn( n.Command("cat", "/kind/version"), "kubernetes-version.txt", ), execToPathFn( n.Command("journalctl", "--no-pager"), "journal.log", ), execToPathFn( n.Command("journalctl", "--no-pager", "-u", "kubelet.service"), "kubelet.log", ), execToPathFn( n.Command("journalctl", "--no-pager", "-u", "containerd.service"), "containerd.log", ), execToPathFn( n.Command("crictl", "images"), "images.log", ), }) } kubernetes-sigs-kind-49aeee6/pkg/cmd/000077500000000000000000000000001524365506300176105ustar00rootroot00000000000000kubernetes-sigs-kind-49aeee6/pkg/cmd/doc.go000066400000000000000000000012051524365506300207020ustar00rootroot00000000000000/* Copyright 2019 The Kubernetes Authors. 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 cmd provides helpers used by kind's commands / cli package cmd kubernetes-sigs-kind-49aeee6/pkg/cmd/iostreams.go000066400000000000000000000022721524365506300221500ustar00rootroot00000000000000/* Copyright 2019 The Kubernetes Authors. 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 cmd import ( "io" "os" ) // IOStreams provides the standard names for iostreams. // This is useful for embedding and for unit testing. // Inconsistent and different names make it hard to read and review code // This is based on cli-runtime, but just the nice type without the dependency type IOStreams struct { // In think, os.Stdin In io.Reader // Out think, os.Stdout Out io.Writer // ErrOut think, os.Stderr ErrOut io.Writer } // StandardIOStreams returns an IOStreams from os.Stdin, os.Stdout func StandardIOStreams() IOStreams { return IOStreams{ In: os.Stdin, Out: os.Stdout, ErrOut: os.Stderr, } } kubernetes-sigs-kind-49aeee6/pkg/cmd/kind/000077500000000000000000000000001524365506300205355ustar00rootroot00000000000000kubernetes-sigs-kind-49aeee6/pkg/cmd/kind/build/000077500000000000000000000000001524365506300216345ustar00rootroot00000000000000kubernetes-sigs-kind-49aeee6/pkg/cmd/kind/build/build.go000066400000000000000000000024751524365506300232720ustar00rootroot00000000000000/* Copyright 2018 The Kubernetes Authors. 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 build implements the `build` command package build import ( "errors" "github.com/spf13/cobra" "sigs.k8s.io/kind/pkg/cmd" "sigs.k8s.io/kind/pkg/cmd/kind/build/nodeimage" "sigs.k8s.io/kind/pkg/log" ) // NewCommand returns a new cobra.Command for building func NewCommand(logger log.Logger, streams cmd.IOStreams) *cobra.Command { cmd := &cobra.Command{ // TODO(bentheelder): more detailed usage Use: "build", Short: "Build one of [node-image]", Long: "Build one of [node-image]", RunE: func(cmd *cobra.Command, args []string) error { err := cmd.Help() if err != nil { return err } return errors.New("Subcommand is required") }, } // add subcommands cmd.AddCommand(nodeimage.NewCommand(logger, streams)) return cmd } kubernetes-sigs-kind-49aeee6/pkg/cmd/kind/build/nodeimage/000077500000000000000000000000001524365506300235645ustar00rootroot00000000000000kubernetes-sigs-kind-49aeee6/pkg/cmd/kind/build/nodeimage/nodeimage.go000066400000000000000000000057201524365506300260470ustar00rootroot00000000000000/* Copyright 2018 The Kubernetes Authors. 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 nodeimage implements the nodeimage CLI subcommand. package nodeimage import ( "github.com/spf13/cobra" "sigs.k8s.io/kind/pkg/build/nodeimage" "sigs.k8s.io/kind/pkg/cmd" "sigs.k8s.io/kind/pkg/errors" "sigs.k8s.io/kind/pkg/log" ) type flagpole struct { Source string BuildType string Image string BaseImage string Arch string } // NewCommand returns a new cobra.Command for building the node image func NewCommand(logger log.Logger, streams cmd.IOStreams) *cobra.Command { flags := &flagpole{} cmd := &cobra.Command{ Args: cobra.MaximumNArgs(1), Use: "node-image [kubernetes-source]", Short: "Build the node image", Long: `Build the node image which contains Kubernetes build artifacts and other kind requirements. By default, this will build from a local Kubernetes source directory (auto-detected if omitted). You can also build from: - A local Kubernetes source directory path (e.g., /path/to/kubernetes/source) - A local Kubernetes release tarball path (e.g., /path/to/kubernetes-server-linux-amd64.tar.gz) - A URL to a Kubernetes release tarball (e.g., https://dl.k8s.io/v1.30.0/kubernetes-server-linux-amd64.tar.gz) - A release version (e.g., v1.36.1) - A Kubernetes CI build version marker prefixed with 'ci/' (e.g., ci/latest, ci/latest-1.36)`, RunE: func(cmd *cobra.Command, args []string) error { return runE(logger, flags, args) }, } cmd.Flags().StringVar( &flags.BuildType, "type", "", "optionally specify one of 'url', 'file', 'release', 'ci' or 'source' as the type of build", ) cmd.Flags().StringVar( &flags.Image, "image", nodeimage.DefaultImage, "name:tag of the resulting image to be built", ) cmd.Flags().StringVar( &flags.BaseImage, "base-image", nodeimage.DefaultBaseImage, "name:tag of the base image to use for the build", ) cmd.Flags().StringVar( &flags.Arch, "arch", "", "architecture to build for, defaults to the host architecture", ) return cmd } func runE(logger log.Logger, flags *flagpole, args []string) error { sourceSpec := "" if len(args) > 0 { sourceSpec = args[0] } if err := nodeimage.Build( nodeimage.WithImage(flags.Image), nodeimage.WithBaseImage(flags.BaseImage), nodeimage.WithKubeParam(sourceSpec), nodeimage.WithLogger(logger), nodeimage.WithArch(flags.Arch), nodeimage.WithBuildType(flags.BuildType), ); err != nil { return errors.Wrap(err, "error building node image") } return nil } kubernetes-sigs-kind-49aeee6/pkg/cmd/kind/completion/000077500000000000000000000000001524365506300227065ustar00rootroot00000000000000kubernetes-sigs-kind-49aeee6/pkg/cmd/kind/completion/bash/000077500000000000000000000000001524365506300236235ustar00rootroot00000000000000kubernetes-sigs-kind-49aeee6/pkg/cmd/kind/completion/bash/bash.go000066400000000000000000000021331524365506300250660ustar00rootroot00000000000000/* Copyright 2019 The Kubernetes Authors. 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 bash implements the `bash` command package bash import ( "github.com/spf13/cobra" "sigs.k8s.io/kind/pkg/cmd" "sigs.k8s.io/kind/pkg/log" ) // NewCommand returns a new cobra.Command for cluster creation func NewCommand(logger log.Logger, streams cmd.IOStreams) *cobra.Command { cmd := &cobra.Command{ Args: cobra.NoArgs, Use: "bash", Short: "Output shell completions for bash", RunE: func(cmd *cobra.Command, args []string) error { return cmd.Parent().Parent().GenBashCompletion(streams.Out) }, } return cmd } kubernetes-sigs-kind-49aeee6/pkg/cmd/kind/completion/completion.go000066400000000000000000000050731524365506300254130ustar00rootroot00000000000000/* Copyright 2019 The Kubernetes Authors. 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 completion implements the `completion` command package completion import ( "errors" "github.com/spf13/cobra" "sigs.k8s.io/kind/pkg/cmd" "sigs.k8s.io/kind/pkg/cmd/kind/completion/bash" "sigs.k8s.io/kind/pkg/cmd/kind/completion/fish" "sigs.k8s.io/kind/pkg/cmd/kind/completion/powershell" "sigs.k8s.io/kind/pkg/cmd/kind/completion/zsh" "sigs.k8s.io/kind/pkg/log" ) // NewCommand returns a new cobra.Command for cluster creation func NewCommand(logger log.Logger, streams cmd.IOStreams) *cobra.Command { cmd := &cobra.Command{ Use: "completion", Short: "Output shell completion code for the specified shell (bash, zsh or fish)", Long: longDescription, RunE: func(cmd *cobra.Command, args []string) error { err := cmd.Help() if err != nil { return err } return errors.New("Subcommand is required") }, } cmd.AddCommand(zsh.NewCommand(logger, streams)) cmd.AddCommand(bash.NewCommand(logger, streams)) cmd.AddCommand(fish.NewCommand(logger, streams)) cmd.AddCommand(powershell.NewCommand(logger, streams)) return cmd } const longDescription = ` Outputs kind shell completion for the given shell (bash, fish, powershell, or zsh) This depends on the bash-completion binary. Example installation instructions: # for bash users $ kind completion bash > ~/.kind-completion $ source ~/.kind-completion # for zsh users % kind completion zsh > /usr/local/share/zsh/site-functions/_kind % autoload -U compinit && compinit # or if zsh-completion is installed via homebrew % kind completion zsh > "${fpath[1]}/_kind" # or if you use oh-my-zsh (needs zsh-completions plugin) % mkdir $ZSH/completions/ % kind completion zsh > $ZSH/completions/_kind # for fish users % kind completion fish > ~/.config/fish/completions/kind.fish # for powershell users PS> kind completion powershell | Out-String | Invoke-Expression Additionally, you may want to output the completion to a file and source in your .bashrc Note for zsh users: [1] zsh completions are only supported in versions of zsh >= 5.2 ` kubernetes-sigs-kind-49aeee6/pkg/cmd/kind/completion/fish/000077500000000000000000000000001524365506300236375ustar00rootroot00000000000000kubernetes-sigs-kind-49aeee6/pkg/cmd/kind/completion/fish/fish.go000066400000000000000000000021121524365506300251130ustar00rootroot00000000000000/* Copyright 2019 The Kubernetes Authors. 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 fish implements the `fish` command package fish import ( "github.com/spf13/cobra" "sigs.k8s.io/kind/pkg/cmd" "sigs.k8s.io/kind/pkg/log" ) // NewCommand returns a new cobra.Command for cluster creation func NewCommand(logger log.Logger, streams cmd.IOStreams) *cobra.Command { cmd := &cobra.Command{ Use: "fish", Short: "Output shell completions for fish", RunE: func(cmd *cobra.Command, args []string) error { return cmd.Parent().Parent().GenFishCompletion(streams.Out, true) }, } return cmd } kubernetes-sigs-kind-49aeee6/pkg/cmd/kind/completion/powershell/000077500000000000000000000000001524365506300250725ustar00rootroot00000000000000kubernetes-sigs-kind-49aeee6/pkg/cmd/kind/completion/powershell/powershell.go000066400000000000000000000021771524365506300276140ustar00rootroot00000000000000/* Copyright 2024 The Kubernetes Authors. 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 powershell implements the `powershell` command package powershell import ( "github.com/spf13/cobra" "sigs.k8s.io/kind/pkg/cmd" "sigs.k8s.io/kind/pkg/log" ) // NewCommand returns a new cobra.Command for cluster creation func NewCommand(logger log.Logger, streams cmd.IOStreams) *cobra.Command { cmd := &cobra.Command{ Args: cobra.NoArgs, Use: "powershell", Short: "Output shell completions for powershell", RunE: func(cmd *cobra.Command, args []string) error { return cmd.Parent().Parent().GenPowerShellCompletion(streams.Out) }, } return cmd } kubernetes-sigs-kind-49aeee6/pkg/cmd/kind/completion/zsh/000077500000000000000000000000001524365506300235125ustar00rootroot00000000000000kubernetes-sigs-kind-49aeee6/pkg/cmd/kind/completion/zsh/zsh.go000066400000000000000000000021251524365506300246450ustar00rootroot00000000000000/* Copyright 2019 The Kubernetes Authors. 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 zsh implements the `zsh` command package zsh import ( "github.com/spf13/cobra" "sigs.k8s.io/kind/pkg/cmd" "sigs.k8s.io/kind/pkg/log" ) // NewCommand returns a new cobra.Command for cluster creation func NewCommand(logger log.Logger, streams cmd.IOStreams) *cobra.Command { cmd := &cobra.Command{ Args: cobra.NoArgs, Use: "zsh", Short: "Output shell completions for zsh", RunE: func(cmd *cobra.Command, args []string) error { return cmd.Parent().Parent().GenZshCompletion(streams.Out) }, } return cmd } kubernetes-sigs-kind-49aeee6/pkg/cmd/kind/create/000077500000000000000000000000001524365506300220005ustar00rootroot00000000000000kubernetes-sigs-kind-49aeee6/pkg/cmd/kind/create/cluster/000077500000000000000000000000001524365506300234615ustar00rootroot00000000000000kubernetes-sigs-kind-49aeee6/pkg/cmd/kind/create/cluster/createcluster.go000066400000000000000000000072271524365506300266650ustar00rootroot00000000000000/* Copyright 2018 The Kubernetes Authors. 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 cluster implements the `create cluster` command package cluster import ( "io" "time" "github.com/spf13/cobra" "sigs.k8s.io/kind/pkg/cluster" "sigs.k8s.io/kind/pkg/cmd" "sigs.k8s.io/kind/pkg/errors" "sigs.k8s.io/kind/pkg/log" "sigs.k8s.io/kind/pkg/internal/cli" "sigs.k8s.io/kind/pkg/internal/runtime" ) type flagpole struct { Name string Config string ImageName string Retain bool Wait time.Duration Kubeconfig string } // NewCommand returns a new cobra.Command for cluster creation func NewCommand(logger log.Logger, streams cmd.IOStreams) *cobra.Command { flags := &flagpole{} cmd := &cobra.Command{ Args: cobra.NoArgs, Use: "cluster", Short: "Creates a local Kubernetes cluster", Long: "Creates a local Kubernetes cluster using Docker container 'nodes'", RunE: func(cmd *cobra.Command, args []string) error { cli.OverrideDefaultName(cmd.Flags()) return runE(logger, streams, flags) }, } cmd.Flags().StringVarP( &flags.Name, "name", "n", "", "cluster name, overrides KIND_CLUSTER_NAME, config (default kind)", ) cmd.Flags().StringVar( &flags.Config, "config", "", "path to a kind config file", ) cmd.Flags().StringVar( &flags.ImageName, "image", "", "node docker image to use for booting the cluster", ) cmd.Flags().BoolVar( &flags.Retain, "retain", false, "retain nodes for debugging when cluster creation fails", ) cmd.Flags().DurationVar( &flags.Wait, "wait", time.Duration(0), "The length of time to wait for control plane node to be ready (default 0s). Non-zero values should contain a corresponding time unit (e.g. 1s, 2m, 3h).", ) cmd.Flags().StringVar( &flags.Kubeconfig, "kubeconfig", "", "sets kubeconfig path instead of $KUBECONFIG or $HOME/.kube/config", ) return cmd } func runE(logger log.Logger, streams cmd.IOStreams, flags *flagpole) error { provider := cluster.NewProvider( cluster.ProviderWithLogger(logger), runtime.GetDefault(logger), ) // handle config flag, we might need to read from stdin withConfig, err := configOption(flags.Config, streams.In) if err != nil { return err } // create the cluster if err = provider.Create( flags.Name, withConfig, cluster.CreateWithNodeImage(flags.ImageName), cluster.CreateWithRetain(flags.Retain), cluster.CreateWithWaitForReady(flags.Wait), cluster.CreateWithKubeconfigPath(flags.Kubeconfig), cluster.CreateWithDisplayUsage(true), cluster.CreateWithDisplaySalutation(true), ); err != nil { return errors.Wrap(err, "failed to create cluster") } return nil } // configOption converts the raw --config flag value to a cluster creation // option matching it. it will read from stdin if the flag value is `-` func configOption(rawConfigFlag string, stdin io.Reader) (cluster.CreateOption, error) { // if not - then we are using a real file if rawConfigFlag != "-" { return cluster.CreateWithConfigFile(rawConfigFlag), nil } // otherwise read from stdin raw, err := io.ReadAll(stdin) if err != nil { return nil, errors.Wrap(err, "error reading config from stdin") } return cluster.CreateWithRawConfig(raw), nil } kubernetes-sigs-kind-49aeee6/pkg/cmd/kind/create/create.go000066400000000000000000000024611524365506300235750ustar00rootroot00000000000000/* Copyright 2018 The Kubernetes Authors. 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 implements the `create` command package create import ( "errors" "github.com/spf13/cobra" "sigs.k8s.io/kind/pkg/cmd" createcluster "sigs.k8s.io/kind/pkg/cmd/kind/create/cluster" "sigs.k8s.io/kind/pkg/log" ) // NewCommand returns a new cobra.Command for cluster creation func NewCommand(logger log.Logger, streams cmd.IOStreams) *cobra.Command { cmd := &cobra.Command{ Use: "create", Short: "Creates one of [cluster]", Long: "Creates one of local Kubernetes cluster (cluster)", RunE: func(cmd *cobra.Command, args []string) error { err := cmd.Help() if err != nil { return err } return errors.New("Subcommand is required") }, } cmd.AddCommand(createcluster.NewCommand(logger, streams)) return cmd } kubernetes-sigs-kind-49aeee6/pkg/cmd/kind/delete/000077500000000000000000000000001524365506300217775ustar00rootroot00000000000000kubernetes-sigs-kind-49aeee6/pkg/cmd/kind/delete/cluster/000077500000000000000000000000001524365506300234605ustar00rootroot00000000000000kubernetes-sigs-kind-49aeee6/pkg/cmd/kind/delete/cluster/deletecluster.go000066400000000000000000000045111524365506300266540ustar00rootroot00000000000000/* Copyright 2018 The Kubernetes Authors. 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 cluster implements the `delete` command package cluster import ( "github.com/spf13/cobra" "sigs.k8s.io/kind/pkg/cluster" "sigs.k8s.io/kind/pkg/cmd" "sigs.k8s.io/kind/pkg/errors" "sigs.k8s.io/kind/pkg/log" "sigs.k8s.io/kind/pkg/internal/cli" "sigs.k8s.io/kind/pkg/internal/runtime" ) type flagpole struct { Name string Kubeconfig string } // NewCommand returns a new cobra.Command for cluster deletion func NewCommand(logger log.Logger, streams cmd.IOStreams) *cobra.Command { flags := &flagpole{} cmd := &cobra.Command{ Args: cobra.NoArgs, Use: "cluster", Short: "Deletes a cluster", Long: `Deletes a Kind cluster from the system. This is an idempotent operation, meaning it may be called multiple times without failing (like "rm -f"). If the cluster resources exist they will be deleted, and if the cluster is already gone it will just return success. Errors will only occur if the cluster resources exist and are not able to be deleted. `, RunE: func(cmd *cobra.Command, args []string) error { cli.OverrideDefaultName(cmd.Flags()) return deleteCluster(logger, flags) }, } cmd.Flags().StringVarP( &flags.Name, "name", "n", cluster.DefaultName, "the cluster name", ) cmd.Flags().StringVar( &flags.Kubeconfig, "kubeconfig", "", "sets kubeconfig path instead of $KUBECONFIG or $HOME/.kube/config", ) return cmd } func deleteCluster(logger log.Logger, flags *flagpole) error { provider := cluster.NewProvider( cluster.ProviderWithLogger(logger), runtime.GetDefault(logger), ) // Delete individual cluster logger.V(0).Infof("Deleting cluster %q ...", flags.Name) if err := provider.Delete(flags.Name, flags.Kubeconfig); err != nil { return errors.Wrapf(err, "failed to delete cluster %q", flags.Name) } return nil } kubernetes-sigs-kind-49aeee6/pkg/cmd/kind/delete/clusters/000077500000000000000000000000001524365506300236435ustar00rootroot00000000000000kubernetes-sigs-kind-49aeee6/pkg/cmd/kind/delete/clusters/deleteclusters.go000066400000000000000000000052501524365506300272230ustar00rootroot00000000000000/* Copyright 2018 The Kubernetes Authors. 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 clusters implements the `delete` command for multiple clusters package clusters import ( "github.com/spf13/cobra" "sigs.k8s.io/kind/pkg/cluster" "sigs.k8s.io/kind/pkg/cmd" "sigs.k8s.io/kind/pkg/errors" "sigs.k8s.io/kind/pkg/log" "sigs.k8s.io/kind/pkg/internal/runtime" ) type flagpole struct { Kubeconfig string All bool } // NewCommand returns a new cobra.Command for cluster deletion func NewCommand(logger log.Logger, streams cmd.IOStreams) *cobra.Command { flags := &flagpole{} cmd := &cobra.Command{ Args: cobra.MinimumNArgs(0), Use: "clusters", Short: "Deletes one or more clusters", Long: `Deletes one or more Kind clusters from the system. This is an idempotent operation, meaning it may be called multiple times without failing (like "rm -f"). If the cluster resources exist they will be deleted, and if the cluster is already gone it will just return success. Errors will only occur if the cluster resources exist and are not able to be deleted. `, RunE: func(cmd *cobra.Command, args []string) error { if !flags.All && len(args) == 0 { return errors.New("no cluster names provided") } return deleteClusters(logger, flags, args) }, } cmd.Flags().StringVar( &flags.Kubeconfig, "kubeconfig", "", "sets kubeconfig path instead of $KUBECONFIG or $HOME/.kube/config", ) cmd.Flags().BoolVarP( &flags.All, "all", "A", false, "delete all clusters", ) return cmd } func deleteClusters(logger log.Logger, flags *flagpole, clusters []string) error { provider := cluster.NewProvider( cluster.ProviderWithLogger(logger), runtime.GetDefault(logger), ) var err error if flags.All { //Delete all clusters if clusters, err = provider.List(); err != nil { return errors.Wrap(err, "failed listing clusters for delete") } } var success []string for _, cluster := range clusters { if err = provider.Delete(cluster, flags.Kubeconfig); err != nil { logger.V(0).Infof("%s\n", errors.Wrapf(err, "failed to delete cluster %q", cluster)) continue } success = append(success, cluster) } logger.V(0).Infof("Deleted clusters: %q", success) return nil } kubernetes-sigs-kind-49aeee6/pkg/cmd/kind/delete/delete.go000066400000000000000000000027001524365506300235670ustar00rootroot00000000000000/* Copyright 2018 The Kubernetes Authors. 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 delete implements the `delete` command package delete import ( "errors" "github.com/spf13/cobra" "sigs.k8s.io/kind/pkg/cmd" deletecluster "sigs.k8s.io/kind/pkg/cmd/kind/delete/cluster" deleteclusters "sigs.k8s.io/kind/pkg/cmd/kind/delete/clusters" "sigs.k8s.io/kind/pkg/log" ) // NewCommand returns a new cobra.Command for cluster deletion func NewCommand(logger log.Logger, streams cmd.IOStreams) *cobra.Command { cmd := &cobra.Command{ // TODO(bentheelder): more detailed usage Use: "delete", Short: "Deletes one of [cluster]", Long: "Deletes one of [cluster]", RunE: func(cmd *cobra.Command, args []string) error { err := cmd.Help() if err != nil { return err } return errors.New("Subcommand is required") }, } cmd.AddCommand(deletecluster.NewCommand(logger, streams)) cmd.AddCommand(deleteclusters.NewCommand(logger, streams)) return cmd } kubernetes-sigs-kind-49aeee6/pkg/cmd/kind/export/000077500000000000000000000000001524365506300220565ustar00rootroot00000000000000kubernetes-sigs-kind-49aeee6/pkg/cmd/kind/export/export.go000066400000000000000000000026611524365506300237330ustar00rootroot00000000000000/* Copyright 2018 The Kubernetes Authors. 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 export implements the `export` command package export import ( "errors" "github.com/spf13/cobra" "sigs.k8s.io/kind/pkg/cmd" "sigs.k8s.io/kind/pkg/cmd/kind/export/kubeconfig" "sigs.k8s.io/kind/pkg/cmd/kind/export/logs" "sigs.k8s.io/kind/pkg/log" ) // NewCommand returns a new cobra.Command for export func NewCommand(logger log.Logger, streams cmd.IOStreams) *cobra.Command { cmd := &cobra.Command{ // TODO(bentheelder): more detailed usage Use: "export", Short: "Exports one of [kubeconfig, logs]", Long: "Exports one of [kubeconfig, logs]", RunE: func(cmd *cobra.Command, args []string) error { err := cmd.Help() if err != nil { return err } return errors.New("Subcommand is required") }, } // add subcommands cmd.AddCommand(logs.NewCommand(logger, streams)) cmd.AddCommand(kubeconfig.NewCommand(logger, streams)) return cmd } kubernetes-sigs-kind-49aeee6/pkg/cmd/kind/export/kubeconfig/000077500000000000000000000000001524365506300241725ustar00rootroot00000000000000kubernetes-sigs-kind-49aeee6/pkg/cmd/kind/export/kubeconfig/kubeconfig.go000066400000000000000000000042661524365506300266450ustar00rootroot00000000000000/* Copyright 2019 The Kubernetes Authors. 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 kubeconfig implements the `kubeconfig` command package kubeconfig import ( "github.com/spf13/cobra" "sigs.k8s.io/kind/pkg/cluster" "sigs.k8s.io/kind/pkg/cmd" "sigs.k8s.io/kind/pkg/log" "sigs.k8s.io/kind/pkg/internal/cli" "sigs.k8s.io/kind/pkg/internal/runtime" ) type flagpole struct { Name string Kubeconfig string Internal bool } // NewCommand returns a new cobra.Command for exporting the kubeconfig func NewCommand(logger log.Logger, streams cmd.IOStreams) *cobra.Command { flags := &flagpole{} cmd := &cobra.Command{ Args: cobra.NoArgs, Use: "kubeconfig", Short: "Exports cluster kubeconfig", Long: "Exports cluster kubeconfig", RunE: func(cmd *cobra.Command, args []string) error { cli.OverrideDefaultName(cmd.Flags()) return runE(logger, flags) }, } cmd.Flags().StringVarP( &flags.Name, "name", "n", cluster.DefaultName, "the cluster context name", ) cmd.Flags().StringVar( &flags.Kubeconfig, "kubeconfig", "", "sets kubeconfig path instead of $KUBECONFIG or $HOME/.kube/config", ) cmd.Flags().BoolVar( &flags.Internal, "internal", false, "use internal address instead of external", ) return cmd } func runE(logger log.Logger, flags *flagpole) error { provider := cluster.NewProvider( cluster.ProviderWithLogger(logger), runtime.GetDefault(logger), ) if err := provider.ExportKubeConfig(flags.Name, flags.Kubeconfig, flags.Internal); err != nil { return err } // TODO: get kind-name from a method? OTOH we probably want to keep this // naming scheme stable anyhow... logger.V(0).Infof(`Set kubectl context to "kind-%s"`, flags.Name) return nil } kubernetes-sigs-kind-49aeee6/pkg/cmd/kind/export/logs/000077500000000000000000000000001524365506300230225ustar00rootroot00000000000000kubernetes-sigs-kind-49aeee6/pkg/cmd/kind/export/logs/logs.go000066400000000000000000000047501524365506300243230ustar00rootroot00000000000000/* Copyright 2018 The Kubernetes Authors. 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 logs implements the `logs` command package logs import ( "fmt" "github.com/spf13/cobra" "sigs.k8s.io/kind/pkg/cluster" "sigs.k8s.io/kind/pkg/cmd" "sigs.k8s.io/kind/pkg/fs" "sigs.k8s.io/kind/pkg/log" "sigs.k8s.io/kind/pkg/internal/cli" "sigs.k8s.io/kind/pkg/internal/runtime" ) type flagpole struct { Name string } // NewCommand returns a new cobra.Command for getting the cluster logs func NewCommand(logger log.Logger, streams cmd.IOStreams) *cobra.Command { flags := &flagpole{} cmd := &cobra.Command{ Args: cobra.MaximumNArgs(1), // TODO(bentheelder): more detailed usage Use: "logs [output-dir]", Short: "Exports logs to a tempdir or [output-dir] if specified", Long: "Exports logs to a tempdir or [output-dir] if specified", RunE: func(cmd *cobra.Command, args []string) error { cli.OverrideDefaultName(cmd.Flags()) return runE(logger, streams, flags, args) }, } cmd.Flags().StringVarP( &flags.Name, "name", "n", cluster.DefaultName, "the cluster context name", ) return cmd } func runE(logger log.Logger, streams cmd.IOStreams, flags *flagpole, args []string) error { provider := cluster.NewProvider( cluster.ProviderWithLogger(logger), runtime.GetDefault(logger), ) // Check if the cluster has any running nodes nodes, err := provider.ListNodes(flags.Name) if err != nil { return err } if len(nodes) == 0 { return fmt.Errorf("unknown cluster %q", flags.Name) } // get the optional directory argument, or create a tempdir var dir string if len(args) == 0 { t, err := fs.TempDir("", "") if err != nil { return err } dir = t } else { dir = args[0] } // NOTE: the path is the output of this command to be captured by calling tools // whereas "Exporting logs..." is info / debug (stderr) logger.V(0).Infof("Exporting logs for cluster %q to:", flags.Name) fmt.Fprintln(streams.Out, dir) // collect the logs return provider.CollectLogs(flags.Name, dir) } kubernetes-sigs-kind-49aeee6/pkg/cmd/kind/get/000077500000000000000000000000001524365506300213145ustar00rootroot00000000000000kubernetes-sigs-kind-49aeee6/pkg/cmd/kind/get/clusters/000077500000000000000000000000001524365506300231605ustar00rootroot00000000000000kubernetes-sigs-kind-49aeee6/pkg/cmd/kind/get/clusters/clusters.go000066400000000000000000000032571524365506300253620ustar00rootroot00000000000000/* Copyright 2018 The Kubernetes Authors. 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 clusters implements the `clusters` command package clusters import ( "fmt" "github.com/spf13/cobra" "sigs.k8s.io/kind/pkg/cluster" "sigs.k8s.io/kind/pkg/cmd" "sigs.k8s.io/kind/pkg/log" "sigs.k8s.io/kind/pkg/internal/runtime" ) // NewCommand returns a new cobra.Command for getting the list of clusters func NewCommand(logger log.Logger, streams cmd.IOStreams) *cobra.Command { cmd := &cobra.Command{ Args: cobra.NoArgs, // TODO(bentheelder): more detailed usage Use: "clusters", Short: "Lists existing kind clusters by their name", Long: "Lists existing kind clusters by their name", RunE: func(cmd *cobra.Command, args []string) error { return runE(logger, streams) }, } return cmd } func runE(logger log.Logger, streams cmd.IOStreams) error { provider := cluster.NewProvider( cluster.ProviderWithLogger(logger), runtime.GetDefault(logger), ) clusters, err := provider.List() if err != nil { return err } if len(clusters) == 0 { logger.V(0).Info("No kind clusters found.") return nil } for _, cluster := range clusters { fmt.Fprintln(streams.Out, cluster) } return nil } kubernetes-sigs-kind-49aeee6/pkg/cmd/kind/get/get.go000066400000000000000000000030221524365506300224170ustar00rootroot00000000000000/* Copyright 2018 The Kubernetes Authors. 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 get implements the `get` command package get import ( "errors" "github.com/spf13/cobra" "sigs.k8s.io/kind/pkg/cmd" "sigs.k8s.io/kind/pkg/cmd/kind/get/clusters" "sigs.k8s.io/kind/pkg/cmd/kind/get/kubeconfig" "sigs.k8s.io/kind/pkg/cmd/kind/get/nodes" "sigs.k8s.io/kind/pkg/log" ) // NewCommand returns a new cobra.Command for get func NewCommand(logger log.Logger, streams cmd.IOStreams) *cobra.Command { cmd := &cobra.Command{ // TODO(bentheelder): more detailed usage Use: "get", Short: "Gets one of [clusters, nodes, kubeconfig]", Long: "Gets one of [clusters, nodes, kubeconfig]", RunE: func(cmd *cobra.Command, args []string) error { err := cmd.Help() if err != nil { return err } return errors.New("Subcommand is required") }, } // add subcommands cmd.AddCommand(clusters.NewCommand(logger, streams)) cmd.AddCommand(nodes.NewCommand(logger, streams)) cmd.AddCommand(kubeconfig.NewCommand(logger, streams)) return cmd } kubernetes-sigs-kind-49aeee6/pkg/cmd/kind/get/kubeconfig/000077500000000000000000000000001524365506300234305ustar00rootroot00000000000000kubernetes-sigs-kind-49aeee6/pkg/cmd/kind/get/kubeconfig/kubeconfig.go000066400000000000000000000036231524365506300260770ustar00rootroot00000000000000/* Copyright 2019 The Kubernetes Authors. 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 kubeconfig implements the `kubeconfig` command package kubeconfig import ( "fmt" "github.com/spf13/cobra" "sigs.k8s.io/kind/pkg/cluster" "sigs.k8s.io/kind/pkg/cmd" "sigs.k8s.io/kind/pkg/log" "sigs.k8s.io/kind/pkg/internal/cli" "sigs.k8s.io/kind/pkg/internal/runtime" ) type flagpole struct { Name string Internal bool } // NewCommand returns a new cobra.Command for getting the kubeconfig func NewCommand(logger log.Logger, streams cmd.IOStreams) *cobra.Command { flags := &flagpole{} cmd := &cobra.Command{ Args: cobra.NoArgs, Use: "kubeconfig", Short: "Prints cluster kubeconfig", Long: "Prints cluster kubeconfig", RunE: func(cmd *cobra.Command, args []string) error { cli.OverrideDefaultName(cmd.Flags()) return runE(logger, streams, flags) }, } cmd.Flags().StringVarP( &flags.Name, "name", "n", cluster.DefaultName, "the cluster context name", ) cmd.Flags().BoolVar( &flags.Internal, "internal", false, "use internal address instead of external", ) return cmd } func runE(logger log.Logger, streams cmd.IOStreams, flags *flagpole) error { provider := cluster.NewProvider( cluster.ProviderWithLogger(logger), runtime.GetDefault(logger), ) cfg, err := provider.KubeConfig(flags.Name, flags.Internal) if err != nil { return err } fmt.Fprintln(streams.Out, cfg) return nil } kubernetes-sigs-kind-49aeee6/pkg/cmd/kind/get/nodes/000077500000000000000000000000001524365506300224245ustar00rootroot00000000000000kubernetes-sigs-kind-49aeee6/pkg/cmd/kind/get/nodes/nodes.go000066400000000000000000000052471524365506300240730ustar00rootroot00000000000000/* Copyright 2019 The Kubernetes Authors. 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 nodes implements the `nodes` command package nodes import ( "fmt" "github.com/spf13/cobra" "sigs.k8s.io/kind/pkg/cluster" "sigs.k8s.io/kind/pkg/cluster/nodes" "sigs.k8s.io/kind/pkg/cmd" "sigs.k8s.io/kind/pkg/log" "sigs.k8s.io/kind/pkg/internal/cli" "sigs.k8s.io/kind/pkg/internal/runtime" ) type flagpole struct { Name string AllClusters bool } // NewCommand returns a new cobra.Command for getting the list of nodes for a given cluster func NewCommand(logger log.Logger, streams cmd.IOStreams) *cobra.Command { flags := &flagpole{} cmd := &cobra.Command{ Args: cobra.NoArgs, Use: "nodes", Short: "Lists existing kind nodes by their name", Long: "Lists existing kind nodes by their name", RunE: func(cmd *cobra.Command, args []string) error { cli.OverrideDefaultName(cmd.Flags()) return runE(logger, streams, flags) }, } cmd.Flags().StringVarP( &flags.Name, "name", "n", cluster.DefaultName, "the cluster context name", ) cmd.Flags().BoolVarP( &flags.AllClusters, "all-clusters", "A", false, "If present, list all the available nodes across all cluster contexts. Current context is ignored even if specified with --name.", ) return cmd } func runE(logger log.Logger, streams cmd.IOStreams, flags *flagpole) error { // List nodes by cluster context name provider := cluster.NewProvider( cluster.ProviderWithLogger(logger), runtime.GetDefault(logger), ) var nodes []nodes.Node var err error if flags.AllClusters { clusters, err := provider.List() if err != nil { return err } for _, clusterName := range clusters { clusterNodes, err := provider.ListNodes(clusterName) if err != nil { return err } nodes = append(nodes, clusterNodes...) } if len(nodes) == 0 { logger.V(0).Infof("No kind nodes for any cluster.") return nil } } else { nodes, err = provider.ListNodes(flags.Name) if err != nil { return err } if len(nodes) == 0 { logger.V(0).Infof("No kind nodes found for cluster %q.", flags.Name) return nil } } for _, node := range nodes { fmt.Fprintln(streams.Out, node.String()) } return nil } kubernetes-sigs-kind-49aeee6/pkg/cmd/kind/load/000077500000000000000000000000001524365506300214545ustar00rootroot00000000000000kubernetes-sigs-kind-49aeee6/pkg/cmd/kind/load/docker-image/000077500000000000000000000000001524365506300240035ustar00rootroot00000000000000kubernetes-sigs-kind-49aeee6/pkg/cmd/kind/load/docker-image/docker-image.go000066400000000000000000000203321524365506300266610ustar00rootroot00000000000000/* Copyright 2019 The Kubernetes Authors. 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 load implements the `load` command package load import ( "fmt" "os" "path/filepath" "strings" "github.com/spf13/cobra" "sigs.k8s.io/kind/pkg/cluster" "sigs.k8s.io/kind/pkg/cluster/nodes" "sigs.k8s.io/kind/pkg/cluster/nodeutils" "sigs.k8s.io/kind/pkg/cmd" "sigs.k8s.io/kind/pkg/errors" "sigs.k8s.io/kind/pkg/exec" "sigs.k8s.io/kind/pkg/fs" "sigs.k8s.io/kind/pkg/log" "sigs.k8s.io/kind/pkg/internal/cli" "sigs.k8s.io/kind/pkg/internal/runtime" ) type ( imageTagFetcher func(nodes.Node, string) (map[string]bool, error) ) type flagpole struct { Name string Nodes []string } // NewCommand returns a new cobra.Command for loading an image into a cluster func NewCommand(logger log.Logger, streams cmd.IOStreams) *cobra.Command { flags := &flagpole{} cmd := &cobra.Command{ Args: func(cmd *cobra.Command, args []string) error { if len(args) < 1 { return errors.New("a list of image names is required") } return nil }, Use: "docker-image [IMAGE...]", Short: "Loads docker images from host into nodes", Long: "Loads docker images from host into all or specified nodes by name", RunE: func(cmd *cobra.Command, args []string) error { cli.OverrideDefaultName(cmd.Flags()) return runE(logger, flags, args) }, } cmd.Flags().StringVarP( &flags.Name, "name", "n", cluster.DefaultName, "the cluster context name", ) cmd.Flags().StringSliceVar( &flags.Nodes, "nodes", nil, "comma separated list of nodes to load images into", ) return cmd } func runE(logger log.Logger, flags *flagpole, args []string) error { provider := cluster.NewProvider( cluster.ProviderWithLogger(logger), runtime.GetDefault(logger), ) // Check that the image exists locally and gets its ID, if not return error imageNames := removeDuplicates(args) var imageIDs []string for _, imageName := range imageNames { imageID, err := imageID(imageName) if err != nil { return fmt.Errorf("image: %q not present locally", imageName) } imageIDs = append(imageIDs, imageID) } // Check if the cluster nodes exist nodeList, err := provider.ListInternalNodes(flags.Name) if err != nil { return err } if len(nodeList) == 0 { return fmt.Errorf("no nodes found for cluster %q", flags.Name) } // map cluster nodes by their name nodesByName := map[string]nodes.Node{} for _, node := range nodeList { // TODO(bentheelder): this depends on the fact that ListByCluster() // will have name for nameOrId. nodesByName[node.String()] = node } // pick only the user selected nodes and ensure they exist // the default is all nodes unless flags.Nodes is set candidateNodes := nodeList if len(flags.Nodes) > 0 { candidateNodes = []nodes.Node{} for _, name := range flags.Nodes { node, ok := nodesByName[name] if !ok { return fmt.Errorf("unknown node: %q", name) } candidateNodes = append(candidateNodes, node) } } // pick only the nodes that don't have the image selectedNodes := map[string]nodes.Node{} fns := []func() error{} for i, imageName := range imageNames { imageID := imageIDs[i] processed := false for _, node := range candidateNodes { exists, reTagRequired, sanitizedImageName := checkIfImageReTagRequired(node, imageID, imageName, nodeutils.ImageTags) if exists && !reTagRequired { continue } if reTagRequired { // We will try to re-tag the image. If the re-tag fails, we will fall back to the default behavior of loading // the images into the nodes again logger.V(0).Infof("Image with ID: %s already present on the node %s but is missing the tag %s. re-tagging...", imageID, node.String(), sanitizedImageName) if err := nodeutils.ReTagImage(node, imageID, sanitizedImageName); err != nil { logger.Errorf("failed to re-tag image on the node %s due to an error %s. Will load it instead...", node.String(), err) selectedNodes[node.String()] = node } else { processed = true } continue } id, err := nodeutils.ImageID(node, imageName) if err != nil || id != imageID { selectedNodes[node.String()] = node logger.V(0).Infof("Image: %q with ID %q not yet present on node %q, loading...", imageName, imageID, node.String()) } continue } if len(selectedNodes) == 0 && !processed { logger.V(0).Infof("Image: %q with ID %q found to be already present on all nodes.", imageName, imageID) } } // return early if no node needs the image if len(selectedNodes) == 0 { return nil } // Setup the tar path where the images will be saved dir, err := fs.TempDir("", "images-tar") if err != nil { return errors.Wrap(err, "failed to create tempdir") } defer os.RemoveAll(dir) imagesTarPath := filepath.Join(dir, "images.tar") // Save the images into a tar err = save(imageNames, imagesTarPath) if err != nil { return err } // Load the images on the selected nodes for _, selectedNode := range selectedNodes { selectedNode := selectedNode // capture loop variable fns = append(fns, func() error { return loadImage(imagesTarPath, selectedNode) }) } return errors.UntilErrorConcurrent(fns) } // TODO: we should consider having a cluster method to load images // loads an image tarball onto a node func loadImage(imageTarName string, node nodes.Node) error { f, err := os.Open(imageTarName) if err != nil { return errors.Wrap(err, "failed to open image") } defer f.Close() return nodeutils.LoadImageArchive(node, f) } // save saves images to dest, as in `docker save` func save(images []string, dest string) error { commandArgs := append([]string{"save", "-o", dest}, images...) return exec.Command("docker", commandArgs...).Run() } // imageID return the Id of the container image func imageID(containerNameOrID string) (string, error) { cmd := exec.Command("docker", "image", "inspect", "-f", "{{ .Id }}", containerNameOrID, // ... against the container ) lines, err := exec.OutputLines(cmd) if err != nil { return "", err } if len(lines) != 1 { return "", errors.Errorf("Docker image ID should only be one line, got %d lines", len(lines)) } return lines[0], nil } // removeDuplicates removes duplicates from a string slice func removeDuplicates(slice []string) []string { result := []string{} seenKeys := make(map[string]struct{}) for _, k := range slice { if _, seen := seenKeys[k]; !seen { result = append(result, k) seenKeys[k] = struct{}{} } } return result } // checkIfImageExists makes sure we only perform the reverse lookup of the ImageID to tag map func checkIfImageReTagRequired(node nodes.Node, imageID, imageName string, tagFetcher imageTagFetcher) (exists, reTagRequired bool, sanitizedImage string) { tags, err := tagFetcher(node, imageID) if len(tags) == 0 || err != nil { exists = false return } exists = true sanitizedImage = sanitizeImage(imageName) if ok := tags[sanitizedImage]; ok { reTagRequired = false return } reTagRequired = true return } // sanitizeImage is a helper to return human readable image name // This is a modified version of the same function found under providers/podman/images.go func sanitizeImage(image string) (sanitizedName string) { const ( defaultDomain = "docker.io/" officialRepoName = "library" ) sanitizedName = image if !strings.ContainsRune(image, '/') { sanitizedName = officialRepoName + "/" + image } i := strings.IndexRune(sanitizedName, '/') if i == -1 || (!strings.ContainsAny(sanitizedName[:i], ".:") && sanitizedName[:i] != "localhost") { sanitizedName = defaultDomain + sanitizedName } if !hasTag(sanitizedName) && !strings.ContainsRune(sanitizedName, '@') { sanitizedName += ":latest" } return } func hasTag(image string) bool { lastSlash := strings.LastIndex(image, "/") lastColon := strings.LastIndex(image, ":") return lastColon > lastSlash } kubernetes-sigs-kind-49aeee6/pkg/cmd/kind/load/docker-image/docker-image_test.go000066400000000000000000000125241524365506300277240ustar00rootroot00000000000000/* Copyright 2021 The Kubernetes Authors. 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 load import ( "errors" "reflect" "sort" "testing" "sigs.k8s.io/kind/pkg/cluster/nodes" ) func Test_removeDuplicates(t *testing.T) { tests := []struct { name string slice []string want []string }{ { name: "empty", slice: []string{}, want: []string{}, }, { name: "all different", slice: []string{"one", "two"}, want: []string{"one", "two"}, }, { name: "one dup", slice: []string{"one", "two", "two"}, want: []string{"one", "two"}, }, { name: "two dup", slice: []string{"one", "two", "two", "one"}, want: []string{"one", "two"}, }, } for _, tt := range tests { t.Run(tt.name, func(t *testing.T) { got := removeDuplicates(tt.slice) sort.Strings(got) sort.Strings(tt.want) if !reflect.DeepEqual(got, tt.want) { t.Errorf("removeDuplicates() = %v, want %v", got, tt.want) } }) } } func Test_sanitizeImage(t *testing.T) { tests := []struct { name string image string sanitizedImage string }{ { image: "ubuntu:18.04", sanitizedImage: "docker.io/library/ubuntu:18.04", }, { image: "custom/ubuntu:18.04", sanitizedImage: "docker.io/custom/ubuntu:18.04", }, { image: "registry.k8s.io/kindest/node:latest", sanitizedImage: "registry.k8s.io/kindest/node:latest", }, { image: "registry.k8s.io/pause:3.6", sanitizedImage: "registry.k8s.io/pause:3.6", }, { image: "baz", sanitizedImage: "docker.io/library/baz:latest", }, { image: "other-registry/baz", sanitizedImage: "docker.io/other-registry/baz:latest", }, { image: "localhost:5000/baz", sanitizedImage: "localhost:5000/baz:latest", }, { image: "localhost:5000/baz:quux", sanitizedImage: "localhost:5000/baz:quux", }, } for _, tt := range tests { t.Run(tt.name, func(t *testing.T) { got := sanitizeImage(tt.image) if got != tt.sanitizedImage { t.Errorf("sanitizeImage(%s) = %s, want %s", tt.image, got, tt.sanitizedImage) } }) } } func Test_checkIfImageReTagRequired(t *testing.T) { tests := []struct { name string imageTags struct { tags map[string]bool err error } imageID string imageName string returnValues []bool sanitizedImage string }{ { name: "image is already present", imageTags: struct { tags map[string]bool err error }{ map[string]bool{ "docker.io/library/image1:tag1": true, "k8s.io/image1:tag1": true, }, nil, }, imageID: "sha256:fd3fd9ab134a864eeb7b2c073c0d90192546f597c60416b81fc4166cca47f29a", imageName: "k8s.io/image1:tag1", returnValues: []bool{true, false}, sanitizedImage: "k8s.io/image1:tag1", }, { name: "re-tag is required", imageTags: struct { tags map[string]bool err error }{ map[string]bool{ "docker.io/library/image1:tag1": true, "k8s.io/image1:tag1": true, }, nil, }, imageID: "sha256:fd3fd9ab134a864eeb7b2c073c0d90192546f597c60416b81fc4166cca47f29a", imageName: "k8s.io/image1:tag2", returnValues: []bool{true, true}, sanitizedImage: "k8s.io/image1:tag2", }, { name: "re-tag is required with docker.io prefix", imageTags: struct { tags map[string]bool err error }{ map[string]bool{ "docker.io/foo/image1:tag1": true, }, nil, }, imageID: "sha256:fd3fd9ab134a864eeb7b2c073c0d90192546f597c60416b81fc4166cca47f29a", imageName: "foo/image1:tag2", returnValues: []bool{true, true}, sanitizedImage: "docker.io/foo/image1:tag2", }, { name: "image tag fetch failed", imageTags: struct { tags map[string]bool err error }{ map[string]bool{}, errors.New("some runtime error"), }, imageID: "sha256:fd3fd9ab134a864eeb7b2c073c0d90192546f597c60416b81fc4166cca47f29a", imageName: "k8s.io/image1:tag2", returnValues: []bool{false, false}, sanitizedImage: "", }, } for _, tc := range tests { tc := tc t.Run(tc.name, func(t *testing.T) { // checkIfImageReTagRequired doesn't use the `nodes.Node` type for anything. So // passing a nil value here should be fine as the other two functions that use the // nodes.Node has been stubbed out already exists, reTagRequired, sanitizedImage := checkIfImageReTagRequired(nil, tc.imageID, tc.imageName, func(n nodes.Node, s string) (map[string]bool, error) { return tc.imageTags.tags, tc.imageTags.err }) if exists != tc.returnValues[0] || reTagRequired != tc.returnValues[1] || sanitizedImage != tc.sanitizedImage { t.Errorf("checkIfImageReTagRequired failed. Expected: [%v,%v,%v], got: [%v, %v, %v]", tc.returnValues[0], tc.returnValues[1], tc.sanitizedImage, exists, reTagRequired, sanitizedImage) } }) } } kubernetes-sigs-kind-49aeee6/pkg/cmd/kind/load/image-archive/000077500000000000000000000000001524365506300241555ustar00rootroot00000000000000kubernetes-sigs-kind-49aeee6/pkg/cmd/kind/load/image-archive/image-archive.go000066400000000000000000000103771524365506300272150ustar00rootroot00000000000000/* Copyright 2019 The Kubernetes Authors. 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 load implements the `load` command package load import ( "fmt" "os" "github.com/spf13/cobra" "sigs.k8s.io/kind/pkg/errors" "sigs.k8s.io/kind/pkg/cluster" "sigs.k8s.io/kind/pkg/cluster/nodes" "sigs.k8s.io/kind/pkg/cluster/nodeutils" "sigs.k8s.io/kind/pkg/cmd" "sigs.k8s.io/kind/pkg/log" "sigs.k8s.io/kind/pkg/internal/cli" "sigs.k8s.io/kind/pkg/internal/runtime" ) type flagpole struct { Name string Nodes []string } // NewCommand returns a new cobra.Command for loading an image into a cluster func NewCommand(logger log.Logger, streams cmd.IOStreams) *cobra.Command { flags := &flagpole{} cmd := &cobra.Command{ Args: func(cmd *cobra.Command, args []string) error { if len(args) < 1 { return fmt.Errorf("name of image archive is required") } return nil }, PreRun: func(cmd *cobra.Command, args []string) { if len(args) > 1 { logger.Warn("It is suggested that you save multiple images into a common archive and load that instead of loading multiple archives for better performance") } }, Use: "image-archive ", Short: "Loads docker image from archive into nodes", Long: "Loads docker image from archive into all or specified nodes by name", RunE: func(cmd *cobra.Command, args []string) error { cli.OverrideDefaultName(cmd.Flags()) return runE(logger, flags, args) }, } cmd.Flags().StringVarP( &flags.Name, "name", "n", cluster.DefaultName, "the cluster context name", ) cmd.Flags().StringSliceVar( &flags.Nodes, "nodes", nil, "comma separated list of nodes to load images into", ) return cmd } func runE(logger log.Logger, flags *flagpole, args []string) error { provider := cluster.NewProvider( cluster.ProviderWithLogger(logger), runtime.GetDefault(logger), ) for _, imageTarPath := range args { if _, err := os.Stat(imageTarPath); err != nil { return err } } for _, imageTarPath := range args { if err := loadArchiveToNodes(logger, provider, flags.Name, flags.Nodes, imageTarPath); err != nil { return err } } return nil } func loadArchiveToNodes(logger log.Logger, provider *cluster.Provider, clusterName string, nodeNames []string, imageArchivePath string) error { // Check if the cluster nodes exist nodeList, err := provider.ListInternalNodes(clusterName) if err != nil { return err } if len(nodeList) == 0 { return fmt.Errorf("no nodes found for cluster %q", clusterName) } // map cluster nodes by their name nodesByName := map[string]nodes.Node{} for _, node := range nodeList { // TODO(bentheelder): this depends on the fact that ListByCluster() // will have name for nameOrId. nodesByName[node.String()] = node } // pick only the user selected nodes and ensure they exist // the default is all nodes unless flags.Nodes is set selectedNodes := nodeList if len(nodeNames) > 0 { selectedNodes = []nodes.Node{} for _, name := range nodeNames { node, ok := nodesByName[name] if !ok { return fmt.Errorf("unknown node: %s", name) } selectedNodes = append(selectedNodes, node) } } // Load the image on the selected nodes fns := []func() error{} for _, selectedNode := range selectedNodes { selectedNode := selectedNode // capture loop variable fns = append(fns, func() error { return loadImage(logger, imageArchivePath, selectedNode) }) } return errors.UntilErrorConcurrent(fns) } // loads an image tarball onto a node func loadImage(logger log.Logger, imageTarName string, node nodes.Node) error { f, err := os.Open(imageTarName) if err != nil { return errors.Wrap(err, "failed to open image") } defer f.Close() logger.V(2).Infof("Loading Docker Image from archive %s to node %s", imageTarName, node.String()) return nodeutils.LoadImageArchive(node, f) } kubernetes-sigs-kind-49aeee6/pkg/cmd/kind/load/load.go000066400000000000000000000027061524365506300227270ustar00rootroot00000000000000/* Copyright 2019 The Kubernetes Authors. 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 load implements the `load` command package load import ( "errors" "github.com/spf13/cobra" "sigs.k8s.io/kind/pkg/cmd" dockerimage "sigs.k8s.io/kind/pkg/cmd/kind/load/docker-image" imagearchive "sigs.k8s.io/kind/pkg/cmd/kind/load/image-archive" "sigs.k8s.io/kind/pkg/log" ) // NewCommand returns a new cobra.Command for get func NewCommand(logger log.Logger, streams cmd.IOStreams) *cobra.Command { cmd := &cobra.Command{ Args: cobra.NoArgs, Use: "load", Short: "Loads images into nodes", Long: "Loads images into node from an archive or image on host", RunE: func(cmd *cobra.Command, args []string) error { err := cmd.Help() if err != nil { return err } return errors.New("Subcommand is required") }, } // add subcommands cmd.AddCommand(dockerimage.NewCommand(logger, streams)) cmd.AddCommand(imagearchive.NewCommand(logger, streams)) return cmd } kubernetes-sigs-kind-49aeee6/pkg/cmd/kind/root.go000066400000000000000000000064511524365506300220550ustar00rootroot00000000000000/* Copyright 2018 The Kubernetes Authors. 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 kind implements the root kind cobra command, and the cli Main() package kind import ( "io" "github.com/spf13/cobra" "sigs.k8s.io/kind/pkg/cmd" "sigs.k8s.io/kind/pkg/cmd/kind/build" "sigs.k8s.io/kind/pkg/cmd/kind/completion" "sigs.k8s.io/kind/pkg/cmd/kind/create" "sigs.k8s.io/kind/pkg/cmd/kind/delete" "sigs.k8s.io/kind/pkg/cmd/kind/export" "sigs.k8s.io/kind/pkg/cmd/kind/get" "sigs.k8s.io/kind/pkg/cmd/kind/load" "sigs.k8s.io/kind/pkg/cmd/kind/version" "sigs.k8s.io/kind/pkg/log" ) type flagpole struct { Verbosity int32 Quiet bool } // NewCommand returns a new cobra.Command implementing the root command for kind func NewCommand(logger log.Logger, streams cmd.IOStreams) *cobra.Command { flags := &flagpole{} cmd := &cobra.Command{ Use: "kind", Short: "kind is a tool for managing local Kubernetes clusters", Long: "kind creates and manages local Kubernetes clusters using Docker container 'nodes'", PersistentPreRunE: func(cmd *cobra.Command, args []string) error { return runE(logger, flags) }, SilenceUsage: true, SilenceErrors: true, Version: version.Version(), } cmd.SetOut(streams.Out) cmd.SetErr(streams.ErrOut) cmd.PersistentFlags().Int32VarP( &flags.Verbosity, "verbosity", "v", 0, "info log verbosity, higher value produces more output", ) cmd.PersistentFlags().BoolVarP( &flags.Quiet, "quiet", "q", false, "silence all stderr output", ) // add all top level subcommands cmd.AddCommand(build.NewCommand(logger, streams)) cmd.AddCommand(completion.NewCommand(logger, streams)) cmd.AddCommand(create.NewCommand(logger, streams)) cmd.AddCommand(delete.NewCommand(logger, streams)) cmd.AddCommand(export.NewCommand(logger, streams)) cmd.AddCommand(get.NewCommand(logger, streams)) cmd.AddCommand(version.NewCommand(logger, streams)) cmd.AddCommand(load.NewCommand(logger, streams)) return cmd } func runE(logger log.Logger, flags *flagpole) error { // normal logger setup if flags.Quiet { // NOTE: if we are coming from app.Run handling this flag is // redundant, however it doesn't hurt, and this may be called directly. maybeSetWriter(logger, io.Discard) } maybeSetVerbosity(logger, log.Level(flags.Verbosity)) return nil } // maybeSetWriter will call logger.SetWriter(w) if logger has a SetWriter method func maybeSetWriter(logger log.Logger, w io.Writer) { type writerSetter interface { SetWriter(io.Writer) } v, ok := logger.(writerSetter) if ok { v.SetWriter(w) } } // maybeSetVerbosity will call logger.SetVerbosity(verbosity) if logger // has a SetVerbosity method func maybeSetVerbosity(logger log.Logger, verbosity log.Level) { type verboser interface { SetVerbosity(log.Level) } v, ok := logger.(verboser) if ok { v.SetVerbosity(verbosity) } } kubernetes-sigs-kind-49aeee6/pkg/cmd/kind/version/000077500000000000000000000000001524365506300222225ustar00rootroot00000000000000kubernetes-sigs-kind-49aeee6/pkg/cmd/kind/version/version.go000066400000000000000000000053661524365506300242500ustar00rootroot00000000000000/* Copyright 2018 The Kubernetes Authors. 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 version implements the `version` command package version import ( "fmt" "runtime" "github.com/spf13/cobra" "sigs.k8s.io/kind/pkg/cmd" "sigs.k8s.io/kind/pkg/log" ) // Version returns the kind CLI Semantic Version func Version() string { return version(versionCore, versionPreRelease, gitCommit, gitCommitCount) } func version(core, preRelease, commit, commitCount string) string { v := core // add pre-release version info if we have it if preRelease != "" { v += "-" + preRelease // If commitCount was set, add to the pre-release version if commitCount != "" { v += "." + commitCount } // if commit was set, add the + // we only do this for pre-release versions if commit != "" { // NOTE: use 14 character short hash, like Kubernetes v += "+" + truncate(commit, 14) } } return v } // DisplayVersion is Version() display formatted, this is what the version // subcommand prints func DisplayVersion() string { return "kind v" + Version() + " " + runtime.Version() + " " + runtime.GOOS + "/" + runtime.GOARCH } // versionCore is the core portion of the kind CLI version per Semantic Versioning 2.0.0 const versionCore = "0.33.0" // versionPreRelease is the base pre-release portion of the kind CLI version per // Semantic Versioning 2.0.0 var versionPreRelease = "" // gitCommitCount count the commits since the last release. // It is injected at build time. var gitCommitCount = "" // gitCommit is the commit used to build the kind binary, if available. // It is injected at build time. var gitCommit = "" // NewCommand returns a new cobra.Command for version func NewCommand(logger log.Logger, streams cmd.IOStreams) *cobra.Command { cmd := &cobra.Command{ Use: "version", Short: "Prints the kind CLI version", Long: "Prints the kind CLI version", RunE: func(cmd *cobra.Command, args []string) error { if logger.V(0).Enabled() { // if not -q / --quiet, show lots of info fmt.Fprintln(streams.Out, DisplayVersion()) } else { // otherwise only show semver fmt.Fprintln(streams.Out, Version()) } return nil }, } return cmd } func truncate(s string, maxLen int) string { if len(s) < maxLen { return s } return s[:maxLen] } kubernetes-sigs-kind-49aeee6/pkg/cmd/kind/version/version_test.go000066400000000000000000000067321524365506300253050ustar00rootroot00000000000000/* Copyright 2018 The Kubernetes Authors. 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 version import ( "testing" ) func TestTruncate(t *testing.T) { t.Parallel() cases := []struct { Value string MaxLength int Expected string }{ { Value: "A Really Long String", MaxLength: 1, Expected: "A", }, { Value: "A Short String", MaxLength: 10, Expected: "A Short St", }, { Value: "Under Max Length String", MaxLength: 1000, Expected: "Under Max Length String", }, } for _, tc := range cases { tc := tc // capture range variable t.Run(tc.Value, func(t *testing.T) { t.Parallel() result := truncate(tc.Value, tc.MaxLength) // sanity check length if len(result) > tc.MaxLength { t.Errorf("Result %q longer than Max Length %d!", result, tc.MaxLength) } if tc.Expected != result { t.Errorf("Strings did not match!") t.Errorf("Expected: %q", tc.Expected) t.Errorf("But got: %q", result) } }) } } func TestVersion(t *testing.T) { tests := []struct { name string version string versionPreRelease string gitCommit string gitCommitCount string want string }{ { name: "With git commit count and with commit hash", version: "v0.27.0", versionPreRelease: "alpha", gitCommit: "mocked-hash", gitCommitCount: "mocked-count", want: "v0.27.0-alpha.mocked-count+mocked-hash", }, { name: "Without git commit count and and with hash", version: "v0.27.0", versionPreRelease: "beta", gitCommit: "mocked-hash", gitCommitCount: "", want: "v0.27.0-beta+mocked-hash", }, { name: "Without git commit hash and with commit count", version: "v0.30.0", versionPreRelease: "alpha", gitCommit: "", gitCommitCount: "mocked-count", want: "v0.30.0-alpha.mocked-count", }, { name: "Without git commit hash and without commit count", version: "v0.27.0", versionPreRelease: "alpha", gitCommit: "", gitCommitCount: "", want: "v0.27.0-alpha", }, { name: "Without pre release version", version: "v0.27.0", versionPreRelease: "", gitCommit: "", gitCommitCount: "", want: "v0.27.0", }, { name: "Without pre release version and with git commit hash and count", version: "v0.27.0", versionPreRelease: "", gitCommit: "mocked-commit", gitCommitCount: "mocked-count", want: "v0.27.0", }, } for _, tt := range tests { // TODO: this won't be necessary when we require go 1.22+ tt := tt t.Run(tt.name, func(t *testing.T) { t.Parallel() if got := version(tt.version, tt.versionPreRelease, tt.gitCommit, tt.gitCommitCount); got != tt.want { t.Errorf("Version() = %v, want %v", got, tt.want) } }) } } kubernetes-sigs-kind-49aeee6/pkg/cmd/logger.go000066400000000000000000000023421524365506300214170ustar00rootroot00000000000000/* Copyright 2019 The Kubernetes Authors. 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 cmd import ( "io" "os" "sigs.k8s.io/kind/pkg/log" "sigs.k8s.io/kind/pkg/internal/cli" "sigs.k8s.io/kind/pkg/internal/env" ) // NewLogger returns the standard logger used by the kind CLI // This logger writes to os.Stderr func NewLogger() log.Logger { var writer io.Writer = os.Stderr if env.IsSmartTerminal(writer) { writer = cli.NewSpinner(writer) } return cli.NewLogger(writer, 0) } // ColorEnabled returns true if color is enabled for the logger // this should be used to control output func ColorEnabled(logger log.Logger) bool { type maybeColorer interface { ColorEnabled() bool } v, ok := logger.(maybeColorer) return ok && v.ColorEnabled() } kubernetes-sigs-kind-49aeee6/pkg/errors/000077500000000000000000000000001524365506300203615ustar00rootroot00000000000000kubernetes-sigs-kind-49aeee6/pkg/errors/aggregate.go000066400000000000000000000023221524365506300226350ustar00rootroot00000000000000/* Copyright 2019 The Kubernetes Authors. 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 errors // NewAggregate is a k8s.io/apimachinery/pkg/util/errors.NewAggregate compatible wrapper // note that while it returns a StackTrace wrapped Aggregate // That has been Flattened and Reduced func NewAggregate(errlist []error) error { return WithStack( reduce( flatten( newAggregate(errlist), ), ), ) } // Errors returns the deepest Aggregate in a Cause chain func Errors(err error) []error { var errors Aggregate for { if v, ok := err.(Aggregate); ok { errors = v } if causerErr, ok := err.(Causer); ok { err = causerErr.Cause() } else { break } } if errors != nil { return errors.Errors() } return nil } kubernetes-sigs-kind-49aeee6/pkg/errors/aggregate_forked.go000066400000000000000000000076501524365506300242000ustar00rootroot00000000000000/* Copyright 2021 The Kubernetes Authors. 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 errors import ( "errors" "sigs.k8s.io/kind/pkg/internal/sets" ) /* The contents of this file are lightly forked from k8s.io/apimachinery/pkg/util/errors Forking makes kind easier to import, and this code is stable. Currently the only source changes are renaming some methods so as to not export them. */ // Aggregate represents an object that contains multiple errors, but does not // necessarily have singular semantic meaning. // The aggregate can be used with `errors.Is()` to check for the occurrence of // a specific error type. // Errors.As() is not supported, because the caller presumably cares about a // specific error of potentially multiple that match the given type. // // NOTE: this type is originally from k8s.io/apimachinery/pkg/util/errors.Aggregate // Since it is an interface, you can use the implementing types interchangeably type Aggregate interface { error Errors() []error Is(error) bool } func newAggregate(errlist []error) Aggregate { if len(errlist) == 0 { return nil } // In case of input error list contains nil var errs []error for _, e := range errlist { if e != nil { errs = append(errs, e) } } if len(errs) == 0 { return nil } return aggregate(errs) } // flatten takes an Aggregate, which may hold other Aggregates in arbitrary // nesting, and flattens them all into a single Aggregate, recursively. func flatten(agg Aggregate) Aggregate { result := []error{} if agg == nil { return nil } for _, err := range agg.Errors() { if a, ok := err.(Aggregate); ok { r := flatten(a) if r != nil { result = append(result, r.Errors()...) } } else { if err != nil { result = append(result, err) } } } return newAggregate(result) } // reduce will return err or, if err is an Aggregate and only has one item, // the first item in the aggregate. func reduce(err error) error { if agg, ok := err.(Aggregate); ok && err != nil { switch len(agg.Errors()) { case 1: return agg.Errors()[0] case 0: return nil } } return err } // This helper implements the error and Errors interfaces. Keeping it private // prevents people from making an aggregate of 0 errors, which is not // an error, but does satisfy the error interface. type aggregate []error // Error is part of the error interface. func (agg aggregate) Error() string { if len(agg) == 0 { // This should never happen, really. return "" } if len(agg) == 1 { return agg[0].Error() } seenerrs := sets.NewString() result := "" agg.visit(func(err error) bool { msg := err.Error() if seenerrs.Has(msg) { return false } seenerrs.Insert(msg) if len(seenerrs) > 1 { result += ", " } result += msg return false }) if len(seenerrs) == 1 { return result } return "[" + result + "]" } func (agg aggregate) Is(target error) bool { return agg.visit(func(err error) bool { return errors.Is(err, target) }) } func (agg aggregate) visit(f func(err error) bool) bool { for _, err := range agg { switch err := err.(type) { case aggregate: if match := err.visit(f); match { return match } case Aggregate: for _, nestedErr := range err.Errors() { if match := f(nestedErr); match { return match } } default: if match := f(err); match { return match } } } return false } // Errors is part of the Aggregate interface. func (agg aggregate) Errors() []error { return []error(agg) } kubernetes-sigs-kind-49aeee6/pkg/errors/aggregate_test.go000066400000000000000000000020531524365506300236750ustar00rootroot00000000000000/* Copyright 2019 The Kubernetes Authors. 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 errors import ( "testing" "sigs.k8s.io/kind/pkg/internal/assert" ) func TestErrors(t *testing.T) { t.Parallel() t.Run("wrapped aggregate", func(t *testing.T) { t.Parallel() errs := []error{New("foo"), Errorf("bar")} err := Wrapf(NewAggregate(errs), "baz: %s", "quux") result := Errors(err) assert.DeepEqual(t, errs, result) }) t.Run("nil", func(t *testing.T) { t.Parallel() result := Errors(nil) var expected []error assert.DeepEqual(t, expected, result) }) } kubernetes-sigs-kind-49aeee6/pkg/errors/concurrent.go000066400000000000000000000031751524365506300231000ustar00rootroot00000000000000/* Copyright 2019 The Kubernetes Authors. 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 errors import ( "sync" ) // UntilErrorConcurrent runs all funcs in separate goroutines, returning the // first non-nil error returned from funcs, or nil if all funcs return nil func UntilErrorConcurrent(funcs []func() error) error { errCh := make(chan error, len(funcs)) for _, f := range funcs { f := f // capture f go func() { errCh <- f() }() } for i := 0; i < len(funcs); i++ { if err := <-errCh; err != nil { return err } } return nil } // AggregateConcurrent runs fns concurrently, returning a NewAggregate if there are > 1 errors func AggregateConcurrent(funcs []func() error) error { // run all fns concurrently ch := make(chan error, len(funcs)) var wg sync.WaitGroup for _, f := range funcs { f := f // capture f wg.Add(1) go func() { defer wg.Done() ch <- f() }() } wg.Wait() close(ch) // collect up and return errors errs := []error{} for err := range ch { if err != nil { errs = append(errs, err) } } if len(errs) > 1 { return NewAggregate(errs) } else if len(errs) == 1 { return errs[0] } return nil } kubernetes-sigs-kind-49aeee6/pkg/errors/concurrent_test.go000066400000000000000000000046371524365506300241430ustar00rootroot00000000000000/* Copyright 2019 The Kubernetes Authors. 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 errors import ( "sort" "testing" "sigs.k8s.io/kind/pkg/internal/assert" ) func TestUntilErrorConcurrent(t *testing.T) { t.Parallel() t.Run("first to return error", func(t *testing.T) { t.Parallel() // test that the first function to return an error is returned expected := New("first") wait := make(chan bool) result := UntilErrorConcurrent([]func() error{ func() error { <-wait return New("second") }, func() error { return expected }, }) wait <- true assert.DeepEqual(t, expected, result) }) t.Run("nil", func(t *testing.T) { t.Parallel() result := UntilErrorConcurrent([]func() error{ func() error { return nil }, }) var expected error assert.DeepEqual(t, expected, result) }) } func TestAggregateConcurrent(t *testing.T) { t.Parallel() t.Run("all errors returned", func(t *testing.T) { t.Parallel() // test that the first function to return an error is returned first := New("first") second := New("second") expected := []error{first, second} result := AggregateConcurrent([]func() error{ func() error { return second }, func() error { return first }, }) resultErrors := Errors(result) // We just want to check if we aggregate all the errors independent of the order sort.SliceStable(resultErrors, func(i, j int) bool { return resultErrors[i].Error() < resultErrors[j].Error() }) assert.DeepEqual(t, expected, resultErrors) }) t.Run("one error", func(t *testing.T) { t.Parallel() expected := New("foo") result := AggregateConcurrent([]func() error{ func() error { return expected }, }) assert.DeepEqual(t, expected, result) }) t.Run("nil", func(t *testing.T) { t.Parallel() result := AggregateConcurrent([]func() error{ func() error { return nil }, }) var expected error assert.DeepEqual(t, expected, result) }) } kubernetes-sigs-kind-49aeee6/pkg/errors/doc.go000066400000000000000000000012161524365506300214550ustar00rootroot00000000000000/* Copyright 2019 The Kubernetes Authors. 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 errors provides common utilities for dealing with errors package errors kubernetes-sigs-kind-49aeee6/pkg/errors/errors.go000066400000000000000000000054221524365506300222270ustar00rootroot00000000000000/* Copyright 2019 The Kubernetes Authors. 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 errors import ( stderrors "errors" pkgerrors "github.com/pkg/errors" ) // New returns an error with the supplied message. // New also records the stack trace at the point it was called. func New(message string) error { return pkgerrors.New(message) } // NewWithoutStack is like new but does NOT wrap with a stack // This is useful for exported errors func NewWithoutStack(message string) error { return stderrors.New(message) } // Errorf formats according to a format specifier and returns the string as a // value that satisfies error. Errorf also records the stack trace at the // point it was called. func Errorf(format string, args ...interface{}) error { return pkgerrors.Errorf(format, args...) } // Wrap returns an error annotating err with a stack trace at the point Wrap // is called, and the supplied message. If err is nil, Wrap returns nil. func Wrap(err error, message string) error { return pkgerrors.Wrap(err, message) } // Wrapf returns an error annotating err with a stack trace at the point Wrapf // is called, and the format specifier. If err is nil, Wrapf returns nil. func Wrapf(err error, format string, args ...interface{}) error { return pkgerrors.Wrapf(err, format, args...) } // WithStack annotates err with a stack trace at the point WithStack was called. // If err is nil, WithStack returns nil. func WithStack(err error) error { return pkgerrors.WithStack(err) } // Causer is an interface to github.com/pkg/errors error's Cause() wrapping type Causer interface { // Cause returns the underlying error Cause() error } // StackTracer is an interface to github.com/pkg/errors error's StackTrace() type StackTracer interface { // StackTrace returns the StackTrace ... // TODO: return our own type instead? // https://github.com/pkg/errors#roadmap StackTrace() pkgerrors.StackTrace } // StackTrace returns the deepest StackTrace in a Cause chain // https://github.com/pkg/errors/issues/173 func StackTrace(err error) pkgerrors.StackTrace { var stackErr error for { if _, ok := err.(StackTracer); ok { stackErr = err } if causerErr, ok := err.(Causer); ok { err = causerErr.Cause() } else { break } } if stackErr != nil { return stackErr.(StackTracer).StackTrace() } return nil } kubernetes-sigs-kind-49aeee6/pkg/errors/errors_test.go000066400000000000000000000021401524365506300232600ustar00rootroot00000000000000/* Copyright 2019 The Kubernetes Authors. 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 errors import ( "testing" pkgerrors "github.com/pkg/errors" "sigs.k8s.io/kind/pkg/internal/assert" ) func TestStackTrace(t *testing.T) { t.Parallel() t.Run("wrapped chain", func(t *testing.T) { t.Parallel() err := New("foo") expected := err.(StackTracer).StackTrace() result := StackTrace(Wrap(Wrap(err, "bar"), "baz")) assert.DeepEqual(t, expected, result) }) t.Run("nil", func(t *testing.T) { t.Parallel() result := StackTrace(nil) var expected pkgerrors.StackTrace assert.DeepEqual(t, expected, result) }) } kubernetes-sigs-kind-49aeee6/pkg/exec/000077500000000000000000000000001524365506300177715ustar00rootroot00000000000000kubernetes-sigs-kind-49aeee6/pkg/exec/default.go000066400000000000000000000024301524365506300217430ustar00rootroot00000000000000/* Copyright 2019 The Kubernetes Authors. 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 exec import "context" // DefaultCmder is a LocalCmder instance used for convenience, packages // originally using os/exec.Command can instead use pkg/kind/exec.Command // which forwards to this instance // TODO(bentheelder): swap this for testing // TODO(bentheelder): consider not using a global for this :^) var DefaultCmder = &LocalCmder{} // Command is a convenience wrapper over DefaultCmder.Command func Command(command string, args ...string) Cmd { return DefaultCmder.Command(command, args...) } // CommandContext is a convenience wrapper over DefaultCmder.CommandContext func CommandContext(ctx context.Context, command string, args ...string) Cmd { return DefaultCmder.CommandContext(ctx, command, args...) } kubernetes-sigs-kind-49aeee6/pkg/exec/doc.go000066400000000000000000000014331524365506300210660ustar00rootroot00000000000000/* Copyright 2019 The Kubernetes Authors. 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 exec contains an interface for executing commands, along with helpers // TODO(bentheelder): add standardized timeout functionality & a default timeout // so that commands cannot hang indefinitely (!) package exec kubernetes-sigs-kind-49aeee6/pkg/exec/helpers.go000066400000000000000000000067461524365506300217770ustar00rootroot00000000000000/* Copyright 2019 The Kubernetes Authors. 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 exec import ( "bufio" "bytes" "io" "os" "strings" "al.essio.dev/pkg/shellescape" "sigs.k8s.io/kind/pkg/errors" ) // PrettyCommand takes arguments identical to Cmder.Command, // it returns a pretty printed command that could be pasted into a shell func PrettyCommand(name string, args ...string) string { var out strings.Builder out.WriteString(shellescape.Quote(name)) for _, arg := range args { out.WriteByte(' ') out.WriteString(shellescape.Quote(arg)) } return out.String() } // RunErrorForError returns a RunError if the error contains a RunError. // Otherwise it returns nil func RunErrorForError(err error) *RunError { var runError *RunError for { if rErr, ok := err.(*RunError); ok { runError = rErr } if causerErr, ok := err.(errors.Causer); ok { err = causerErr.Cause() } else { break } } return runError } // CombinedOutputLines is like os/exec's cmd.CombinedOutput(), // but over our Cmd interface, and instead of returning the byte buffer of // stderr + stdout, it scans these for lines and returns a slice of output lines func CombinedOutputLines(cmd Cmd) (lines []string, err error) { var buff bytes.Buffer cmd.SetStdout(&buff) cmd.SetStderr(&buff) err = cmd.Run() scanner := bufio.NewScanner(&buff) for scanner.Scan() { lines = append(lines, scanner.Text()) } return lines, err } // OutputLines is like os/exec's cmd.Output(), // but over our Cmd interface, and instead of returning the byte buffer of // stdout, it scans these for lines and returns a slice of output lines func OutputLines(cmd Cmd) (lines []string, err error) { var buff bytes.Buffer cmd.SetStdout(&buff) err = cmd.Run() scanner := bufio.NewScanner(&buff) for scanner.Scan() { lines = append(lines, scanner.Text()) } return lines, err } // Output is like os/exec's cmd.Output, but over our Cmd interface func Output(cmd Cmd) ([]byte, error) { var buff bytes.Buffer cmd.SetStdout(&buff) err := cmd.Run() return buff.Bytes(), err } // InheritOutput sets cmd's output to write to the current process's stdout and stderr func InheritOutput(cmd Cmd) Cmd { cmd.SetStderr(os.Stderr) cmd.SetStdout(os.Stdout) return cmd } // RunWithStdoutReader runs cmd with stdout piped to readerFunc func RunWithStdoutReader(cmd Cmd, readerFunc func(io.Reader) error) error { pr, pw, err := os.Pipe() if err != nil { return err } cmd.SetStdout(pw) return errors.AggregateConcurrent([]func() error{ func() error { defer pr.Close() return readerFunc(pr) }, func() error { defer pw.Close() return cmd.Run() }, }) } // RunWithStdinWriter runs cmd with writerFunc piped to stdin func RunWithStdinWriter(cmd Cmd, writerFunc func(io.Writer) error) error { pr, pw, err := os.Pipe() if err != nil { return err } cmd.SetStdin(pr) return errors.AggregateConcurrent([]func() error{ func() error { defer pw.Close() return writerFunc(pw) }, func() error { defer pr.Close() return cmd.Run() }, }) } kubernetes-sigs-kind-49aeee6/pkg/exec/local.go000066400000000000000000000106041524365506300214130ustar00rootroot00000000000000/* Copyright 2018 The Kubernetes Authors. 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 exec import ( "bytes" "context" "io" osexec "os/exec" "sync" "sigs.k8s.io/kind/pkg/errors" ) // LocalCmd wraps os/exec.Cmd, implementing the kind/pkg/exec.Cmd interface type LocalCmd struct { *osexec.Cmd } var _ Cmd = &LocalCmd{} // LocalCmder is a factory for LocalCmd, implementing Cmder type LocalCmder struct{} var _ Cmder = &LocalCmder{} // Command returns a new exec.Cmd backed by Cmd func (c *LocalCmder) Command(name string, arg ...string) Cmd { return &LocalCmd{ Cmd: osexec.Command(name, arg...), } } // CommandContext is like Command but includes a context func (c *LocalCmder) CommandContext(ctx context.Context, name string, arg ...string) Cmd { return &LocalCmd{ Cmd: osexec.CommandContext(ctx, name, arg...), } } // SetEnv sets env func (cmd *LocalCmd) SetEnv(env ...string) Cmd { cmd.Env = env return cmd } // SetStdin sets stdin func (cmd *LocalCmd) SetStdin(r io.Reader) Cmd { cmd.Stdin = r return cmd } // SetStdout set stdout func (cmd *LocalCmd) SetStdout(w io.Writer) Cmd { cmd.Stdout = w return cmd } // SetStderr sets stderr func (cmd *LocalCmd) SetStderr(w io.Writer) Cmd { cmd.Stderr = w return cmd } // Run runs the command // If the returned error is non-nil, it should be of type *RunError func (cmd *LocalCmd) Run() error { // Background: // Go's stdlib will setup and use a shared fd when cmd.Stderr == cmd.Stdout // In any other case, it will use different fds, which will involve // two different io.Copy goroutines writing to cmd.Stderr and cmd.Stdout // // Given this, we must synchronize capturing the output to a buffer // IFF ! interfaceEqual(cmd.Sterr, cmd.Stdout) var combinedOutput bytes.Buffer var combinedOutputWriter io.Writer = &combinedOutput if cmd.Stdout == nil && cmd.Stderr == nil { // Case 1: If stdout and stderr are nil, we can just use the buffer // The buffer will be == and Go will use one fd / goroutine cmd.Stdout = combinedOutputWriter cmd.Stderr = combinedOutputWriter } else if interfaceEqual(cmd.Stdout, cmd.Stderr) { // Case 2: If cmd.Stdout == cmd.Stderr go will still share the fd, // but we need to wrap with a MultiWriter to respect the other writer // and our buffer. // The MultiWriter will be == and Go will use one fd / goroutine cmd.Stdout = io.MultiWriter(cmd.Stdout, combinedOutputWriter) cmd.Stderr = cmd.Stdout } else { // Case 3: If cmd.Stdout != cmd.Stderr, we need to synchronize the // combined output writer. // Go will use different fds / write routines for stdout and stderr combinedOutputWriter = &mutexWriter{ writer: &combinedOutput, } // wrap writers if non-nil if cmd.Stdout != nil { cmd.Stdout = io.MultiWriter(cmd.Stdout, combinedOutputWriter) } else { cmd.Stdout = combinedOutputWriter } if cmd.Stderr != nil { cmd.Stderr = io.MultiWriter(cmd.Stderr, combinedOutputWriter) } else { cmd.Stderr = combinedOutputWriter } } // TODO: should be in the caller or logger should be injected somehow ... if err := cmd.Cmd.Run(); err != nil { return errors.WithStack(&RunError{ Command: cmd.Args, Output: combinedOutput.Bytes(), Inner: err, }) } return nil } // interfaceEqual protects against panics from doing equality tests on // two interfaces with non-comparable underlying types. // This trivial is borrowed from the go stdlib in os/exec // Note that the recover will only happen if a is not comparable to b, // in which case we'll return false // We've lightly modified this to pass errcheck (explicitly ignoring recover) func interfaceEqual(a, b interface{}) bool { defer func() { _ = recover() }() return a == b } // mutexWriter is a simple synchronized wrapper around an io.Writer type mutexWriter struct { writer io.Writer mu sync.Mutex } func (m *mutexWriter) Write(b []byte) (int, error) { m.mu.Lock() defer m.mu.Unlock() n, err := m.writer.Write(b) return n, err } kubernetes-sigs-kind-49aeee6/pkg/exec/types.go000066400000000000000000000036661524365506300214770ustar00rootroot00000000000000/* Copyright 2019 The Kubernetes Authors. 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 exec import ( "context" "fmt" "io" ) // Cmd abstracts over running a command somewhere, this is useful for testing type Cmd interface { // Run executes the command (like os/exec.Cmd.Run), it should return // a *RunError if there is any error Run() error // Each entry should be of the form "key=value" SetEnv(...string) Cmd SetStdin(io.Reader) Cmd SetStdout(io.Writer) Cmd SetStderr(io.Writer) Cmd } // Cmder abstracts over creating commands type Cmder interface { // command, args..., just like os/exec.Cmd Command(string, ...string) Cmd CommandContext(context.Context, string, ...string) Cmd } // RunError represents an error running a Cmd type RunError struct { Command []string // [Name Args...] Output []byte // Captured Stdout / Stderr of the command Inner error // Underlying error if any } var _ error = &RunError{} func (e *RunError) Error() string { // TODO(BenTheElder): implement formatter, and show output for %+v ? return fmt.Sprintf("command \"%s\" failed with error: %v", e.PrettyCommand(), e.Inner) } // PrettyCommand pretty prints the command in a way that could be pasted // into a shell func (e *RunError) PrettyCommand() string { return PrettyCommand(e.Command[0], e.Command[1:]...) } // Cause mimics github.com/pkg/errors's Cause pattern for errors func (e *RunError) Cause() error { if e.Inner != nil { return e.Inner } return e } kubernetes-sigs-kind-49aeee6/pkg/fs/000077500000000000000000000000001524365506300174555ustar00rootroot00000000000000kubernetes-sigs-kind-49aeee6/pkg/fs/fs.go000066400000000000000000000076461524365506300204310ustar00rootroot00000000000000/* Copyright 2018 The Kubernetes Authors. 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 fs contains utilities for interacting with the host filesystem // in a docker friendly way // TODO(bentheelder): this should be internal package fs import ( "io" "os" "path" "path/filepath" "runtime" "strings" ) // TempDir is like os.MkdirTemp, but more docker friendly func TempDir(dir, prefix string) (name string, err error) { // create a tempdir as normal name, err = os.MkdirTemp(dir, prefix) if err != nil { return "", err } // on macOS $TMPDIR is typically /var/..., which is not mountable // /private/var/... is the mountable equivalent if runtime.GOOS == "darwin" && strings.HasPrefix(name, "/var/") { name = filepath.Join("/private", name) } return name, nil } // IsAbs is like filepath.IsAbs but also considering posix absolute paths // to be absolute even if filepath.IsAbs would not // This fixes the case of Posix paths on Windows func IsAbs(hostPath string) bool { return path.IsAbs(hostPath) || filepath.IsAbs(hostPath) } // Copy recursively directories, symlinks, files copies from src to dst // Copy will make dirs as necessary, and keep file modes // Symlinks will be dereferenced similar to `cp -r src dst` func Copy(src, dst string) error { // get source info info, err := os.Lstat(src) if err != nil { return err } // make sure dest dir exists if err := os.MkdirAll(filepath.Dir(dst), os.ModePerm); err != nil { return err } // do real copy work return copyWithSrcInfo(src, dst, info) } func copyWithSrcInfo(src, dst string, info os.FileInfo) error { if info.Mode()&os.ModeSymlink != 0 { return copySymlink(src, dst) } if info.IsDir() { return copyDir(src, dst, info) } return copyFile(src, dst, info) } // CopyFile copies a file from src to dst func CopyFile(src, dst string) (err error) { // get source information info, err := os.Stat(src) if err != nil { return err } return copyFile(src, dst, info) } func copyFile(src, dst string, info os.FileInfo) error { // open src for reading in, err := os.Open(src) if err != nil { return err } defer in.Close() // create dst file // this is like f, err := os.Create(dst); os.Chmod(f.Name(), src.Mode()) out, err := os.OpenFile(dst, os.O_RDWR|os.O_CREATE|os.O_TRUNC, info.Mode()) if err != nil { return err } // make sure we close the file defer func() { closeErr := out.Close() // if we weren't returning an error if err == nil { err = closeErr } }() // actually copy if _, err = io.Copy(out, in); err != nil { return err } err = out.Sync() return err } // copySymlink dereferences and then copies a symlink func copySymlink(src, dst string) error { // read through the symlink realSrc, err := filepath.EvalSymlinks(src) if err != nil { return err } info, err := os.Lstat(realSrc) if err != nil { return err } // copy the underlying contents return copyWithSrcInfo(realSrc, dst, info) } func copyDir(src, dst string, info os.FileInfo) error { // make sure the target dir exists if err := os.MkdirAll(dst, info.Mode()); err != nil { return err } // copy every source dir entry entries, err := os.ReadDir(src) if err != nil { return err } for _, entry := range entries { entrySrc := filepath.Join(src, entry.Name()) entryDst := filepath.Join(dst, entry.Name()) fileInfo, err := entry.Info() if err != nil { return err } if err := copyWithSrcInfo(entrySrc, entryDst, fileInfo); err != nil { return err } } return nil } kubernetes-sigs-kind-49aeee6/pkg/internal/000077500000000000000000000000001524365506300206615ustar00rootroot00000000000000kubernetes-sigs-kind-49aeee6/pkg/internal/apis/000077500000000000000000000000001524365506300216155ustar00rootroot00000000000000kubernetes-sigs-kind-49aeee6/pkg/internal/apis/config/000077500000000000000000000000001524365506300230625ustar00rootroot00000000000000kubernetes-sigs-kind-49aeee6/pkg/internal/apis/config/cluster_util.go000066400000000000000000000021721524365506300261310ustar00rootroot00000000000000/* Copyright 2021 The Kubernetes Authors. 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 // ClusterHasIPv6 returns true if the cluster should have IPv6 enabled due to either // being IPv6 cluster family or Dual Stack func ClusterHasIPv6(c *Cluster) bool { return c.Networking.IPFamily == IPv6Family || c.Networking.IPFamily == DualStackFamily } // ClusterHasImplicitLoadBalancer returns true if this cluster has an implicit api-server LoadBalancer func ClusterHasImplicitLoadBalancer(c *Cluster) bool { controlPlanes := 0 for _, node := range c.Nodes { if node.Role == ControlPlaneRole { controlPlanes++ } } return controlPlanes > 1 } kubernetes-sigs-kind-49aeee6/pkg/internal/apis/config/cluster_util_test.go000066400000000000000000000052211524365506300271660ustar00rootroot00000000000000/* Copyright 2021 The Kubernetes Authors. 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" "sigs.k8s.io/kind/pkg/internal/assert" ) func TestClusterHasIPv6(t *testing.T) { cases := []struct { Name string c *Cluster expected bool }{ { Name: "IPv6", c: &Cluster{ Networking: Networking{ IPFamily: IPv6Family, }, }, expected: true, }, { Name: "IPv4", c: &Cluster{ Networking: Networking{ IPFamily: IPv4Family, }, }, expected: false, }, { Name: "DualStack", c: &Cluster{ Networking: Networking{ IPFamily: DualStackFamily, }, }, expected: true, }, } for _, tc := range cases { tc := tc // capture loop var t.Run(tc.Name, func(t *testing.T) { r := ClusterHasIPv6(tc.c) assert.BoolEqual(t, tc.expected, r) }) } } func TestClusterHasImplicitLoadBalancer(t *testing.T) { cases := []struct { Name string c *Cluster expected bool }{ { Name: "One Node", c: &Cluster{ Nodes: []Node{ {Role: ControlPlaneRole}, }, }, expected: false, }, { Name: "Two Control Planes", c: &Cluster{ Nodes: []Node{ {Role: ControlPlaneRole}, {Role: ControlPlaneRole}, }, }, expected: true, }, { Name: "Three Control Planes", c: &Cluster{ Nodes: []Node{ {Role: ControlPlaneRole}, {Role: ControlPlaneRole}, {Role: ControlPlaneRole}, }, }, expected: true, }, { Name: "One Control Plane, Multiple Workers", c: &Cluster{ Nodes: []Node{ {Role: ControlPlaneRole}, {Role: WorkerRole}, {Role: WorkerRole}, {Role: WorkerRole}, }, }, expected: false, }, { Name: "Multiple Control Planes, Multiple Workers", c: &Cluster{ Nodes: []Node{ {Role: ControlPlaneRole}, {Role: ControlPlaneRole}, {Role: ControlPlaneRole}, {Role: WorkerRole}, {Role: WorkerRole}, {Role: WorkerRole}, }, }, expected: true, }, } for _, tc := range cases { tc := tc // capture loop var t.Run(tc.Name, func(t *testing.T) { r := ClusterHasImplicitLoadBalancer(tc.c) assert.BoolEqual(t, tc.expected, r) }) } } kubernetes-sigs-kind-49aeee6/pkg/internal/apis/config/convert_v1alpha4.go000066400000000000000000000067521524365506300266030ustar00rootroot00000000000000/* Copyright 2019 The Kubernetes Authors. 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 ( v1alpha4 "sigs.k8s.io/kind/pkg/apis/config/v1alpha4" ) // Convertv1alpha4 converts a v1alpha4 cluster to a cluster at the internal API version func Convertv1alpha4(in *v1alpha4.Cluster) *Cluster { in = in.DeepCopy() // deep copy first to avoid touching the original out := &Cluster{ Name: in.Name, Nodes: make([]Node, len(in.Nodes)), FeatureGates: in.FeatureGates, RuntimeConfig: in.RuntimeConfig, KubeadmConfigPatches: in.KubeadmConfigPatches, KubeadmConfigPatchesJSON6902: make([]PatchJSON6902, len(in.KubeadmConfigPatchesJSON6902)), ContainerdConfigPatches: in.ContainerdConfigPatches, ContainerdConfigPatchesJSON6902: in.ContainerdConfigPatchesJSON6902, } for i := range in.Nodes { convertv1alpha4Node(&in.Nodes[i], &out.Nodes[i]) } convertv1alpha4Networking(&in.Networking, &out.Networking) for i := range in.KubeadmConfigPatchesJSON6902 { convertv1alpha4PatchJSON6902(&in.KubeadmConfigPatchesJSON6902[i], &out.KubeadmConfigPatchesJSON6902[i]) } return out } func convertv1alpha4Node(in *v1alpha4.Node, out *Node) { out.Role = NodeRole(in.Role) out.Image = in.Image out.Labels = in.Labels out.KubeadmConfigPatches = in.KubeadmConfigPatches out.ExtraMounts = make([]Mount, len(in.ExtraMounts)) out.ExtraPortMappings = make([]PortMapping, len(in.ExtraPortMappings)) out.KubeadmConfigPatchesJSON6902 = make([]PatchJSON6902, len(in.KubeadmConfigPatchesJSON6902)) for i := range in.ExtraMounts { convertv1alpha4Mount(&in.ExtraMounts[i], &out.ExtraMounts[i]) } for i := range in.ExtraPortMappings { convertv1alpha4PortMapping(&in.ExtraPortMappings[i], &out.ExtraPortMappings[i]) } for i := range in.KubeadmConfigPatchesJSON6902 { convertv1alpha4PatchJSON6902(&in.KubeadmConfigPatchesJSON6902[i], &out.KubeadmConfigPatchesJSON6902[i]) } } func convertv1alpha4PatchJSON6902(in *v1alpha4.PatchJSON6902, out *PatchJSON6902) { out.Group = in.Group out.Version = in.Version out.Kind = in.Kind out.Patch = in.Patch } func convertv1alpha4Networking(in *v1alpha4.Networking, out *Networking) { out.IPFamily = ClusterIPFamily(in.IPFamily) out.APIServerPort = in.APIServerPort out.APIServerAddress = in.APIServerAddress out.PodSubnet = in.PodSubnet out.KubeProxyMode = ProxyMode(in.KubeProxyMode) out.ServiceSubnet = in.ServiceSubnet out.DisableDefaultCNI = in.DisableDefaultCNI out.DNSSearch = in.DNSSearch } func convertv1alpha4Mount(in *v1alpha4.Mount, out *Mount) { out.ContainerPath = in.ContainerPath out.HostPath = in.HostPath out.Readonly = in.Readonly out.SelinuxRelabel = in.SelinuxRelabel out.Propagation = MountPropagation(in.Propagation) } func convertv1alpha4PortMapping(in *v1alpha4.PortMapping, out *PortMapping) { out.ContainerPort = in.ContainerPort out.HostPort = in.HostPort out.ListenAddress = in.ListenAddress out.Protocol = PortMappingProtocol(in.Protocol) } kubernetes-sigs-kind-49aeee6/pkg/internal/apis/config/default.go000066400000000000000000000064231524365506300250420ustar00rootroot00000000000000/* Copyright 2019 The Kubernetes Authors. 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 comment makes golint ignore this file, feel free to edit the file. // Code generated by not-actually-generated-but-go-away-golint. DO NOT EDIT. // https://github.com/kubernetes/code-generator/issues/30 package config import ( "sigs.k8s.io/kind/pkg/apis/config/defaults" "sigs.k8s.io/kind/pkg/cluster/constants" ) // SetDefaultsCluster sets uninitialized fields to their default value. func SetDefaultsCluster(obj *Cluster) { // default cluster name if obj.Name == "" { obj.Name = constants.DefaultClusterName } // default to a one node cluster if len(obj.Nodes) == 0 { obj.Nodes = []Node{ { Image: defaults.Image, Role: ControlPlaneRole, }, } } // default nodes for i := range obj.Nodes { a := &obj.Nodes[i] SetDefaultsNode(a) } if obj.Networking.IPFamily == "" { obj.Networking.IPFamily = IPv4Family } // default to listening on 127.0.0.1:randomPort on ipv4 // and [::1]:randomPort on ipv6 if obj.Networking.APIServerAddress == "" { obj.Networking.APIServerAddress = "127.0.0.1" if obj.Networking.IPFamily == IPv6Family { obj.Networking.APIServerAddress = "::1" } } // default the pod CIDR if obj.Networking.PodSubnet == "" { obj.Networking.PodSubnet = "10.244.0.0/16" if obj.Networking.IPFamily == IPv6Family { // node-mask cidr default is /64 so we need a larger subnet, we use /56 following best practices // xref: https://www.ripe.net/publications/docs/ripe-690#4--size-of-end-user-prefix-assignment---48---56-or-something-else- obj.Networking.PodSubnet = "fd00:10:244::/56" } if obj.Networking.IPFamily == DualStackFamily { obj.Networking.PodSubnet = "10.244.0.0/16,fd00:10:244::/56" } } // default the service CIDR using the kubeadm default // https://github.com/kubernetes/kubernetes/blob/746404f82a28e55e0b76ffa7e40306fb88eb3317/cmd/kubeadm/app/apis/kubeadm/v1beta2/defaults.go#L32 // Note: kubeadm is using a /12 subnet, that may allocate a 2^20 bitmap in etcd // we allocate a /16 subnet that allows 65535 services (current Kubernetes tested limit is O(10k) services) if obj.Networking.ServiceSubnet == "" { obj.Networking.ServiceSubnet = "10.96.0.0/16" if obj.Networking.IPFamily == IPv6Family { obj.Networking.ServiceSubnet = "fd00:10:96::/112" } if obj.Networking.IPFamily == DualStackFamily { obj.Networking.ServiceSubnet = "10.96.0.0/16,fd00:10:96::/112" } } // default the KubeProxyMode using iptables as it's already the default if obj.Networking.KubeProxyMode == "" { obj.Networking.KubeProxyMode = IPTablesProxyMode } } // SetDefaultsNode sets uninitialized fields to their default value. func SetDefaultsNode(obj *Node) { if obj.Image == "" { obj.Image = defaults.Image } if obj.Role == "" { obj.Role = ControlPlaneRole } } kubernetes-sigs-kind-49aeee6/pkg/internal/apis/config/doc.go000066400000000000000000000014721524365506300241620ustar00rootroot00000000000000/* Copyright 2018 The Kubernetes Authors. 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 implements the current apiVersion of the `kind` Config // along with some common abstractions // // +k8s:deepcopy-gen=package // +k8s:conversion-gen=sigs.k8s.io/kind/pkg/internal/apis/config // +k8s:defaulter-gen=TypeMeta package config kubernetes-sigs-kind-49aeee6/pkg/internal/apis/config/encoding/000077500000000000000000000000001524365506300246505ustar00rootroot00000000000000kubernetes-sigs-kind-49aeee6/pkg/internal/apis/config/encoding/convert.go000066400000000000000000000016041524365506300266600ustar00rootroot00000000000000/* Copyright 2019 The Kubernetes Authors. 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 encoding import ( "sigs.k8s.io/kind/pkg/apis/config/v1alpha4" "sigs.k8s.io/kind/pkg/internal/apis/config" ) // V1Alpha4ToInternal converts to the internal API version func V1Alpha4ToInternal(cluster *v1alpha4.Cluster) *config.Cluster { v1alpha4.SetDefaultsCluster(cluster) return config.Convertv1alpha4(cluster) } kubernetes-sigs-kind-49aeee6/pkg/internal/apis/config/encoding/doc.go000066400000000000000000000012361524365506300257460ustar00rootroot00000000000000/* Copyright 2018 The Kubernetes Authors. 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 encoding implements utilities for decoding from yaml the `kind` Config package encoding kubernetes-sigs-kind-49aeee6/pkg/internal/apis/config/encoding/load.go000066400000000000000000000052451524365506300261240ustar00rootroot00000000000000/* Copyright 2018 The Kubernetes Authors. 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 encoding import ( "bytes" "os" yaml "go.yaml.in/yaml/v3" "sigs.k8s.io/kind/pkg/apis/config/v1alpha4" "sigs.k8s.io/kind/pkg/errors" "sigs.k8s.io/kind/pkg/internal/apis/config" ) // Load reads the file at path and attempts to convert into a `kind` Config; the file // can be one of the different API versions defined in scheme. // If path == "" then the default config is returned // If path == "-" then reads from stdin func Load(path string) (*config.Cluster, error) { // special case: empty path -> default config // TODO(bentheelder): consider removing this if path == "" { out := &config.Cluster{} config.SetDefaultsCluster(out) return out, nil } // read in file raw, err := os.ReadFile(path) if err != nil { return nil, errors.Wrap(err, "error reading file") } return Parse(raw) } // Parse parses a cluster config from raw (yaml) bytes // It will always return the current internal version after defaulting and // conversion from the read version func Parse(raw []byte) (*config.Cluster, error) { // get kind & apiVersion tm := typeMeta{} if err := yaml.Unmarshal(raw, &tm); err != nil { return nil, errors.Wrap(err, "could not determine kind / apiVersion for config") } // decode specific (apiVersion, kind) switch tm.APIVersion { // handle v1alpha4 case "kind.x-k8s.io/v1alpha4": if tm.Kind != "Cluster" { return nil, errors.Errorf("unknown kind %s for apiVersion: %s", tm.Kind, tm.APIVersion) } // load version cfg := &v1alpha4.Cluster{} if err := yamlUnmarshalStrict(raw, cfg); err != nil { return nil, errors.Wrap(err, "unable to decode config") } // apply defaults for version and convert return V1Alpha4ToInternal(cfg), nil } // unknown apiVersion if we haven't already returned ... return nil, errors.Errorf("unknown apiVersion: %s", tm.APIVersion) } // basically metav1.TypeMeta, but with yaml tags type typeMeta struct { Kind string `yaml:"kind,omitempty"` APIVersion string `yaml:"apiVersion,omitempty"` } func yamlUnmarshalStrict(raw []byte, v interface{}) error { d := yaml.NewDecoder(bytes.NewReader(raw)) d.KnownFields(true) return d.Decode(v) } kubernetes-sigs-kind-49aeee6/pkg/internal/apis/config/encoding/load_test.go000066400000000000000000000062471524365506300271660ustar00rootroot00000000000000/* Copyright 2018 The Kubernetes Authors. 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 encoding import ( "testing" ) func TestLoadCurrent(t *testing.T) { t.Parallel() cases := []struct { TestName string Path string ExpectError bool }{ { TestName: "example config", Path: "./../../../../../site/content/docs/user/kind-example-config.yaml", ExpectError: false, }, { TestName: "no config", Path: "", ExpectError: false, }, { TestName: "v1alpha4 minimal", Path: "./testdata/v1alpha4/valid-minimal.yaml", ExpectError: false, }, { TestName: "v1alpha4 config with 2 nodes", Path: "./testdata/v1alpha4/valid-minimal-two-nodes.yaml", ExpectError: false, }, { TestName: "v1alpha4 full HA", Path: "./testdata/v1alpha4/valid-full-ha.yaml", ExpectError: false, }, { TestName: "v1alpha4 many fields set", Path: "./testdata/v1alpha4/valid-many-fields.yaml", ExpectError: false, }, { TestName: "v1alpha4 config with patches", Path: "./testdata/v1alpha4/valid-kind-patches.yaml", ExpectError: false, }, { TestName: "v1alpha4 config with workers patches", Path: "./testdata/v1alpha4/valid-kind-workers-patches.yaml", ExpectError: false, }, { TestName: "v1alpha4 config with port mapping and mount", Path: "./testdata/v1alpha4/valid-port-and-mount.yaml", ExpectError: false, }, { TestName: "v1alpha4 non-existent field", Path: "./testdata/v1alpha4/invalid-bogus-field.yaml", ExpectError: true, }, { TestName: "v1alpha4 bad indentation", Path: "./testdata/v1alpha4/invalid-bad-indent.yaml", ExpectError: true, }, { TestName: "invalid path", Path: "./testdata/not-a-file.bogus", ExpectError: true, }, { TestName: "Invalid apiversion", Path: "./testdata/invalid-apiversion.yaml", ExpectError: true, }, { TestName: "Invalid kind", Path: "./testdata/invalid-kind.yaml", ExpectError: true, }, { TestName: "Invalid yaml", Path: "./testdata/invalid-yaml.yaml", ExpectError: true, }, } for _, c := range cases { c := c // capture loop variable t.Run(c.TestName, func(t *testing.T) { t.Parallel() _, err := Load(c.Path) // the error can be: // - nil, in which case we should expect no errors or fail if err != nil { if !c.ExpectError { t.Fatalf("unexpected error while Loading config: %v", err) } return } // - not nil, in which case we should expect errors or fail if c.ExpectError { t.Fatalf("unexpected lack or error while Loading config") } }) } } kubernetes-sigs-kind-49aeee6/pkg/internal/apis/config/encoding/testdata/000077500000000000000000000000001524365506300264615ustar00rootroot00000000000000kubernetes-sigs-kind-49aeee6/pkg/internal/apis/config/encoding/testdata/invalid-apiversion.yaml000066400000000000000000000001401524365506300331430ustar00rootroot00000000000000# this file contains an invalid config api version for testing kind: Node apiVersion: not-valid kubernetes-sigs-kind-49aeee6/pkg/internal/apis/config/encoding/testdata/invalid-kind.yaml000066400000000000000000000001521524365506300317140ustar00rootroot00000000000000# this file contains an invalid config kind for testing kind: not-valid apiVersion: kind.x-k8s.io/v1alpha4kubernetes-sigs-kind-49aeee6/pkg/internal/apis/config/encoding/testdata/invalid-yaml.yaml000066400000000000000000000000601524365506300317270ustar00rootroot00000000000000# intentionally invalid yaml file for testing ":kubernetes-sigs-kind-49aeee6/pkg/internal/apis/config/encoding/testdata/v1alpha4/000077500000000000000000000000001524365506300301015ustar00rootroot00000000000000invalid-bad-indent.yaml000066400000000000000000000005431524365506300343410ustar00rootroot00000000000000kubernetes-sigs-kind-49aeee6/pkg/internal/apis/config/encoding/testdata/v1alpha4kind: Cluster apiVersion: kind.x-k8s.io/v1alpha4 networking: ipFamily: ipv6 nodes: - role: control-plane - role: worker extraMounts: - containerPath: /foo hostPath: /bar readOnly: true selinuxRelabel: false propagation: Bidirectional extraPortMappings: - containerPort: 8080 hostPort: 8080 protocol: UDP - role: worker invalid-bogus-field.yaml000066400000000000000000000005511524365506300345330ustar00rootroot00000000000000kubernetes-sigs-kind-49aeee6/pkg/internal/apis/config/encoding/testdata/v1alpha4kind: Cluster apiVersion: kind.x-k8s.io/v1alpha4 networking: ipFamily: ipv6 nodes: - role: control-plane - role: worker extraMounts: - containerPath: /foo hostPath: /bar readOnly: true selinuxRelabel: false propagation: Bidirectional extraPortMappings: - containerPort: 8080 hostPort: 8080 protocol: UDP nOtAReaLFielD: bar kubernetes-sigs-kind-49aeee6/pkg/internal/apis/config/encoding/testdata/v1alpha4/valid-full-ha.yaml000066400000000000000000000003361524365506300334140ustar00rootroot00000000000000# technically valid, config file with a full ha cluster kind: Cluster apiVersion: kind.x-k8s.io/v1alpha4 nodes: - role: control-plane - role: control-plane - role: control-plane - role: worker - role: worker - role: workervalid-kind-patches.yaml000066400000000000000000000016001524365506300343520ustar00rootroot00000000000000kubernetes-sigs-kind-49aeee6/pkg/internal/apis/config/encoding/testdata/v1alpha4# this config file contains all config fields with comments kind: Cluster apiVersion: kind.x-k8s.io/v1alpha4 # patch the generated kubeadm config with some extra settings kubeadmConfigPatches: - | apiVersion: kubeadm.k8s.io/v1beta2 kind: ClusterConfiguration metadata: name: config networking: serviceSubnet: 10.0.0.0/16 # patch it further using a JSON 6902 patch kubeadmConfigPatchesJSON6902: - group: kubeadm.k8s.io version: v1beta2 kind: ClusterConfiguration patch: | - op: add path: /apiServer/certSANs/- value: my-hostname # patch containerd config containerdConfigPatches: # configure a local insecure registry - |- [plugins."io.containerd.grpc.v1.cri".registry.mirrors."registry:5000"] # 1 control plane node and 3 workers nodes: # the control plane node config - role: control-plane # the three workers - role: worker - role: worker - role: worker valid-kind-workers-patches.yaml000066400000000000000000000015401524365506300360470ustar00rootroot00000000000000kubernetes-sigs-kind-49aeee6/pkg/internal/apis/config/encoding/testdata/v1alpha4# this config file contains all config fields with comments kind: Cluster apiVersion: kind.x-k8s.io/v1alpha4 # 1 control plane node and 3 workers nodes: # the control plane node config - role: control-plane # the three workers - role: worker kubeadmConfigPatches: - | apiVersion: kubeadm.k8s.io/v1beta2 kind: JoinConfiguration nodeRegistration: kubeletExtraArgs: node-labels: "aqua=gateway" authorization-mode: "AlwaysAllow" - role: worker kubeadmConfigPatchesJSON6902: - group: kubelet.config.k8s.io version: v1beta1 kind: KubeletConfiguration patch: | - op: add path: /authentication value: {"anonymous": {"enabled": true}} - op: add path: /tlsCipherSuites value: ["TLS_ECDHE_ECDSA_WITH_AES_128_GCM_SHA256","TLS_ECDHE_RSA_WITH_AES_128_GCM_SHA256"] - role: worker valid-many-fields.yaml000066400000000000000000000006031524365506300342120ustar00rootroot00000000000000kubernetes-sigs-kind-49aeee6/pkg/internal/apis/config/encoding/testdata/v1alpha4kind: Cluster apiVersion: kind.x-k8s.io/v1alpha4 name: not-default featureGates: AllBeta: false networking: ipFamily: ipv6 nodes: - role: control-plane - role: worker extraMounts: - containerPath: /foo hostPath: /bar readOnly: true selinuxRelabel: false propagation: Bidirectional extraPortMappings: - containerPort: 8080 hostPort: 8080 protocol: UDP valid-minimal-two-nodes.yaml000066400000000000000000000002241524365506300353440ustar00rootroot00000000000000kubernetes-sigs-kind-49aeee6/pkg/internal/apis/config/encoding/testdata/v1alpha4# technically valid, minimal config file with two nodes kind: Cluster apiVersion: kind.x-k8s.io/v1alpha4 nodes: - role: control-plane - role: workerkubernetes-sigs-kind-49aeee6/pkg/internal/apis/config/encoding/testdata/v1alpha4/valid-minimal.yaml000066400000000000000000000001321524365506300335040ustar00rootroot00000000000000# technically valid, minimal config file kind: Cluster apiVersion: kind.x-k8s.io/v1alpha4 valid-port-and-mount.yaml000066400000000000000000000004001524365506300346610ustar00rootroot00000000000000kubernetes-sigs-kind-49aeee6/pkg/internal/apis/config/encoding/testdata/v1alpha4kind: Cluster apiVersion: kind.x-k8s.io/v1alpha4 nodes: - role: control-plane # map an extra port extraPortMappings: - hostPort: 80 containerPort: 80 # mount an extra path from the host extraMounts: - hostPath: ./foo containerPath: /barkubernetes-sigs-kind-49aeee6/pkg/internal/apis/config/types.go000066400000000000000000000242401524365506300245570ustar00rootroot00000000000000/* Copyright 2018 The Kubernetes Authors. 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 /* NOTE: unlike the public types these should not have serialization tags and should stay 100% internal. These are used to pass around the processed public config for internal usage. */ // Cluster contains kind cluster configuration type Cluster struct { // The cluster name. // Optional, this will be overridden by --name / KIND_CLUSTER_NAME Name string // Nodes contains the list of nodes defined in the `kind` Cluster // If unset this will default to a single control-plane node // Note that if more than one control plane is specified, an external // control plane load balancer will be provisioned implicitly Nodes []Node /* Advanced fields */ // Networking contains cluster wide network settings Networking Networking // FeatureGates contains a map of Kubernetes feature gates to whether they // are enabled. The feature gates specified here are passed to all Kubernetes components as flags or in config. // // https://kubernetes.io/docs/reference/command-line-tools-reference/feature-gates/ FeatureGates map[string]bool // RuntimeConfig Keys and values are translated into --runtime-config values for kube-apiserver, separated by commas. // // Use this to enable alpha APIs. RuntimeConfig map[string]string // KubeadmConfigPatches are applied to the generated kubeadm config as // strategic merge patches to `kustomize build` internally // https://github.com/kubernetes/community/blob/a9cf5c8f3380bb52ebe57b1e2dbdec136d8dd484/contributors/devel/sig-api-machinery/strategic-merge-patch.md // This should be an inline yaml blob-string KubeadmConfigPatches []string // KubeadmConfigPatchesJSON6902 are applied to the generated kubeadm config // as patchesJson6902 to `kustomize build` KubeadmConfigPatchesJSON6902 []PatchJSON6902 // ContainerdConfigPatches are applied to every node's containerd config // in the order listed. // These should be toml stringsto be applied as merge patches ContainerdConfigPatches []string // ContainerdConfigPatchesJSON6902 are applied to every node's containerd config // in the order listed. // These should be YAML or JSON formatting RFC 6902 JSON patches ContainerdConfigPatchesJSON6902 []string } // Node contains settings for a node in the `kind` Cluster. // A node in kind config represent a container that will be provisioned with all the components // required for the assigned role in the Kubernetes cluster type Node struct { // Role defines the role of the node in the in the Kubernetes cluster // created by kind // // Defaults to "control-plane" Role NodeRole // Image is the node image to use when creating this node // If unset a default image will be used, see defaults.Image Image string // Labels are the labels with which the respective node will be labeled Labels map[string]string /* Advanced fields */ // ExtraMounts describes additional mount points for the node container // These may be used to bind a hostPath ExtraMounts []Mount // ExtraPortMappings describes additional port mappings for the node container // binded to a host Port ExtraPortMappings []PortMapping // KubeadmConfigPatches are applied to the generated kubeadm config as // strategic merge patches to `kustomize build` internally // https://github.com/kubernetes/community/blob/a9cf5c8f3380bb52ebe57b1e2dbdec136d8dd484/contributors/devel/sig-api-machinery/strategic-merge-patch.md // This should be an inline yaml blob-string KubeadmConfigPatches []string // KubeadmConfigPatchesJSON6902 are applied to the generated kubeadm config // as patchesJson6902 to `kustomize build` KubeadmConfigPatchesJSON6902 []PatchJSON6902 } // NodeRole defines possible role for nodes in a Kubernetes cluster managed by `kind` type NodeRole string const ( // ControlPlaneRole identifies a node that hosts a Kubernetes control-plane. // NOTE: in single node clusters, control-plane nodes act also as a worker // nodes, in which case the taint will be removed. see: // https://kubernetes.io/docs/setup/independent/create-cluster-kubeadm/#control-plane-node-isolation ControlPlaneRole NodeRole = "control-plane" // WorkerRole identifies a node that hosts a Kubernetes worker WorkerRole NodeRole = "worker" ) // Networking contains cluster wide network settings type Networking struct { // IPFamily is the network cluster model, currently it can be ipv4 or ipv6 IPFamily ClusterIPFamily // APIServerPort is the listen port on the host for the Kubernetes API Server // Defaults to a random port on the host obtained by kind // // NOTE: if you set the special value of `-1` then the node backend // (docker, podman...) will be left to pick the port instead. // This is potentially useful for remote hosts, BUT it means when the container // is restarted it will be randomized. Leave this unset to allow kind to pick it. APIServerPort int32 // APIServerAddress is the listen address on the host for the Kubernetes // API Server. This should be an IP address. // // Defaults to 127.0.0.1 APIServerAddress string // PodSubnet is the CIDR used for pod IPs // kind will select a default if unspecified PodSubnet string // ServiceSubnet is the CIDR used for services VIPs // kind will select a default if unspecified ServiceSubnet string // If DisableDefaultCNI is true, kind will not install the default CNI setup. // Instead the user should install their own CNI after creating the cluster. DisableDefaultCNI bool // KubeProxyMode defines if kube-proxy should operate in iptables, ipvs or nftables mode KubeProxyMode ProxyMode // DNSSearch defines the DNS search domain to use for nodes. If not set, this will be inherited from the host. DNSSearch *[]string } // ClusterIPFamily defines cluster network IP family type ClusterIPFamily string const ( // IPv4Family sets ClusterIPFamily to ipv4 IPv4Family ClusterIPFamily = "ipv4" // IPv6Family sets ClusterIPFamily to ipv6 IPv6Family ClusterIPFamily = "ipv6" // DualStackFamily sets ClusterIPFamily to dual DualStackFamily ClusterIPFamily = "dual" ) // ProxyMode defines a proxy mode for kube-proxy type ProxyMode string const ( // IPTablesProxyMode sets ProxyMode to iptables IPTablesProxyMode ProxyMode = "iptables" // IPVSProxyMode sets ProxyMode to ipvs IPVSProxyMode ProxyMode = "ipvs" // NFTablesProxyMode sets ProxyMode to nftables NFTablesProxyMode ProxyMode = "nftables" // NoneProxyMode disables kube-proxy NoneProxyMode ProxyMode = "none" ) // PatchJSON6902 represents an inline kustomize json 6902 patch // https://tools.ietf.org/html/rfc6902 type PatchJSON6902 struct { // these fields specify the patch target resource Group string Version string Kind string // Patch should contain the contents of the json patch as a string Patch string } // Mount specifies a host volume to mount into a container. // This is a close copy of the upstream cri Mount type // see: k8s.io/kubernetes/pkg/kubelet/apis/cri/runtime/v1alpha2 // It additionally serializes the "propagation" field with the string enum // names on disk as opposed to the int32 values, and the serialized field names // have been made closer to core/v1 VolumeMount field names // In yaml this looks like: // // containerPath: /foo // hostPath: /bar // readOnly: true // selinuxRelabel: false // propagation: None // // Propagation may be one of: None, HostToContainer, Bidirectional type Mount struct { // Path of the mount within the container. ContainerPath string // Path of the mount on the host. If the hostPath doesn't exist, then runtimes // should report error. If the hostpath is a symbolic link, runtimes should // follow the symlink and mount the real destination to container. HostPath string // If set, the mount is read-only. Readonly bool // If set, the mount needs SELinux relabeling. SelinuxRelabel bool // Requested propagation mode. Propagation MountPropagation } // PortMapping specifies a host port mapped into a container port. // In yaml this looks like: // // containerPort: 80 // hostPort: 8000 // listenAddress: 127.0.0.1 // protocol: TCP type PortMapping struct { // Port within the container. ContainerPort int32 // Port on the host. // // If unset, a random port will be selected. // // NOTE: if you set the special value of `-1` then the node backend // (docker, podman...) will be left to pick the port instead. // This is potentially useful for remote hosts, BUT it means when the container // is restarted it will be randomized. Leave this unset to allow kind to pick it. HostPort int32 // TODO: add protocol (tcp/udp) and port-ranges ListenAddress string // Protocol (TCP/UDP/SCTP) Protocol PortMappingProtocol } // MountPropagation represents an "enum" for mount propagation options, // see also Mount. type MountPropagation string const ( // MountPropagationNone specifies that no mount propagation // ("private" in Linux terminology). MountPropagationNone MountPropagation = "None" // MountPropagationHostToContainer specifies that mounts get propagated // from the host to the container ("rslave" in Linux). MountPropagationHostToContainer MountPropagation = "HostToContainer" // MountPropagationBidirectional specifies that mounts get propagated from // the host to the container and from the container to the host // ("rshared" in Linux). MountPropagationBidirectional MountPropagation = "Bidirectional" ) // PortMappingProtocol represents an "enum" for port mapping protocol options, // see also PortMapping. type PortMappingProtocol string const ( // PortMappingProtocolTCP specifies TCP protocol PortMappingProtocolTCP PortMappingProtocol = "TCP" // PortMappingProtocolUDP specifies UDP protocol PortMappingProtocolUDP PortMappingProtocol = "UDP" // PortMappingProtocolSCTP specifies SCTP protocol PortMappingProtocolSCTP PortMappingProtocol = "SCTP" ) kubernetes-sigs-kind-49aeee6/pkg/internal/apis/config/validate.go000066400000000000000000000216731524365506300252130ustar00rootroot00000000000000/* Copyright 2018 The Kubernetes Authors. 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" "net" "regexp" "strings" "sigs.k8s.io/kind/pkg/errors" "sigs.k8s.io/kind/pkg/internal/sets" ) // similar to valid docker container names, but since we will prefix // and suffix this name, we can relax it a little // see NewContext() for usage // https://godoc.org/github.com/docker/docker/daemon/names#pkg-constants var validNameRE = regexp.MustCompile(`^[a-z0-9.-]+$`) // Validate returns a ConfigErrors with an entry for each problem // with the config, or nil if there are none func (c *Cluster) Validate() error { errs := []error{} // validate the name if !validNameRE.MatchString(c.Name) { errs = append(errs, errors.Errorf("'%s' is not a valid cluster name, cluster names must match `%s`", c.Name, validNameRE.String())) } // the api server port only needs checking if we aren't picking a random one // at runtime if c.Networking.APIServerPort != 0 { // validate api server listen port if err := validatePort(c.Networking.APIServerPort); err != nil { errs = append(errs, errors.Wrapf(err, "invalid apiServerPort")) } } // ipFamily should be ipv4, ipv6, or dual if c.Networking.IPFamily != IPv4Family && c.Networking.IPFamily != IPv6Family && c.Networking.IPFamily != DualStackFamily { errs = append(errs, errors.Errorf("invalid ipFamily: %s", c.Networking.IPFamily)) } // podSubnet should be a valid CIDR if err := validateSubnets(c.Networking.PodSubnet, c.Networking.IPFamily); err != nil { errs = append(errs, errors.Errorf("invalid pod subnet %v", err)) } // serviceSubnet should be a valid CIDR if err := validateSubnets(c.Networking.ServiceSubnet, c.Networking.IPFamily); err != nil { errs = append(errs, errors.Errorf("invalid service subnet %v", err)) } // KubeProxyMode should be iptables or ipvs if c.Networking.KubeProxyMode != IPTablesProxyMode && c.Networking.KubeProxyMode != IPVSProxyMode && c.Networking.KubeProxyMode != NoneProxyMode && c.Networking.KubeProxyMode != NFTablesProxyMode { errs = append(errs, errors.Errorf("invalid kubeProxyMode: %s", c.Networking.KubeProxyMode)) } // validate nodes numByRole := make(map[NodeRole]int32) // All nodes in the config should be valid for i, n := range c.Nodes { // validate the node if err := n.Validate(); err != nil { errs = append(errs, errors.Errorf("invalid configuration for node %d: %v", i, err)) } // update role count if num, ok := numByRole[n.Role]; ok { numByRole[n.Role] = 1 + num } else { numByRole[n.Role] = 1 } } // there must be at least one control plane node numControlPlane, anyControlPlane := numByRole[ControlPlaneRole] if !anyControlPlane || numControlPlane < 1 { errs = append(errs, errors.Errorf("must have at least one %s node", string(ControlPlaneRole))) } if len(errs) > 0 { return errors.NewAggregate(errs) } return nil } // Validate returns a ConfigErrors with an entry for each problem // with the Node, or nil if there are none func (n *Node) Validate() error { errs := []error{} // validate node role should be one of the expected values switch n.Role { case ControlPlaneRole, WorkerRole: default: errs = append(errs, errors.Errorf("%q is not a valid node role", n.Role)) } // image should be defined if n.Image == "" { errs = append(errs, errors.New("image is a required field")) } // validate extra port forwards for _, mapping := range n.ExtraPortMappings { if err := validatePort(mapping.HostPort); err != nil { errs = append(errs, errors.Wrapf(err, "invalid hostPort")) } if err := validatePort(mapping.ContainerPort); err != nil { errs = append(errs, errors.Wrapf(err, "invalid containerPort")) } } if err := validatePortMappings(n.ExtraPortMappings); err != nil { errs = append(errs, errors.Wrapf(err, "invalid portMapping")) } if len(errs) > 0 { return errors.NewAggregate(errs) } return nil } func validatePortMappings(portMappings []PortMapping) error { errMsg := "port mapping with same listen address, port and protocol already configured" wildcardAddrIPv4 := net.ParseIP("0.0.0.0") wildcardAddrIPv6 := net.ParseIP("::") // bindMap has the following key-value structure // PORT/PROTOCOL: [ IP ] // { 80/TCP: [ 127.0.0.1, 192.168.2.3 ], 80/UDP: [ 0.0.0.0 ] } bindMap := make(map[string]sets.String) formatPortProtocol := func(port int32, protocol PortMappingProtocol) string { return fmt.Sprintf("%d/%s", port, protocol) } for _, portMapping := range portMappings { if portMapping.HostPort == -1 || portMapping.HostPort == 0 { // Port -1 and 0 cause a random port to be selected, thus duplicates are allowed continue } addr := net.ParseIP(portMapping.ListenAddress) if portMapping.ListenAddress == "" { addr = wildcardAddrIPv4 } if addr == nil { return fmt.Errorf("invalid listen address: %s", portMapping.ListenAddress) } addrString := addr.String() portProtocol := formatPortProtocol(portMapping.HostPort, portMapping.Protocol) possibleErr := fmt.Errorf("%s: %s:%s", errMsg, addrString, portProtocol) // in golang 0.0.0.0 and [::] are equivalent, convert [::] -> 0.0.0.0 // https://github.com/golang/go/issues/48723 if addr.Equal(wildcardAddrIPv6) { addr = wildcardAddrIPv4 addrString = addr.String() } if _, ok := bindMap[portProtocol]; ok { // wildcard address case: // return error if there already exists any listen address for same port and protocol if addr.Equal(wildcardAddrIPv4) { if bindMap[portProtocol].Len() > 0 { return possibleErr } } // direct duplicate & wild card present check: // return error if same combination of ip, port and protocol already exists in bindMap. // return error if wildcard address is already present for same port & protocol if bindMap[portProtocol].Has(addrString) || bindMap[portProtocol].Has(wildcardAddrIPv4.String()) { return possibleErr } } else { // initialize the set bindMap[portProtocol] = sets.NewString() } // add the entry to bindMap bindMap[portProtocol].Insert(addrString) } return nil } func validatePort(port int32) error { // NOTE: -1 is a special value for auto-selecting the port in the container // backend where possible as opposed to in kind itself. if port < -1 || port > 65535 { return errors.Errorf("invalid port number: %d", port) } return nil } func validateSubnets(subnetStr string, ipFamily ClusterIPFamily) error { allErrs := []error{} cidrsString := strings.Split(subnetStr, ",") subnets := make([]*net.IPNet, 0, len(cidrsString)) for _, cidrString := range cidrsString { _, cidr, err := net.ParseCIDR(cidrString) if err != nil { return fmt.Errorf("failed to parse cidr value:%q with error: %v", cidrString, err) } subnets = append(subnets, cidr) } dualstack := ipFamily == DualStackFamily switch { // if no subnets are defined case len(subnets) == 0: allErrs = append(allErrs, errors.New("no subnets defined")) // if DualStack only 2 CIDRs allowed case dualstack && len(subnets) > 2: allErrs = append(allErrs, errors.New("expected one (IPv4 or IPv6) CIDR or two CIDRs from each family for dual-stack networking")) // if DualStack and there are 2 CIDRs validate if there is at least one of each IP family case dualstack && len(subnets) == 2: areDualStackCIDRs, err := isDualStackCIDRs(subnets) if err != nil { allErrs = append(allErrs, err) } else if !areDualStackCIDRs { allErrs = append(allErrs, errors.New("expected one (IPv4 or IPv6) CIDR or two CIDRs from each family for dual-stack networking")) } // if not DualStack only one CIDR allowed case !dualstack && len(subnets) > 1: allErrs = append(allErrs, errors.New("only one CIDR allowed for single-stack networking")) case ipFamily == IPv4Family && subnets[0].IP.To4() == nil: allErrs = append(allErrs, errors.New("expected IPv4 CIDR for IPv4 family")) case ipFamily == IPv6Family && subnets[0].IP.To4() != nil: allErrs = append(allErrs, errors.New("expected IPv6 CIDR for IPv6 family")) } if len(allErrs) > 0 { return errors.NewAggregate(allErrs) } return nil } // isDualStackCIDRs returns if // - all are valid cidrs // - at least one cidr from each family (v4 or v6) func isDualStackCIDRs(cidrs []*net.IPNet) (bool, error) { v4Found := false v6Found := false for _, cidr := range cidrs { if cidr == nil { return false, fmt.Errorf("cidr %v is invalid", cidr) } if v4Found && v6Found { continue } if cidr.IP != nil && cidr.IP.To4() == nil { v6Found = true continue } v4Found = true } return v4Found && v6Found, nil } kubernetes-sigs-kind-49aeee6/pkg/internal/apis/config/validate_test.go000066400000000000000000000352131524365506300262450ustar00rootroot00000000000000/* Copyright 2018 The Kubernetes Authors. 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" "sigs.k8s.io/kind/pkg/internal/assert" "testing" "sigs.k8s.io/kind/pkg/errors" ) func TestClusterValidate(t *testing.T) { t.Parallel() cases := []struct { Name string Cluster Cluster ExpectErrors int }{ { Name: "Defaulted", Cluster: func() Cluster { c := Cluster{} SetDefaultsCluster(&c) return c }(), }, { Name: "multiple valid nodes", Cluster: func() Cluster { c := Cluster{} SetDefaultsCluster(&c) c.Nodes = append(c.Nodes, newDefaultedNode(WorkerRole), newDefaultedNode(WorkerRole)) return c }(), }, { Name: "default IPv6", Cluster: func() Cluster { c := Cluster{} c.Networking.IPFamily = IPv6Family SetDefaultsCluster(&c) return c }(), }, { Name: "bogus podSubnet", Cluster: func() Cluster { c := Cluster{} SetDefaultsCluster(&c) c.Networking.PodSubnet = "aa" return c }(), ExpectErrors: 1, }, { Name: "bogus serviceSubnet", Cluster: func() Cluster { c := Cluster{} SetDefaultsCluster(&c) c.Networking.ServiceSubnet = "aa" return c }(), ExpectErrors: 1, }, { Name: "bogus apiServerPort", Cluster: func() Cluster { c := Cluster{} SetDefaultsCluster(&c) c.Networking.APIServerPort = 9999999 return c }(), ExpectErrors: 1, }, { Name: "bogus kubeProxyMode", Cluster: func() Cluster { c := Cluster{} SetDefaultsCluster(&c) c.Networking.KubeProxyMode = "notiptables" return c }(), ExpectErrors: 1, }, { Name: "bogus ipFamily", Cluster: func() Cluster { c := Cluster{} SetDefaultsCluster(&c) c.Networking.IPFamily = "ds" return c }(), ExpectErrors: 1, }, { Name: "bogus serviceSubnet", Cluster: func() Cluster { c := Cluster{} SetDefaultsCluster(&c) c.Networking.ServiceSubnet = "aa" return c }(), ExpectErrors: 1, }, { Name: "invalid number of podSubnet", Cluster: func() Cluster { c := Cluster{} SetDefaultsCluster(&c) c.Networking.PodSubnet = "192.168.0.2/24,2.2.2.0/24" return c }(), ExpectErrors: 1, }, { Name: "valid dual stack podSubnet and serviceSubnet", Cluster: func() Cluster { c := Cluster{} SetDefaultsCluster(&c) c.Networking.PodSubnet = "192.168.0.2/24,fd00:1::/25" c.Networking.ServiceSubnet = "192.168.0.2/24,fd00:1::/25" c.Networking.IPFamily = DualStackFamily return c }(), ExpectErrors: 0, }, { Name: "invalid dual stack podSubnet and multiple serviceSubnet", Cluster: func() Cluster { c := Cluster{} SetDefaultsCluster(&c) c.Networking.PodSubnet = "192.168.0.2/24,fd00:1::/25" c.Networking.ServiceSubnet = "192.168.0.2/24,fd00:1::/25,10.0.0.0/16" c.Networking.IPFamily = DualStackFamily return c }(), ExpectErrors: 1, }, { Name: "valid dual stack podSubnet and single stack serviceSubnet", Cluster: func() Cluster { c := Cluster{} SetDefaultsCluster(&c) c.Networking.PodSubnet = "192.168.0.2/24,fd00:1::/25" c.Networking.ServiceSubnet = "192.168.0.2/24" c.Networking.IPFamily = DualStackFamily return c }(), ExpectErrors: 0, }, { Name: "valid dual stack serviceSubnet and single stack podSubnet", Cluster: func() Cluster { c := Cluster{} SetDefaultsCluster(&c) c.Networking.PodSubnet = "192.168.0.2/24" c.Networking.ServiceSubnet = "192.168.0.2/24,fd00:1::/25" c.Networking.IPFamily = DualStackFamily return c }(), ExpectErrors: 0, }, { Name: "bad dual stack podSubnet and serviceSubnet", Cluster: func() Cluster { c := Cluster{} SetDefaultsCluster(&c) c.Networking.PodSubnet = "192.168.0.2/24,2.2.2.0/25" c.Networking.ServiceSubnet = "192.168.0.2/24,2.2.2.0/25" c.Networking.IPFamily = DualStackFamily return c }(), ExpectErrors: 2, }, { Name: "ipv6 family and ipv4 podSubnet", Cluster: func() Cluster { c := Cluster{} SetDefaultsCluster(&c) c.Networking.PodSubnet = "192.168.0.2/24" c.Networking.ServiceSubnet = "192.168.0.2/24" c.Networking.IPFamily = IPv6Family return c }(), ExpectErrors: 2, }, { Name: "ipv4 family and ipv6 podSubnet", Cluster: func() Cluster { c := Cluster{} SetDefaultsCluster(&c) c.Networking.PodSubnet = "fd00:1::/25" c.Networking.ServiceSubnet = "fd00:1::/25" c.Networking.IPFamily = IPv4Family return c }(), ExpectErrors: 2, }, { // This test validates the empty podsubnet check. It should never happen // in real world since defaulting is happening before the validation step. Name: "no pod subnet", Cluster: func() Cluster { c := Cluster{} SetDefaultsCluster(&c) c.Networking.PodSubnet = "" return c }(), ExpectErrors: 1, }, { // This test validates the empty servicesubnet check. It should never happen // in real world since defaulting is happening before the validation step. Name: "no service subnet", Cluster: func() Cluster { c := Cluster{} SetDefaultsCluster(&c) c.Networking.ServiceSubnet = "" return c }(), ExpectErrors: 1, }, { Name: "missing control-plane", Cluster: func() Cluster { c := Cluster{} SetDefaultsCluster(&c) c.Nodes = []Node{} return c }(), ExpectErrors: 1, }, { Name: "bogus node", Cluster: func() Cluster { c := Cluster{} n, n2 := Node{}, Node{} n.Role = "bogus" c.Nodes = []Node{n, n2} SetDefaultsCluster(&c) return c }(), ExpectErrors: 1, }, } for _, tc := range cases { tc := tc //capture loop variable t.Run(tc.Name, func(t *testing.T) { t.Parallel() err := tc.Cluster.Validate() // the error can be: // - nil, in which case we should expect no errors or fail if err == nil { if tc.ExpectErrors != 0 { t.Error("received no errors but expected errors for case") } return } // get the list of errors errs := errors.Errors(err) if errs == nil { errs = []error{err} } // we expect a certain number of errors if len(errs) != tc.ExpectErrors { t.Errorf("expected %d errors but got len(%v) = %d", tc.ExpectErrors, errs, len(errs)) } }) } } func newDefaultedNode(role NodeRole) Node { n := Node{ Role: role, Image: "myImage:latest", } SetDefaultsNode(&n) return n } func TestNodeValidate(t *testing.T) { t.Parallel() cases := []struct { TestName string Node Node ExpectErrors int }{ { TestName: "Canonical node", Node: newDefaultedNode(ControlPlaneRole), ExpectErrors: 0, }, { TestName: "Canonical node 2", Node: newDefaultedNode(WorkerRole), ExpectErrors: 0, }, { TestName: "Empty image field", Node: func() Node { cfg := newDefaultedNode(ControlPlaneRole) cfg.Image = "" return cfg }(), ExpectErrors: 1, }, { TestName: "Empty role field", Node: func() Node { cfg := newDefaultedNode(ControlPlaneRole) cfg.Role = "" return cfg }(), ExpectErrors: 1, }, { TestName: "Unknown role field", Node: func() Node { cfg := newDefaultedNode(ControlPlaneRole) cfg.Role = "ssss" return cfg }(), ExpectErrors: 1, }, { TestName: "Invalid ContainerPort", Node: func() Node { cfg := newDefaultedNode(ControlPlaneRole) cfg.ExtraPortMappings = []PortMapping{ { ContainerPort: 999999999, HostPort: 8080, }, } return cfg }(), ExpectErrors: 1, }, { TestName: "Invalid HostPort", Node: func() Node { cfg := newDefaultedNode(ControlPlaneRole) cfg.ExtraPortMappings = []PortMapping{ { ContainerPort: 8080, HostPort: 999999999, }, } return cfg }(), ExpectErrors: 1, }, { TestName: "Multiple random HostPort", Node: func() Node { cfg := newDefaultedNode(ControlPlaneRole) cfg.ExtraPortMappings = []PortMapping{ { ContainerPort: 80, }, { ContainerPort: 443, }, } return cfg }(), ExpectErrors: 0, }, { TestName: "Multiple random -1 HostPort", Node: func() Node { cfg := newDefaultedNode(ControlPlaneRole) cfg.ExtraPortMappings = []PortMapping{ { ContainerPort: 80, HostPort: -1, }, { ContainerPort: 443, HostPort: -1, }, } return cfg }(), ExpectErrors: 0, }, } for _, tc := range cases { tc := tc //capture loop variable t.Run(tc.TestName, func(t *testing.T) { t.Parallel() err := tc.Node.Validate() // the error can be: // - nil, in which case we should expect no errors or fail if err == nil { if tc.ExpectErrors != 0 { t.Error("received no errors but expected errors for case") } return } // get the list of errors errs := errors.Errors(err) if errs == nil { errs = []error{err} } // we expect a certain number of errors if len(errs) != tc.ExpectErrors { t.Errorf("expected %d errors but got len(%v) = %d", tc.ExpectErrors, errs, len(errs)) } }) } } func TestPortValidate(t *testing.T) { cases := []struct { TestName string Port int32 ExpectError string }{ { TestName: "-1 port", Port: -1, ExpectError: "", }, { TestName: "valid port", Port: 10, ExpectError: "", }, { TestName: "negative port", Port: -2, ExpectError: "invalid port number: -2", }, { TestName: "extra port", Port: 65536, ExpectError: "invalid port number: 65536", }, } for _, tc := range cases { tc := tc //capture loop variable t.Run(tc.TestName, func(t *testing.T) { t.Parallel() err := validatePort(tc.Port) // the error can be: // - nil, in which case we should expect no errors or fail if err == nil && len(tc.ExpectError) > 0 { t.Errorf("Test failed, unexpected error: %s", tc.ExpectError) } if err != nil && err.Error() != tc.ExpectError { t.Errorf("Test failed, error: %s expected error: %s", err, tc.ExpectError) } }) } } func TestValidatePortMappings(t *testing.T) { newPortMapping := func(addr string, port int, protocol string) PortMapping { return PortMapping{ HostPort: int32(port), ListenAddress: addr, Protocol: PortMappingProtocol(protocol), } } errMsg := "port mapping with same listen address, port and protocol already configured" cases := []struct { testName string portMappings []PortMapping expectErr string }{ { testName: "unique port mappings ipv4", portMappings: []PortMapping{ newPortMapping("127.0.0.1", 80, "UDP"), newPortMapping("127.0.0.1", 80, "TCP"), newPortMapping("0.0.0.0", 3000, "UDP"), newPortMapping("0.0.0.0", 5000, "TCP"), }, expectErr: "", }, { testName: "unique port mappings ipv6", portMappings: []PortMapping{ newPortMapping("::1", 80, "UDP"), newPortMapping("::1", 80, "TCP"), newPortMapping("1e3d:6e85:424d:a011:a72e:9780:5f6f:a6fc", 3000, "UDP"), newPortMapping("6516:944d:e070:a1d1:2e91:8437:a6b3:edf9", 5000, "TCP"), }, expectErr: "", }, { testName: "exact duplicate port mappings ipv4", portMappings: []PortMapping{ newPortMapping("127.0.0.1", 80, "TCP"), newPortMapping("127.0.0.1", 80, "UDP"), newPortMapping("127.0.0.1", 80, "TCP"), }, // error expected: exact duplicate expectErr: fmt.Sprintf("%s: 127.0.0.1:80/TCP", errMsg), }, { testName: "exact duplicate port mappings ipv6", portMappings: []PortMapping{ newPortMapping("::1", 80, "TCP"), newPortMapping("::1", 80, "UDP"), newPortMapping("::1", 80, "TCP"), }, // error expected: exact duplicate expectErr: fmt.Sprintf("%s: [::1]:80/TCP", errMsg), }, { testName: "wildcard ipv4 & ipv6", portMappings: []PortMapping{ newPortMapping("127.0.0.1", 80, "TCP"), newPortMapping("0.0.0.0", 80, "UDP"), newPortMapping("::1", 80, "TCP"), newPortMapping("::", 80, "UDP"), }, // error expected: 0.0.0.0 & [::] are same in golang // https://github.com/golang/go/issues/48723 expectErr: fmt.Sprintf("%s: [::]:80/UDP", errMsg), }, { testName: "subset already configured ipv4", portMappings: []PortMapping{ newPortMapping("127.0.0.1", 80, "TCP"), newPortMapping("0.0.0.0", 80, "TCP"), }, // error expected: subset of 0.0.0.0 -> 127.0.0.1 is already defined for same port and protocol expectErr: fmt.Sprintf("%s: 0.0.0.0:80/TCP", errMsg), }, { testName: "subset already configured ipv6", portMappings: []PortMapping{ newPortMapping("::1", 80, "TCP"), newPortMapping("::", 80, "TCP"), }, // error expected: subset of :: -> ::1 is already defined for same port and protocol expectErr: fmt.Sprintf("%s: [::]:80/TCP", errMsg), }, { testName: "port mapping already configured via wildcard ipv4", portMappings: []PortMapping{ newPortMapping("0.0.0.0", 80, "TCP"), newPortMapping("127.0.0.1", 80, "TCP"), }, // error expected: port mapping is already defined for wildcard interface - 0.0.0.0 expectErr: fmt.Sprintf("%s: 127.0.0.1:80/TCP", errMsg), }, { testName: "port mapping already configured via wildcard ipv6", portMappings: []PortMapping{ newPortMapping("::", 80, "SCTP"), newPortMapping("::1", 80, "SCTP"), }, // error expected: port mapping is already defined for wildcard interface - :: expectErr: fmt.Sprintf("%s: [::1]:80/SCTP", errMsg), }, { testName: "empty listen address defaults to wildcard", portMappings: []PortMapping{ newPortMapping("", 80, "TCP"), }, expectErr: "", }, { testName: "empty listen address conflicts as wildcard", portMappings: []PortMapping{ newPortMapping("", 80, "TCP"), newPortMapping("127.0.0.1", 80, "TCP"), }, expectErr: fmt.Sprintf("%s: 127.0.0.1:80/TCP", errMsg), }, { testName: "invalid listen address", portMappings: []PortMapping{ newPortMapping("not-an-ip", 80, "TCP"), }, expectErr: "invalid listen address: not-an-ip", }, } for _, tc := range cases { tc := tc //capture loop variable t.Run(tc.testName, func(t *testing.T) { t.Parallel() err := validatePortMappings(tc.portMappings) assert.ExpectError(t, len(tc.expectErr) > 0, err) }) } } kubernetes-sigs-kind-49aeee6/pkg/internal/apis/config/zz_generated.deepcopy.go000066400000000000000000000125411524365506300277040ustar00rootroot00000000000000//go:build !ignore_autogenerated // +build !ignore_autogenerated /* Copyright The Kubernetes Authors. 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. */ // Code generated by deepcopy-gen. DO NOT EDIT. package config // DeepCopyInto is an autogenerated deepcopy function, copying the receiver, writing into out. in must be non-nil. func (in *Cluster) DeepCopyInto(out *Cluster) { *out = *in if in.Nodes != nil { in, out := &in.Nodes, &out.Nodes *out = make([]Node, len(*in)) for i := range *in { (*in)[i].DeepCopyInto(&(*out)[i]) } } in.Networking.DeepCopyInto(&out.Networking) if in.FeatureGates != nil { in, out := &in.FeatureGates, &out.FeatureGates *out = make(map[string]bool, len(*in)) for key, val := range *in { (*out)[key] = val } } if in.RuntimeConfig != nil { in, out := &in.RuntimeConfig, &out.RuntimeConfig *out = make(map[string]string, len(*in)) for key, val := range *in { (*out)[key] = val } } if in.KubeadmConfigPatches != nil { in, out := &in.KubeadmConfigPatches, &out.KubeadmConfigPatches *out = make([]string, len(*in)) copy(*out, *in) } if in.KubeadmConfigPatchesJSON6902 != nil { in, out := &in.KubeadmConfigPatchesJSON6902, &out.KubeadmConfigPatchesJSON6902 *out = make([]PatchJSON6902, len(*in)) copy(*out, *in) } if in.ContainerdConfigPatches != nil { in, out := &in.ContainerdConfigPatches, &out.ContainerdConfigPatches *out = make([]string, len(*in)) copy(*out, *in) } if in.ContainerdConfigPatchesJSON6902 != nil { in, out := &in.ContainerdConfigPatchesJSON6902, &out.ContainerdConfigPatchesJSON6902 *out = make([]string, len(*in)) copy(*out, *in) } return } // DeepCopy is an autogenerated deepcopy function, copying the receiver, creating a new Cluster. func (in *Cluster) DeepCopy() *Cluster { if in == nil { return nil } out := new(Cluster) in.DeepCopyInto(out) return out } // DeepCopyInto is an autogenerated deepcopy function, copying the receiver, writing into out. in must be non-nil. func (in *Mount) DeepCopyInto(out *Mount) { *out = *in return } // DeepCopy is an autogenerated deepcopy function, copying the receiver, creating a new Mount. func (in *Mount) DeepCopy() *Mount { if in == nil { return nil } out := new(Mount) in.DeepCopyInto(out) return out } // DeepCopyInto is an autogenerated deepcopy function, copying the receiver, writing into out. in must be non-nil. func (in *Networking) DeepCopyInto(out *Networking) { *out = *in if in.DNSSearch != nil { in, out := &in.DNSSearch, &out.DNSSearch *out = new([]string) if **in != nil { in, out := *in, *out *out = make([]string, len(*in)) copy(*out, *in) } } return } // DeepCopy is an autogenerated deepcopy function, copying the receiver, creating a new Networking. func (in *Networking) DeepCopy() *Networking { if in == nil { return nil } out := new(Networking) in.DeepCopyInto(out) return out } // DeepCopyInto is an autogenerated deepcopy function, copying the receiver, writing into out. in must be non-nil. func (in *Node) DeepCopyInto(out *Node) { *out = *in if in.Labels != nil { in, out := &in.Labels, &out.Labels *out = make(map[string]string, len(*in)) for key, val := range *in { (*out)[key] = val } } if in.ExtraMounts != nil { in, out := &in.ExtraMounts, &out.ExtraMounts *out = make([]Mount, len(*in)) copy(*out, *in) } if in.ExtraPortMappings != nil { in, out := &in.ExtraPortMappings, &out.ExtraPortMappings *out = make([]PortMapping, len(*in)) copy(*out, *in) } if in.KubeadmConfigPatches != nil { in, out := &in.KubeadmConfigPatches, &out.KubeadmConfigPatches *out = make([]string, len(*in)) copy(*out, *in) } if in.KubeadmConfigPatchesJSON6902 != nil { in, out := &in.KubeadmConfigPatchesJSON6902, &out.KubeadmConfigPatchesJSON6902 *out = make([]PatchJSON6902, len(*in)) copy(*out, *in) } return } // DeepCopy is an autogenerated deepcopy function, copying the receiver, creating a new Node. func (in *Node) DeepCopy() *Node { if in == nil { return nil } out := new(Node) in.DeepCopyInto(out) return out } // DeepCopyInto is an autogenerated deepcopy function, copying the receiver, writing into out. in must be non-nil. func (in *PatchJSON6902) DeepCopyInto(out *PatchJSON6902) { *out = *in return } // DeepCopy is an autogenerated deepcopy function, copying the receiver, creating a new PatchJSON6902. func (in *PatchJSON6902) DeepCopy() *PatchJSON6902 { if in == nil { return nil } out := new(PatchJSON6902) in.DeepCopyInto(out) return out } // DeepCopyInto is an autogenerated deepcopy function, copying the receiver, writing into out. in must be non-nil. func (in *PortMapping) DeepCopyInto(out *PortMapping) { *out = *in return } // DeepCopy is an autogenerated deepcopy function, copying the receiver, creating a new PortMapping. func (in *PortMapping) DeepCopy() *PortMapping { if in == nil { return nil } out := new(PortMapping) in.DeepCopyInto(out) return out } kubernetes-sigs-kind-49aeee6/pkg/internal/assert/000077500000000000000000000000001524365506300221625ustar00rootroot00000000000000kubernetes-sigs-kind-49aeee6/pkg/internal/assert/assert.go000066400000000000000000000037521524365506300240210ustar00rootroot00000000000000/* Copyright 2019 The Kubernetes Authors. 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 assert implements helper functions for test assertions. package assert import "reflect" // *testing.T methods used by assert type testingDotT interface { Errorf(format string, args ...interface{}) } // ExpectError will call t.Errorf if expectError != (err == nil) // t should be a *testing.T normally func ExpectError(t testingDotT, expectError bool, err error) { if err != nil && !expectError { t.Errorf("Did not expect error: %v", err) } if err == nil && expectError { t.Errorf("Expected error but got none") } } // BoolEqual will call t.Errorf if expected != result // t should be a *testing.T normally func BoolEqual(t testingDotT, expected, result bool) { if expected != result { t.Errorf("Result did not match!") t.Errorf("Expected: %v", expected) t.Errorf("But got: %v", result) } } // StringEqual will call t.Errorf if expected != result // t should be a *testing.T normally func StringEqual(t testingDotT, expected, result string) { if expected != result { t.Errorf("Strings did not match!") t.Errorf("Expected: %q", expected) t.Errorf("But got: %q", result) } } // DeepEqual will call t.Errorf if !reflect.DeepEqual(expected, result) // t should be a *testing.T normally func DeepEqual(t testingDotT, expected, result interface{}) { if !reflect.DeepEqual(expected, result) { t.Errorf("Result did not DeepEqual Expected!") t.Errorf("Expected: %+v", expected) t.Errorf("But got: %+v", result) } } kubernetes-sigs-kind-49aeee6/pkg/internal/assert/assert_test.go000066400000000000000000000055461524365506300250630ustar00rootroot00000000000000/* Copyright 2019 The Kubernetes Authors. 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 assert import ( "fmt" "testing" ) // fakeT is a fake testing.T that tracks calls to Errorf type fakeT int func (t *fakeT) Errorf(format string, args ...interface{}) { *t++ } func TestExpectError(t *testing.T) { t.Parallel() t.Run("expect error, nil error", func(t *testing.T) { t.Parallel() var f fakeT ExpectError(&f, true, nil) if int(f) == 0 { t.Fatalf("Expected t.Errorf to be called but it was not") } }) t.Run("expect error, have error", func(t *testing.T) { t.Parallel() var f fakeT ExpectError(&f, true, fmt.Errorf("heh")) if int(f) != 0 { t.Fatalf("Expected t.Errorf not to be called but it was") } }) t.Run("do not expect error, nil error", func(t *testing.T) { t.Parallel() var f fakeT ExpectError(&f, false, nil) if int(f) != 0 { t.Fatalf("Expected t.Errorf not to be called but it was") } }) t.Run("do not expect error, have error", func(t *testing.T) { t.Parallel() var f fakeT ExpectError(&f, false, fmt.Errorf("heh")) if int(f) == 0 { t.Fatalf("Expected t.Errorf to be called but it was not") } }) } func TestBoolEqual(t *testing.T) { t.Parallel() t.Run("not equal", func(t *testing.T) { t.Parallel() var f fakeT BoolEqual(&f, true, false) if int(f) == 0 { t.Fatalf("Expected t.Errorf to be called but it was not") } }) t.Run("equal", func(t *testing.T) { t.Parallel() var f fakeT BoolEqual(&f, true, true) if int(f) != 0 { t.Fatalf("Expected t.Errorf not to be called but it was") } }) } func TestStringEqual(t *testing.T) { t.Parallel() t.Run("not equal", func(t *testing.T) { t.Parallel() var f fakeT StringEqual(&f, "a", "b") if int(f) == 0 { t.Fatalf("Expected t.Errorf to be called but it was not") } }) t.Run("equal", func(t *testing.T) { t.Parallel() var f fakeT StringEqual(&f, "a", "a") if int(f) != 0 { t.Fatalf("Expected t.Errorf not to be called but it was") } }) } func TestDeepEqual(t *testing.T) { t.Parallel() t.Run("not equal", func(t *testing.T) { t.Parallel() var f fakeT DeepEqual(&f, "a", "b") if int(f) == 0 { t.Fatalf("Expected t.Errorf to be called but it was not") } }) t.Run("equal", func(t *testing.T) { t.Parallel() var f fakeT DeepEqual(&f, f, f) if int(f) != 0 { t.Fatalf("Expected t.Errorf not to be called but it was") } }) } kubernetes-sigs-kind-49aeee6/pkg/internal/cli/000077500000000000000000000000001524365506300214305ustar00rootroot00000000000000kubernetes-sigs-kind-49aeee6/pkg/internal/cli/logger.go000066400000000000000000000142341524365506300232420ustar00rootroot00000000000000/* Copyright 2019 The Kubernetes Authors. 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 cli contains various types, variables, and functions for // cli functionality. package cli import ( "bytes" "fmt" "io" "runtime" "strings" "sync" "sync/atomic" "sigs.k8s.io/kind/pkg/log" "sigs.k8s.io/kind/pkg/internal/env" ) // Logger is the kind cli's log.Logger implementation type Logger struct { writer io.Writer writerMu sync.Mutex verbosity log.Level bufferPool *bufferPool // kind special additions isSmartWriter bool } var _ log.Logger = &Logger{} // NewLogger returns a new Logger with the given verbosity func NewLogger(writer io.Writer, verbosity log.Level) *Logger { l := &Logger{ verbosity: verbosity, bufferPool: newBufferPool(), } l.SetWriter(writer) return l } // SetWriter sets the output writer func (l *Logger) SetWriter(w io.Writer) { l.writerMu.Lock() defer l.writerMu.Unlock() l.writer = w _, isSpinner := w.(*Spinner) l.isSmartWriter = isSpinner || env.IsSmartTerminal(w) } // ColorEnabled returns true if the caller is OK to write colored output func (l *Logger) ColorEnabled() bool { l.writerMu.Lock() defer l.writerMu.Unlock() return l.isSmartWriter } func (l *Logger) getVerbosity() log.Level { return log.Level(atomic.LoadInt32((*int32)(&l.verbosity))) } // SetVerbosity sets the loggers verbosity func (l *Logger) SetVerbosity(verbosity log.Level) { atomic.StoreInt32((*int32)(&l.verbosity), int32(verbosity)) } // synchronized write to the inner writer func (l *Logger) write(p []byte) (n int, err error) { l.writerMu.Lock() defer l.writerMu.Unlock() return l.writer.Write(p) } // writeBuffer writes buf with write, ensuring there is a trailing newline func (l *Logger) writeBuffer(buf *bytes.Buffer) { // ensure trailing newline if buf.Len() == 0 || buf.Bytes()[buf.Len()-1] != '\n' { buf.WriteByte('\n') } // TODO: should we handle this somehow?? // Who logs for the logger? 🤔 _, _ = l.write(buf.Bytes()) } // print writes a simple string to the log writer func (l *Logger) print(message string) { buf := bytes.NewBufferString(message) l.writeBuffer(buf) } // printf is roughly fmt.Fprintf against the log writer func (l *Logger) printf(format string, args ...interface{}) { buf := l.bufferPool.Get() fmt.Fprintf(buf, format, args...) l.writeBuffer(buf) l.bufferPool.Put(buf) } // addDebugHeader inserts the debug line header to buf func addDebugHeader(buf *bytes.Buffer) { _, file, line, ok := runtime.Caller(3) // lifted from klog if !ok { file = "???" line = 1 } else { if slash := strings.LastIndex(file, "/"); slash >= 0 { path := file file = path[slash+1:] if dirsep := strings.LastIndex(path[:slash], "/"); dirsep >= 0 { file = path[dirsep+1:] } } } buf.Grow(len(file) + 11) // we know at least this many bytes are needed buf.WriteString("DEBUG: ") buf.WriteString(file) buf.WriteByte(':') fmt.Fprintf(buf, "%d", line) buf.WriteByte(']') buf.WriteByte(' ') } // debug is like print but with a debug log header func (l *Logger) debug(message string) { buf := l.bufferPool.Get() addDebugHeader(buf) buf.WriteString(message) l.writeBuffer(buf) l.bufferPool.Put(buf) } // debugf is like printf but with a debug log header func (l *Logger) debugf(format string, args ...interface{}) { buf := l.bufferPool.Get() addDebugHeader(buf) fmt.Fprintf(buf, format, args...) l.writeBuffer(buf) l.bufferPool.Put(buf) } // Warn is part of the log.Logger interface func (l *Logger) Warn(message string) { l.print(message) } // Warnf is part of the log.Logger interface func (l *Logger) Warnf(format string, args ...interface{}) { l.printf(format, args...) } // Error is part of the log.Logger interface func (l *Logger) Error(message string) { l.print(message) } // Errorf is part of the log.Logger interface func (l *Logger) Errorf(format string, args ...interface{}) { l.printf(format, args...) } // V is part of the log.Logger interface func (l *Logger) V(level log.Level) log.InfoLogger { return infoLogger{ logger: l, level: level, enabled: level <= l.getVerbosity(), } } // infoLogger implements log.InfoLogger for Logger type infoLogger struct { logger *Logger level log.Level enabled bool } // Enabled is part of the log.InfoLogger interface func (i infoLogger) Enabled() bool { return i.enabled } // Info is part of the log.InfoLogger interface func (i infoLogger) Info(message string) { if !i.enabled { return } // for > 0, we are writing debug messages, include extra info if i.level > 0 { i.logger.debug(message) } else { i.logger.print(message) } } // Infof is part of the log.InfoLogger interface func (i infoLogger) Infof(format string, args ...interface{}) { if !i.enabled { return } // for > 0, we are writing debug messages, include extra info if i.level > 0 { i.logger.debugf(format, args...) } else { i.logger.printf(format, args...) } } // bufferPool is a type safe sync.Pool of *byte.Buffer, guaranteed to be Reset type bufferPool struct { sync.Pool } // newBufferPool returns a new bufferPool func newBufferPool() *bufferPool { return &bufferPool{ sync.Pool{ New: func() interface{} { // The Pool's New function should generally only return pointer // types, since a pointer can be put into the return interface // value without an allocation: return new(bytes.Buffer) }, }, } } // Get obtains a buffer from the pool func (b *bufferPool) Get() *bytes.Buffer { return b.Pool.Get().(*bytes.Buffer) } // Put returns a buffer to the pool, resetting it first func (b *bufferPool) Put(x *bytes.Buffer) { // only store small buffers to avoid pointless allocation // avoid keeping arbitrarily large buffers if x.Len() > 256 { return } x.Reset() b.Pool.Put(x) } kubernetes-sigs-kind-49aeee6/pkg/internal/cli/override.go000066400000000000000000000017101524365506300235750ustar00rootroot00000000000000/* Copyright The Kubernetes Authors. 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 cli import ( "os" "github.com/spf13/pflag" ) // OverrideDefaultName conditionally allows overriding the default cluster name // by setting the KIND_CLUSTER_NAME environment variable // only if --name wasn't set explicitly func OverrideDefaultName(fs *pflag.FlagSet) { if !fs.Changed("name") { if name := os.Getenv("KIND_CLUSTER_NAME"); name != "" { _ = fs.Set("name", name) } } } kubernetes-sigs-kind-49aeee6/pkg/internal/cli/spinner.go000066400000000000000000000103131524365506300234330ustar00rootroot00000000000000/* Copyright 2018 The Kubernetes Authors. 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 cli import ( "fmt" "io" "runtime" "sync" "time" ) // custom CLI loading spinner for kind var spinnerFrames = []string{ "⠈�", "⠈⠑", "⠈⠱", "⠈⡱", "⢀⡱", "⢄⡱", "⢄⡱", "⢆⡱", "⢎⡱", "⢎⡰", "⢎⡠", "⢎⡀", "⢎�", "⠎�", "⠊�", } // Spinner is a simple and efficient CLI loading spinner used by kind // It is simplistic and assumes that the line length will not change. type Spinner struct { stop chan struct{} // signals writer goroutine to stop from Stop() stopped chan struct{} // signals Stop() that the writer goroutine stopped mu *sync.Mutex // protects the mutable bits // below are protected by mu running bool writer io.Writer ticker *time.Ticker // signals that it is time to write a frame prefix string suffix string // format string used to write a frame, depends on the host OS / terminal frameFormat string } // spinner implements writer var _ io.Writer = &Spinner{} // NewSpinner initializes and returns a new Spinner that will write to w // NOTE: w should be os.Stderr or similar, and it should be a Terminal func NewSpinner(w io.Writer) *Spinner { frameFormat := "\x1b[?7l\r%s%s%s\x1b[?7h" // toggling wrapping seems to behave poorly on windows // in general only the simplest escape codes behave well at the moment, // and only in newer shells if runtime.GOOS == "windows" { frameFormat = "\r%s%s%s" } return &Spinner{ stop: make(chan struct{}, 1), stopped: make(chan struct{}), mu: &sync.Mutex{}, writer: w, frameFormat: frameFormat, } } // SetPrefix sets the prefix to print before the spinner func (s *Spinner) SetPrefix(prefix string) { s.mu.Lock() defer s.mu.Unlock() s.prefix = prefix } // SetSuffix sets the suffix to print after the spinner func (s *Spinner) SetSuffix(suffix string) { s.mu.Lock() defer s.mu.Unlock() s.suffix = suffix } // Start starts the spinner running func (s *Spinner) Start() { s.mu.Lock() defer s.mu.Unlock() // don't start if we've already started if s.running { return } // flag that we've started s.running = true // start / create a frame ticker s.ticker = time.NewTicker(time.Millisecond * 100) // spin in the background go func() { // write frames forever (until signaled to stop) for { for _, frame := range spinnerFrames { select { // prefer stopping, select this signal first case <-s.stop: func() { s.mu.Lock() defer s.mu.Unlock() s.ticker.Stop() // free up the ticker s.running = false // mark as stopped (it's fine to start now) s.stopped <- struct{}{} // tell Stop() that we're done }() return // ... and stop // otherwise continue and write one frame case <-s.ticker.C: func() { s.mu.Lock() defer s.mu.Unlock() fmt.Fprintf(s.writer, s.frameFormat, s.prefix, frame, s.suffix) }() } } } }() } // Stop signals the spinner to stop func (s *Spinner) Stop() { s.mu.Lock() if !s.running { s.mu.Unlock() return } // try to stop, do nothing if channel is full (IE already busy stopping) s.stop <- struct{}{} s.mu.Unlock() // wait for stop to be finished <-s.stopped } // Write implements io.Writer, interrupting the spinner and writing to // the inner writer func (s *Spinner) Write(p []byte) (n int, err error) { // lock first, so nothing else can start writing until we are done s.mu.Lock() defer s.mu.Unlock() // it the spinner is not running, just write directly if !s.running { return s.writer.Write(p) } // otherwise: we will rewrite the line first if _, err := s.writer.Write([]byte("\r")); err != nil { return 0, err } return s.writer.Write(p) } kubernetes-sigs-kind-49aeee6/pkg/internal/cli/status.go000066400000000000000000000044541524365506300233110ustar00rootroot00000000000000/* Copyright 2018 The Kubernetes Authors. 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 cli import ( "fmt" "sigs.k8s.io/kind/pkg/log" ) // Status is used to track ongoing status in a CLI, with a nice loading spinner // when attached to a terminal type Status struct { spinner *Spinner status string logger log.Logger // for controlling coloring etc successFormat string failureFormat string } // StatusForLogger returns a new status object for the logger l, // if l is the kind cli logger and the writer is a Spinner, that spinner // will be used for the status func StatusForLogger(l log.Logger) *Status { s := &Status{ logger: l, successFormat: " ✓ %s\n", failureFormat: " ✗ %s\n", } // if we're using the CLI logger, check for if it has a spinner setup // and wire the status to that if v, ok := l.(*Logger); ok { if v2, ok := v.writer.(*Spinner); ok { s.spinner = v2 // use colored success / failure messages s.successFormat = " \x1b[32m✓\x1b[0m %s\n" s.failureFormat = " \x1b[31m✗\x1b[0m %s\n" } } return s } // Start starts a new phase of the status, if attached to a terminal // there will be a loading spinner with this status func (s *Status) Start(status string) { s.End(true) // set new status s.status = status if s.spinner != nil { s.spinner.SetSuffix(fmt.Sprintf(" %s ", s.status)) s.spinner.Start() } else { s.logger.V(0).Infof(" • %s ...\n", s.status) } } // End completes the current status, ending any previous spinning and // marking the status as success or failure func (s *Status) End(success bool) { if s.status == "" { return } if s.spinner != nil { s.spinner.Stop() fmt.Fprint(s.spinner.writer, "\r") } if success { s.logger.V(0).Infof(s.successFormat, s.status) } else { s.logger.V(0).Infof(s.failureFormat, s.status) } s.status = "" } kubernetes-sigs-kind-49aeee6/pkg/internal/env/000077500000000000000000000000001524365506300214515ustar00rootroot00000000000000kubernetes-sigs-kind-49aeee6/pkg/internal/env/term.go000066400000000000000000000057151524365506300227570ustar00rootroot00000000000000/* Copyright 2019 The Kubernetes Authors. 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 env contains CLI helpers for discovering terminal environment // information. package env import ( "io" "os" "runtime" isatty "github.com/mattn/go-isatty" ) // a fake TTY type for testing that can only be implemented within this package type isTestFakeTTY interface { isTestFakeTTY() } // IsTerminal returns true if the writer w is a terminal func IsTerminal(w io.Writer) bool { // check for internal fake type we can use for testing. if _, ok := (w).(isTestFakeTTY); ok { return true } // check for real terminals if v, ok := (w).(*os.File); ok { return isatty.IsTerminal(v.Fd()) } return false } // IsSmartTerminal returns true if the writer w is a terminal AND // we think that the terminal is smart enough to use VT escape codes etc. func IsSmartTerminal(w io.Writer) bool { return isSmartTerminal(w, runtime.GOOS, os.LookupEnv) } func isSmartTerminal(w io.Writer, GOOS string, lookupEnv func(string) (string, bool)) bool { // Not smart if it's not a tty if !IsTerminal(w) { return false } // getenv helper for when we only care about the value getenv := func(e string) string { v, _ := lookupEnv(e) return v } // Explicit request for no ANSI escape codes // https://no-color.org/ if _, set := lookupEnv("NO_COLOR"); set { return false } // Explicitly dumb terminals are not smart // https://en.wikipedia.org/wiki/Computer_terminal#Dumb_terminals term := getenv("TERM") if term == "dumb" { return false } // st has some bug 🤷�♂� // https://github.com/kubernetes-sigs/kind/issues/1892 if term == "st-256color" { return false } // On Windows WT_SESSION is set by the modern terminal component. // Older terminals have poor support for UTF-8, VT escape codes, etc. if GOOS == "windows" && getenv("WT_SESSION") == "" { return false } /* CI Systems with bad Fake TTYs */ // Travis CI // https://github.com/kubernetes-sigs/kind/issues/1478 // We can detect it with documented magical environment variables // https://docs.travis-ci.com/user/environment-variables/#default-environment-variables if getenv("HAS_JOSH_K_SEAL_OF_APPROVAL") == "true" && getenv("TRAVIS") == "true" { return false } // OK, we'll assume it's smart now, given no evidence otherwise. return true } // trivial fake TTY writer for testing type testFakeTTY struct{} func (t *testFakeTTY) Write(p []byte) (int, error) { return len(p), nil } func (t *testFakeTTY) isTestFakeTTY() {} kubernetes-sigs-kind-49aeee6/pkg/internal/env/term_test.go000066400000000000000000000062271524365506300240150ustar00rootroot00000000000000/* Copyright 2019 The Kubernetes Authors. 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 env import ( "bytes" "io" "os" "testing" "sigs.k8s.io/kind/pkg/internal/assert" ) func TestIsTerminal(t *testing.T) { // test trivial nil case if IsTerminal(nil) { t.Fatalf("IsTerminal should be false for nil Writer") } // test something that isn't even a file var buff bytes.Buffer if IsTerminal(&buff) { t.Fatalf("IsTerminal should be false for bytes.Buffer") } // test a file f, err := os.CreateTemp("", "kind-isterminal") if err != nil { t.Fatalf("Failed to create tempfile %v", err) } if IsTerminal(f) { t.Fatalf("IsTerminal should be false for nil Writer") } // TODO: testing an actual PTY would be somewhat tricky to do cleanly // but we should maybe do this in the future. // At least we know this doesn't trigger on things that are obviously not // terminals if !IsTerminal(&testFakeTTY{}) { t.Fatalf("IsTerminal should be true for testFakeTTY") } } func TestIsSmartTerminal(t *testing.T) { cases := []struct { Name string FakeEnv map[string]string GOOS string Writer io.Writer IsSmart bool }{ { Name: "tty, no env", FakeEnv: map[string]string{}, GOOS: "linux", IsSmart: true, Writer: &testFakeTTY{}, }, { Name: "nil writer, no env", FakeEnv: map[string]string{}, GOOS: "linux", IsSmart: false, }, { Name: "tty, windows, no env", FakeEnv: map[string]string{}, GOOS: "windows", IsSmart: false, Writer: &testFakeTTY{}, }, { Name: "tty, windows, modern terminal env", FakeEnv: map[string]string{ "WT_SESSION": "baz", }, GOOS: "windows", IsSmart: true, Writer: &testFakeTTY{}, }, { Name: "tty, TERM=dumb", FakeEnv: map[string]string{ "TERM": "dumb", }, GOOS: "linux", IsSmart: false, Writer: &testFakeTTY{}, }, { Name: "tty, NO_COLOR=", FakeEnv: map[string]string{ "NO_COLOR": "", }, GOOS: "linux", IsSmart: false, Writer: &testFakeTTY{}, }, { Name: "tty, Travis CI", FakeEnv: map[string]string{ "TRAVIS": "true", "HAS_JOSH_K_SEAL_OF_APPROVAL": "true", }, GOOS: "linux", IsSmart: false, Writer: &testFakeTTY{}, }, { Name: "tty, TERM=st-256color", FakeEnv: map[string]string{ "TERM": "st-256color", }, GOOS: "linux", IsSmart: false, Writer: &testFakeTTY{}, }, } for _, tc := range cases { tc := tc // capture tc t.Run(tc.Name, func(t *testing.T) { res := isSmartTerminal(tc.Writer, tc.GOOS, func(s string) (string, bool) { k, set := tc.FakeEnv[s] return k, set }) assert.BoolEqual(t, tc.IsSmart, res) }) } } kubernetes-sigs-kind-49aeee6/pkg/internal/integration/000077500000000000000000000000001524365506300232045ustar00rootroot00000000000000kubernetes-sigs-kind-49aeee6/pkg/internal/integration/integration.go000066400000000000000000000020351524365506300260560ustar00rootroot00000000000000/* Copyright 2020 The Kubernetes Authors. 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 integration implements integration testing helpers. package integration import "testing" // *testing.T methods used by assert type testingDotT interface { Skip(args ...interface{}) } // MaybeSkip skips if integration tests should be skipped // currently this is when testing.Short() is true // This should be called at the beginning of an integration test func MaybeSkip(t testingDotT) { if testing.Short() { t.Skip("Skipping integration test due to -short") } } kubernetes-sigs-kind-49aeee6/pkg/internal/patch/000077500000000000000000000000001524365506300217605ustar00rootroot00000000000000kubernetes-sigs-kind-49aeee6/pkg/internal/patch/doc.go000066400000000000000000000012001524365506300230450ustar00rootroot00000000000000/* Copyright 2019 The Kubernetes Authors. 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 patch contains helpers for applying patches package patch kubernetes-sigs-kind-49aeee6/pkg/internal/patch/json6902patch.go000066400000000000000000000027661524365506300246340ustar00rootroot00000000000000/* Copyright 2019 The Kubernetes Authors. 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 patch import ( jsonpatch "github.com/evanphx/json-patch/v5" "sigs.k8s.io/yaml" "sigs.k8s.io/kind/pkg/errors" "sigs.k8s.io/kind/pkg/internal/apis/config" ) type json6902Patch struct { raw string // raw original contents patch jsonpatch.Patch // processed JSON 6902 patch matchInfo matchInfo // used to match resources } func convertJSON6902Patches(patchesJSON6902 []config.PatchJSON6902) ([]json6902Patch, error) { patches := []json6902Patch{} for _, configPatch := range patchesJSON6902 { patchJSON, err := yaml.YAMLToJSON([]byte(configPatch.Patch)) if err != nil { return nil, errors.WithStack(err) } patch, err := jsonpatch.DecodePatch(patchJSON) if err != nil { return nil, errors.WithStack(err) } patches = append(patches, json6902Patch{ raw: configPatch.Patch, patch: patch, matchInfo: matchInfoForConfigJSON6902Patch(configPatch), }) } return patches, nil } kubernetes-sigs-kind-49aeee6/pkg/internal/patch/kubeadm_merge.go000066400000000000000000000124561524365506300251060ustar00rootroot00000000000000/* Copyright The Kubernetes Authors. 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 patch import ( "encoding/json" "strings" "sigs.k8s.io/kind/pkg/errors" ) // mergeAndStrip performs a custom merge of kubeadm fields (like extraArgs and certSANs) // between targetJSON and patchJSON, taking targetVersion into account. // It strips those fields from the patch so that the standard merge patch doesn't overwrite them. func mergeAndStrip(targetJSON, patchJSON []byte, targetVersion, patchVersion string) ([]byte, []byte, error) { var target map[string]interface{} if err := json.Unmarshal(targetJSON, &target); err != nil { return nil, nil, errors.WithStack(err) } var patch map[string]interface{} if err := json.Unmarshal(patchJSON, &patch); err != nil { return nil, nil, errors.WithStack(err) } if err := walkAndMerge(target, patch, targetVersion, patchVersion); err != nil { return nil, nil, err } newTargetJSON, err := json.Marshal(target) if err != nil { return nil, nil, errors.WithStack(err) } strippedPatchJSON, err := json.Marshal(patch) if err != nil { return nil, nil, errors.WithStack(err) } return newTargetJSON, strippedPatchJSON, nil } // walkAndMerge recursively walks the patch map and applies custom merging for // extraArgs, kubeletExtraArgs, and certSANs, and deletes them from the patch map. func walkAndMerge(target, patch map[string]interface{}, targetVersion, patchVersion string) error { for k, patchVal := range patch { if k == "extraArgs" || k == "kubeletExtraArgs" { if strings.HasSuffix(targetVersion, "v1beta4") { if err := mergeExtraArgs(target, patch, k, patchVersion); err != nil { return err } delete(patch, k) } continue } if k == "certSANs" { if err := mergeCertSANs(target, patch, k); err != nil { return err } delete(patch, k) continue } // Recurse if the value is a map if patchMap, ok := patchVal.(map[string]interface{}); ok { targetVal, exists := target[k] if !exists { targetMap := make(map[string]interface{}) target[k] = targetMap targetVal = targetMap } if targetMap, ok := targetVal.(map[string]interface{}); ok { if err := walkAndMerge(targetMap, patchMap, targetVersion, patchVersion); err != nil { return err } } } } return nil } func mergeExtraArgs(target, patch map[string]interface{}, key string, patchVersion string) error { patchVal := patch[key] var patchSlice []interface{} if slice, ok := patchVal.([]interface{}); ok { patchSlice = slice } else if patchVersion == "" { if patchMap, ok := patchVal.(map[string]interface{}); ok { patchSlice = convertOldExtraArgsToNew(patchMap) } } targetVal := target[key] var targetSlice []interface{} if targetVal != nil { if slice, ok := targetVal.([]interface{}); ok { targetSlice = slice } else if targetMap, ok := targetVal.(map[string]interface{}); ok { targetSlice = convertOldExtraArgsToNew(targetMap) } } for _, pItemVal := range patchSlice { pItem, ok := pItemVal.(map[string]interface{}) if !ok { continue } nameVal, ok := pItem["name"] if !ok { continue } name, ok := nameVal.(string) if !ok { continue } value := pItem["value"] // Find in target foundIdx := -1 for idx, tItemVal := range targetSlice { tItem, ok := tItemVal.(map[string]interface{}) if !ok { continue } tNameVal, ok := tItem["name"] if !ok { continue } tName, ok := tNameVal.(string) if !ok { continue } if tName == name { foundIdx = idx break } } if foundIdx >= 0 { if value == nil { // delete targetSlice = append(targetSlice[:foundIdx], targetSlice[foundIdx+1:]...) } else { // update if tItem, ok := targetSlice[foundIdx].(map[string]interface{}); ok { tItem["value"] = value } } } else { if value != nil { // append targetSlice = append(targetSlice, map[string]interface{}{ "name": name, "value": value, }) } } } target[key] = targetSlice return nil } func convertOldExtraArgsToNew(old map[string]interface{}) []interface{} { var res []interface{} for k, v := range old { res = append(res, map[string]interface{}{ "name": k, "value": v, }) } return res } func mergeCertSANs(target, patch map[string]interface{}, key string) error { targetVal := target[key] var targetSlice []interface{} if targetVal != nil { if slice, ok := targetVal.([]interface{}); ok { targetSlice = slice } } patchVal := patch[key] var patchSlice []interface{} if patchVal != nil { if slice, ok := patchVal.([]interface{}); ok { patchSlice = slice } } for _, pItem := range patchSlice { exists := false for _, tItem := range targetSlice { if tItem == pItem { exists = true break } } if !exists { targetSlice = append(targetSlice, pItem) } } target[key] = targetSlice return nil } kubernetes-sigs-kind-49aeee6/pkg/internal/patch/kubeyaml.go000066400000000000000000000050141524365506300241200ustar00rootroot00000000000000/* Copyright 2019 The Kubernetes Authors. 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 patch import ( "strings" "sigs.k8s.io/kind/pkg/errors" "sigs.k8s.io/kind/pkg/internal/apis/config" ) // KubeYAML takes a Kubernetes object YAML document stream to patch, // merge patches, and JSON 6902 patches. // // It returns a patched a YAML document stream. // // Matching is performed on Kubernetes style v1 TypeMeta fields // (kind and apiVersion), between the YAML documents and the patches. // // Patches match if their kind and apiVersion match a document, with the exception // that if the patch does not set apiVersion it will be ignored. func KubeYAML(toPatch string, patches []string, patches6902 []config.PatchJSON6902) (string, error) { // pre-process, including splitting up documents etc. resources, err := parseResources(toPatch) if err != nil { return "", errors.Wrap(err, "failed to parse yaml to patch") } mergePatches, err := parseMergePatches(patches) if err != nil { return "", errors.Wrap(err, "failed to parse patches") } json6902patches, err := convertJSON6902Patches(patches6902) if err != nil { return "", errors.Wrap(err, "failed to parse JSON 6902 patches") } // apply patches and build result builder := &strings.Builder{} for i, r := range resources { // apply merge patches for _, p := range mergePatches { if _, err := r.applyMergePatch(p); err != nil { return "", errors.Wrap(err, "failed to apply patch") } } // apply RFC 6902 JSON patches for _, p := range json6902patches { if _, err := r.apply6902Patch(p); err != nil { return "", errors.Wrap(err, "failed to apply JSON 6902 patch") } } // write out result if err := r.encodeTo(builder); err != nil { return "", errors.Wrap(err, "failed to write patched resource") } // write document separator if i+1 < len(resources) { if _, err := builder.WriteString("---\n"); err != nil { return "", errors.Wrap(err, "failed to write document separator") } } } // verify that all patches were used return builder.String(), nil } kubernetes-sigs-kind-49aeee6/pkg/internal/patch/kubeyaml_test.go000066400000000000000000000313141524365506300251610ustar00rootroot00000000000000/* Copyright 2019 The Kubernetes Authors. 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 patch import ( "testing" "sigs.k8s.io/kind/pkg/internal/apis/config" "sigs.k8s.io/kind/pkg/internal/assert" ) func TestKubeYAML(t *testing.T) { t.Parallel() type testCase struct { Name string ToPatch string Patches []string PatchesJSON6902 []config.PatchJSON6902 ExpectError bool ExpectOutput string } cases := []testCase{ { Name: "kubeadm config no patches", ToPatch: normalKubeadmConfig, ExpectError: false, ExpectOutput: normalKubeadmConfigKustomized, }, { Name: "kubeadm config bogus patches", ToPatch: normalKubeadmConfig, Patches: []string{"b o g u s"}, ExpectError: true, }, { Name: "kubeadm config one merge-patch", ToPatch: normalKubeadmConfig, Patches: []string{trivialPatch}, ExpectError: false, ExpectOutput: normalKubeadmConfigTrivialPatched, }, { Name: "kubeadm config one merge-patch, one 6902 patch", ToPatch: normalKubeadmConfig, Patches: []string{trivialPatch}, PatchesJSON6902: []config.PatchJSON6902{trivialPatch6902}, ExpectError: false, ExpectOutput: normalKubeadmConfigTrivialPatchedAnd6902Patched, }, { Name: "kubeadm v1beta4 target with unversioned old-style patch", ToPatch: v1beta4KubeadmConfig, Patches: []string{unversionedOldStylePatch}, ExpectError: false, ExpectOutput: v1beta4KubeadmConfigPatched, }, { Name: "kubeadm v1beta4 target with versioned v1beta4 patch", ToPatch: v1beta4KubeadmConfig, Patches: []string{versionedV1beta4Patch}, ExpectError: false, ExpectOutput: v1beta4KubeadmConfigPatchedVersioned, }, { Name: "kubeadm v1beta3 target with versioned v1beta3 patch", ToPatch: v1beta3KubeadmConfig, Patches: []string{versionedV1beta3Patch}, ExpectError: false, ExpectOutput: v1beta3KubeadmConfigPatched, }, } for _, tc := range cases { tc := tc // capture test case t.Run(tc.Name, func(t *testing.T) { t.Parallel() out, err := KubeYAML(tc.ToPatch, tc.Patches, tc.PatchesJSON6902) assert.ExpectError(t, tc.ExpectError, err) if err == nil { assert.StringEqual(t, tc.ExpectOutput, out) } }) } } const normalKubeadmConfig = `# config generated by kind apiVersion: kubeadm.k8s.io/v1beta2 kind: ClusterConfiguration metadata: name: config kubernetesVersion: v1.15.3 clusterName: "kind" controlPlaneEndpoint: "192.168.9.3:6443" # on docker for mac we have to expose the api server via port forward, # so we need to ensure the cert is valid for localhost so we can talk # to the cluster after rewriting the kubeconfig to point to localhost apiServer: certSANs: [localhost, "127.0.0.1"] controllerManager: extraArgs: enable-hostpath-provisioner: "true" # configure ipv6 default addresses for IPv6 clusters scheduler: extraArgs: # configure ipv6 default addresses for IPv6 clusters networking: podSubnet: "10.244.0.0/16" serviceSubnet: "10.96.0.0/12" --- apiVersion: kubeadm.k8s.io/v1beta2 kind: InitConfiguration metadata: name: config # we use a well know token for TLS bootstrap bootstrapTokens: - token: "abcdef.0123456789abcdef" # we use a well know port for making the API server discoverable inside docker network. # from the host machine such port will be accessible via a random local port instead. localAPIEndpoint: advertiseAddress: "192.168.9.6" bindPort: 6443 nodeRegistration: criSocket: "/run/containerd/containerd.sock" kubeletExtraArgs: fail-swap-on: "false" node-ip: "192.168.9.6" --- # no-op entry that exists solely so it can be patched apiVersion: kubeadm.k8s.io/v1beta2 kind: JoinConfiguration metadata: name: config controlPlane: localAPIEndpoint: advertiseAddress: "192.168.9.6" bindPort: 6443 nodeRegistration: criSocket: "/run/containerd/containerd.sock" kubeletExtraArgs: fail-swap-on: "false" node-ip: "192.168.9.6" discovery: bootstrapToken: apiServerEndpoint: "192.168.9.3:6443" token: "abcdef.0123456789abcdef" unsafeSkipCAVerification: true --- apiVersion: kubelet.config.k8s.io/v1beta1 kind: KubeletConfiguration metadata: name: config # configure ipv6 addresses in IPv6 mode # disable disk resource management by default # kubelet will see the host disk that the inner container runtime # is ultimately backed by and attempt to recover disk space. we don't want that. imageGCHighThresholdPercent: 100 evictionHard: nodefs.available: "0%" nodefs.inodesFree: "0%" imagefs.available: "0%" --- # no-op entry that exists solely so it can be patched apiVersion: kubeproxy.config.k8s.io/v1alpha1 kind: KubeProxyConfiguration metadata: name: config ---` const normalKubeadmConfigKustomized = `apiServer: certSANs: - localhost - 127.0.0.1 apiVersion: kubeadm.k8s.io/v1beta2 clusterName: kind controlPlaneEndpoint: 192.168.9.3:6443 controllerManager: extraArgs: enable-hostpath-provisioner: "true" kind: ClusterConfiguration kubernetesVersion: v1.15.3 metadata: name: config networking: podSubnet: 10.244.0.0/16 serviceSubnet: 10.96.0.0/12 scheduler: extraArgs: null --- apiVersion: kubeadm.k8s.io/v1beta2 bootstrapTokens: - token: abcdef.0123456789abcdef kind: InitConfiguration localAPIEndpoint: advertiseAddress: 192.168.9.6 bindPort: 6443 metadata: name: config nodeRegistration: criSocket: /run/containerd/containerd.sock kubeletExtraArgs: fail-swap-on: "false" node-ip: 192.168.9.6 --- apiVersion: kubeadm.k8s.io/v1beta2 controlPlane: localAPIEndpoint: advertiseAddress: 192.168.9.6 bindPort: 6443 discovery: bootstrapToken: apiServerEndpoint: 192.168.9.3:6443 token: abcdef.0123456789abcdef unsafeSkipCAVerification: true kind: JoinConfiguration metadata: name: config nodeRegistration: criSocket: /run/containerd/containerd.sock kubeletExtraArgs: fail-swap-on: "false" node-ip: 192.168.9.6 --- apiVersion: kubelet.config.k8s.io/v1beta1 evictionHard: imagefs.available: 0% nodefs.available: 0% nodefs.inodesFree: 0% imageGCHighThresholdPercent: 100 kind: KubeletConfiguration metadata: name: config --- apiVersion: kubeproxy.config.k8s.io/v1alpha1 kind: KubeProxyConfiguration metadata: name: config ` const trivialPatch = ` kind: ClusterConfiguration apiVersion: kubeadm.k8s.io/v1beta2 scheduler: extraArgs: some-extra-arg: the-arg ---- kind: InitConfiguration nodeRegistration: kubeletExtraArgs: "v": "4" "logging-format": "json" ` const normalKubeadmConfigTrivialPatched = `apiServer: certSANs: - localhost - 127.0.0.1 apiVersion: kubeadm.k8s.io/v1beta2 clusterName: kind controlPlaneEndpoint: 192.168.9.3:6443 controllerManager: extraArgs: enable-hostpath-provisioner: "true" kind: ClusterConfiguration kubernetesVersion: v1.15.3 metadata: name: config networking: podSubnet: 10.244.0.0/16 serviceSubnet: 10.96.0.0/12 scheduler: extraArgs: some-extra-arg: the-arg --- apiVersion: kubeadm.k8s.io/v1beta2 bootstrapTokens: - token: abcdef.0123456789abcdef kind: InitConfiguration localAPIEndpoint: advertiseAddress: 192.168.9.6 bindPort: 6443 metadata: name: config nodeRegistration: criSocket: /run/containerd/containerd.sock kubeletExtraArgs: fail-swap-on: "false" logging-format: json node-ip: 192.168.9.6 v: "4" --- apiVersion: kubeadm.k8s.io/v1beta2 controlPlane: localAPIEndpoint: advertiseAddress: 192.168.9.6 bindPort: 6443 discovery: bootstrapToken: apiServerEndpoint: 192.168.9.3:6443 token: abcdef.0123456789abcdef unsafeSkipCAVerification: true kind: JoinConfiguration metadata: name: config nodeRegistration: criSocket: /run/containerd/containerd.sock kubeletExtraArgs: fail-swap-on: "false" node-ip: 192.168.9.6 --- apiVersion: kubelet.config.k8s.io/v1beta1 evictionHard: imagefs.available: 0% nodefs.available: 0% nodefs.inodesFree: 0% imageGCHighThresholdPercent: 100 kind: KubeletConfiguration metadata: name: config --- apiVersion: kubeproxy.config.k8s.io/v1alpha1 kind: KubeProxyConfiguration metadata: name: config ` var trivialPatch6902 = config.PatchJSON6902{ Group: "kubeadm.k8s.io", Version: "v1beta2", Kind: "ClusterConfiguration", Patch: ` - op: add path: /apiServer/certSANs/- value: my-hostname`, } const normalKubeadmConfigTrivialPatchedAnd6902Patched = `apiServer: certSANs: - localhost - 127.0.0.1 - my-hostname apiVersion: kubeadm.k8s.io/v1beta2 clusterName: kind controlPlaneEndpoint: 192.168.9.3:6443 controllerManager: extraArgs: enable-hostpath-provisioner: "true" kind: ClusterConfiguration kubernetesVersion: v1.15.3 metadata: name: config networking: podSubnet: 10.244.0.0/16 serviceSubnet: 10.96.0.0/12 scheduler: extraArgs: some-extra-arg: the-arg --- apiVersion: kubeadm.k8s.io/v1beta2 bootstrapTokens: - token: abcdef.0123456789abcdef kind: InitConfiguration localAPIEndpoint: advertiseAddress: 192.168.9.6 bindPort: 6443 metadata: name: config nodeRegistration: criSocket: /run/containerd/containerd.sock kubeletExtraArgs: fail-swap-on: "false" logging-format: json node-ip: 192.168.9.6 v: "4" --- apiVersion: kubeadm.k8s.io/v1beta2 controlPlane: localAPIEndpoint: advertiseAddress: 192.168.9.6 bindPort: 6443 discovery: bootstrapToken: apiServerEndpoint: 192.168.9.3:6443 token: abcdef.0123456789abcdef unsafeSkipCAVerification: true kind: JoinConfiguration metadata: name: config nodeRegistration: criSocket: /run/containerd/containerd.sock kubeletExtraArgs: fail-swap-on: "false" node-ip: 192.168.9.6 --- apiVersion: kubelet.config.k8s.io/v1beta1 evictionHard: imagefs.available: 0% nodefs.available: 0% nodefs.inodesFree: 0% imageGCHighThresholdPercent: 100 kind: KubeletConfiguration metadata: name: config --- apiVersion: kubeproxy.config.k8s.io/v1alpha1 kind: KubeProxyConfiguration metadata: name: config ` const v1beta4KubeadmConfig = `apiVersion: kubeadm.k8s.io/v1beta4 kind: ClusterConfiguration metadata: name: config apiServer: certSANs: [localhost, "127.0.0.1"] extraArgs: - name: "v" value: "4" --- apiVersion: kubeadm.k8s.io/v1beta4 kind: InitConfiguration metadata: name: config nodeRegistration: kubeletExtraArgs: - name: "fail-swap-on" value: "false" ` const unversionedOldStylePatch = `kind: ClusterConfiguration apiServer: extraArgs: "v": "5" "enable-hostpath-provisioner": "true" certSANs: - "my-host" --- kind: InitConfiguration nodeRegistration: kubeletExtraArgs: "fail-swap-on": null "node-ip": "192.168.9.6" ` const v1beta4KubeadmConfigPatched = `apiServer: certSANs: - localhost - 127.0.0.1 - my-host extraArgs: - name: v value: "5" - name: enable-hostpath-provisioner value: "true" apiVersion: kubeadm.k8s.io/v1beta4 kind: ClusterConfiguration metadata: name: config --- apiVersion: kubeadm.k8s.io/v1beta4 kind: InitConfiguration metadata: name: config nodeRegistration: kubeletExtraArgs: - name: node-ip value: 192.168.9.6 ` const versionedV1beta4Patch = `apiVersion: kubeadm.k8s.io/v1beta4 kind: ClusterConfiguration apiServer: extraArgs: - name: "enable-hostpath-provisioner" value: "true" certSANs: - "my-host" ` const v1beta4KubeadmConfigPatchedVersioned = `apiServer: certSANs: - localhost - 127.0.0.1 - my-host extraArgs: - name: v value: "4" - name: enable-hostpath-provisioner value: "true" apiVersion: kubeadm.k8s.io/v1beta4 kind: ClusterConfiguration metadata: name: config --- apiVersion: kubeadm.k8s.io/v1beta4 kind: InitConfiguration metadata: name: config nodeRegistration: kubeletExtraArgs: - name: fail-swap-on value: "false" ` const v1beta3KubeadmConfig = `apiVersion: kubeadm.k8s.io/v1beta3 kind: ClusterConfiguration metadata: name: config apiServer: certSANs: [localhost, "127.0.0.1"] extraArgs: "v": "4" ` const versionedV1beta3Patch = `apiVersion: kubeadm.k8s.io/v1beta3 kind: ClusterConfiguration apiServer: extraArgs: "enable-hostpath-provisioner": "true" certSANs: - "my-host" ` const v1beta3KubeadmConfigPatched = `apiServer: certSANs: - localhost - 127.0.0.1 - my-host extraArgs: enable-hostpath-provisioner: "true" v: "4" apiVersion: kubeadm.k8s.io/v1beta3 kind: ClusterConfiguration metadata: name: config ` kubernetes-sigs-kind-49aeee6/pkg/internal/patch/matchinfo.go000066400000000000000000000026301524365506300242600ustar00rootroot00000000000000/* Copyright 2019 The Kubernetes Authors. 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 patch import ( "sigs.k8s.io/yaml" "sigs.k8s.io/kind/pkg/errors" "sigs.k8s.io/kind/pkg/internal/apis/config" ) // we match resources and patches on their v1 TypeMeta type matchInfo struct { Kind string `json:"kind,omitempty"` APIVersion string `json:"apiVersion,omitempty"` } func parseYAMLMatchInfo(raw string) (matchInfo, error) { m := matchInfo{} if err := yaml.Unmarshal([]byte(raw), &m); err != nil { return matchInfo{}, errors.Wrapf(err, "failed to parse type meta for %q", raw) } return m, nil } func matchInfoForConfigJSON6902Patch(patch config.PatchJSON6902) matchInfo { return matchInfo{ Kind: patch.Kind, APIVersion: groupVersionToAPIVersion(patch.Group, patch.Version), } } func groupVersionToAPIVersion(group, version string) string { if group == "" { return version } return group + "/" + version } kubernetes-sigs-kind-49aeee6/pkg/internal/patch/mergepatch.go000066400000000000000000000030701524365506300244260ustar00rootroot00000000000000/* Copyright 2019 The Kubernetes Authors. 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 patch import ( "sigs.k8s.io/yaml" "sigs.k8s.io/kind/pkg/errors" ) type mergePatch struct { raw string // the original raw data json []byte // the processed data (in JSON form) matchInfo matchInfo // for matching resources } func parseMergePatches(rawPatches []string) ([]mergePatch, error) { patches := []mergePatch{} // split document streams before trying to parse them splitRawPatches := make([]string, 0, len(rawPatches)) for _, raw := range rawPatches { splitRaw, err := splitYAMLDocuments(raw) if err != nil { return nil, err } splitRawPatches = append(splitRawPatches, splitRaw...) } for _, raw := range splitRawPatches { matchInfo, err := parseYAMLMatchInfo(raw) if err != nil { return nil, errors.WithStack(err) } json, err := yaml.YAMLToJSON([]byte(raw)) if err != nil { return nil, errors.WithStack(err) } patches = append(patches, mergePatch{ raw: raw, json: json, matchInfo: matchInfo, }) } return patches, nil } kubernetes-sigs-kind-49aeee6/pkg/internal/patch/resource.go000066400000000000000000000100321524365506300241320ustar00rootroot00000000000000/* Copyright 2019 The Kubernetes Authors. 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 patch import ( "bufio" "bytes" "io" "strings" jsonpatch "github.com/evanphx/json-patch/v5" "sigs.k8s.io/yaml" "sigs.k8s.io/kind/pkg/errors" ) type resource struct { raw string // the original raw data json []byte // the processed data (in JSON form), may be mutated matchInfo matchInfo // for matching patches } func (r *resource) apply6902Patch(patch json6902Patch) (matches bool, err error) { if !r.matches(patch.matchInfo) { return false, nil } patched, err := patch.patch.Apply(r.json) if err != nil { return true, errors.WithStack(err) } r.json = patched return true, nil } func (r *resource) applyMergePatch(patch mergePatch) (matches bool, err error) { if !r.matches(patch.matchInfo) { return false, nil } newTargetJSON, strippedPatchJSON, err := mergeAndStrip(r.json, patch.json, r.matchInfo.APIVersion, patch.matchInfo.APIVersion) if err != nil { return true, err } patched, err := jsonpatch.MergePatch(newTargetJSON, strippedPatchJSON) if err != nil { return true, errors.WithStack(err) } r.json = patched return true, nil } func (r resource) matches(o matchInfo) bool { m := &r.matchInfo // we require kind to match, but if the patch does not specify // APIVersion we ignore it (eg to allow trivial patches across kubeadm versions) return m.Kind == o.Kind && (o.APIVersion == "" || m.APIVersion == o.APIVersion) } func (r *resource) encodeTo(w io.Writer) error { encoded, err := yaml.JSONToYAML(r.json) if err != nil { return errors.WithStack(err) } if _, err := w.Write(encoded); err != nil { return errors.WithStack(err) } return nil } func parseResources(yamlDocumentStream string) ([]resource, error) { resources := []resource{} documents, err := splitYAMLDocuments(yamlDocumentStream) if err != nil { return nil, err } for _, raw := range documents { matchInfo, err := parseYAMLMatchInfo(raw) if err != nil { return nil, errors.WithStack(err) } json, err := yaml.YAMLToJSON([]byte(raw)) if err != nil { return nil, errors.WithStack(err) } resources = append(resources, resource{ raw: raw, json: json, matchInfo: matchInfo, }) } return resources, nil } func splitYAMLDocuments(yamlDocumentStream string) ([]string, error) { documents := []string{} scanner := bufio.NewScanner(strings.NewReader(yamlDocumentStream)) scanner.Split(splitYAMLDocument) for scanner.Scan() { documents = append(documents, scanner.Text()) } if err := scanner.Err(); err != nil { return nil, errors.Wrap(err, "error splitting documents") } return documents, nil } const yamlSeparator = "\n---" // splitYAMLDocument is a bufio.SplitFunc for splitting YAML streams into individual documents. // this is borrowed from k8s.io/apimachinery/pkg/util/yaml/decoder.go func splitYAMLDocument(data []byte, atEOF bool) (advance int, token []byte, err error) { if atEOF && len(data) == 0 { return 0, nil, nil } sep := len([]byte(yamlSeparator)) if i := bytes.Index(data, []byte(yamlSeparator)); i >= 0 { // We have a potential document terminator i += sep after := data[i:] if len(after) == 0 { // we can't read any more characters if atEOF { return len(data), data[:len(data)-sep], nil } return 0, nil, nil } if j := bytes.IndexByte(after, '\n'); j >= 0 { return i + j + 1, data[0 : i-sep], nil } return 0, nil, nil } // If we're at EOF, we have a final, non-terminated line. Return it. if atEOF { return len(data), data, nil } // Request more data. return 0, nil, nil } kubernetes-sigs-kind-49aeee6/pkg/internal/patch/toml.go000066400000000000000000000074311524365506300232670ustar00rootroot00000000000000/* Copyright 2019 The Kubernetes Authors. 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 patch import ( "bytes" "encoding/json" burntoml "github.com/BurntSushi/toml" jsonpatch "github.com/evanphx/json-patch/v5" toml "github.com/pelletier/go-toml" yaml "go.yaml.in/yaml/v3" "sigs.k8s.io/kind/pkg/errors" ) // ContainerdTOML patches toPatch with the patches (should be TOML merge patches) and patches6902 (should be JSON 6902 patches) func ContainerdTOML(toPatch string, patches []string, patches6902 []string) (string, error) { // convert to JSON for patching j, err := tomlToJSON([]byte(toPatch)) if err != nil { return "", err } version, err := containerdConfigVersion(toPatch) if err != nil { return "", errors.WithStack(err) } if version == 0 { return "", errors.New("failed to detect containerd config version") } // apply merge patches for _, patch := range patches { pj, err := tomlToJSON([]byte(patch)) if err != nil { return "", errors.WithStack(err) } patchVersion, err := containerdConfigVersion(patch) if err != nil { return "", errors.WithStack(err) } // skip if patch sets version and version does not match if patchVersion != 0 && patchVersion != version { continue } patched, err := jsonpatch.MergePatch(j, pj) if err != nil { return "", errors.WithStack(err) } j = patched } // apply JSON 6902 patches for _, patch6902 := range patches6902 { patch, err := jsonpatch.DecodePatch([]byte(patch6902)) if err != nil { return "", errors.WithStack(err) } patched, err := patch.Apply(j) if err != nil { return "", errors.WithStack(err) } j = patched } // convert result back to TOML return jsonToTOMLString(j) } func containerdConfigVersion(configTOML string) (int, error) { type version struct { Version int `toml:"version,omitempty"` } v := version{} if err := toml.Unmarshal([]byte(configTOML), &v); err != nil { return 0, errors.WithStack(err) } return v.Version, nil } // tomlToJSON converts arbitrary TOML to JSON func tomlToJSON(t []byte) ([]byte, error) { // we use github.com.pelletier/go-toml here to unmarshal arbitrary TOML to JSON tree, err := toml.LoadBytes(t) if err != nil { return nil, errors.WithStack(err) } b, err := json.Marshal(tree.ToMap()) if err != nil { return nil, errors.WithStack(err) } return b, nil } // jsonToTOMLString converts arbitrary JSON to TOML func jsonToTOMLString(j []byte) (string, error) { var unstruct interface{} // We are using yaml.Unmarshal here (instead of json.Unmarshal) because the // Go JSON library doesn't try to pick the right number type (int, float, // etc.) when unmarshalling to interface{}, it just picks float64 // universally. go-yaml does go through the effort of picking the right // number type, so we can preserve number type throughout this process. if err := yaml.Unmarshal(j, &unstruct); err != nil { return "", errors.WithStack(err) } // we use github.com/BurntSushi/toml here because github.com.pelletier/go-toml // can only marshal structs AND BurntSushi/toml is what contained uses // and has more canonically formatted output (we initially plan to use // this package for patching containerd config) var buff bytes.Buffer if err := burntoml.NewEncoder(&buff).Encode(unstruct); err != nil { return "", errors.WithStack(err) } return buff.String(), nil } kubernetes-sigs-kind-49aeee6/pkg/internal/patch/toml_test.go000066400000000000000000000144431524365506300243270ustar00rootroot00000000000000/* Copyright 2019 The Kubernetes Authors. 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 patch import ( "testing" "sigs.k8s.io/kind/pkg/internal/assert" ) func TestContainerdTOML(t *testing.T) { t.Parallel() type testCase struct { Name string ToPatch string Patches []string PatchesJSON6902 []string ExpectError bool ExpectOutput string } cases := []testCase{ { Name: "invalid TOML", ToPatch: `🗿`, ExpectError: true, ExpectOutput: "", }, { Name: "invalid containerd versioning", ToPatch: `version = "five"`, ExpectError: true, ExpectOutput: "", }, { Name: "no patches", ToPatch: `version = 2 disabled_plugins = ["restart"] [plugins.linux] shim_debug = true [plugins.cri.containerd.runtimes.runsc] runtime_type = "io.containerd.runsc.v1"`, ExpectError: false, ExpectOutput: `disabled_plugins = ["restart"] version = 2 [plugins] [plugins.cri] [plugins.cri.containerd] [plugins.cri.containerd.runtimes] [plugins.cri.containerd.runtimes.runsc] runtime_type = "io.containerd.runsc.v1" [plugins.linux] shim_debug = true `, }, { Name: "Only matching patches", ToPatch: `version = 2 disabled_plugins = ["restart"] [plugins.linux] shim_debug = true [plugins.cri.containerd.runtimes.runsc] runtime_type = "io.containerd.runsc.v1"`, Patches: []string{"version = 3\ndisabled_plugins=[\"bar\"]", "version = 2\n disabled_plugins=[\"baz\"]"}, ExpectError: false, ExpectOutput: `disabled_plugins = ["baz"] version = 2 [plugins] [plugins.cri] [plugins.cri.containerd] [plugins.cri.containerd.runtimes] [plugins.cri.containerd.runtimes.runsc] runtime_type = "io.containerd.runsc.v1" [plugins.linux] shim_debug = true `, }, { Name: "invalid patch TOML", ToPatch: `version = 2 disabled_plugins = ["restart"] [plugins.linux] shim_debug = true [plugins.cri.containerd.runtimes.runsc] runtime_type = "io.containerd.runsc.v1"`, Patches: []string{"�"}, ExpectError: true, }, { Name: "invalid 6902 patch JSON", ToPatch: `disabled_plugins = ["restart"] [plugins.linux] shim_debug = true [plugins.cri.containerd.runtimes.runsc] runtime_type = "io.containerd.runsc.v1"`, PatchesJSON6902: []string{"�"}, ExpectError: true, }, { Name: "trivial patch", ToPatch: `version = 2 disabled_plugins = ["restart"] [plugins.linux] shim_debug = true [plugins.cri.containerd.runtimes.runsc] runtime_type = "io.containerd.runsc.v1"`, Patches: []string{`disabled_plugins=[]`}, ExpectError: false, ExpectOutput: `disabled_plugins = [] version = 2 [plugins] [plugins.cri] [plugins.cri.containerd] [plugins.cri.containerd.runtimes] [plugins.cri.containerd.runtimes.runsc] runtime_type = "io.containerd.runsc.v1" [plugins.linux] shim_debug = true `, }, { Name: "trivial 6902 patch", ToPatch: `version = 2 disabled_plugins = ["restart"] [plugins.linux] shim_debug = true [plugins.cri.containerd.runtimes.runsc] runtime_type = "io.containerd.runsc.v1"`, PatchesJSON6902: []string{`[{"op": "remove", "path": "/disabled_plugins"}]`}, ExpectError: false, ExpectOutput: `version = 2 [plugins] [plugins.cri] [plugins.cri.containerd] [plugins.cri.containerd.runtimes] [plugins.cri.containerd.runtimes.runsc] runtime_type = "io.containerd.runsc.v1" [plugins.linux] shim_debug = true `, }, { Name: "trivial patch and trivial 6902 patch", ToPatch: `version = 2 disabled_plugins = ["restart"] [plugins.linux] shim_debug = true [plugins.cri.containerd.runtimes.runsc] runtime_type = "io.containerd.runsc.v1"`, Patches: []string{`disabled_plugins=["foo"]`}, PatchesJSON6902: []string{`[{"op": "remove", "path": "/disabled_plugins"}]`}, ExpectError: false, ExpectOutput: `version = 2 [plugins] [plugins.cri] [plugins.cri.containerd] [plugins.cri.containerd.runtimes] [plugins.cri.containerd.runtimes.runsc] runtime_type = "io.containerd.runsc.v1" [plugins.linux] shim_debug = true `, }, { Name: "invalid path 6902 patch", ToPatch: `disabled_plugins = ["restart"] [plugins.linux] shim_debug = true [plugins.cri.containerd.runtimes.runsc] runtime_type = "io.containerd.runsc.v1"`, PatchesJSON6902: []string{`[{"op": "remove", "path": "/fooooooo"}]`}, ExpectError: true, ExpectOutput: `[plugins] [plugins.cri] [plugins.cri.containerd] [plugins.cri.containerd.runtimes] [plugins.cri.containerd.runtimes.runsc] runtime_type = "io.containerd.runsc.v1" [plugins.linux] shim_debug = true `, }, { Name: "patch registry", ToPatch: `version = 2 disabled_plugins = ["restart"] [plugins.linux] shim_debug = true [plugins.cri.containerd.runtimes.runsc] runtime_type = "io.containerd.runsc.v1"`, Patches: []string{`[plugins.cri.registry.mirrors] [plugins.cri.registry.mirrors."registry:5000"] endpoint = ["http://registry:5000"]`}, ExpectError: false, ExpectOutput: `disabled_plugins = ["restart"] version = 2 [plugins] [plugins.cri] [plugins.cri.containerd] [plugins.cri.containerd.runtimes] [plugins.cri.containerd.runtimes.runsc] runtime_type = "io.containerd.runsc.v1" [plugins.cri.registry] [plugins.cri.registry.mirrors] [plugins.cri.registry.mirrors."registry:5000"] endpoint = ["http://registry:5000"] [plugins.linux] shim_debug = true `, }, } for _, tc := range cases { tc := tc // capture test case t.Run(tc.Name, func(t *testing.T) { t.Parallel() out, err := ContainerdTOML(tc.ToPatch, tc.Patches, tc.PatchesJSON6902) assert.ExpectError(t, tc.ExpectError, err) if err == nil { assert.StringEqual(t, tc.ExpectOutput, out) } }) } } kubernetes-sigs-kind-49aeee6/pkg/internal/runtime/000077500000000000000000000000001524365506300223445ustar00rootroot00000000000000kubernetes-sigs-kind-49aeee6/pkg/internal/runtime/runtime.go000066400000000000000000000026401524365506300243600ustar00rootroot00000000000000/* Copyright 2020 The Kubernetes Authors. 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 runtime contains functions for getting runtime information. package runtime import ( "os" "sigs.k8s.io/kind/pkg/cluster" "sigs.k8s.io/kind/pkg/log" ) // GetDefault selected the default runtime from the environment override func GetDefault(logger log.Logger) cluster.ProviderOption { switch p := os.Getenv("KIND_EXPERIMENTAL_PROVIDER"); p { case "": return nil case "podman": logger.Warn("using podman due to KIND_EXPERIMENTAL_PROVIDER") return cluster.ProviderWithPodman() case "docker": logger.Warn("using docker due to KIND_EXPERIMENTAL_PROVIDER") return cluster.ProviderWithDocker() case "nerdctl", "finch", "nerdctl.lima": logger.Warnf("using %s due to KIND_EXPERIMENTAL_PROVIDER", p) return cluster.ProviderWithNerdctl(p) default: logger.Warnf("ignoring unknown value %q for KIND_EXPERIMENTAL_PROVIDER", p) return nil } } kubernetes-sigs-kind-49aeee6/pkg/internal/sets/000077500000000000000000000000001524365506300216375ustar00rootroot00000000000000kubernetes-sigs-kind-49aeee6/pkg/internal/sets/doc.go000066400000000000000000000017461524365506300227430ustar00rootroot00000000000000/* Copyright 2021 The Kubernetes Authors. 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 sets implements set types. // // This is forked from k8s.io/apimachinery/pkg/util/sets (under the same project // and license), because k8s.io/apimachinery is a relatively heavy dependency // and we only need some trivial utilities. Avoiding importing k8s.io/apimachinery // makes kind easier to embed in other projects for testing etc. // // The set implementation is relatively small and very stable. package sets kubernetes-sigs-kind-49aeee6/pkg/internal/sets/empty.go000066400000000000000000000014741524365506300233320ustar00rootroot00000000000000/* Copyright The Kubernetes Authors. 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. */ // Code generated by set-gen. DO NOT EDIT. package sets // Empty is public since it is used by some internal API objects for conversions between external // string arrays and internal sets, and conversion logic requires public types today. type Empty struct{} kubernetes-sigs-kind-49aeee6/pkg/internal/sets/string.go000066400000000000000000000113011524365506300234700ustar00rootroot00000000000000/* Copyright The Kubernetes Authors. 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. */ // Code generated by set-gen. DO NOT EDIT. package sets import ( "reflect" "sort" ) // sets.String is a set of strings, implemented via map[string]struct{} for minimal memory consumption. type String map[string]Empty // NewString creates a String from a list of values. func NewString(items ...string) String { ss := String{} ss.Insert(items...) return ss } // StringKeySet creates a String from a keys of a map[string](? extends interface{}). // If the value passed in is not actually a map, this will panic. func StringKeySet(theMap interface{}) String { v := reflect.ValueOf(theMap) ret := String{} for _, keyValue := range v.MapKeys() { ret.Insert(keyValue.Interface().(string)) } return ret } // Insert adds items to the set. func (s String) Insert(items ...string) String { for _, item := range items { s[item] = Empty{} } return s } // Delete removes all items from the set. func (s String) Delete(items ...string) String { for _, item := range items { delete(s, item) } return s } // Has returns true if and only if item is contained in the set. func (s String) Has(item string) bool { _, contained := s[item] return contained } // HasAll returns true if and only if all items are contained in the set. func (s String) HasAll(items ...string) bool { for _, item := range items { if !s.Has(item) { return false } } return true } // HasAny returns true if any items are contained in the set. func (s String) HasAny(items ...string) bool { for _, item := range items { if s.Has(item) { return true } } return false } // Difference returns a set of objects that are not in s2 // For example: // s1 = {a1, a2, a3} // s2 = {a1, a2, a4, a5} // s1.Difference(s2) = {a3} // s2.Difference(s1) = {a4, a5} func (s String) Difference(s2 String) String { result := NewString() for key := range s { if !s2.Has(key) { result.Insert(key) } } return result } // Union returns a new set which includes items in either s1 or s2. // For example: // s1 = {a1, a2} // s2 = {a3, a4} // s1.Union(s2) = {a1, a2, a3, a4} // s2.Union(s1) = {a1, a2, a3, a4} func (s1 String) Union(s2 String) String { result := NewString() for key := range s1 { result.Insert(key) } for key := range s2 { result.Insert(key) } return result } // Intersection returns a new set which includes the item in BOTH s1 and s2 // For example: // s1 = {a1, a2} // s2 = {a2, a3} // s1.Intersection(s2) = {a2} func (s1 String) Intersection(s2 String) String { var walk, other String result := NewString() if s1.Len() < s2.Len() { walk = s1 other = s2 } else { walk = s2 other = s1 } for key := range walk { if other.Has(key) { result.Insert(key) } } return result } // IsSuperset returns true if and only if s1 is a superset of s2. func (s1 String) IsSuperset(s2 String) bool { for item := range s2 { if !s1.Has(item) { return false } } return true } // Equal returns true if and only if s1 is equal (as a set) to s2. // Two sets are equal if their membership is identical. // (In practice, this means same elements, order doesn't matter) func (s1 String) Equal(s2 String) bool { return len(s1) == len(s2) && s1.IsSuperset(s2) } type sortableSliceOfString []string func (s sortableSliceOfString) Len() int { return len(s) } func (s sortableSliceOfString) Less(i, j int) bool { return lessString(s[i], s[j]) } func (s sortableSliceOfString) Swap(i, j int) { s[i], s[j] = s[j], s[i] } // List returns the contents as a sorted string slice. func (s String) List() []string { res := make(sortableSliceOfString, 0, len(s)) for key := range s { res = append(res, key) } sort.Sort(res) return []string(res) } // UnsortedList returns the slice with contents in random order. func (s String) UnsortedList() []string { res := make([]string, 0, len(s)) for key := range s { res = append(res, key) } return res } // Returns a single element from the set. func (s String) PopAny() (string, bool) { for key := range s { s.Delete(key) return key, true } var zeroValue string return zeroValue, false } // Len returns the size of the set. func (s String) Len() int { return len(s) } func lessString(lhs, rhs string) bool { return lhs < rhs } kubernetes-sigs-kind-49aeee6/pkg/internal/version/000077500000000000000000000000001524365506300223465ustar00rootroot00000000000000kubernetes-sigs-kind-49aeee6/pkg/internal/version/doc.go000066400000000000000000000015601524365506300234440ustar00rootroot00000000000000/* Copyright 2021 The Kubernetes Authors. 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 version provides utilities for version number comparisons // // This is forked from k8s.io/apimachinery/pkg/util/version to make // kind easier to import (k8s.io/apimachinery/pkg/util/version is a stable, // mature package with no externaldependencies within a large, heavy module) package version kubernetes-sigs-kind-49aeee6/pkg/internal/version/version.go000066400000000000000000000224011524365506300243610ustar00rootroot00000000000000/* Copyright 2016 The Kubernetes Authors. 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 version import ( "bytes" "fmt" "regexp" "strconv" "strings" ) // Version is an opaque representation of a version number type Version struct { components []uint semver bool preRelease string buildMetadata string } var ( // versionMatchRE splits a version string into numeric and "extra" parts versionMatchRE = regexp.MustCompile(`^\s*v?([0-9]+(?:\.[0-9]+)*)(.*)*$`) // extraMatchRE splits the "extra" part of versionMatchRE into semver pre-release and build metadata; it does not validate the "no leading zeroes" constraint for pre-release extraMatchRE = regexp.MustCompile(`^(?:-([0-9A-Za-z-]+(?:\.[0-9A-Za-z-]+)*))?(?:\+([0-9A-Za-z-]+(?:\.[0-9A-Za-z-]+)*))?\s*$`) ) func parse(str string, semver bool) (*Version, error) { parts := versionMatchRE.FindStringSubmatch(str) if parts == nil { return nil, fmt.Errorf("could not parse %q as version", str) } numbers, extra := parts[1], parts[2] components := strings.Split(numbers, ".") if (semver && len(components) != 3) || (!semver && len(components) < 2) { return nil, fmt.Errorf("illegal version string %q", str) } v := &Version{ components: make([]uint, len(components)), semver: semver, } for i, comp := range components { if (i == 0 || semver) && strings.HasPrefix(comp, "0") && comp != "0" { return nil, fmt.Errorf("illegal zero-prefixed version component %q in %q", comp, str) } num, err := strconv.ParseUint(comp, 10, 0) if err != nil { return nil, fmt.Errorf("illegal non-numeric version component %q in %q: %v", comp, str, err) } v.components[i] = uint(num) } if semver && extra != "" { extraParts := extraMatchRE.FindStringSubmatch(extra) if extraParts == nil { return nil, fmt.Errorf("could not parse pre-release/metadata (%s) in version %q", extra, str) } v.preRelease, v.buildMetadata = extraParts[1], extraParts[2] for _, comp := range strings.Split(v.preRelease, ".") { if _, err := strconv.ParseUint(comp, 10, 0); err == nil { if strings.HasPrefix(comp, "0") && comp != "0" { return nil, fmt.Errorf("illegal zero-prefixed version component %q in %q", comp, str) } } } } return v, nil } // ParseGeneric parses a "generic" version string. The version string must consist of two // or more dot-separated numeric fields (the first of which can't have leading zeroes), // followed by arbitrary uninterpreted data (which need not be separated from the final // numeric field by punctuation). For convenience, leading and trailing whitespace is // ignored, and the version can be preceded by the letter "v". See also ParseSemantic. func ParseGeneric(str string) (*Version, error) { return parse(str, false) } // MustParseGeneric is like ParseGeneric except that it panics on error func MustParseGeneric(str string) *Version { v, err := ParseGeneric(str) if err != nil { panic(err) } return v } // ParseSemantic parses a version string that exactly obeys the syntax and semantics of // the "Semantic Versioning" specification (http://semver.org/) (although it ignores // leading and trailing whitespace, and allows the version to be preceded by "v"). For // version strings that are not guaranteed to obey the Semantic Versioning syntax, use // ParseGeneric. func ParseSemantic(str string) (*Version, error) { return parse(str, true) } // MustParseSemantic is like ParseSemantic except that it panics on error func MustParseSemantic(str string) *Version { v, err := ParseSemantic(str) if err != nil { panic(err) } return v } // Major returns the major release number func (v *Version) Major() uint { return v.components[0] } // Minor returns the minor release number func (v *Version) Minor() uint { return v.components[1] } // Patch returns the patch release number if v is a Semantic Version, or 0 func (v *Version) Patch() uint { if len(v.components) < 3 { return 0 } return v.components[2] } // BuildMetadata returns the build metadata, if v is a Semantic Version, or "" func (v *Version) BuildMetadata() string { return v.buildMetadata } // PreRelease returns the prerelease metadata, if v is a Semantic Version, or "" func (v *Version) PreRelease() string { return v.preRelease } // Components returns the version number components func (v *Version) Components() []uint { return v.components } // WithMajor returns copy of the version object with requested major number func (v *Version) WithMajor(major uint) *Version { result := *v result.components = []uint{major, v.Minor(), v.Patch()} return &result } // WithMinor returns copy of the version object with requested minor number func (v *Version) WithMinor(minor uint) *Version { result := *v result.components = []uint{v.Major(), minor, v.Patch()} return &result } // WithPatch returns copy of the version object with requested patch number func (v *Version) WithPatch(patch uint) *Version { result := *v result.components = []uint{v.Major(), v.Minor(), patch} return &result } // WithPreRelease returns copy of the version object with requested prerelease func (v *Version) WithPreRelease(preRelease string) *Version { result := *v result.components = []uint{v.Major(), v.Minor(), v.Patch()} result.preRelease = preRelease return &result } // WithBuildMetadata returns copy of the version object with requested buildMetadata func (v *Version) WithBuildMetadata(buildMetadata string) *Version { result := *v result.components = []uint{v.Major(), v.Minor(), v.Patch()} result.buildMetadata = buildMetadata return &result } // String converts a Version back to a string; note that for versions parsed with // ParseGeneric, this will not include the trailing uninterpreted portion of the version // number. func (v *Version) String() string { if v == nil { return "" } var buffer bytes.Buffer for i, comp := range v.components { if i > 0 { buffer.WriteString(".") } fmt.Fprintf(&buffer, "%d", comp) } if v.preRelease != "" { buffer.WriteString("-") buffer.WriteString(v.preRelease) } if v.buildMetadata != "" { buffer.WriteString("+") buffer.WriteString(v.buildMetadata) } return buffer.String() } // compareInternal returns -1 if v is less than other, 1 if it is greater than other, or 0 // if they are equal func (v *Version) compareInternal(other *Version) int { vLen := len(v.components) oLen := len(other.components) for i := 0; i < vLen && i < oLen; i++ { switch { case other.components[i] < v.components[i]: return 1 case other.components[i] > v.components[i]: return -1 } } // If components are common but one has more items and they are not zeros, it is bigger switch { case oLen < vLen && !onlyZeros(v.components[oLen:]): return 1 case oLen > vLen && !onlyZeros(other.components[vLen:]): return -1 } if !v.semver || !other.semver { return 0 } switch { case v.preRelease == "" && other.preRelease != "": return 1 case v.preRelease != "" && other.preRelease == "": return -1 case v.preRelease == other.preRelease: // includes case where both are "" return 0 } vPR := strings.Split(v.preRelease, ".") oPR := strings.Split(other.preRelease, ".") for i := 0; i < len(vPR) && i < len(oPR); i++ { vNum, err := strconv.ParseUint(vPR[i], 10, 0) if err == nil { oNum, err := strconv.ParseUint(oPR[i], 10, 0) if err == nil { switch { case oNum < vNum: return 1 case oNum > vNum: return -1 default: continue } } } if oPR[i] < vPR[i] { return 1 } else if oPR[i] > vPR[i] { return -1 } } switch { case len(oPR) < len(vPR): return 1 case len(oPR) > len(vPR): return -1 } return 0 } // returns false if array contain any non-zero element func onlyZeros(array []uint) bool { for _, num := range array { if num != 0 { return false } } return true } // AtLeast tests if a version is at least equal to a given minimum version. If both // Versions are Semantic Versions, this will use the Semantic Version comparison // algorithm. Otherwise, it will compare only the numeric components, with non-present // components being considered "0" (ie, "1.4" is equal to "1.4.0"). func (v *Version) AtLeast(min *Version) bool { return v.compareInternal(min) != -1 } // LessThan tests if a version is less than a given version. (It is exactly the opposite // of AtLeast, for situations where asking "is v too old?" makes more sense than asking // "is v new enough?".) func (v *Version) LessThan(other *Version) bool { return v.compareInternal(other) == -1 } // Compare compares v against a version string (which will be parsed as either Semantic // or non-Semantic depending on v). On success it returns -1 if v is less than other, 1 if // it is greater than other, or 0 if they are equal. func (v *Version) Compare(other string) (int, error) { ov, err := parse(other, v.semver) if err != nil { return 0, err } return v.compareInternal(ov), nil } kubernetes-sigs-kind-49aeee6/pkg/internal/version/version_test.go000066400000000000000000000277161524365506300254360ustar00rootroot00000000000000/* Copyright 2016 The Kubernetes Authors. 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 version import ( "fmt" "reflect" "testing" ) type testItem struct { version string unparsed string equalsPrev bool } func testOne(v *Version, item, prev testItem) error { str := v.String() if item.unparsed == "" { if str != item.version { return fmt.Errorf("bad round-trip: %q -> %q", item.version, str) } } else { if str != item.unparsed { return fmt.Errorf("bad unparse: %q -> %q, expected %q", item.version, str, item.unparsed) } } if prev.version != "" { cmp, err := v.Compare(prev.version) if err != nil { return fmt.Errorf("unexpected parse error: %v", err) } rv, err := parse(prev.version, v.semver) if err != nil { return fmt.Errorf("unexpected parse error: %v", err) } rcmp, err := rv.Compare(item.version) if err != nil { return fmt.Errorf("unexpected parse error: %v", err) } switch { case cmp == -1: return fmt.Errorf("unexpected ordering %q < %q", item.version, prev.version) case cmp == 0 && !item.equalsPrev: return fmt.Errorf("unexpected comparison %q == %q", item.version, prev.version) case cmp == 1 && item.equalsPrev: return fmt.Errorf("unexpected comparison %q != %q", item.version, prev.version) case cmp != -rcmp: return fmt.Errorf("unexpected reverse comparison %q <=> %q %v %v %v %v", item.version, prev.version, cmp, rcmp, v.Components(), rv.Components()) } } return nil } func TestSemanticVersions(t *testing.T) { tests := []testItem{ // This is every version string that appears in the 2.0 semver spec, // sorted in strictly increasing order except as noted. {version: "0.1.0"}, {version: "1.0.0-0.3.7"}, {version: "1.0.0-alpha"}, {version: "1.0.0-alpha+001", equalsPrev: true}, {version: "1.0.0-alpha.1"}, {version: "1.0.0-alpha.beta"}, {version: "1.0.0-beta"}, {version: "1.0.0-beta+exp.sha.5114f85", equalsPrev: true}, {version: "1.0.0-beta.2"}, {version: "1.0.0-beta.11"}, {version: "1.0.0-rc.1"}, {version: "1.0.0-x.7.z.92"}, {version: "1.0.0"}, {version: "1.0.0+20130313144700", equalsPrev: true}, {version: "1.8.0-alpha.3"}, {version: "1.8.0-alpha.3.673+73326ef01d2d7c"}, {version: "1.9.0"}, {version: "1.10.0"}, {version: "1.11.0"}, {version: "2.0.0"}, {version: "2.1.0"}, {version: "2.1.1"}, {version: "42.0.0"}, // We also allow whitespace and "v" prefix {version: " 42.0.0", unparsed: "42.0.0", equalsPrev: true}, {version: "\t42.0.0 ", unparsed: "42.0.0", equalsPrev: true}, {version: "43.0.0-1", unparsed: "43.0.0-1"}, {version: "43.0.0-1 ", unparsed: "43.0.0-1", equalsPrev: true}, {version: "v43.0.0-1", unparsed: "43.0.0-1", equalsPrev: true}, {version: " v43.0.0", unparsed: "43.0.0"}, {version: " 43.0.0 ", unparsed: "43.0.0", equalsPrev: true}, } var prev testItem for _, item := range tests { v, err := ParseSemantic(item.version) if err != nil { t.Errorf("unexpected parse error: %v", err) continue } err = testOne(v, item, prev) if err != nil { t.Errorf("%v", err) } prev = item } } func TestBadSemanticVersions(t *testing.T) { tests := []string{ // "MUST take the form X.Y.Z" "1", "1.2", "1.2.3.4", ".2.3", "1..3", "1.2.", "", "..", // "where X, Y, and Z are non-negative integers" "-1.2.3", "1.-2.3", "1.2.-3", "1a.2.3", "1.2a.3", "1.2.3a", "a1.2.3", "a.b.c", "1 .2.3", "1. 2.3", // "and MUST NOT contain leading zeroes." "01.2.3", "1.02.3", "1.2.03", // "[pre-release] identifiers MUST comprise only ASCII alphanumerics and hyphen" "1.2.3-/", // "[pre-release] identifiers MUST NOT be empty" "1.2.3-", "1.2.3-.", "1.2.3-foo.", "1.2.3-.foo", // "Numeric [pre-release] identifiers MUST NOT include leading zeroes" "1.2.3-01", // "[build metadata] identifiers MUST comprise only ASCII alphanumerics and hyphen" "1.2.3+/", // "[build metadata] identifiers MUST NOT be empty" "1.2.3+", "1.2.3+.", "1.2.3+foo.", "1.2.3+.foo", // whitespace/"v"-prefix checks "v 1.2.3", "vv1.2.3", } for i := range tests { _, err := ParseSemantic(tests[i]) if err == nil { t.Errorf("unexpected success parsing invalid semver %q", tests[i]) } } } func TestGenericVersions(t *testing.T) { tests := []testItem{ // This is all of the strings from TestSemanticVersions, plus some strings // from TestBadSemanticVersions that should parse as generic versions, // plus some additional strings. {version: "0.1.0", unparsed: "0.1.0"}, {version: "1.0.0-0.3.7", unparsed: "1.0.0"}, {version: "1.0.0-alpha", unparsed: "1.0.0", equalsPrev: true}, {version: "1.0.0-alpha+001", unparsed: "1.0.0", equalsPrev: true}, {version: "1.0.0-alpha.1", unparsed: "1.0.0", equalsPrev: true}, {version: "1.0.0-alpha.beta", unparsed: "1.0.0", equalsPrev: true}, {version: "1.0.0.beta", unparsed: "1.0.0", equalsPrev: true}, {version: "1.0.0-beta+exp.sha.5114f85", unparsed: "1.0.0", equalsPrev: true}, {version: "1.0.0.beta.2", unparsed: "1.0.0", equalsPrev: true}, {version: "1.0.0.beta.11", unparsed: "1.0.0", equalsPrev: true}, {version: "1.0.0.rc.1", unparsed: "1.0.0", equalsPrev: true}, {version: "1.0.0-x.7.z.92", unparsed: "1.0.0", equalsPrev: true}, {version: "1.0.0", unparsed: "1.0.0", equalsPrev: true}, {version: "1.0.0+20130313144700", unparsed: "1.0.0", equalsPrev: true}, {version: "1.2", unparsed: "1.2"}, {version: "1.2a.3", unparsed: "1.2", equalsPrev: true}, {version: "1.2.3", unparsed: "1.2.3"}, {version: "1.2.3.0", unparsed: "1.2.3.0", equalsPrev: true}, {version: "1.2.3a", unparsed: "1.2.3", equalsPrev: true}, {version: "1.2.3-foo.", unparsed: "1.2.3", equalsPrev: true}, {version: "1.2.3-.foo", unparsed: "1.2.3", equalsPrev: true}, {version: "1.2.3-01", unparsed: "1.2.3", equalsPrev: true}, {version: "1.2.3+", unparsed: "1.2.3", equalsPrev: true}, {version: "1.2.3+foo.", unparsed: "1.2.3", equalsPrev: true}, {version: "1.2.3+.foo", unparsed: "1.2.3", equalsPrev: true}, {version: "1.02.3", unparsed: "1.2.3", equalsPrev: true}, {version: "1.2.03", unparsed: "1.2.3", equalsPrev: true}, {version: "1.2.003", unparsed: "1.2.3", equalsPrev: true}, {version: "1.2.3.4", unparsed: "1.2.3.4"}, {version: "1.2.3.4b3", unparsed: "1.2.3.4", equalsPrev: true}, {version: "1.2.3.4.5", unparsed: "1.2.3.4.5"}, {version: "1.9.0", unparsed: "1.9.0"}, {version: "1.9.0.0.0.0.0.0", unparsed: "1.9.0.0.0.0.0.0", equalsPrev: true}, {version: "1.10.0", unparsed: "1.10.0"}, {version: "1.11.0", unparsed: "1.11.0"}, {version: "1.11.0.0.5", unparsed: "1.11.0.0.5"}, {version: "2.0.0", unparsed: "2.0.0"}, {version: "2.1.0", unparsed: "2.1.0"}, {version: "2.1.1", unparsed: "2.1.1"}, {version: "42.0.0", unparsed: "42.0.0"}, {version: " 42.0.0", unparsed: "42.0.0", equalsPrev: true}, {version: "\t42.0.0 ", unparsed: "42.0.0", equalsPrev: true}, {version: "42.0.0-1", unparsed: "42.0.0", equalsPrev: true}, {version: "42.0.0-1 ", unparsed: "42.0.0", equalsPrev: true}, {version: "v42.0.0-1", unparsed: "42.0.0", equalsPrev: true}, {version: " v43.0.0", unparsed: "43.0.0"}, {version: " 43.0.0 ", unparsed: "43.0.0", equalsPrev: true}, } var prev testItem for _, item := range tests { v, err := ParseGeneric(item.version) if err != nil { t.Errorf("unexpected parse error: %v", err) continue } err = testOne(v, item, prev) if err != nil { t.Errorf("%v", err) } prev = item } } func TestBadGenericVersions(t *testing.T) { tests := []string{ "1", "01.2.3", "-1.2.3", "1.-2.3", ".2.3", "1..3", "1a.2.3", "a1.2.3", "1 .2.3", "1. 2.3", "1.bob", "bob", "v 1.2.3", "vv1.2.3", "", ".", } for i := range tests { _, err := ParseGeneric(tests[i]) if err == nil { t.Errorf("unexpected success parsing invalid version %q", tests[i]) } } } func TestComponents(t *testing.T) { var tests = []struct { version string semver bool expectedComponents []uint expectedMajor uint expectedMinor uint expectedPatch uint expectedPreRelease string expectedBuildMetadata string }{ { version: "1.0.2", semver: true, expectedComponents: []uint{1, 0, 2}, expectedMajor: 1, expectedMinor: 0, expectedPatch: 2, }, { version: "1.0.2-alpha+001", semver: true, expectedComponents: []uint{1, 0, 2}, expectedMajor: 1, expectedMinor: 0, expectedPatch: 2, expectedPreRelease: "alpha", expectedBuildMetadata: "001", }, { version: "1.2", semver: false, expectedComponents: []uint{1, 2}, expectedMajor: 1, expectedMinor: 2, }, { version: "1.0.2-beta+exp.sha.5114f85", semver: true, expectedComponents: []uint{1, 0, 2}, expectedMajor: 1, expectedMinor: 0, expectedPatch: 2, expectedPreRelease: "beta", expectedBuildMetadata: "exp.sha.5114f85", }, } for _, test := range tests { version, _ := parse(test.version, test.semver) if !reflect.DeepEqual(test.expectedComponents, version.Components()) { t.Error("parse returned un'expected components") } if test.expectedMajor != version.Major() { t.Errorf("parse returned version.Major %d, expected %d", test.expectedMajor, version.Major()) } if test.expectedMinor != version.Minor() { t.Errorf("parse returned version.Minor %d, expected %d", test.expectedMinor, version.Minor()) } if test.expectedPatch != version.Patch() { t.Errorf("parse returned version.Patch %d, expected %d", test.expectedPatch, version.Patch()) } if test.expectedPreRelease != version.PreRelease() { t.Errorf("parse returned version.PreRelease %s, expected %s", test.expectedPreRelease, version.PreRelease()) } if test.expectedBuildMetadata != version.BuildMetadata() { t.Errorf("parse returned version.BuildMetadata %s, expected %s", test.expectedBuildMetadata, version.BuildMetadata()) } } } func TestVersion_LessThan_AtLeast(t *testing.T) { tests := []struct { name string version string lessThan string want bool }{ { name: "same version", version: "1.21.1", lessThan: "1.21.1", want: false, }, { name: "one patch less", version: "1.21.1", lessThan: "1.21.2", want: true, }, { name: "one patch greater", version: "1.21.3", lessThan: "1.21.2", want: false, }, { name: "one patch less but one minor more", version: "1.22.1", lessThan: "1.21.2", want: false, }, { name: "one patch greater but one minor less", version: "1.20.3", lessThan: "1.21.2", want: true, }, { name: "same version against prerelease", version: "v1.24.0", lessThan: "v1.24.0-beta.0.115+65178fec72df62", want: false, }, { name: "prerelease against same version", version: "v1.24.0-beta.0.115+65178fec72df62", lessThan: "v1.24.0", want: true, }, { name: "prerelease against same version considering prereleases", version: "v1.24.0-beta.0.115+65178fec72df62", lessThan: "v1.24.0-0", want: false, }, } for _, tt := range tests { t.Run(tt.name, func(t *testing.T) { v := MustParseSemantic(tt.version) if got := v.LessThan(MustParseSemantic(tt.lessThan)); got != tt.want { t.Errorf("Version.LessThan() = %v, want %v", got, tt.want) } if got := v.AtLeast(MustParseSemantic(tt.lessThan)); got == tt.want { t.Errorf("Version.AtLeast() = %v, want %v", got, tt.want) } }) } } kubernetes-sigs-kind-49aeee6/pkg/log/000077500000000000000000000000001524365506300176265ustar00rootroot00000000000000kubernetes-sigs-kind-49aeee6/pkg/log/doc.go000066400000000000000000000013101524365506300207150ustar00rootroot00000000000000/* Copyright 2019 The Kubernetes Authors. 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 log defines a logging interface that kind uses // This is roughly a minimal subset of klog github.com/kubernetes/klog package log kubernetes-sigs-kind-49aeee6/pkg/log/noop.go000066400000000000000000000032471524365506300211360ustar00rootroot00000000000000/* Copyright 2019 The Kubernetes Authors. 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 log // NoopLogger implements the Logger interface and never logs anything type NoopLogger struct{} // Warn meets the Logger interface but does nothing func (n NoopLogger) Warn(message string) {} // Warnf meets the Logger interface but does nothing func (n NoopLogger) Warnf(format string, args ...interface{}) {} // Error meets the Logger interface but does nothing func (n NoopLogger) Error(message string) {} // Errorf meets the Logger interface but does nothing func (n NoopLogger) Errorf(format string, args ...interface{}) {} // V meets the Logger interface but does nothing func (n NoopLogger) V(level Level) InfoLogger { return NoopInfoLogger{} } // NoopInfoLogger implements the InfoLogger interface and never logs anything type NoopInfoLogger struct{} // Enabled meets the InfoLogger interface but always returns false func (n NoopInfoLogger) Enabled() bool { return false } // Info meets the InfoLogger interface but does nothing func (n NoopInfoLogger) Info(message string) {} // Infof meets the InfoLogger interface but does nothing func (n NoopInfoLogger) Infof(format string, args ...interface{}) {} kubernetes-sigs-kind-49aeee6/pkg/log/types.go000066400000000000000000000046431524365506300213300ustar00rootroot00000000000000/* Copyright 2019 The Kubernetes Authors. 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 log // Level is a verbosity logging level for Info logs // See also https://github.com/kubernetes/klog type Level int32 // Logger defines the logging interface kind uses // It is roughly a subset of github.com/kubernetes/klog type Logger interface { // Warn should be used to write user facing warnings Warn(message string) // Warnf should be used to write Printf style user facing warnings Warnf(format string, args ...interface{}) // Error may be used to write an error message when it occurs // Prefer returning an error instead in most cases Error(message string) // Errorf may be used to write a Printf style error message when it occurs // Prefer returning an error instead in most cases Errorf(format string, args ...interface{}) // V() returns an InfoLogger for a given verbosity Level // // Normal verbosity levels: // V(0): normal user facing messages go to V(0) // V(1): debug messages start when V(N > 0), these should be high level // V(2): more detailed log messages // V(3+): trace level logging, in increasing "noisiness" ... allowing // arbitrarily detailed logging at extremely low cost unless the // logger has actually been configured to display these (E.G. via the -v // command line flag) // // It is expected that the returned InfoLogger will be extremely cheap // to interact with for a Level greater than the enabled level V(Level) InfoLogger } // InfoLogger defines the info logging interface kind uses // It is roughly a subset of Verbose from github.com/kubernetes/klog type InfoLogger interface { // Info is used to write a user facing status message // // See: Logger.V Info(message string) // Infof is used to write a Printf style user facing status message Infof(format string, args ...interface{}) // Enabled should return true if this verbosity level is enabled // on the Logger // // See: Logger.V Enabled() bool } kubernetes-sigs-kind-49aeee6/site/000077500000000000000000000000001524365506300172305ustar00rootroot00000000000000kubernetes-sigs-kind-49aeee6/site/.gitignore000066400000000000000000000000451524365506300212170ustar00rootroot00000000000000public/* resources/* .hugo_build.lockkubernetes-sigs-kind-49aeee6/site/LICENSE000066400000000000000000000443271524365506300202470ustar00rootroot00000000000000Attribution 4.0 International ======================================================================= Creative Commons Corporation ("Creative Commons") is not a law firm and does not provide legal services or legal advice. Distribution of Creative Commons public licenses does not create a lawyer-client or other relationship. Creative Commons makes its licenses and related information available on an "as-is" basis. Creative Commons gives no warranties regarding its licenses, any material licensed under their terms and conditions, or any related information. Creative Commons disclaims all liability for damages resulting from their use to the fullest extent possible. Using Creative Commons Public Licenses Creative Commons public licenses provide a standard set of terms and conditions that creators and other rights holders may use to share original works of authorship and other material subject to copyright and certain other rights specified in the public license below. The following considerations are for informational purposes only, are not exhaustive, and do not form part of our licenses. Considerations for licensors: Our public licenses are intended for use by those authorized to give the public permission to use material in ways otherwise restricted by copyright and certain other rights. Our licenses are irrevocable. Licensors should read and understand the terms and conditions of the license they choose before applying it. Licensors should also secure all rights necessary before applying our licenses so that the public can reuse the material as expected. Licensors should clearly mark any material not subject to the license. This includes other CC- licensed material, or material used under an exception or limitation to copyright. More considerations for licensors: wiki.creativecommons.org/Considerations_for_licensors Considerations for the public: By using one of our public licenses, a licensor grants the public permission to use the licensed material under specified terms and conditions. If the licensor's permission is not necessary for any reason--for example, because of any applicable exception or limitation to copyright--then that use is not regulated by the license. Our licenses grant only permissions under copyright and certain other rights that a licensor has authority to grant. Use of the licensed material may still be restricted for other reasons, including because others have copyright or other rights in the material. A licensor may make special requests, such as asking that all changes be marked or described. Although not required by our licenses, you are encouraged to respect those requests where reasonable. More_considerations for the public: wiki.creativecommons.org/Considerations_for_licensees ======================================================================= Creative Commons Attribution 4.0 International Public License By exercising the Licensed Rights (defined below), You accept and agree to be bound by the terms and conditions of this Creative Commons Attribution 4.0 International Public License ("Public License"). To the extent this Public License may be interpreted as a contract, You are granted the Licensed Rights in consideration of Your acceptance of these terms and conditions, and the Licensor grants You such rights in consideration of benefits the Licensor receives from making the Licensed Material available under these terms and conditions. Section 1 -- Definitions. a. Adapted Material means material subject to Copyright and Similar Rights that is derived from or based upon the Licensed Material and in which the Licensed Material is translated, altered, arranged, transformed, or otherwise modified in a manner requiring permission under the Copyright and Similar Rights held by the Licensor. For purposes of this Public License, where the Licensed Material is a musical work, performance, or sound recording, Adapted Material is always produced where the Licensed Material is synched in timed relation with a moving image. b. Adapter's License means the license You apply to Your Copyright and Similar Rights in Your contributions to Adapted Material in accordance with the terms and conditions of this Public License. c. Copyright and Similar Rights means copyright and/or similar rights closely related to copyright including, without limitation, performance, broadcast, sound recording, and Sui Generis Database Rights, without regard to how the rights are labeled or categorized. For purposes of this Public License, the rights specified in Section 2(b)(1)-(2) are not Copyright and Similar Rights. d. Effective Technological Measures means those measures that, in the absence of proper authority, may not be circumvented under laws fulfilling obligations under Article 11 of the WIPO Copyright Treaty adopted on December 20, 1996, and/or similar international agreements. e. Exceptions and Limitations means fair use, fair dealing, and/or any other exception or limitation to Copyright and Similar Rights that applies to Your use of the Licensed Material. f. Licensed Material means the artistic or literary work, database, or other material to which the Licensor applied this Public License. g. Licensed Rights means the rights granted to You subject to the terms and conditions of this Public License, which are limited to all Copyright and Similar Rights that apply to Your use of the Licensed Material and that the Licensor has authority to license. h. Licensor means the individual(s) or entity(ies) granting rights under this Public License. i. Share means to provide material to the public by any means or process that requires permission under the Licensed Rights, such as reproduction, public display, public performance, distribution, dissemination, communication, or importation, and to make material available to the public including in ways that members of the public may access the material from a place and at a time individually chosen by them. j. Sui Generis Database Rights means rights other than copyright resulting from Directive 96/9/EC of the European Parliament and of the Council of 11 March 1996 on the legal protection of databases, as amended and/or succeeded, as well as other essentially equivalent rights anywhere in the world. k. You means the individual or entity exercising the Licensed Rights under this Public License. Your has a corresponding meaning. Section 2 -- Scope. a. License grant. 1. Subject to the terms and conditions of this Public License, the Licensor hereby grants You a worldwide, royalty-free, non-sublicensable, non-exclusive, irrevocable license to exercise the Licensed Rights in the Licensed Material to: a. reproduce and Share the Licensed Material, in whole or in part; and b. produce, reproduce, and Share Adapted Material. 2. Exceptions and Limitations. For the avoidance of doubt, where Exceptions and Limitations apply to Your use, this Public License does not apply, and You do not need to comply with its terms and conditions. 3. Term. The term of this Public License is specified in Section 6(a). 4. Media and formats; technical modifications allowed. The Licensor authorizes You to exercise the Licensed Rights in all media and formats whether now known or hereafter created, and to make technical modifications necessary to do so. The Licensor waives and/or agrees not to assert any right or authority to forbid You from making technical modifications necessary to exercise the Licensed Rights, including technical modifications necessary to circumvent Effective Technological Measures. For purposes of this Public License, simply making modifications authorized by this Section 2(a) (4) never produces Adapted Material. 5. Downstream recipients. a. Offer from the Licensor -- Licensed Material. Every recipient of the Licensed Material automatically receives an offer from the Licensor to exercise the Licensed Rights under the terms and conditions of this Public License. b. No downstream restrictions. You may not offer or impose any additional or different terms or conditions on, or apply any Effective Technological Measures to, the Licensed Material if doing so restricts exercise of the Licensed Rights by any recipient of the Licensed Material. 6. No endorsement. Nothing in this Public License constitutes or may be construed as permission to assert or imply that You are, or that Your use of the Licensed Material is, connected with, or sponsored, endorsed, or granted official status by, the Licensor or others designated to receive attribution as provided in Section 3(a)(1)(A)(i). b. Other rights. 1. Moral rights, such as the right of integrity, are not licensed under this Public License, nor are publicity, privacy, and/or other similar personality rights; however, to the extent possible, the Licensor waives and/or agrees not to assert any such rights held by the Licensor to the limited extent necessary to allow You to exercise the Licensed Rights, but not otherwise. 2. Patent and trademark rights are not licensed under this Public License. 3. To the extent possible, the Licensor waives any right to collect royalties from You for the exercise of the Licensed Rights, whether directly or through a collecting society under any voluntary or waivable statutory or compulsory licensing scheme. In all other cases the Licensor expressly reserves any right to collect such royalties. Section 3 -- License Conditions. Your exercise of the Licensed Rights is expressly made subject to the following conditions. a. Attribution. 1. If You Share the Licensed Material (including in modified form), You must: a. retain the following if it is supplied by the Licensor with the Licensed Material: i. identification of the creator(s) of the Licensed Material and any others designated to receive attribution, in any reasonable manner requested by the Licensor (including by pseudonym if designated); ii. a copyright notice; iii. a notice that refers to this Public License; iv. a notice that refers to the disclaimer of warranties; v. a URI or hyperlink to the Licensed Material to the extent reasonably practicable; b. indicate if You modified the Licensed Material and retain an indication of any previous modifications; and c. indicate the Licensed Material is licensed under this Public License, and include the text of, or the URI or hyperlink to, this Public License. 2. You may satisfy the conditions in Section 3(a)(1) in any reasonable manner based on the medium, means, and context in which You Share the Licensed Material. For example, it may be reasonable to satisfy the conditions by providing a URI or hyperlink to a resource that includes the required information. 3. If requested by the Licensor, You must remove any of the information required by Section 3(a)(1)(A) to the extent reasonably practicable. 4. If You Share Adapted Material You produce, the Adapter's License You apply must not prevent recipients of the Adapted Material from complying with this Public License. Section 4 -- Sui Generis Database Rights. Where the Licensed Rights include Sui Generis Database Rights that apply to Your use of the Licensed Material: a. for the avoidance of doubt, Section 2(a)(1) grants You the right to extract, reuse, reproduce, and Share all or a substantial portion of the contents of the database; b. if You include all or a substantial portion of the database contents in a database in which You have Sui Generis Database Rights, then the database in which You have Sui Generis Database Rights (but not its individual contents) is Adapted Material; and c. You must comply with the conditions in Section 3(a) if You Share all or a substantial portion of the contents of the database. For the avoidance of doubt, this Section 4 supplements and does not replace Your obligations under this Public License where the Licensed Rights include other Copyright and Similar Rights. Section 5 -- Disclaimer of Warranties and Limitation of Liability. a. UNLESS OTHERWISE SEPARATELY UNDERTAKEN BY THE LICENSOR, TO THE EXTENT POSSIBLE, THE LICENSOR OFFERS THE LICENSED MATERIAL AS-IS AND AS-AVAILABLE, AND MAKES NO REPRESENTATIONS OR WARRANTIES OF ANY KIND CONCERNING THE LICENSED MATERIAL, WHETHER EXPRESS, IMPLIED, STATUTORY, OR OTHER. THIS INCLUDES, WITHOUT LIMITATION, WARRANTIES OF TITLE, MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE, NON-INFRINGEMENT, ABSENCE OF LATENT OR OTHER DEFECTS, ACCURACY, OR THE PRESENCE OR ABSENCE OF ERRORS, WHETHER OR NOT KNOWN OR DISCOVERABLE. WHERE DISCLAIMERS OF WARRANTIES ARE NOT ALLOWED IN FULL OR IN PART, THIS DISCLAIMER MAY NOT APPLY TO YOU. b. TO THE EXTENT POSSIBLE, IN NO EVENT WILL THE LICENSOR BE LIABLE TO YOU ON ANY LEGAL THEORY (INCLUDING, WITHOUT LIMITATION, NEGLIGENCE) OR OTHERWISE FOR ANY DIRECT, SPECIAL, INDIRECT, INCIDENTAL, CONSEQUENTIAL, PUNITIVE, EXEMPLARY, OR OTHER LOSSES, COSTS, EXPENSES, OR DAMAGES ARISING OUT OF THIS PUBLIC LICENSE OR USE OF THE LICENSED MATERIAL, EVEN IF THE LICENSOR HAS BEEN ADVISED OF THE POSSIBILITY OF SUCH LOSSES, COSTS, EXPENSES, OR DAMAGES. WHERE A LIMITATION OF LIABILITY IS NOT ALLOWED IN FULL OR IN PART, THIS LIMITATION MAY NOT APPLY TO YOU. c. The disclaimer of warranties and limitation of liability provided above shall be interpreted in a manner that, to the extent possible, most closely approximates an absolute disclaimer and waiver of all liability. Section 6 -- Term and Termination. a. This Public License applies for the term of the Copyright and Similar Rights licensed here. However, if You fail to comply with this Public License, then Your rights under this Public License terminate automatically. b. Where Your right to use the Licensed Material has terminated under Section 6(a), it reinstates: 1. automatically as of the date the violation is cured, provided it is cured within 30 days of Your discovery of the violation; or 2. upon express reinstatement by the Licensor. For the avoidance of doubt, this Section 6(b) does not affect any right the Licensor may have to seek remedies for Your violations of this Public License. c. For the avoidance of doubt, the Licensor may also offer the Licensed Material under separate terms or conditions or stop distributing the Licensed Material at any time; however, doing so will not terminate this Public License. d. Sections 1, 5, 6, 7, and 8 survive termination of this Public License. Section 7 -- Other Terms and Conditions. a. The Licensor shall not be bound by any additional or different terms or conditions communicated by You unless expressly agreed. b. Any arrangements, understandings, or agreements regarding the Licensed Material not stated herein are separate from and independent of the terms and conditions of this Public License. Section 8 -- Interpretation. a. For the avoidance of doubt, this Public License does not, and shall not be interpreted to, reduce, limit, restrict, or impose conditions on any use of the Licensed Material that could lawfully be made without permission under this Public License. b. To the extent possible, if any provision of this Public License is deemed unenforceable, it shall be automatically reformed to the minimum extent necessary to make it enforceable. If the provision cannot be reformed, it shall be severed from this Public License without affecting the enforceability of the remaining terms and conditions. c. No term or condition of this Public License will be waived and no failure to comply consented to unless expressly agreed to by the Licensor. d. Nothing in this Public License constitutes or may be interpreted as a limitation upon, or waiver of, any privileges and immunities that apply to the Licensor or You, including from the legal processes of any jurisdiction or authority. ======================================================================= Creative Commons is not a party to its public licenses. Notwithstanding, Creative Commons may elect to apply one of its public licenses to material it publishes and in those instances will be considered the "Licensor." The text of the Creative Commons public licenses is dedicated to the public domain under the CC0 Public Domain Dedication. Except for the limited purpose of indicating that material is shared under a Creative Commons public license or as otherwise permitted by the Creative Commons policies published at creativecommons.org/policies, Creative Commons does not authorize the use of the trademark "Creative Commons" or any other trademark or logo of Creative Commons without its prior written consent including, without limitation, in connection with any unauthorized modifications to any of its public licenses or any other arrangements, understandings, or agreements concerning use of licensed material. For the avoidance of doubt, this paragraph does not form part of the public licenses. Creative Commons may be contacted at creativecommons.org. kubernetes-sigs-kind-49aeee6/site/Makefile000066400000000000000000000020531524365506300206700ustar00rootroot00000000000000REPO_ROOT:=${CURDIR}/.. # setup go for managing hugo PATH:=$(shell cd $(REPO_ROOT) && . hack/build/setup-go.sh && echo "$${PATH}") # go1.9+ can autodetect GOROOT, but if some other tool sets it ... GOROOT:= # enable modules GO111MODULE=on # disable CGO by default for static binaries CGO_ENABLED=0 export PATH GOROOT GO111MODULE CGO_ENABLED # work around broken PATH export SPACE:=$(subst ,, ) SHELL:=env PATH=$(subst $(SPACE),\$(SPACE),$(PATH)) $(SHELL) # from https://github.com/kubernetes/website/blob/master/Makefile DOCKER = docker HUGO_VERSION = 0.60.0 DOCKER_IMAGE = jojomi/hugo:$(HUGO_VERSION) DOCKER_RUN = $(DOCKER) run --rm --interactive --tty --volume $(realpath $(CURDIR)/..):/src -p 1313:1313 --workdir /src/site --entrypoint=hugo --platform linux/amd64 $(DOCKER_IMAGE) HUGO_BIN:=$(REPO_ROOT)/bin/hugo $(HUGO_BIN): go build -o $(HUGO_BIN) github.com/gohugoio/hugo hugo: $(HUGO_BIN) serve: hugo $(HUGO_BIN) server --bind="0.0.0.0" \ --ignoreCache \ --buildFuture \ --disableFastRender build: hugo $(HUGO_BIN) .PHONY: build serve hugo kubernetes-sigs-kind-49aeee6/site/README.md000066400000000000000000000003221524365506300205040ustar00rootroot00000000000000# kind's docs kind's docs are built with [hugo], and can be browsed live at https://kind.sigs.k8s.io/ To browse them locally, install hugo and run `make serve` from this directory. [hugo]: https://gohugo.io kubernetes-sigs-kind-49aeee6/site/assets/000077500000000000000000000000001524365506300205325ustar00rootroot00000000000000kubernetes-sigs-kind-49aeee6/site/assets/css/000077500000000000000000000000001524365506300213225ustar00rootroot00000000000000kubernetes-sigs-kind-49aeee6/site/assets/css/inline.css000066400000000000000000000156761524365506300233310ustar00rootroot00000000000000html { width: 100%; font-size: 18px; line-height: 1; -webkit-font-smoothing: antialiased !important; -moz-osx-font-smoothing: grayscale !important; text-rendering: optimizeLegibility !important; -webkit-tap-highlight-color: transparent; height: 100%; min-height: 100%; margin: 0; padding: 0; font-size: 100%; background-color: #326ce5; color: white; font-family: -apple-system, BlinkMacSystemFont, Roboto, Droid Sans, Helvetica Neue, Helvetica, Arial, sans-serif, Apple Color Emoji, Segoe UI Emoji, Segoe UI Symbol, Noto Color Emoji; } code, pre { font-family: SFMono-Regular, Consolas, Liberation Mono, Menlo, Roboto Mono, Courier, monospace; } body { width: 100%; margin: 0; padding: 0; font-size: 18px; line-height: 1.5; min-height: 100%; /* sticky footer */ display: flex; flex-direction: column; color: black; background-color: white; } #wrapper { background-color: white; max-width: 100%; clear: both; overflow-x: hidden; flex: 1 0 auto; margin: 0; margin-left: 240px; } .sidebar-collapsed #wrapper { margin-left: 0; } #content, #footer-content { margin: 0 auto; padding: 0 1em; width: calc(100% - 2em); max-width: 40em; } #footer { background: #326ce5; color: white; padding: 1em; margin-top: 1em; border-top: .1em solid rgba(0, 0, 0, 0.1); } #footer a { color: white; } /* page footer*/ .footer { text-align: center; } .footer>* { font-size: .8em; line-height: 1.4; } #content { /* clear navbar */ padding-top: 1.5em; /* push down footer */ min-height: calc(100vh - 4em); } #navbar { position: fixed; top: 0; width: calc(100% - 240px); padding: 2px 0; margin-left: .1em; /*background-color: #326ce5;*/ background-color: #326ce5; border-bottom: .1em solid rgba(0, 0, 0, 0.1); display: flex; justify-content: space-between; z-index: 99999; } .sidebar-collapsed #navbar { width: 100%; margin-left: 0; } #navbar-title>a { font-weight: bold; font-size: 1.2em; padding: 0 4px; vertical-align: middle; } #navbar-title>a, #github>a { text-decoration: none; color: white; } #navbar>#github { filter: invert(1); } #sidebar-toggle { color: white; cursor: pointer; padding: .1em .5em; padding-bottom: 0; user-select: none; } #github { padding: 0 .5em; } #github img { height: 1.4em; width: 1.4em; vertical-align: middle; } #noticebar { padding: 1.5em; padding-top: 2em; padding-bottom: 1em; margin-bottom: -1.5em; border-bottom: .1em solid rgba(0, 0, 0, 0.1); } #noticebar>* { max-width: 46rem; margin-left: auto; margin-right: auto; margin-block-end: 0; margin-block-start: 0.25em; } #sidebar { height: 100%; position: fixed; display: flex; flex-direction: column; width: 240px; border-right: .1em solid rgba(0, 0, 0, 0.1); background-color: #fafafa; z-index: 99999; overflow-y: auto; } .sidebar-collapsed #sidebar { display: none; } #sidebar-logo { padding: 16px 16px; padding-bottom: 10px; } #sidebar-title { display: none; margin-top: -16px; padding-right: 37px; margin-bottom: 10px; text-align: center; text-decoration: none; font-size: 24px; font-weight: bold; } #sidebar li.active-entry :first-child, #sidebar li.active :first-child { font-weight: bold; } #sidebar li.active-entry :first-child { color: black; } /* consistent link color */ a { color: #326be5; } p { margin-block-start: .5em; } h1, h2, h3, h4, h5 { margin-block-start: 1rem; margin-block-end: .25rem; } /* ensure images don't go off the page */ #content img { max-width: 100%; } hr { background: #333; border: 1px solid #333; } /* code block styling */ pre { background-color: #f3f4f4 !important; overflow-x: auto; border-radius: 0; padding: 1em; font-size: 85%; } code { background-color: #f3f4f4; border-radius: 3px; padding: .1em .4em; font-size: 85%; } pre code { background-color: transparent; padding: 0; font-size: 100%; border-radius: 0; } /* inline copyable code snippet styling */ table.includecode { max-width: 100%; width: 100%; table-layout: fixed; border: 1px solid rgba(0, 0, 0, .125); border-spacing: 0; } table.includecode thead th { border-bottom: 1px solid rgba(0, 0, 0, .125); font-weight: normal; font-size: 85%; } table.includecode thead th { text-align: right; } table.includecode thead th a { font-family: monospace; } table.includecode thead th button { vertical-align: middle; background: transparent; border: 0; cursor: pointer; } table.includecode tbody { background: #f3f4f4; } table.includecode pre { margin: 0; } /* don't display this, these are textareas needed to copy to clipboard */ .hidden-copy-text { background: transparent; width: 2em; height: 2em; position: fixed; top: 0; left: 0; } /* heading anchors */ .hanchor { font-size: 100%; visibility: hidden; font-size: .5em; vertical-align: middle; text-decoration: none !important; } h1:hover a, h2:hover a, h3:hover a, h4:hover a { visibility: visible; } #content #TableOfContents ul { margin-block-start: 0; margin-block-end: 0; } #content ul { padding-left: 1.75em; margin-block-start: .5em; margin-block-end: .5em; } #content ul ul { padding-left: 1em; margin-block-start: 0; } #sidebar ul { margin-bottom: 1em; } #sidebar ul ul { padding-left: 1.25em; } .page-description { border-left-color: black; background: #3b4d56; color: white; font-size: 1.2em; line-height: 1.4em; margin-block-start: 0; margin-block-end: 0; } .page-description a { color: #0bd8ec; } .page-description code { color: black; } blockquote { border-left: .5rem solid #326ce4; background: #c9e6ff; color: black; padding: 1em 1.5em; margin-inline-start: 0; margin-inline-end: 0; } blockquote p { margin-block-start: 0.75em; margin-block-end: 0.75em; } /* style video embeds to be full-width in content */ .video-wrapper { position: relative; width: 100%; height: 0; padding-bottom: 56.25%; } .video-wrapper iframe { position: absolute; top: 0; left: 0; width: 100%; height: 100%; } /* mock github labels */ .gh-label { /* mimic github */ display: inline-block; padding: 0 7px; font-size: 12px; font-weight: 500; line-height: 18px; border: 1px solid transparent; border-radius: 2em; background: #bfd4f2; /* additional styling to allow using on a tags */ text-decoration: none; } /* mobile */ @media (max-width: 50em) { #content { font-size: 16px; } #wrapper { margin-left: 0; } #wrapper #navbar { margin-left: 241px; } .sidebar-collapsed #wrapper #navbar { margin-left: 0; } #content ul { padding-left: 1.5em; } } :target::before { content: ""; display: block; height: 2em; margin: -2em 0 0; } /* https://github.com/adityatelange/hugo-PaperMod/issues/828#issuecomment-1171994855 */ /* Fixes iOS font sizing anomaly */ code { text-size-adjust: 100%; -ms-text-size-adjust: 100%; -moz-text-size-adjust: 100%; -webkit-text-size-adjust: 100%; }kubernetes-sigs-kind-49aeee6/site/assets/js/000077500000000000000000000000001524365506300211465ustar00rootroot00000000000000kubernetes-sigs-kind-49aeee6/site/assets/js/inline.js000066400000000000000000000046121524365506300227650ustar00rootroot00000000000000/* used when sidebar is manually toggled */ function toggleSidebar() { if (document.body.classList.contains('sidebar-collapsed')) { window.localStorage.setItem('sidebar-collapsed', 'false'); showSideBar(); } else { window.localStorage.setItem('sidebar-collapsed', 'true'); hideSideBar(); } } function showSideBar() { document.body.classList.remove('sidebar-collapsed'); } function hideSideBar() { document.body.classList.add('sidebar-collapsed'); } /* get the page width */ function getWidth() { return Math.max( document.body.scrollWidth, document.documentElement.scrollWidth, document.body.offsetWidth, document.documentElement.offsetWidth, document.documentElement.clientWidth ); } var oldWidth; document.addEventListener("DOMContentLoaded", function () { // note: the default state of the page on load is collapsed var manualCollapsed = window.localStorage.getItem('sidebar-collapsed'); var width = getWidth(); // if we're now under 900px don't unhide it // otherwise only unhide if the user has not yet manually toggled it // or has toggled it back to visible if (width > 900 && (manualCollapsed == 'false' || manualCollapsed == null)) { showSideBar(); } // setup listener for width change oldWidth = width; window.addEventListener("resize", function () { // bail out early if it wasn't the width that changed var width = getWidth(); if (oldWidth == width) { oldWidth = width; return; } oldWidth = width; // if we're now under 900px, hide it if (width <= 900) { hideSideBar(); } else { // otherwise only unhide if the user has not yet manually toggled it // or has toggled it back to visible var manualCollapsed = window.localStorage.getItem('sidebar-collapsed'); if (manualCollapsed == 'false' || manualCollapsed == null) { showSideBar(); } } }); }); /* used to copy code snippets */ function copyText(elementID) { /* Get the text field */ var elem = document.getElementById(elementID); /* Select the text field */ elem.select(); elem.setSelectionRange(0, 99999); /*For mobile devices*/ /* Copy the text inside the text field */ document.execCommand("copy"); } kubernetes-sigs-kind-49aeee6/site/config.toml000066400000000000000000000026501524365506300213750ustar00rootroot00000000000000title = "kind" baseURL = "https://kind.sigs.k8s.io" languageCode = "en-us" # we use this to disable indexing for the non-production build enableRobotsTXT = true # this allows us to show the source commit in the footer enableGitInfo = true # we don't use these currently disableKinds = ["taxonomy", "taxonomyTerm"] # syntax highlighting options [markup] [markup.highlight] codeFences = true hl_Lines = "" lineNoStart = 1 lineNos = false lineNumbersInTable = true noClasses = true style = "vs" tabWidth = 4 # allow html in markdown [markup.goldmark.renderer] unsafe = true # enable hugo's menu system for the site, name the primary menu sectionPagesMenu = "main" # menu entries [menu] [[menu.main]] identifier = "ome" name = "Home" title = "Home" url = "/" weight = 1 [[menu.main]] identifier = "user" name = "User Guide" title = "User Guide" weight = 2 [[menu.main]] identifier = "design" name = "Design" title = "Design" url = "/docs/design/" weight = 5 [[menu.main]] identifier = "contributing" name = "Contributing" title = "contributing" url = "/docs/contributing/" weight = 6 # enable auto-generated _redirects file [mediaTypes."text/netlify"] delimiter = "" [outputFormats.REDIRECTS] mediaType = "text/netlify" baseName = "_redirects" [outputs] home = ["HTML", "REDIRECTS"] [params] stable = "v0.32.0" # privacy settings [privacy] [privacy.youtube] # enable the cookie-less youtube in built-in hugo shortcode privacyEnhanced = true kubernetes-sigs-kind-49aeee6/site/content/000077500000000000000000000000001524365506300207025ustar00rootroot00000000000000kubernetes-sigs-kind-49aeee6/site/content/_index.md000066400000000000000000000123771524365506300225040ustar00rootroot00000000000000--- title: kind ---

kind

[kind] is a tool for running local Kubernetes clusters using Docker container "nodes". kind was primarily designed for testing Kubernetes itself, but may be used for local development or CI. If you have [go] 1.17+ and [docker], [podman] or [nerdctl] installed `go install sigs.k8s.io/kind@{{< stableVersion >}} && kind create cluster` is all you need! kind consists of: - Go [packages][packages] implementing [cluster creation][cluster package], [image build][build package], etc. - A command line interface ([`kind`][kind cli]) built on these packages. - Docker [image(s)][images] written to run systemd, Kubernetes, etc. - [`kubetest`][kubetest] integration also built on these packages (WIP) kind bootstraps each "node" with [kubeadm][kubeadm]. For more details see [the design documentation][design doc]. **NOTE**: kind is still a work in progress, see the [1.0 roadmap]. ## Installation and usage For more detailed instructions see [the user guide][user guide]. You can install kind with `go install sigs.k8s.io/kind@{{< stableVersion>}}` (for [go] [1.17+][go-supported]). This will put `kind` in `$(go env GOPATH)/bin`. You may need to add that directory to your `$PATH` as shown [here](https://golang.org/doc/code.html#GOPATH) if you encounter the error `kind: command not found` after installation. To use kind, you will also need to [install docker]. Once you have docker running you can create a cluster with: {{< codeFromInline lang="bash" >}} kind create cluster {{< /codeFromInline >}} To delete your cluster use: {{< codeFromInline lang="bash" >}} kind delete cluster {{< /codeFromInline >}} To create a cluster from Kubernetes source: - ensure that Kubernetes is cloned in `$(go env GOPATH)/src/k8s.io/kubernetes` - build a node image and create a cluster with {{< codeFromInline lang="bash" >}} kind build node-image kind create cluster --image kindest/node:latest {{< /codeFromInline >}} Multi-node clusters and other advanced features may be configured with a config file, for more usage see [the user guide][user guide] or run `kind [command] --help` ## Community Please reach out for bugs, feature requests, and other issues! The maintainers of this project are reachable via: - [Kubernetes Slack] in the [#kind] channel - [filing an issue] against this repo - The Kubernetes [SIG-Testing Mailing List] Current maintainers are [@aojea] and [@BenTheElder] -- feel free to reach out directly if you have any questions! Pull Requests are very welcome! If you're planning a new feature, please file an issue to discuss first. Check the [issue tracker] for `help wanted` issues if you're unsure where to start, or feel free to reach out to discuss. 🙂 See also: our own [contributor guide] and the Kubernetes [community page]. ## Why kind? - kind supports multi-node (including HA) clusters - kind supports building Kubernetes release builds from source - support for make / bash or docker, in addition to pre-published builds - kind supports Linux, macOS and Windows - kind is a [CNCF certified conformant Kubernetes installer](https://landscape.cncf.io/?group=projects-and-products&item=platform--certified-kubernetes-installer--kind) ### Code of conduct Participation in the Kubernetes community is governed by the [Kubernetes Code of Conduct]. [kind]: https://sigs.k8s.io/kind [go]: https://golang.org/ [go-supported]: https://golang.org/doc/devel/release.html#policy [docker]: https://www.docker.com/ [podman]: https://podman.io/ [nerdctl]: https://github.com/containerd/nerdctl [community page]: https://kubernetes.io/community/ [Kubernetes Code of Conduct]: https://github.com/kubernetes/community/blob/master/code-of-conduct.md [Go Report Card Badge]: https://goreportcard.com/badge/sigs.k8s.io/kind [Go Report Card]: https://goreportcard.com/report/sigs.k8s.io/kind [conformance tests]: https://github.com/kubernetes/community/blob/master/contributors/devel/sig-architecture/conformance-tests.md [packages]: https://github.com/kubernetes-sigs/kind/tree/main/pkg [cluster package]: https://github.com/kubernetes-sigs/kind/tree/main/pkg/cluster [build package]: https://github.com/kubernetes-sigs/kind/tree/main/pkg/build [kind cli]: https://github.com/kubernetes-sigs/kind/tree/main/main.go [images]: https://github.com/kubernetes-sigs/kind/tree/main/images [kubetest]: https://github.com/kubernetes/test-infra/tree/master/kubetest [kubeadm]: https://kubernetes.io/docs/reference/setup-tools/kubeadm/kubeadm/ [design doc]: ./docs/design/initial [user guide]: ./docs/user/quick-start [SIG-Testing Mailing List]: https://groups.google.com/forum/#!forum/kubernetes-sig-testing [issue tracker]: https://github.com/kubernetes-sigs/kind/issues [filing an issue]: https://github.com/kubernetes-sigs/kind/issues/new [Kubernetes Slack]: https://slack.k8s.io/ [#kind]: https://kubernetes.slack.com/messages/CEKK1KTN2/ [1.0 roadmap]: /docs/contributing/1.0-roadmap [install docker]: https://docs.docker.com/install/ [@BenTheElder]: https://github.com/BenTheElder [@aojea]: https://github.com/aojea [contributor guide]: /docs/contributing/getting-started kubernetes-sigs-kind-49aeee6/site/content/docs/000077500000000000000000000000001524365506300216325ustar00rootroot00000000000000kubernetes-sigs-kind-49aeee6/site/content/docs/contributing/000077500000000000000000000000001524365506300243415ustar00rootroot00000000000000kubernetes-sigs-kind-49aeee6/site/content/docs/contributing/1.0-roadmap.md000066400000000000000000000116631524365506300266110ustar00rootroot00000000000000--- title: "1.0 Roadmap 🗺" menu: main: parent: "contributing" identifier: "1.0-roadmap" weight: 4 toc: true description: |- New year, new roadmap 🎉 This document outlines some goals, non-goals, and future aspirations for kind as a project. --- ## Beta Requirements To reach "beta" [grade][deprecation-policy] kind needs to at minimum: - [x] Improve documentation (Though this will eternally be "In Progress" !) - [X] create a documentation site - [#268] - [x] expand examples of using kind (We can always use more, but we have more of this now) - [x] cover known issues, debugging, work-arounds, etc. - [x] Reliably [pass][kind-conformance-dashboard] the Kubernetes [conformance tests] - [x] [Certify][certified] Conformance - [x] Support multi-node clusters - [#117] - [x] Support offline / air-gapped clusters - [x] pre-loaded / offline CNI - [#200] - [x] Support mounting host directories - [#62] - [x] Improve Windows support - [x] add Windows binaries to releases - [#155] - [x] improve instructions for KUBECONFIG in particular - [ ] Support usage as a properly versioned, supported, and documented library. This includes following semver without every release being a major / breaking change to the API (which must be extensible without breakage), ensuring the CLI only uses a suitable public library surface, documentation and examples for the library, versioned types for public APIs (E.G. config format), etc. - TODO: what exactly do we want here? Should this really be beta blocking? - [x] should be possible to troubleshoot kind without needing to modify kind ~or use external debugging tools~ (this should be possible now, if not perfect!) - [x] consistent logging (what is logged, when should it be logged, what levels are used) (this is consistent-ish now, if not perfect) - [x] errors have appropriate context (this is debatable and never perfect, but improved a lot, especially if you use `-v 1` or greater) for managing clusters in test harnesses - [x] move API types / labels from `*.k8s.io` into [`*.x-k8s.io`][api-review-voluntary] - [x] Support all currently [upstream-supported Kubernetes versions][version-skew-policy] - [ ] come up with a plan for stable node image <-> KIND compatibility ## GA Requirements To reach "GA" [grade][deprecation-policy] kind needs to at minimum: - [x] Support non-AMD64 architectures (namely ARM) - [#166] - [ ] Automated publishing of Kubernetes release based kind "node" images - [#197] - [x] Support for runtimes other than docker/default including podman, ignite etc. - [x] First class support for skewed node (Kubernetes) versions (I believe this is relatively first-class now, things should work fine if you specify different node images) - ... TBD, more will be added here ... ## Non-Goals - Supporting every possible Kubernetes configuration - In order to best support offline / hermetic clusters, we will likely not offer many options for CNI etc. out of the box. We may revisit this later. - Being "production workload ready" - kind is meant to be used: - for testing Kubernetes itself - for testing against Kubernetes (EG in CI on Travis, Circle, etc.) - for "local" clusters on developer machines - NOT to host workloads serving user traffic etc. - Replacing [Phippy] 🦒 -- kind isn't trying to replace all the things and Phippy is awesome â�¤ï¸� Longer Term goals include: - Enabling a suitable local storage provider for testing applications that need persistent storage ## Misc - [x] setup a regular Zoom meeting for the project [#244] - [x] achieve certified Kubernetes conformance [#245] Other goals / tasks not listed here can be found both in [the 1.0 project] and more generally triaged for rough-priority in the [GitHub issues]. [kind-conformance-dashboard]: https://testgrid.k8s.io/conformance-kind [version-skew-policy]: https://kubernetes.io/docs/setup/release/version-skew-policy/ [deprecation-policy]: https://kubernetes.io/docs/reference/using-api/deprecation-policy/ [certified]: https://github.com/cncf/k8s-conformance/pull/451#issuecomment-457663982 [conformance tests]: https://github.com/cncf/k8s-conformance [api-review-voluntary]: https://github.com/kubernetes/community/blob/master/sig-architecture/api-review-process.md#voluntary [1.0]: https://github.com/kubernetes-sigs/kind/projects/1 [the 1.0 project]: https://github.com/kubernetes-sigs/kind/projects/1 [GitHub issues]: https://github.com/kubernetes-sigs/kind/issues [#62]: https://github.com/kubernetes-sigs/kind/issues/62 [#117]: https://github.com/kubernetes-sigs/kind/issues/117 [#166]: https://github.com/kubernetes-sigs/kind/issues/166 [#155]: https://github.com/kubernetes-sigs/kind/issues/155 [#197]: https://github.com/kubernetes-sigs/kind/issues/197 [#200]: https://github.com/kubernetes-sigs/kind/issues/200 [#244]: https://github.com/kubernetes-sigs/kind/issues/244 [#245]: https://github.com/kubernetes-sigs/kind/issues/245 [#268]: https://github.com/kubernetes-sigs/kind/pull/268 [Phippy]: https://phippy.io/ kubernetes-sigs-kind-49aeee6/site/content/docs/contributing/development.md000066400000000000000000000172311524365506300272110ustar00rootroot00000000000000--- title: "Development" menu: main: parent: "contributing" identifier: "development" weight: 3 toc: true description: |- 🚧 This is a work-in-progress 🚧 This page is intended to provide contributors with an introduction to developing the kind project. --- ## Overview KIND provides various utilities for development wrapped in `make`. Most scripts require more or less only `make` + `bash` on the host, and generally stick to POSIX utilities. Some scripts use `docker` e.g. for image building or to use docker images containing special tools. This guide will introduce you to important make targets and their usage. ## Building ### Building `kind` Invoke `make build` and `bin/kind` will contain the freshly built `kind` binary upon a successful build. Like other targets, this target automatically manages the correct [`.go-version`][go-version] and doesn't require that you install any tooling (just `make` / `bash`). We accomplish this using a copy of [gimme] in `hack/third_party/gimme`. ### Building The Base Image > **NOTE**: Most development should not require changes to the base image, however if your changes do, here's how to build and test it. To build the "base image" for development use the `make quick` command in `images/base` directory: `make -C images/base quick` By default, the base image will be tagged as `kindest/base:$(date +v%Y%m%d)-$(git describe --always --dirty)` format. If you want to change this, you can set `TAG` environment variable. `TAG=v0.1.0 make -C images/base quick` For "production" base images one of the maintainers will run `make -C images/base push` which cross-compiles for all architectures and pushes to the registry. You generally don't need to cross build during development, and currently the cross build *must* be pushed instead of loaded locally, due to limitations in `docker buildx` (TODO: link to upstream issue). To test out your changes take the image you built with `make quick` and use it as the `--base-image` flag when running `kind build node-image` / building node images. You can then create a cluster with this node image (`kind create cluster --image=kindest/node:latest`) For "Production" base image updates one of the maintainers will bump `DefaultBaseImage` in `pkg/build/nodeimage/defaults.go` to point to the newly pushed image. ### Building Node Images See: ["building images"](/docs/user/quick-start/#building-images) in the user [quick start]. ## Updating Generated Code You can regenerate checked-in generated sources with `make generate`. KIND does not use much generated code, but it does use a little. Namely kind uses [`deepcopy-gen`] to generate `DeepCopy` methods for API types. There is also a `make update` target meant to cover all automated code generation + formatting (`gofmt`). ## Testing - Run `make test` to run all tests (unit + integration). - Run `make unit` to run only unit tests. - Run `make integration` to run only integration tests. Like other targets, these targets automatically manage the correct [`.go-version`][go-version] and doesn't require that you install any tooling (just `make` / `bash`). ### E2E Testing 🚧 More here coming soon ... 🚧 TLDR: `hack/ci/e2e.sh` will run e2e tests against your local Kubernetes checkout. Depending on your changes, you may want to e2e tests. In the future we plan to have e2e smoke tests that are cheaper / don't require building Kubernetes. ## Linting You can run all of our lints at once with `make verify`. Lints include: - checking that generated code is up to date - you can run just this one with `hack/make-rules/verify/generated.sh` - [golangci-lint] with a custom config (`hack/tools/.golangci.yml`) to lint Go sources - you can run just this one with `make lint` - This linter is essentially an optimized combination of _many_ Go linters - [shellcheck] to lint our shell scripts (invoked via docker so you don't need to install it) - you can run just this one with `make shellcheck` ## Documentation Our docs are built with [hugo] just like [kubernetes.io](https://kubernetes.io). We provide a Makefile for development that automatically manages a go toolchain and uses that to build and run hugo. You only need `make`, `bash`, and `curl` or `wget` installed. Markdown content is under `site/content/` with a structure mirroring this site. Static files are under `site/static` (e.g. images are under `site/static/images/`). For simple content changes you can also just edit the markdown sources and send a pull request. A build preview will be created by netlify which you can browse by clicking the "details" link next to the `deploy/netlify` status at the bottom of your pull request on GitHub. These are also predictable as `https://deploy-preview-$PR_NUMBER--k8s-kind.netlify.app/`, just replace `$PR_NUMBER` with the number of your Pull Request. For more involved site / documentation development, you can run `make -C site serve` from the kind repo to run a local instance of the documentation, browsable at [http://localhost:1313](http://localhost:1313). This site has a custom hugo theme under `site/layouts` & `site/assets`. It's mostly relatively simple but it has a few extra features: - The theme layout takes a `description` parameter in page [front matter] - This renders the blockquote you see just below the page title, on this page with the text `This page is intended to provide contributors with an introduction to developing the kind project.` - We have a few useful but simple custom shortcodes ### Shortcodes [Shortcodes](https://gohugo.io/content-management/shortcodes/) are a hugo feature, the kind docs use the following custom shortcodes: 1. `absURL` -- When you need an absolute URL e.g. for `kubectl apply -f $URL`, this shortcode converts an input URL to absolute. Usage: `{{}}` 1. `securitygoose` -- This is a special shortcode for fun security notices. It wraps inner markdown content. Usage: `{{}} Notice markdown content here {{}}` 1. `codeFromFile` -- Creates a nice codeblock with a copy button from a file. Usage: `{{}}` 1. `codeFromInline` -- Creates a nice codeblock with a copy button from an inline code snippet. Usage: `{{}} func main() {{}}` 1. `readFile` -- is used to inline file contents. Usage: `{{%/* readFile "static/examples/ingress/contour/patch.json" */%}}` ## CI The KIND project runs in / on Kubernetes' Custom CI, "[prow]" (prow.k8s.io). This is both true for CI in the KIND repo, and in the Kubernetes repo where kind is used to test Kubernetes. It's important to note that we run larger, slower Kubernetes e2e tests in the kind repo to mimic what we run in the Kubernetes repo. This is because Kubernetes tests with kind at HEAD to have the latest fixes for running bleeding edge Kubernetes. We ensure that the tests continue to work in the kind repo before merging any code changes. We also have some limited usage experiments with [GitHub Actions], currently only for testing `podman` or `nerdctl` support in kind. ### Configuration Our repo's prow configuration is at https://git.k8s.io/test-infra/config/jobs/kubernetes-sigs/kind GitHub actions are configured in `.github/workflows` in the kind repo. [gimme]: https://github.com/travis-ci/gimme [shellcheck]: https://shellcheck.net [golangci-lint]: https://github.com/golangci/golangci-lint [go-version]: https://sigs.k8s.io/kind/.go-version [quick start]: /docs/user/quick-start/ [hugo]: https://gohugo.io [prow]: https://git.k8s.io/test-infra/ [GitHub Actions]: https://github.com/features/actions [front matter]: https://gohugo.io/content-management/front-matter/ kubernetes-sigs-kind-49aeee6/site/content/docs/contributing/getting-started.md000066400000000000000000000154531524365506300300000ustar00rootroot00000000000000--- title: "Getting Started" menu: main: parent: "contributing" identifier: "getting started" weight: 1 toc: true description: |- Welcome! 👋 This guide covers how to start contributing to kind 😄 --- ## 1. Familiarize Yourself With Contributing to Kubernetes Projects ### Read the Kubernetes Community Guidelines Make sure you read the [Kubernetes community guidelines][community]. In specific, read through the [Kubernetes contributor guidelines][contributor]. ### Setup GitHub Account Kubernetes and kind are developed on [GitHub][github] and will require an account to contribute. ### Sign CNCF CLA The Kubernetes project requires the [CNCF][CNCF] [CLA][CNCF-cla] be signed against your GitHub account for all contributions in all subprojects. You'll need to get the CLA signed to contribute. ### Check The Kubernetes Contributor Guides You may come back to this later, but we highly recommend reading these: - [Kubernetes Contributor Guide](https://git.k8s.io/community/contributors/guide) - Main contributor documentation, or you can just jump directly to the [contributing section](https://git.k8s.io/community/contributors/guide#contributing) - [Contributor Cheat Sheet](https://git.k8s.io/community/contributors/guide/contributor-cheatsheet) - Common resources for existing developers ## 2. Install Tools ### Install Git Our source code is managed with [`git`][git], to develop locally you will need to install `git`. You can check if `git` is already on your system and properly installed with the following command: ``` git --version ``` ### Install Docker Currently, to create clusters you will need to install [Docker][docker]. If you haven't already, [install Docker][install docker], following the [official instructions][install docker]. If you have an existing installation, check your version and make sure you have the latest Docker. To check if `docker` has been installed: ``` docker --version ``` This documentation is written using Docker version 18.09.2. ### Install Go (optional) KIND is written in [Go][golang], however our makefiles automatically ensure the correct version of go when building or testing. You may still wish to install go on your machine to make it easier to integrate into your editor etc. You can find the version of go we're currently using to develop kind in the [`.go-version`][go-version] file in the kind repo. Install or upgrade [Go using the instructions for your operating system][golang]. You can check if Go is in your system with the following command: ``` go version ``` ## 3. Read The Docs The [design principles], [1.0 roadmap], and [initial design] may be helpful to review before contributing. These docs cover some of the project philosophy and direction. ## 4. Reaching Out Issues are tracked on GitHub. Please check [the issue tracker][issues] to see if there is any existing discussion or work related to your interests. In particular, if you're just getting started, you may want to look for issues labeled good first issue or help wanted which are standard labels in the Kubernetes project. The help wanted label marks issues we're actively seeking help with while good first issue is additionally applied to a subset of issues we think will be particularly good for newcomers. If you're interested in working on any of these, leave a comment to let us know! If you do not see anything, please [file a new issue][file an issue]. > **NOTE**: _Please_ file an enhancement / [feature request issue][fr-issue] to discuss features before filing a PR (ideally even before writing any code), we have a lot to consider with respect to our > existing users and future support when accepting any new feature. > > To streamline the process, please reach out and discuss the concept and design > / approach ASAP so the maintainers and community can get involved early. Also -- Please reach out in general for bugs, feature requests, and other issues! The maintainers of this project are reachable via: - [Kubernetes Slack] in the [#kind] channel (most active, along with the community) - The issue tracker by [filing an issue][file an issue] - The Kubernetes [SIG-Testing][SIG-Testing] [Mailing List][SIG-Testing Mailing List] Current maintainers are [@aojea] and [@BenTheElder] -- feel free to reach out directly if you have any questions! See also: the Kubernetes [community page]. ## 5. Next Steps Okay, so you've gotten your development environment setup, you've read all the contributor guides, signed the CLA ... now what? If you're planning to contribute code changes, you'll want to read the [development guide] next. If you're looking to contribute documentation improvements, first: Thank you! 🎉🤗 You'll specifically want to see the [documentation section] of the development guide. [git]: https://git-scm.com/ [hugo]: https://gohugo.io [issues]: https://github.com/kubernetes-sigs/kind/issues [file an issue]: https://github.com/kubernetes-sigs/kind/issues/new/choose [design principles]: /docs/design/principles [1.0 roadmap]: /docs/contributing/1.0-roadmap [project scope]: /docs/contributing/project-scope [project structure]: /docs/contributing/project-structure [initial design]: /docs/design/initial [github]: https://github.com/ [golang]: https://golang.org/doc/install [docker]: https://www.docker.com/ [install docker]: https://docs.docker.com/install/#supported-platforms [community]: https://github.com/kubernetes/community [contributor]: https://github.com/kubernetes/community/blob/master/contributors/guide/README.md [Kubernetes Slack]: https://slack.k8s.io/ [#kind]: https://kubernetes.slack.com/messages/CEKK1KTN2/ [@BenTheElder]: https://github.com/BenTheElder [@aojea]: https://github.com/aojea [community page]: https://kubernetes.io/community/ [modules]: https://github.com/golang/go/wiki/Modules [SIG-Testing Mailing List]: https://groups.google.com/forum/#!forum/kubernetes-sig-testing [CNCF]: https://www.cncf.io/ [CNCF-cla]: https://git.k8s.io/community/CLA.md [fr-issue]: https://github.com/kubernetes-sigs/kind/issues/new?labels=kind%2Ffeature&template=enhancement.md [SIG-Testing]: https://github.com/kubernetes/community/blob/master/sig-testing/README.md [go-version]: https://sigs.k8s.io/kind/.go-version [development guide]: /docs/contributing/development [documentation section]: /docs/contributing/development#documentation kubernetes-sigs-kind-49aeee6/site/content/docs/contributing/project-scope.md000066400000000000000000000103661524365506300274460ustar00rootroot00000000000000--- title: "Project Scope" menu: main: parent: "contributing" identifier: "project-scope" weight: 2 toc: true description: |- This document outlines some scoping and major priorities for kind. See also: the [1.0 roadmap], and the [1.0 tracking milestone]. [1.0 roadmap]: /docs/contributing/1.0-roadmap [1.0 tracking milestone]: https://github.com/kubernetes-sigs/kind/milestone/2 --- ## Priorities (from greatest to least) ### P-1: Bootstrapping the kind Project Itself --- **Stakeholders**: - kind maintainers - kind contributors **Covered Work**: - Releases & tooling - Automated image publishing - Documentation bootstrapping (IE this site) - Enough Kubernetes testing to test kind itself (Kubernetes Conformance tests) - Setting up linters and other tools to verify quality - Setting up a recurring subproject meeting ### P0: Support Testing Kubernetes --- **Stakeholders**: - [SIG Testing][sigs] - [SIG Cluster-Lifecycle][sigs] - the [kubeadm] subproject - Possibly [SIG Release][sigs] (mainly to provide easy access to alpha and beta tags) **Covered Work**: - Limited workloads / [e2e testing][e2e] - Cluster bring-up (IE [kubeadm]) - Kubernetes build (and currently install, but that may be problematic for cross-platform [#166]) - Node skew, client skew (kubectl / e2e versions) - Image publishing - Kubernetes CI tooling and [jobs][kubeadm-kind-job] - Most everything in the [1.0 roadmap] - ... ### P1: Support Testing Kubernetes Applications --- **Stakeholders**: Various projects both inside & outside the Kubernetes Org. - [cert-manager] - [cluster-api-provider-aws] - [cluster-api-provider-azure] - ... **Covered Work**: Most of the necessary work should be covered under [P1: Support Testing Kubernetes Applications](#p1-support-testing-kubernetes-applications), however there is some additional work. - Improve "kind as a library" - better and more controllable logging - generally more control over output - example usage & documentation - better / tighter API contracts - Most of the rest should be covered by improving "kind the binary" outlined above - ... ### P2: Provide Cheap Bootstrap Clusters for the Cluster-API --- **Stakeholders**: - various [cluster-api][cluster-api] [provider implementation][cluster-api provider implementations] developers - various [cluster-api][cluster-api] users ### P3: Extended Testing Not Covered Above --- **Stakeholders**: - Indeterminate / many Possibly supporting various things that we cannot reasonably test today including: - "node" tests, e.g. reboot - Upgrades, downgrades - Anything depending on ingress - Anything depending on persistent storage / PVs - Testing the cluster-api proper with some sort of machine provisioning - Device plugin, e.g. GPU - ... Several of these make sense but are not possible with the current tooling and will require a reasonable amount of design and thought to do well. Some of them may not be solve-able in a good way, but are at least technologically feasible to explore. ## Out of Scope --- Some things we can likely never cover in a reasonable way: - Cloud provider / [CCM] - Some of the node testing (which portions exactly is currently unclear) - Being an alternative to "docker compose" etc. - Replacing [Phippy][phippy] â�¤ï¸� 🦒 â�¤ï¸� - ... [#166]: https://github.com/kubernetes-sigs/kind/issues/166 [1.0 roadmap]: /docs/contributing/1.0-roadmap [1.0 tracking milestone]: https://github.com/kubernetes-sigs/kind/milestone/2 [phippy]: https://phippy.io [kubeadm]: https://github.com/kubernetes/kubeadm [sigs]: https://github.com/kubernetes/community/blob/master/sig-list.md [e2e]: https://github.com/kubernetes/community/blob/master/contributors/devel/sig-testing/e2e-tests.md [kubeadm-kind-job]: https://testgrid.k8s.io/sig-cluster-lifecycle-all#kubeadm-kind-master [cert-manager]: https://github.com/jetstack/cert-manager [cluster-api-provider-aws]: https://github.com/kubernetes-sigs/cluster-api-provider-aws [cluster-api-provider-azure]: https://github.com/kubernetes-sigs/cluster-api-provider-azure [cluster-api]: https://github.com/kubernetes-sigs/cluster-api [cluster-api provider implementations]: https://github.com/kubernetes-sigs/cluster-api#provider-implementations [CCM]: https://github.com/kubernetes/kubernetes/tree/master/cmd/cloud-controller-manager kubernetes-sigs-kind-49aeee6/site/content/docs/design/000077500000000000000000000000001524365506300231035ustar00rootroot00000000000000kubernetes-sigs-kind-49aeee6/site/content/docs/design/base-image.md000066400000000000000000000017541524365506300254260ustar00rootroot00000000000000--- title: "Base Image" menu: main: parent: "design" identifier: "base-image" --- This page used to host a doc about the initial design, this has been found confusing so we've updated it to clarify the current expectations. While the sources of the project are fully open, depending on the specifics of the node image internals is not supported. We only support that base images will create a working node image with `kind build node-image` at the kind release they were shipped with. The contents and implemlentation of the images are subject to change at any time to fix bugs, improve reliability, performance, or maintainability. DO NOT DEPEND ON THE INTERNALS OF THE BASE IMAGES. KIND provides [conformant][conformance] Kubernetes, anything else is an implementation detail. We will not accept bugs about "breaking changes" to base images and you depend on the implementation details at your own peril. [conformance]: https://www.cncf.io/training/certification/software-conformance/ kubernetes-sigs-kind-49aeee6/site/content/docs/design/initial.md000066400000000000000000000120511524365506300250550ustar00rootroot00000000000000--- title: "Initial design" menu: main: parent: "design" identifier: "design-initial" weight: 2 description: |- This document covers some of the initial design for `kind`. **NOTE**: Some of this is out of date relative to what is currently implemented. This mostly exists for historical purposes, the [the original proposal][original proposal] covers some more details. Going forward the [design principles] may be more relevant. [original proposal]: https://docs.google.com/document/d/1VL0shYfKl7goy5Zj4Rghpixbye4M8zs_N2gWoQTSKh0/ [design principles]: /docs/design/principles --- ## Overview `kind` or **k**ubernetes **in** **d**ocker is a suite of tooling for local Kubernetes "clusters" where each "node" is a Docker container. `kind` is targeted at testing Kubernetes. `kind` is divided into go packages implementing most of the functionality, a command line for users, and a "node" base image. The intent is that the `kind` suite of packages should eventually be importable and reusable by other tools (e.g. [kubetest][kubetest]) while the CLI provides a quick way to use and debug these packages. For [the original proposal][original proposal] by [Q-Lee][q-lee] see [the kubernetes-sig-testing post][sig-testing-post] (NOTE: this document is shared with [kubernetes-sig-testing][kubernetes-sig-testing]). In short `kind` targets local clusters for testing purposes. While not all testing can be performed without "real" clusters in "the cloud" with provider enabled CCMs, enough can that we want something that: - runs very cheap clusters that any developer can locally replicate - integrates with our tooling - is thoroughly documented and maintainable - is very stable, and has extensive error handling and sanity checking - passes all conformance tests In practice kind looks something like this: ## Clusters Clusters are managed by logic in [`pkg/cluster`][pkg/cluster], which the `kind` cli wraps. Each "cluster" is identified by an internal but well-known [docker object label](https://docs.docker.com/config/labels-custom-metadata/) key, with the cluster name / ID as the value on each "node" container. We initially offload this type of state into the containers and Docker. Similarly the container names are automatically managed by `kind`, though we will select over labels instead of names because these are less brittle and are properly namespaced. Doing this also avoids us needing to manage anything on the host filesystem, but should not degrade usage. The `KUBECONFIG` will be bind-mounted to a temp directory, with the tooling capable of detecting this from the containers and providing helpers to use it. ## Images To run Kubernetes in a container, we first need suitable container image(s). A single standard [base layer][base-image.md] is used, containing basic utilities like systemd, certificates, mount, etc. Installing Kubernetes etc. is performed on top of this image, and may be cached in pre-built images. We expect to provide images with releases already installed for use in integrating against Kubernetes. For more see [node-image.md][node-image.md]. ## Cluster Lifecycle ### Cluster Creation Each "node" runs as a docker container. Each container initially boots to a pseudo "paused" state, with [the entrypoint][entrypoint] waiting for `SIGUSR1`. This allows us to manipulate and inspect the container with `docker exec ...` and other tools prior to starting systemd and all of the components. This setup includes fixing mounts and pre-loading saved docker images. Once the nodes are sufficiently prepared, we signal the entrypoint to actually "boot" the node. We then wait for the Docker service to be ready on the node before running `kubeadm` to initialize the node. Once kubeadm has booted, we export the [KUBECONFIG][kubeconfig], then apply an [overlay network][overlay network]. At this point users can test Kubernetes by using the exported kubeconfig. ### Cluster Deletion All "node" containers in the cluster are tagged with docker labels identifying the cluster by the chosen cluster name (default is "kind"), to delete a cluster we can simply list and delete containers with this label. [kubetest]: https://github.com/kubernetes/test-infra/tree/master/kubetest [original proposal]: https://docs.google.com/document/d/1VL0shYfKl7goy5Zj4Rghpixbye4M8zs_N2gWoQTSKh0/ [q-lee]: https://github.com/q-lee [sig-testing-post]: https://groups.google.com/d/msg/kubernetes-sig-testing/uVkosorBnVc/8DDC3qvMAwAJ [kubernetes-sig-testing]: https://groups.google.com/forum/#!forum/kubernetes-sig-testing [pkg/cluster]: https://github.com/kubernetes-sigs/kind/tree/main/pkg/cluster [base-image.md]: /docs/design/base-image [node-image.md]: /docs/design/node-image [entrypoint]: https://github.com/kubernetes-sigs/kind/blob/main/images/base/files/usr/local/bin/entrypoint [kubeconfig]: https://kubernetes.io/docs/tasks/access-application-cluster/configure-access-multiple-clusters/ [overlay network]: https://kubernetes.io/docs/setup/independent/create-cluster-kubeadm/#pod-network [design principles]: /docs/design/principles kubernetes-sigs-kind-49aeee6/site/content/docs/design/node-image.md000066400000000000000000000020551524365506300254340ustar00rootroot00000000000000--- title: "Node Image" menu: main: parent: "design" identifier: "node-image" --- This page used to host a doc about the initial design, this has been found confusing so we've updated it to clarify the current expectations. While the sources of the project are fully open, depending on the specifics of the node image internals is not supported. We only support that node images will create a working Kubernetes node at the advertised version with the kind version they were released with (and best effort with other releases), see the release notes. The contents and implemlentation of the images are subject to change at any time to fix bugs, improve reliability, performance, or maintainability. DO NOT DEPEND ON THE INTERNALS OF THE NODE IMAGES. KIND provides [conformant][conformance] Kubernetes, anything else is an implementation detail. We will not accept bugs about "breaking changes" to node images and you depend on the implementation details at your own peril. [conformance]: https://www.cncf.io/training/certification/software-conformance/kubernetes-sigs-kind-49aeee6/site/content/docs/design/principles.md000066400000000000000000000120731524365506300256000ustar00rootroot00000000000000--- title: "Principles" menu: main: parent: "design" identifier: "design-principles" weight: 1 toc: true description: |- While developing kind the following principles should be considered. --- ## Degrade Gracefully As much as possible kind should not fail, because it is to be used for testing. Partially degraded states can still be useful and still be debugged. As a concrete example: We "pre-load" images that the cluster depends on by packing them into the "[node image][node image]". If these images fail to load or are not present in the node image, kind will fall back to letting the "node"s container runtime attempt to pull them. Similarly we must at least support all officially supported Kubernetes releases, which may mean gracefully degrading functionality for older releases. ## Target CRI Functionality Currently kind only supports [containerd], with experimental support for [podman]. It uses these container runtimes directly to create "node" containers. With the long term goal of [supporting multiple container runtimes] and avoid unnecessary coupling, we try to target functionality covered by the Kubernetes [CRI][CRI] (Container Runtime Interface). ## Leverage Existing Tooling Where possible we should _not_ reinvent the wheel. Examples include: - [kubeadm] is used to handle node configuration, certificates, etc. - [kustomize] is used to handle merging user provided config patches with our generated kubeadm configs - [k8s.io/apimachinery] is used to build our own configuration functionality - In general we re-use k8s.io [utility libraries][k8s.io/utils] and [generators][k8s.io/code-generator] Re-implementing some amount of functionality is expected, particularly between languages and for internal / insufficiently-generic components, but in general we should collaborate where possible. ## Avoid Breaking Users Going forward kind will avoid breaking changes to the command line interface and configuration. Next we will extend this to a documented set of re-usable packages (To be determined, but likely IE [pkg/cluster]). While we are alpha grade currently, we will move to beta and respect the [Kubernetes Deprecation Policy]. Externally facing features should consider long-term supportability and extensibility. ## Follow Kubernetes API Conventions As a general rule of thumb kind prefers to implement configuration using Kubernetes style configuration files. While doing this we should respect the Kubernetes [API Conventions]. Additionally we should minimize the number of flags used and avoid structured values in flags as these cannot be versioned. ## Minimize Assumptions Avoid making any unnecessary assumptions. Currently we assume: - [docker] is installed on the host and the current user has permission to talk to dockerd - Unless using experimental support for [podman] or [nerdctl]. - In the future we may instead only assume that a CRI is available. See [above](#target-cri-functionality). - "node" images follow our format - However whenever we make changes we do not assume the updated contents definitely exist - Metadata in the images is assumed to be correct - When building Kubernetes, we make the same assumptions & requirements as upstream ## Be Hermetic As an extension of minimizing assumptions, kind should be as hermetic as possible. In other words: - Strive for reproducibility of operations - Avoid depending on external services, vendor / pre-pull dependencies ## No External State State is offloaded into the "node" containers in the form of labels, files in the container filesystem, and processes in the container. The cluster itself stores all state. No external state stores are used and the only stateful process is the container runtime. kind does not itself store or manage state. This simplifies a lot of problems and eases portability, while forcing cluster interactions to be consistent. ## Consider Automation While kind strives to present a pleasant UX to users on their local machines, **automation for end to end testing is the original & primary use case**. Automated usage should be considered for all features. [containerd]: https://containerd.io/ [docker]: https://www.docker.com/ [podman]: https://www.podman.io/ [nerdctl]: https://github.com/containerd/nerdctl [node image]: /docs/design/node-image [supporting multiple container runtimes]: https://github.com/kubernetes-sigs/kind/issues/154 [CRI]: https://github.com/kubernetes/community/blob/master/contributors/devel/sig-node/container-runtime-interface.md [kubeadm]: https://kubernetes.io/docs/reference/setup-tools/kubeadm/kubeadm/ [kustomize]: https://github.com/kubernetes-sigs/kustomize [k8s.io/apimachinery]: https://github.com/kubernetes/apimachinery [Kubernetes Deprecation Policy]: https://kubernetes.io/docs/reference/using-api/deprecation-policy/ [API Conventions]: https://github.com/kubernetes/community/blob/master/contributors/devel/sig-architecture/api-conventions.md [pkg/cluster]: https://github.com/kubernetes-sigs/kind/tree/main/pkg/cluster [k8s.io/utils]: https://github.com/kubernetes/utils [k8s.io/code-generator]: https://github.com/kubernetes/code-generator kubernetes-sigs-kind-49aeee6/site/content/docs/images/000077500000000000000000000000001524365506300230775ustar00rootroot00000000000000kubernetes-sigs-kind-49aeee6/site/content/docs/images/diagram.png000066400000000000000000011317521524365506300252230ustar00rootroot00000000000000‰PNG  IHDR  ’ßsBIT|dˆtEXtSoftwaregnome-screenshotï¿> IDATxœìÝwtTUûöñ+ !”@ E"EÀ`x‚z1¤>Ò)Ѝ4)‚TA¤HGª H'(„Ð$&1@è-!B2ï,ò2ç̤gâ÷³VÖrν÷>÷L2^ìíd±X,Å9«)GDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDD”+«ü{Œ3FÛ¶m³Z9r¤4h�î÷¼}û¶Ž?®"EЍL™2rvÎÿnáÂ…š3gŽÕÚ믿®^½zerGH‹ï¾ûN ,°ZëÞ½»:wîœÉÀ¿Û§Ÿ~ªõë×[­ }ú¨uëÖ)î端¾ÒêÕ«­Öêׯ¯Q£F¥xMk¾þúk­\¹Ò®±®®®*Y²¤|||äãã£2eʨvíÚÊ“'Oºô€ÌG�#Çbcc5kÖ,�?>“;BJ…‡‡î¾tíÚ5»×¹yó¦š6mªþùÇpLñâŵbÅŠ÷ û¸{÷®ág†ôàHxkîÝ»g:/88X¯¼òŠ (�¢~NŸ>m¸®——WŠÖ2ó×_™öoK‘"EÔ©S'½ùæ›òõõM·¾�9rœË—/+&&ư’‰Ý +Y,µnÝÚ4üçêêªuëÖ¥k H©Ë—/+88ØjÍÛÛ[•*UÊäŽðЕ+W4dÈM›6-«[É×®]Ó”)S4eʽøâ‹Z²d »ä8€€ÇËËK®®®Š��µZ/W®\&w„¬òÑGiË–-¦cæÏŸ¯ªU«fRG€uÛ·oWÛ¶m­ÖÚ´i£åË—grGxÔ7ß|£®]»ªZµjYÝJ†Ú»w¯þóŸÿhÑ¢EjÞ¼yV·;8gud„‘#GZ½îåå¥>}údr7È ëÖ­Ó¸qãLÇ 8Ð0tY,uëÖM‹%«[ÉpQQQjÑ¢…ú÷ï¯û÷ïgu;°� G:t¨–,Y¢^xAùòåSÉ’%Õ®];:tHÅ‹Ïêö�ÁBBBÔ®];Ó1�5Òĉ3©#ŽîèÑ£š>}zV·‘i&Ož¬Áƒgu°� Çjß¾½öîݫ۷o+""Bßÿ½|||²º-d°˜˜5iÒDÑÑцcÊ–-«U«VÉÙ™¿`¿!C†èÊ•+Y݆Ýd±X¿îÞ½«Ó§OëÇT¯^½äååe:òäÉÚ¿&u €Ôào¹@ŽÒ¹sg�:uʰž?~­_¿^… ÊÄ®äÑÑÑêׯ_V·‘j®®®*_¾¼Z´h¡iÓ¦),,L#FŒ0o±XÔ±cGÝ»w/»@JäÊêpTÑÑÑ:{ö¬nݺ¥Ò¥KËÛÛ;ÝÖ¾qã†Îž=«øøxùúú²S��¦N�ª~øÁ°îää¤åË—ë™gžÉĮҟÅbѱcÇ”�� )R$C'OÊÕÕUÅ‹—§§§œœœ2ä^’tçÎýý÷ߺ{÷®|||ÒôžŠ��Wdd¤Îž=+•.]Z¹sçNÇn¸zõªÎœ9#777/^\é~�ôb±X¡sçÎÉËËK%J”P¾|ùÒý>W®\Qhh¨rçÎ-Ÿlý𤯢E‹ôÎ;ï¨fÍšYÝJšåË—O£G�V�ôÁXsæÌ}þùç:thšîuñâE…††ªP¡B*^¼¸ÜÝÝÓ´ž™ëׯëÂ… º~ýºŠ-*åÉ“'Ãî—âã㦳gϪT©R*^¼¸\]]3ì~‹EçÏŸWDD„¼¼¼rÄk@NE�íÅÅÅé�7ÞÐùóç Ç´nÝZ}úôI|Ü·o_>|ØêØÑ£G«^½zI®Ý¾}[Mš4±:¾yóæêß¿¿$éîÝ»š7ožæÍ›§}ûö%çææ¦òåËkذajݺµ]ÏíQ—.]ÒìÙ³5wî\�9s&ɺժUS½zõôÁ(þü)^ûß`ïÞ½6wæ9r¤7nls­9sæháÂ…Vko¾ù¦:uêd:¿sçΊˆˆ°Z›={¶Ê•+g³‡ÇEGGkâĉúí·ßtàÀݾ};±Vºti½ñÆêÑ£‡J”(‘⵺s玖.]ª èøñãºtéR’º›››ªW¯® ¨_¿~*P €Í5'Mš¤uëÖY­mܸQ®®® ÕèÑ£µxñbÝ¿?±¾}ûvÕ¯__’4aÂmܸÑê:Û·oO &îÞ½[³fÍÒòåË“8ÆÅÅE>>>ª]»¶¦OŸnWïÖܺuK .Ô÷߯cÇŽéæÍ›Iê… Ò /¼ —^zIï¿ÿ¾a`&44T]»vM||ùòeÃ{îØ±#ñuxhþüù*Uª”Í~ÿþûoM�:U[¶lÑ_ý¥ØØØ$õ§žzJþþþjÓ¦�^{í5›ëYª‘#GêÀ� Mv�'žxB%K–T•*U4nÜ8ýßÿý_ªî“�tëÖMG�Í�PiV8p ‚‚‚ôóÏ?[­Ïš5+ÅÀsçÎiöìÙúùçŸuâĉ$ŸY’äéé©5j¨aÆêÙ³§ÜÜÜRÝ¿$mÙ²E+W®ÔêÕ«“}v999©råʪ_¿¾Ú´i£ºuë¦é^fâããÕµkWýóÏ?†cš5k¦Ø\ëèÑ£š2eŠ~ýõW…„„$ù|”¤ *Èßß_Ý»wW�:ul®¡Î�;[­uéÒE]ºtQBB‚æÌ™£�?þ8Éshܸ±Ö¯_oó XÈ$¯¿þºE’Õ¯¥K—ÎëÔ©“á˸qã,÷ïß·û¹Z,K\\œeðàÁwww»~¾%YŠ/nÙ°aƒÍµ»uëf¸Fdd¤eÕªU–üùó[­ÿöÛo‰ëtîÜÙp�+W®XÂÃÃ--[¶´«÷òåË[Ž?ž¢×(&&ÆÒ»wo‹›››Ý¯Qùòå-»ví²ºÞÑ£Gí^ÇÚWpp°i¿ÁÁÁ–W^yÅâääd÷šMš4±DFFÚýšœ={ÖÒ³gO‹‹‹‹Ý÷È•+—¥OŸ>–«W¯¦èõ·Ghhhª^³K—.¥ê{0aÂÓ~zõêe8·uëÖéö¼ß{ï=ÃûؽNXX˜éó ²{�V­Z¥èçÂÝÝÝòÙgŸ¥êùÿôÓO__ß}ïªT©b9vì˜éº]»v5œ?gÎÃyo¾ù¦Í{ÇÄĘÞ;((Èâïïo÷óqrr²ôèÑÃrëÖ-ÓuOžS›6mLw!|Ô”)SÔ¾}{»Æ‚‚‚ôÁ¤xÞÊ•+õǘŽY°`�&Mš”¢uãããœâ~rªQ£FiçÎ�†õB… iÆ {trpppŠ‚4҃Р=ÇuËÏÏO{÷îMUo‹Eýû÷×'Ÿ|’ªùï¼óŽés³÷xÕ–-[êܹs)ºwLLŒFŽisܯ¿þ*??¿T¿çâââôúë¯kÁ‚©šŸRŸ|ò‰7nœ¢ â£Î�;'ÓÀé­[· ëׯ§¶M]¿~]¯¾úª"##S½FfyöÙg­^¿sçN’£çs‚–-[ÖvìØa:÷‹/¾P@@@Š‚Ä�[³f�š7on×gÞÌ™3Õ£G�TßëÎ�;jÓ¦�<˜ê5µ}ûv½ÿþû†õ‚ jÓ¦M*V¬˜Õúýû÷õ¿ÿýO={öLvÔ¯½>,ÿT}–-[fú»4§w @ND�->|XíÚµ3ܽÊÕÕUëÖ­Sùòå3¼—;wî¤zîˆ# k7nÜ0 À¶}ûöiܸq†uggg­ZµJeË–ÍÄ®²‡Ï?ÿ\'Ož4¬ÇÄĨAƒ:{ölšï5lØ0›á kîÝ»gZ·7p’’õ`Á�9sư©ÀÀÀ4šêÑ£‡Nœ8‘æuÌ,\¸PC‡MÑ®Ö\¿~]Í›7Wlll²ZBB‚š7onúº¹ººªJ•*ª\¹²éî¬w‘LËglf˜8q¢a€xíÚµÚ°aC&w”qžþyÃZXX˜a0mÅŠ0`€Ý;�šÙ¼y³Þ}÷]Ó1ÇŽ³9ÆwîÜÑÿû_ÅÅÅ¥i�Ó§O«eË–†ÏßÅÅEk×®UÅŠ ×;v¬.\˜¦>$)$$DmÛ¶Mñ¼ôú<™�}ûÙÎåË—m†B/^,ÿLìêùûûËßß_‘‘‘Ú¿¿NŸ>m8þçŸVll¬ÕÌðáÃMƒENNNªT©’jÖ¬©Û·okãÆ�ºzõjº<�œ **JmÚ´1 œ|úé§jÔ¨Q&v•±<<<Ô°aCyzzj÷îÝ:zô¨áó���× Aƒ´víZ«õ1cƘéáá¡ ¨L™2ŠŠŠÒéÓ§µmÛ6«côÖ[o鯿þJù“2‘šÀÉ“O>©¦M›ÊÙÙY!!!Ú²e‹ák”�� U«ViðàÁVëTLLŒá½J”(¡ºuëê©§žÒõë×uüøqíÚµËêØØØXõéÓG[·n•$y{{'Ù�088X+W®´:·R¥JjÓ¦M’k^^^ÉÖ7zùùù©jÕªòööÖ¹sç´gÏ…„„XûçŸjúôéêׯ_’ë‡RPP�Õ9¹råÒ´iÓÔ¥KåÉ“GÒƒPѸqãôñÇ[ý>>|X«W¯V‡L{ÏJžžžúä“O wû{ûí·uêÔ)Óc]…­°txx¸ž~úé$×âââlî’›?~U¯^]~~~ Ñ®]»LŸ}óÍ7êÖ­›ªU«–¬f±XÔ¡CÓÀš§§§jÕª¥ *(<<\[¶lѵk׬Ž={ö¬f̘‘ê@áõëר[·nŽ™5k–êÕ«gX�ŒŒÔĉMïS§NU¬XQ… Ò?ÿü£�;wî ¹iÓ&ýôÓOjÖ¬™}OÂȾ²•ØØX5iÒÄôXȱcÇêµ×^ËÄ®èÛ·¯F�¥B… %^KHHÐÇlz”è‰'äçç—äZll¬æÍ›g8ÇÍÍM6lP�:u¯Y,íÞ½[-Z´ (©k×®Šˆˆ0¬¿úê«0`@&v”q<<<´fÍÕ¬YSNNN‰×�9¢¦M›îâ·nÝ:�?^%J”Hr=**J_~ù¥áýš6mª¹sçÊÓÓ3Éõ­[·ª}ûöVƒƒgΜQPP�iÈÅ–bÅŠ©L™2‰á± Ø=·L™2Zµj•ªV­šäzpp° _#£ï™3g´dÉÃûuêÔIÓ§OOÖã?ü 7ÞxCÑÑÑÉælÛ¶MgΜQ¹råäíí­Q£F%Ö–/_n¬\¹r’±Ö̘1Ãðs3Ož<š:uj²ãRïÝ»§>ø@S¦L±:ÏZÐlç¿þýû'»GžÃZváää¤ï¾û.Ù{ð¡Ï>ûL§N�Êä®Ò_Á‚ Ÿ£$ýý÷ßÉ®™ýìê—_~Iþ“¤Ñ£GëóÏ?7œ»k×.;v,Ùõ &Îúè#ÓùãÇ�7ŽˆˆÐÁƒ­ŽuvvVß¾} ïåéé©^½zY=j×b±èôéÓzá… ç?îË/¿Ô¢E‹ ëþþþ¦Á¾‡¶oßn>ôõõU—.] çæÎ�[ÇWçÎ�“Õ´k×.Úìá¡ñãÇkèСv�Ù@@¶°eË}÷Ýw†õŠ+jíÚµÊ�;w&ve¿§žzʰ’ìÚ‘#G Ç[ûù�3Úñ-=­ZµÊt4#ÇÏð ½¾ùæuèÐAµk×ÎêVRÍžpÔÛo¿mXÛ»wo’Çׯ_×¶mÛ ×jܸ±ÍûùùùY =zTQQQvÝ;|øð4‡ÿìáãã#ggg%$$$«]¾|9YÏÁÁÁ†;Ý=ñÄ6�9vrrRåÊ•­wïÞ­„„„t}�˜íÀV§N›ŸÏ=÷œaí×_UŸ>}רQÃpì×_­²e˪wïÞÉ~nsåÊ¥úõë›öá&L˜ •+W& ÂI¾·‹-R§N�² ³ÌñxðuÉ’%²X,VÇúùùÙ ÔåÊ•Kï¾û®lµ¾{÷î$��‚®ÒƒÏ®bÅŠ™Þ¯Zµj†µ‹/šÎ}ÔÞ½{MÿÌRºti­[·Î®ßÕf�ì—_~Ùæ|???ÃÚ¯¿þjw°T©R„ÿpPÙãoãÿz³g϶ΑìÚ³iÓ&,X0“»²ŸÙŽi÷îÝKvíŸþ1_«V­té têÔIwîÜÉê62TÍš5 e'NœHòøÀ�Š��·:¶\¹ròðð°y¿Ò¥KÖR²kdfíüæäädz¯ÇߣfÇ�רQC¹rÙþ7µeÊ”±z=**ÊôýŸfýÚóy’'O-ZÔj-888ÉãçŸÞ4¼Ø¿=ýôÓzûí·5oÞ<;vÌ0 æˆÜÝÝõÙgŸÖûõë—ªcW³‹øøxÃÝÿ$ÉËË+Éc³Ÿ½F�ÙuO³€Úã;tþõ×_†ckÖ¬ió^­[·–Åb±úÕ¼ys»ú•¤Y³f~Ž.\X›6mRáÂ…íZ+­ï_³ÏãÇß¿f2「A�íµjÕJ%K–Ìê6Òͽ{÷tûömÃzñâÅ3±›œ/<<Üæ¨9�Q@6!!!IòÚµk†kœ9sFNNN6¿ÆŽk¸Æ�7Rÿ$² ³×hçÎ�v½Ff»ƒ¥÷kdÖï Aƒìê×h÷³Ç{Í›7¯ÆŒcÚÏÙ³g5sæLuíÚU¾¾¾*X° µ`ÁÅÄĤü f3o¼ñ†aØìÊ•+½‹Zhh¨iýñßÅFG×J²{wO³ßy¡¡¡IŽ|·¶«æCöî<šÑš4i¢òåËÛ=ÞìýÛªU+›ï]³ç�>�€mÙÞ¬Y³LwÈq4—/_6¬999Ù<ÂÉõïßß´þÅ_èðáÙÔMÖ0 �ܼy3ñ¿¯^½š¡}ä„À‰£½FÙ¯µ^‡ ¦:ؽFtt´6nܨ7ÞxC%K–Ô„ >øÝwßÉÅÅÅjmúôé)Ú 3;ùûï¿MëôôôLv´ðC�ïHhvLov .Z´Èô˜õÇeöûä<ÙžÅbQûöíu÷îݬn%]˜=///à ¬=z´>ÿüs½ýöÛ†c,‹:vì˜d'©œÆ(Œ$=`=d¶ûdzˆ‹Û¦÷ IDAT‹ËÐõ3ƒ£½FÙ¯Q¯ .Ô´iÓäîõ®_¿®?üP¥K—VPPPz´˜%žyæõíÛ×jÍb±¨k×®yôqJ€±±±†c�Ž•~œ“““ *dXôsÛì÷gîܹíº_fèܹ³ÝïËŒ Ãæ„Ïc`[®¬n{„„„hРAš2eJV·’ff»™í¦”Ù>úè#õèÑ#ÅóÌ‚hé­{÷î1b„$é³Ï>Ó�?þh¸CÔñãÇ5f̛Ǘ:ªGC~�ËŸ?⻹¹eF;ÍÑ^£¬è×ÙÙY½zõRÛ¶m5tèP-Y²$EAÄË—/+ @óçÏWûöí3°ÓŒ3vìX-^¼X.\HV;tè�ÂÂÂ2¿©42 –-[6YàÓ,¸e×=ïß¿oºSÝ£Ÿ_f÷ËN»Ý�?^ï¿ÿ¾fÏžmsl¾|ù~GL�µÆÔ©SÕ¶m[ÕªU+«[I³C\\œ¢¢¢²ÅQ†+VTÅŠ³º C���š9sfâãüùóë›o¾Q«V­ çL˜0AíÚµS¥J•2£ÅLe¶yôgÎÓÓÓp\‘"Eäë뛦>rÂÖf¯QñâÅU¡B…4­_¤H‘4ÍœY¿Ï>û¬<<íØ±#½Ûs8f¯Q©R¥²ÝkdÖo»ví4lذ ïÁÕÕU��� ÔôéÓªýû÷kË–-Z°`�îÝ»guÞíÛ·5qâD}úé§ÞcFhݺµ4h íÛ·gu+iöÉ'Ÿ˜îøÆo$»V¾|yÃñöÏŸ?oXóööNòøé§Ÿ6kô;5£899iÆŒZ¼x±vîÜiuLçÎ�uâÄ ,XÐp³à€Ô¶mÛtéä\ζ‡�ñœœœ´dÉuéÒE‹-R®\ÖÿÍZxx¸ �ÉÝ¥?³]Ö6mÚ”‰�8&=ñÄVk3gÎLrdäãŽ9¢I“&™®Ÿ;wnÃÚ�;wìk28pÀ°æçç—äqµjÕäääduìÙ³gœ®½9¢Ç_³GíÛ·O7oÞÌÄnl3ëwýúõ™ØÉÿW¦LµmÛV³fÍRXX˜ªT©b8vÛ¶m™ØYú›={¶\]]³º�4 Ó„  ë5kÖTÉ’%“]¯Q£†á{—™}ÿŸ}öÙ$�«U«f86((Èæ½Îœ9£Q£FYý:qâ„]ýJþÌ2oÞ<õèÑCóçÏ7Ü)óüùóêÓ§�éZÙñý  @@¶ððhVIª\¹²†j8öÛo¿uøÀˆYðË/¿”Åb1�öìÙôn)Ç(Z´¨Í€ßÈ‘#uæÌÃzéÒ¥ k¡¡¡¦k[,ÃÝøRãÊ•+6Ǭ^½Ú°öøÏZ¡B…LC4}ûöµùó÷�Åb1ÜùÊ‘ùúúZ ;Ižs¿~ýì^+..N{÷îMS?ñññ¦õÆ�ÖvïÞ­uëÖÙ}¯��Ã�Ôöï߯úõë[ýÚ¸q£ášÅ‹×æÍ› wÝ|¸þ÷¿ÿIzðûbôèцc.\¨ 6ÖÍÞ¿Ë–-Óï¿ÿnw_¿ÿþ»bbbìr€€láñÀÕðáÃM�ìܹ³nß¾�Á]eœÇC � 1 °­X±B3gÎ̈¶rŒž={êÅ_4¬ß»wO;v4 º•+WÎpî/¿ü¢[·nY­=ÝpnÅŠ k�{üÏ,|ð�*W®l8¾K—.ºvíšÕZóæÍ �ñŽ��U³fÍi³§]»v©^½zjÒ¤‰îß¿os<È9²¥ùä=ù䓆õ.]º˜î^”�õîÝ[UªT±9îäÉ“:|ø°._¾lxd-¬6l˜i°êÎ�;êÔ©“ÕšQÐ顸øx…„„èÈ‘#™ö}‰��×_ý¥   íÞ½Ûô¾EŠÑСC ë½zõRÆ Mïg±XtéÒ%ýñljG½^¾|ÙêØ¨¨(›»Ô9š�>úHU«V5“�� ÈÈHíß¿?ñ5º~ýºÕ±—.]Ò?ü`µæêêjº  $]¾|YûöíSDDD²�üœœœ´téR¹¹¹™®«°°0íÚµKAAAÚ³g�ââ⬎ݹs§NŸ>�äÚ¤I“ôŸÿüÇêø¸¸8}ûí·zñÅååå¥ ¨zõê1b„ákòÿ÷êÒ¥‹iÏŽdÚ´iÊ›7oV·‘f кuëT»vm›c�œœ´xñbÓc¬ãââ®={öèäɓЉ‰1]oÙ²e¦¿ûçÎ�kóu¾yó¦8`xÄðC¯½öšÍÏB{�=:ÙñÀ�êÞ½»Õ£€óæÍ«ï¿ÿÞpÁ‡bbbtæÌ™ÄÏšC‡îô·~ýzÃÏk�³dkùóç×ܹs ë—.]²¹KWvåââ¢%K–¨páÂ)žûÄOd@G9O®\¹4þ|㤥Ç*[;ºsüøñ¦3f»¦Tj¿×“&M2 ƒåÊ•Kk×®UýúõSÙYRí۷ׄ Òe­ìÂÍÍM›7o¶´×û￯÷ßß°n¶ã©=ž}öYýüóÏ*T¨PšÖ‘ü|¬Y³F•*UJrý‰'žÐ¶mÛT±bÅ4ߣhÑ¢Ú²e‹ ,˜æµ²‹bÅŠiôèÑYÝFšT¬XQGŽQãÆ�ížS®\9}óÍ7rvNÛ_7»¸¸è›o¾ÑË/¿l:îÉ'ŸÔ´iÓL?ÛíQ¥J-\¸0Mk<*oÞ¼š?¾aýÚµk†;ójþüùVwmM)wwwmÛ¶ÍêÊ ç!ÈöL��\´h‘Ã\¹re©hÑ¢vÏÉ—/Ÿ¶mÛ–æàÿŋ/¾¨ž={šŽ8p .]º”äZÞ¼yµtéRyxx¤è~-[¶T�=Rܧ‘ 6¤88yòduëÖÍæ8777mÙ²Eƒ Jm{zâ‰'4qâD-Z´(ÍáŸìÈÃÃC{öìQ‡R½F¡B…4sæL}ùå—¦ãúõëgz”ª=êׯ¯?ÿüS¾¾¾©^£bÅŠ:pà€a«H‘"Ú¹s§š7ožê{xzzjóæÍ©Ùfgýû÷×3Ï<“Õm¤˜»»»¨C‡©L™2)žß­[7mܸ1Õ�N///mß¾]o¿ý¶]ã»víªµk×*_¾|©ºßK/½¤Í›7§ûŽ�uëÖ5ýüýñÇ wKíØ±£öíÛ—¦÷Å‹/¾¨C‡™ r–œ÷·²€é믿6ÝÕªK—.V�Õs¾¾¾:v옚4ibslùòåµmÛ6ùûû§(4øo÷é§Ÿš¾^7oÞT×®]“]¯]»¶N�:exLð£rçέQ£FiÅŠ*R¤Hšú}¨D‰ª_¿¾6oÞ¬òåËÛ_°`A­ZµJ}ûöµû...š8q¢öîÝ«çŸÞîyNNN Ppp° ”#ùººjñâÅÚ²eKŠB5ÎÎÎjÙ²¥Nœ8¡·ÞzËæx'''mܸQ=zôHSÀ÷©§žÒ¡C‡ôù矧h7À hÈ�!:räˆüüüLÇzzzjÍš5Z²d‰|||쾇§§§&L˜ °°°4…³3}÷ÝwY݆]œ��õÊ+¯hÙ²eºxñ¢&Mš”¦@ÜK/½¤'N¨cÇŽvÏÉ•+—Þ{ï=…„„¨N�:)º_Ó¦MuüøqµhÑÂî9ÞÞÞúöÛoµyófy{{§è~öúâ‹/Lç¼óÎ;ÉBçU­ZU'NœÐ�!CR´›¬···¦M›¦Ý»w«lÙ²)î8.'‹ÅbÉê&ÿ+W®Ô±cǬÖÚ´ic3X³uëVýú믆õ ¨^½z’¤yóæ),,Ìê¸×_=Ù±–±±±†Ç—:;;kĈ¦½ýþûïZ»v­Õ𝝝^{í5ÓùíÛ·OsçÎÕÞ½{¡ØØX•.]Z¾¾¾jÙ²¥þûßÿ*Ož<’¤3fèÂ… ÉÖð÷÷×+¯¼b×ý²³ß~ûM[¶l±Z+Z´¨Þyç�t[={ªX±bVkû÷ïWPP�<¨C‡éüùóòññQ… T¿~}µjÕ*q׬ݻwkÓ¦Mvßcûöí J6¶D‰‰» Þ»wO«V­ÒÚµk¬��åÎ�[%K–Ô3Ï<£ºuëªuëÖiÚ9Êb±hëÖ­Ú·oŸ8 ððp]¸pAW®\QÁ‚ååå¥bÅŠ)00P;v´+øµvíZýþûïVk-Z´°ûxÝÕ«WëÈ‘#VkM›6UµjÕLç�7NqqqVkƒ¶;ô”��  6hÿþý:xð """tñâE]»vMîîîòòòÒ“O>©¦M›ª}ûö©íÞ½[‹/Ö©S§tòäI�;wNÒƒcÑýýý5lذÄÏ;3W¯^ÕúõëuèÐ!9rD‘‘‘ºpá‚îܹ#OOOyyy©|ùòjÛ¶­š5k–ªã«-‹vìØ¡ùóçëØ±cº|ù².^¼(WWWùøø$~=ûì³zë­·Ò}ǵ‡nܸaºËbïÞ½­‰£O?ýÔpÞ[o½•ª÷ÕìÙ³uöìY«µÊ•+«M›6)^Óš_~ùE{÷îµklž»vîÜ©mÛ¶Ök×®­—^zÉt�ˆˆmܸQ‡ÒÑ£GuáÂ]¼xQñññòôô”§§§|}}Õ¾}{ÈÅÅÅt½«W¯jêÔ©VkžžžêÓ§�é|�=ÀåܳYÈÁà€à€à€à€à€à€à€à€à€à€à€à€à€à€à€à€à€à€à€à€à€à€à€à€à€à€à€à€à€à€à€à€à€à€à€à€à€à€à€à€à€à€à€à€à€r¥Ç"wïÞÕO?ý¤ãÇ�Ëb±¤Ç’’$WWWÕ©SGµk×ÎêVÈVÒ¼uë–žþy�9s&=ú°ê½÷ÞÓW_}•Õm�m8YÒ¸eߢE‹Ô¹sçôêÀ*ÅÆÆÊÅÅ%«[ [pNëW¯^M�>LÅÇÇëâÅ‹YÝÙFš€ óåJëÎÎÖ3„µjÕJëÒà_êÖ­[:zôh²ëNNNYÐ ÙSš€ É®+VL?ýôSZ—ÿR{÷îÕ«¯¾šìºÅbÉ‚nÈž8DDDDDDDDDDDDDDDDÙÊ­[·²º9ÄíÛ·ŸÕmd€Èâãã5}útùùù):::«Û�,\¸PuëÖÕü‘Õ­dˆ\YÝpüøq½óÎ;:zô¨$iõêÕêܹswõï©��«µâÅ‹ëé§ŸÎ䎀´Y¶l™Nœ8¡€€uëÖM}ô‘ (�Õm¤€ÈRû÷ïWóæÍuïÞ½ÄkK—.%˜Ö­[§AƒY­uïÞ]“&MÊäŽ�/^Ôœ9stìØ1åÍ›WU«VÕ[o½%WW׬n-S�:uJGŽ‘$ý?öî;>ª*ïøçÞ)™ôNBb�ˆi „b¤ ,¨èÊbC)�èª+öUù¹î£ ¬¢(««kA‘E—UÄE)¡÷"½¤÷L¦ÜûûãNÂLæÞ›™´ áó~½²:ç{ï9ç&3YÖýø=’$á“O>Á¦M›°råJ„††xwDDDDDDDDDDDDDDDD £ÙO�:…ýë_šõçž{ƒÁïy.\ˆsçΩÖúõë‡Aƒù='5Œýû÷ãž{îñÿÀ�`·Ûa0tCg÷ÝwÚ¶m[ë:gΜÁW_}¥Z{òÉ'a±Xj�cãÆ�ذaƒj-))‰�EjŽ?Ž!C† ¤¤¤zì?ÿù¾üòK¬]»öŠ îØ±ÃkìÀ�xðÁ±dÉ’:ý÷ QsÓ¬€³fÍÒ¬?ýôÓu l|ùå—Ø²e‹æœ ƱcÇ0jÔ(� „„„àÛo¿…Éd|óÍ7šÇÒ&$$`âĉµ®µråJÍ÷Ö AƒÐ¯_¿ZçX°`–,Y¢Z;v,€Ô,L›6Íë3(ÝðÞ{ï=<ÿüóØU`<ðÀX·n�×çvÍš5xê©§0wîÜ팈ˆˆˆˆˆˆˆˆˆˆˆˆˆˆ¨áˆ�Þ]yœN'ÆŽ‹üü|�q³ÙŒ%K–à†n¨ëÝ»·æ<ûöíói=­hm5_×ÒÛ#QSÚ¼ys�j-Õûï¿�¡C‡z�ùå—X¼xqvDDDDDDDDDDDDDDDDÔ°šM@j‹/Æ—_~©Z3f ÆŽÛè{øÇ?þ�£G�zŒ�F,X°éééã½{÷Ö êøÔ >mݺµÖûív;>¬Yg°y›4irssUkóæÍC\\\ïHÛ�?þˆ>ø@µvë­·â±ÇÓ½ßét6ƶ.[ƒ ,ÀwÜáu$ð‹/¾ˆáÇ#&&&@»#"""""""""""""""ª?¯0gΜÁÆ�Uk5Ãw�áâÅ‹xã�7¼Æ'L˜€ßýîw^ãzáº={ö@’$ˆ¢v#˳gÏâüùóšu_:8p’$©ÖÂÃÃѱcÇZç ÀÙ¶m²²²Tk•••M¼}.\Ðü|¶oß¾Öûo¾ùf,[¶Lµ6pàÀzííre±XðÙgŸ¡G�ŸãââbüùÏÆ'Ÿ|ÀÝùÇf³aÿþý(//ôVˆˆˆˆˆˆ.44ݺuƒÑȼIDDDDDDDDW6þ2jR/¼ð***<ÆŒF#¦N�ªz}çÎ�a±X`µZ½jv»G�Õ àÕÖá/??G�Õ WéuìÕ«—n‘¨)Í™3.\À¶mÛ<ÆÇƒêmÍ IDAT�‡'žx"@» ¼””Ü}÷ÝX²d‰ÇøÒ¥K1vìXÜ|óÍÚ™ïV­Z…)S¦ ¸¸8Ð[!"""""j6âââðé§ŸbÀ€�Þ QÀ0¹DMæØ±cøþûï½Æïºë.¤¤¤¨Þ#Š¢nÀýû÷ë®éK‡¿ÚB‚zkðø_jN¢££±råJ|ûí·xíµ×0{öl¬]»ï½÷ÞT}þùçU¿/¿ürvã¿çŸžá?"""""¢rssñÒK/zDDDDDDDDDue'B¨IÍ›7ÏkL<÷Üsº÷é…ìöîÝ«{¯/ÀÚ®Ñ[ƒ@jnAÀÀ�ñøã�cÒ¤IèÞ½{ ·Ô,´k×wÞy§×ø¡C‡�‘‘€ùN’$œ9s&ÐÛ """""j–N�:è-€Ô$ìv;¾üòK¯ñáÇ£]»vº÷Öµ Õj­µC ¯ãRkÒ;¸OŸ>µÎOD̓VØøÓO?mâ�øG–å@o�ˆˆˆˆˆ¨Ù’$)Ð[ """""""" (c 7p¹©¬¬Ä† pìØ1œ8q'Nœ@hh(ѦMôêÕ =zô€Ùl®×:’$aÆ 8}ú4233qöìYdgg#66ÉÉÉHJJBrr2ÒÓÓ©9O^^~ûí·ê×™™™š×fffbÆ cýû÷¯×sTY¾|¹êñ•·Ýv[­÷¦¥¥iÖvîÜ©YÛ²e‹OÿøðáÃ())Axx¸Wíĉ(//W½¯C‡ˆˆˆ¨u~w%%%ظq#Nœ8�ãÇ�ãôéÓˆˆˆ@bb"RSSÑ«W/tïÞF£ïÍ'N ++KµÖ¯_¿ê¹Î�;‡ àÈ‘#¨¨¨@RRyätèÐÁ¯gPsîÜ9œŸ}úôñø]säÈdgg«ÞŸššŠäääZŸÍ]QQÖ¯_�“'Oâøñã8{ö,¢¢¢�˜˜ˆvíÚ!-- ]ºtñëxá]»v¡¬¬Ìk<44=zôðÛ»w/–/_ŽÌÌLdgg#11mÛ¶Ejj*nºé&$&&úõ<×]wÚ·o�£G�zŒ/[¶ ùùùˆ‰‰ñk>"""""""""""""""¢@cÐG'OžÄ矎… z„‹Ô„††bòäÉxâ‰'ç÷Z?üð^{í5¯�Ššˆˆ<úè£øãÿ¨ܸq#&NœèÓº‹/ÆâÅ‹=Ærssý ÷hY°`�ê¸/ÃØØX\sÍ58qâ„W­¨¨YYYHJJòªùrüo•ŒŒ Œ1Âk\¯û_má.wû÷ïǼyó°dÉÕ𓻘˜<úè£xøá‡UC‰5}òÉ'øðÃUkûöíC«V­ðꫯâã�?†Ãáð¨�1¢ÞÀììlŒ1B3„Ó¦MÃM7ݤZ+,,ÄܹsñÑGi†-ÝuïÞ/¾ø"n¹åÕú_þò¬^½Ú§½Ož<Ùãõ¸qãðÞ{ïi^¿}ûvLŸ>6l€Óé¬uþ!C†àí·ßF›6mTëÀïÿ{ŸöºråJ¬\¹Òcì·ß~CBBBõë·ß~K–,Q½ÿõ×_Çc�=æÓZÛ¶mÃ矎ÿüç?°Z­º×&&&â‰'žÀ¤I“`±Xj�{êÔ©8pà€×xjj*vìØXµj^{í5ÝžÑÑÑøâ‹/4ßWZú÷ïïõ»Õáp`Þ¼yxöÙgýš+Ðþýo`ôè@ˆˆˆˆ¨é|ñ0aB wADDDDDDDDÔ¼ð`üýïGïÞ½1wîÜZÃPVV†¹sç¢W¯^X»v­ÏëœèSøP:ˆÍš5 Ý»wÇÇìóZM©¢¢¿þú«×x||}ûöõèW¹¹¹=z4þñ�x…ÿøÕiPMYYF�­þ;v,žyæÕÚ‚ pýõ×ã�wÞñ)ü(]áxà 4‡ªÓ¾ýUQQ�É“'cøðáøõ×_} ÿÀêÕ«Ñ·o_¼ùæ›>ßH6› �>ú(FŒ�¯¾úªÖð t&|ùå—ѯ_?Õ�®¯ a·Û1qâDÜwß}µß]PP€;ï¼|ð�_ëh…ŽW­Zå×%[SII î¾ûnÍîw‹qÏ=÷èvœ«m­^xß~ûm�îoL{öìQýþ :Ôç9ü J’„mÛ¶y�§¦¦ªv4Ôê¨÷ó¨-˜ŸŸ�ßÿþ÷~”ª\¸p·ÜrK½‚I/¾ø"6nܨY7™Luž[’$Œ?Լ榛nœ9sTk?ýôžzê)”””Ôiý}ûöáž{îAnnn�î÷•,˘Ÿ}öYÝ—;vÄ—_~ ƒÁàU;|ø0&Ož Y–ë¼>œ;wcÆŒAeee½æÑó·¿ý ?ýôS½çùî»ïšm—N›Í†Q£Fa÷îÝõ𧤤÷ß?Ž?î÷½²,×9ì:kÖ,Ÿ¯�ŽŽFÇŽ½Æ‡jh˜ˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆ¨9«ßùŸ-ØŠ+°téÒ™K’$L˜0Û·oG«V­¼êëÖ­ÓìÒ&Š"î¸ã 8)))8þ<2224»tUVVbÆŒøæ›oqqqA»ÌÌLœ9sFõÞ””´iÓÆcLŸžQ�VpРA>ÏÑ¥KX,Õ]j!=­#}ÓÓÓ!Š¢×ñ¢V«{öìA¯^½ªÇŠŠŠpþüyÕyúöí«ÚI°Êܹsý:‚XOEEî»ï>lß¾‹¥Aæ¬R×àßÿþwÌŸ?_³ž��€o¾ùªõ™3g¢¢¢Bµ‹x×_=BCCqôèQÌ›7'OžT½~çÎ�X¹r%î¼óNÊ{Å=¸}ûvÍ€`ZZ‚‚‚ª_·oßÞ£žŸŸ�wß}Wó9�F# €N�:ÁjµâÀ�º?÷Ù³gcâĉÕ?ÇÈÈH�Ïç… 4Ãs‰‰‰h×®�ǘÙlÖ\˯½öŽ9Ò sbüøñذaƒîg¤!ýøã�Ø»w/ºwïîÓõýû÷ÇáǽÆ3220`À€†ÞQ£¹l€‰‰‰M¶Vnn.þô§?é^óØc�aذaèÙ³'²²²°}ûv¼ÿþûª¡(--ÅŒ3T�CÕë÷Ö[oaâĉcãÇ�ÇÈ‘#ñàƒªÞ“‘‘I’ Š"ÒÓÓ=ºþíoÃÌ™3Uï3f ^zé%ͽԕZÐb±àª«®òyQ‘––† 6xÕN�:…òòr„„„T�iu¾4hAÀ?ÿùO¯Ú–-[<€z�õ:>|3fÌЬ›L&<ûì³èß¿?ºvíŠS§NaË–-xûí·qñâEÕ{²²²ðþûïãÙgŸÕœ·.êrð?ü€¿üå/šõàà`|óÍ7HNNÖ¼æ×_U���ÅæÍ›[=6bÄ<üðØ8q"V®\©zߦM›ª€ýë_=j]»vEVV–ê}óæÍÓÝç›o¾©y,ì5×\ƒ~øÁëwÓwß}‡I“&©Þ“——‡5kÖàÖ[otîÜÙãó9oÞ<ÍŸñ-·Ü‚·ß~[s¯uµeËÝcªCBBðüóÏ#==�:u‘#G°eËÌž=ª÷:t .Ôü¥Çh4âÞ{ïŰaÃpóÍ7£¬¬ GŽÁŒ3°}ûvÍû~øáŸ€5ƒžUêÛ±“ˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆ¨©]6À¦ôÕW_¡°°Pµf2™ðÑGaÔ¨QÕcèÔ©~ÿûßã�@FF†æ¼¯½öÂÃÃ=Ƶ®�ŠŠò ÿU¹ýöÛ1tèPüòË/^5«ÕŠÝ»w£gÏžª÷6%Y–‘™™é5é÷\½{÷V ÀîÝ»‘žž^ýZ-Ø®];DGGcàÀ�ªsÔ<þ³f—Àš{Ñòé§ŸÂf³©ÖÂÃñhÑ"�®oÝ»wG÷îÝqÛm·áž{îÁ¡C‡Tïýøã�ñÔSO©©[›Áƒc̘1¸þúëqõÕW£¤¤yyyHIIñkž={öࡇÒ<ºWE|öÙgèÒ¥‹æÇŽÓü|=øàƒá¿*f³o¾ù¦fPë3T_jŸ¯*¯½öšj0ùÎ;ïÄ]wÝ…ÿûßšsV›ƒ?üPóç‡ÿûßèÖ­[õX¯^½Ð«W/Üzë­5j”êçÞ{ï=¿€AAAX°`† V=‰¤¤$ 4éééš!k­n�j¢¢¢Tǵ>{DT7g cpèb2VýÖ%Ö†í`[W áEpíoèš”‰VáÅ�ÞQ½1¨B+¸�<òˆGøÏ]DD¾úê+\wÝu(//÷ªÛív|ûí·?~¼Çø�Tç“e²,kÃ{ë­·jv'ËÊÊjÀœœÕq­Ž½ÐÝÞ½{«€ùùùªÇßxã�€èèh´oßG�õ¨¯_¿ÞãµÚÑÂUúöí«:ît:«�_VóòË/{„ÿÜ%''cÑ¢EèÕ«—j +;;ëׯÇàÁƒ5çWóÉ'Ÿ`ôèÑc‹ñññ~ÍsöìYÜ}÷ÝšáF˜>}:FŒ¡;�Öû‡f-99C† Q=Î×`0ÀápÔùHc-'NDII‰j­_¿~š÷ 4Hó÷ÈÙ³gdo Ájµâ§Ÿ~ҬϚ5Ë#üç.55Ÿ~ú)†®Z?qâ8 ­iîܹá?w‚ `êÔ©xüñÇUë ÌÉÉÑý�KDþ)( Å�¬d|½³rKÃk¿¡ \ñáEH‰Îe�ˆˆˆˆˆˆˆˆˆˆˆˆˆZk8uêöîÝ«Z�<òˆîýááá?~<>úè#Õúþó¯`‡¼ºÏ@QQÞyç<óÌ3ªsMž<“'OÖÝO åç竎׵ ÷n}5ƒ|UÜ;Þxã�^Àüü|œ>}W_}5í`ûöí¡Z[·n�fw»��Œ7Nó mÛ¶¸í¶Û°|ùrÕúÒ¥Ký Ž;Ö+üW•••?~<òòò4¯™ƒ(ú–'EÏ<ó ¦OŸ®Z/..ÆŒ30cÆ ÄÅÅ!-- =zô@¯^½Ð§O„……ÕéÊþýû±|ùrœ;wYYYÈÎÎFNNrrr4ß3ÍUc¿_ú¸ã†:šW/˜››«Û¥’ˆ€ ¢€Fÿ÷Pd�%²÷$""""""""""""¢â² .]ºf³Ùïûn½õV¿º¦é#îÓ­[·Fxx¸fð0;;Û#xõÕWcΜ9xøá‡uçµÙlؾ};¶oß^=–””„{ï½O>ùd�ºê5¶¢¢"Õñº†¸z÷î�%K–x�K’„C‡¡}ûöªG80Àãubb"RRR�™™é1^ÕÍýHaµ=hiˆ÷�^ø¨¼¼ÅÅÅšG¹sçpῨÏ<ó Ö¬Y£ÛqPÂX+W®ÄÊ•+ƒiiixâ‰'t;Ï5†_ýÓ¦MÃ�štÝÆÔïW½`vv¶ß{j zŸŸÒÒÒ&Ü ÑJ4F3`0 ЫA ÿIਜöFXƒˆˆˆˆˆˆˆˆˆˆˆˆˆ¨yàÀ5èVü ]¹w›«Én·{�Ý}÷ݘ?>bbb|^P½ðÝÞ½{±cÇÕ#VÕŽüU;xð JJJ<Žvg±XpÝu×iî¡!Þ?ºaÎæt„, S§L™âW÷;A°xñbŒ?Þ¯µœN'¶lÙ‚qãÆaРAºA͆b·ÛñÐCáøC‹ ÿ ó~mÛ¶­fMíw]s ×­Òd25áNˆ®$ngòšC D´‚Øêˆ í ¶j௄v[¥Bˆi ‡)íþªÖ&"""""""""""""ja¬A¯Ë`ee¥ÏójÖ´&wÜq6mÚ„[n¹Åçuª”””`Ú´i˜:uj�Ãu�!44Tu\«3`mºví ‹Å¢ZÛ¿¿f·Ço¼ÑkL-(I¶mÛ¦ìÛ·¯nx(((H³fµZ5kîdYFqq±fÝhl~�;wî܉9sæøuOXXÞ}÷]|ýõ×HHHð{Í}ûöaäÈ‘X»v­ß÷úcìØ±Xºti£®( ñûNë˜o y¾Wè~¾ü a‘ÿ£ Bp8!"BDœë+¾Æë8?kñ—^‡ÇB ‰€`2+M‰ˆˆˆˆˆˆˆˆˆˆˆˆˆZ(kˆŽŽÖ¬�?Þ§9dYÆÅ‹5ëz“øøx,Z´_ý5¦N�Š´´4 ŸÖ€… bîܹ>_ߨZµj¥:®Ò#Š"zõê¥ZÛ»w¯j0:::tðW Ê1ÀZ�ÞÒÒÒt÷¥Y»pá‚î½î×iuN¡YÿënæÌ™8|ø°ß÷ :›6m»ヒûî»­[·öùÞ’’Œ3F÷óVŸþ9~þùgÍzÇŽ1wî\lܸ'Nœ@~~>òóó±lÙ²FÙOCÓû}çÏûUKll¬ß{j yyyš5‰š’ „óD@t} ¢2V}™àY«NôÕ¸OtÝW5'“DDDDDDDDDDDDDthží™H/Àåk077W÷˜V_º� :C‡TTT`ë֭صk¶nÝŠU«Vévù›3g¦L™¢Ù}¯)ÅÇÇ«Ž×5(ÇoܸÑk|ÿþýªaɨÎsíµ×"::Úk/‹/Fyy¹æÚzâý£¨Òú~6•¨¨(DGGãäÉ“^5‡Ã�‡zkÖ¬ñ»ó[TTÆ�_}$pff&¶mÛ†�;wbíÚµ8xð æ½6› o¾ù&Þzë-ÿ¦²,cæÌ™šõ)S¦`æÌ™„Ë7`ÒØïW½€a åääh֚랉Z2Y–§�€ ÀhD£òûU–!;ìJM’”šÁY†ìt;Y ÍD÷? \¾¿£‰ˆˆˆˆˆˆˆˆˆˆˆˆˆ|Á€5¨uŠ«²zõjŸæP §UiÛ¶­ß�¡àà` 4O=õ-Z„õë×£G�š×cÍš5~­ÑXº  Â+))Q=zY«Ó 8ÐkìÌ™3š×÷ë×OwozïŸuëÖéÞ[%##£Nó7¶¨¨(¬X±}ô‘æ5ÀìÙ³ë½VJJ F��×_ëׯÇ;#°°0Íë¿ûî»z¯YÓöíÛ‘��­ZKJJ¬Y³.ëð ÿ~úõ×_}šCï÷] ߯z´: ‚€ððð&Þ Ñ•N$'`-…\’¹4²­�%W?°•C.͇\œÙZª\ï ÂnUî+ÉÊ‹”ûˆˆˆˆˆˆˆˆˆˆˆˆˆˆ® ìXƒ^X,33ëÖ­S �¹ûüóÏ5kýû÷÷x½xñbœ>}ÚëºÐÐPüéOR�£S§NX¶lî¸ãìÚµKõµm�³Ù ›Íæ1®ÔóUŸ>}üº>==]·ækxìÚk¯­õø]½÷Ïúõë‘™™‰””ÍkdYÆgŸ}¦Y¯ùþi*±±±X¶l:uê˜gÏž�‘#G¢k×®^µÂÂBÍazzºj·FA0aÂtîÜ·ß~;ìv»×5yyy(**Bdd¤?�¥ëСCšµ!C†4Ø:�tã�7âã�?V­ýðÃÈËËÓ=Æ×áp`Á‚šu­î›�–››«:îKwV"jNPQ¹8€ A4&‹ÒíOdk ä¢lÀV¡ôó sìl@Ñ@– ‡C«êâyy´‰ˆˆˆˆˆˆˆˆˆˆˆˆˆ|Å` W_}5Z·n­yüåǬ}·ÝvæÏŸ�Ÿþ ,ðê¬Y/¾ø¢fM’$<÷Üs¸ûî»ñÖ[oá§Ÿ~Âûï¿� &`üøñ^G{»{ì±Ç꽷ƲfÍÕq:‚QCru\_jõêšJ]л—ˆˆˆˆˆˆˆˆˆˆˆˆˆ¨eãÀ*"##ñþûïcòäÉš×ìÝ»{÷îõyÎ믿ãÆ�ó¿úê«1aÂÕ.[’$áé§ŸÆ;#´´4¤¤¤ //T VUIIIABB‚jM/`k×®ÅÚµk«_/Z´¨ÞÇbjç222TC‘õ™³¦o¼±ÖkÒÓÓ±råJÝk, :wîìÓšíÚµÃK/½¤{ÔoFF222Nn¾Ã IDAT|š†Žßýîw>_ßTÞzë-¬^½ÅÅÅ^5I’0eÊlÚ´ f³¹zü‰'žÀ?ÿùOÕ°ã¡C‡Ð¿¤§§ãÚk¯Edd$Μ9ƒÍ›7ë†kõ~Îzïy«ÕйsçV¿NHH¨îÂØªU+$%%ivÚܼys�ŽdÎÉÉѬµo߃A³Óß¶mÛ°mÛ¶ê×ï¾û.ºvíê÷ÜõéÓ?ü0þùÏj^³zõj¬^½Úç9Ç��nݺÕk_�åèÑ£Õ¡MwF£}úô ÀŽˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆêŽ5Œ5 Ï<óLƒÌÕªU+,Z´&“Iµþꫯ"--Móþ3gÎ`éÒ¥x÷Ýw±páBÝðŸÉdœ9s4ë M~Ìe»víT�6ݰaC�çìÖ­,‹î5‹=zô¨u._B‚}úôÑ=J¸¦çž{£G�öùz=íÚµÃ'Ÿ|Ò s5´˜˜Ý ãÉ“'ñúë¯{ŒEDD`þüùº?¿ŒŒ |ñŘ;w.¾ûî;Ýð_·nÝðÐCiÖïºë.ÍÏ^m^zé¥:ݧ§  ²Æ1•ƒA÷ñÆ2}út¯ãÉëê†nÀ[o½Õ s5­àmZZZ­¿SˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆšuL›6 ³fÍÒ<¢×]»vÅ/¿ü‚Ö­[k^†¥K—ê†}a2™°xñâZƒ /^ŒI“&Õkž#F`ùòåu\6­àñ=÷ÜÓÄ;!"""""""""""""""ª?k1eʬX±�:uòë>“É„Ç{ «V­Brrr­×‡……áÇÄÿûÿÏã¸T_ÝtÓMX¾|¹O]¼:uꄉ'ú½F}¨ hwãòEmÇ÷ë×ϧyDQ¬õZ_�v'¦M›†%K– %%ů{CBBðꫯbéÒ¥ˆŒŒô{í¦öÁ 88Xµ&Ë2¦L™«Õê1>dÈlÚ´ ýû÷÷{½��<ú裵†ÿª¼ð ˆŠŠò{˜5kžzê)ŸƒÀ£F�ÂúõëußS+V¬Ð¬µnÝO>ù¤ßû¬/“ɄٳgcÞ¼yˆ��÷ëÞˆˆÌž=_}õ•æû ¹P †„„à¾ûî Ànˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆê‡@ôîÝ6lÀìٳѯ_?Ý£`£££ñàƒ"##¯¿þº_�¼ ž~úilܸ�?þ¸O!œà§Ÿ~²eËüêR7sæL¼÷Þ{¸æšk4¯‰ˆˆ@tt´Ïsê0`€jî‹/¾¨óœµ…òôºÒÕTÛ1À¾¬eذaغu+^}õUÜpà º×&&&â�ü#¶oߎ©S§úuìp µiÓ/¿ü²fýäÉ“øë_ÿê5žœœŒï¿ÿóçÏÇ­·ÞZkç¸ÐÐP<ñÄؽ{7¦OŸîSøPÞËë֭Ô)St»=ª}Ìf3^yå¬_¿}úôÑÝÛßÿþw|öÙg ÁðáÃ5¯]½zµî~ÿüç?ãÓO?EçÎ�5¯ C\\œî[yyyÈË˃Ãá@rr2’““«ß÷õ9’l6Nœ8�£G�âĉˆŠŠBJJ n¸áÄÄÄÔzNNNž<‰'N ;;mÚ´A‡píµ×Ö©{gm.^¼ˆcÇŽáØ±c())Arr2®¹ætëÖ­I¢§N�ÂÁƒ‘““ƒÜÜ\DGG#>>íÚµÓ (6G÷ÝwV­Zå5ž‘‘áw—צät:Uáÿþ70zt6D䣽çÚàçC]ñö/w §4pý‰Sˆˆƒ� Dµ† Š�+Ë€‚ó�Š.²!îj‘ñÌ!€Ã)ÿ,äÂó@e9„Ø6c¯‚B{%äÒ<È�’‰„�Ô‚1Hy]^¨Ü[tp:.à‘«0¢ó´�¿ÀïÕÅ_&xŽY,deefCDDDDDÔè6oÞŒÛn»ÍküܹsHJJ ÀŽˆˆˆšc 7p9ŠŽŽÆ°aÃ}QÑ·oßF_')) III8p`£®3vìXLŸ>v»Ýc|ÆŒWT°*ÐFÞšâ³e6›Ñ©S§:¾âãã¯Û °!%$$ !!7ÝtS“¬WSÛ¶mѶmÛ€¬Ý�öï߯þKKKkÖá?""""""""""""""""=—Çù¢Ô"ÄÆÆâ�ü£×øž={ðóÏ?`GDt¥Pë> @÷èj"j*²ò¥Ù”ºªVõU³\¯fÖDDDDDDDDDDDDDD—5©I½üòËhÓ¦�×øôéÓ°"ºìر«W¯ö;v, €‘—ª Ÿ^˜O/ç'뉈ˆˆˆˆˆˆˆˆˆˆˆˆZ.©I™Íf|ðÁ^ã{öìÁo¼€QK–››«Úy4>>žÁc¢æB0@6!‘@H` ñR Ïh‚#€ÐhÀ\]““r_h` Á5)ÀDDDDDDDDDDDDDte`�š\zz:zè!¯ñ7ß|~øavDD-Qqq1î¸ã?~Ü«ööÛo#"""»""…Ûq¾¢°„A�ƒ!(Ø-(@°„*µ¨–p@HJØÏ„ÇñJPàm‰ˆˆˆˆˆˆˆˆˆˆˆˆèÊb ôèÊôÆo 33?ýô“Çøÿþïÿ"((“&M ÐΈ¨%(//ǨQ£pøða¯Ú¬Y³0räÈ슈¼É FU]ü\cJøODBp8„W`W’«ë‚ A!ª:ÿÉ2 K€ ±Q Ä6)ƒóçÏGÿþý½j/½ôl6[vED-Å×_�Ý»w{�?õÔS˜2eJvDtå1ˆŒ ÞÇñ J`O üQT-±'¸}Á£a g­ª.{Öªç'"""""""""""""jÙØ�Æl6cñâŸå–[°ÿþêñ[o½f³9€;#¢ËÝÈ‘#ñÜsÏÁétV�=øàƒxå•W¸+ºRU:Œ8|1 E!°; �ÞN“9��ã9‰°KžÜ”%'à°A¨,‡,Šná½"€Ó Ø­€Óá�?$"""""""""""""jA¤€ Á�?þˆ3fàÃ?„,Ë3fL ·ED—¹¸¸8 2«V­Bll,^yåŒ7.ÐÛ¢+TaE(þ¹qöœ½…å¡�ÞN“©tQnB‰Õ¥+Ÿ«à°åÅ�% B£té ËNÀ^ÙnU†lHDDDDDDDDDDDDD-€p¡¡¡˜>}:î¾ûn¼òÊ+6lX ·DD-Àý÷ß�¤¤$¼ú꫈ŒŒ ôvè æ”D\,ŽÄ¹‚YC½�&ã”8e’,zìVÈ¥ ¼rcód²pØÁ€DDDDDDDDDDDDDÔ’1HÍF�=°lÙ²@oƒˆZˆQ£FaÔ¨Q�Þ$Y€ÕnB™-¥•–K…†>úV�àþ7®u›2çôs:”¯&Ù€  Ì€DDDDDDDDDDDDDÔB1HDDDÔˆÈ0Š ¢¤qEášÍºMµ6QËÇ Q“© ¾ €(¢Õ!¹F;W$×d¥#ž ¢ÄÆYWvûÉ¡t;¬êxXµ®Øˆ�ùªÖ’œÊóµP 5•êüŸÌ‚ÃÉÄkÈ®x®`�,C¶[�ÊrÀnu­¯¬� Pæà^×E”à�ÓÙZØmÊkAŒ&ÀâZÛíHâ#’Ùiw=w…+üØ2å•…!§4YEѸ6îâÂJ`1Ù!6ÆÏ•ˆˆˆˆˆˆˆˆˆˆˆˆˆš‰ˆˆˆšš(B0CˆMQB€¢ØðkÈÊÈ%¹� ÎŽJ%' @P0ÄèÖ"[¡qŽã\á¿R ç4d§ÃÕ Ì¡¢€ÈV±Ö”Î%� ² ;¬ <órðüUøåpW|³«ž¶ ƒÚDBD‚Œ ] $"""jr®cx F¥ Á äàÀ½{Ÿëo\×»Õàv¤®û|UdùÒ5¢ÁU.] ×À3IûþêéÝïw_[p«WÕÜ®7=ç­ºV4*k‹¢2—æ³iÌï~”rÍ} àt(ßÓšk·@çŠbp"7YEÑø`Ýp,ßß)ѹ¸¯Wº&e"Äl ô‰ˆˆˆˆˆˆˆˆˆˆˆˆ¨1HDDD(‚¨„àª:áÉ€ìnj‘+kßÜk‚àš¨÷y¬YõåZ[v[Ck~÷@`Õ½n�=Y®QUÏå¬ÚŸ ¬-”®„²|é¹…ªçÖš_©UÏ(»ît=· ˆ€(¹­ÝòȲ€¢Š`œ)ˆÃ®ÌTÉn�²J vŸm‹#Ù­‘^„VáE°:ÌHŽÊCbxBƒ*½m"""""""""""""j Œ«£� %ç´+GåBP:MÊe’¤Œ;l®àžQ©  K€Ó©t½“¥K÷Õz¼®|)Ø'9]óÛÁà6?”9våYŒfWw=WÈÐaó^FåZYm}·î„²¤Ìët͸:"]ù?YY[íÙdùÒ÷Pöm ríYkí–Á!‰8ž›ˆÏ7ÆëŽSyñÕµr[NæµÂ—Û`÷Ù¶¸1õ(FvÛ�vAÙÜ15‰ˆˆˆ©ªÙ�Ó¹4rY`0A�¢A€ì´¥�KrÑ!8�…`4BvJ@Eä²BÀaƒ „FA0»ºûÕ²6ÈN;P^¹80A‰Âc "d§S©U+óG¶‚# ˜-€Ó ¹¢ry!d›Bx,„°À¤rô¯ÆdÉ”B®(dBD<äàF3 9 »žM¶Û”ùÃc£�ì�+Ë!]TÂ�æÑI5º¶L2\(ŽÄëŽì’ÕkÎÆ ÄŒ#“p*?#®Û��÷6ñN‰ˆˆˆˆˆˆˆˆˆˆˆˆ¨±1HDDDP®°šäTmeJ/8ìÒñ¹’Ùn…\ZÁdvuÙ“•š,v+P^ ÙV¡á‚Ã}à]Z»ri>„ PÀ|©.Ë€­B :*��H§k~YÙWE1PQ ˜ƒ!„D¡öžÛ¿’°U(ÁGÈ@p8‹ëÙe@¶Y!—){ � Ë—žÍaÊ‹\ %å{Ñ‚É2 É"~;ŸŒ]gÛºuþ“=þ¥Ö ”VZ�U ‡$ 8VŠkâ.":¤¬É÷NDDDDDDDDDDDDD�ƒ@"""¢fAVŽºuT*Ù¸ª#qWòËéª Êu�/“ë””0œÃvé¨^¿–vÍo¯TŽÙ•Üæ¯^Û¦Ô%‡çü²[ÍéÔZAÿ¹«æ¯:5æwÚk<›à:IXº4î´×aíË‹$‹¨°›ñ¯éXq ‡ÆUUß»K!ÌC“au˜q¾8Sÿˆ´«�CZîÉDDDDDDDDDDDDDW‰ˆˆˆšÁuŒ­ZIT€ÝýWC½šãþ.+¢x©ë ÛôÕõšµêõ@ê~ònÕþ¡1?´žÍ­VŸg¿LœÌ‹Ç÷{Ó°áxGdÄ(ƒUE#` SƬ¥J R–ªßKÙ%È8Ñ1!%(¬Á°Nû! -»c"Ñ•€@"""¢æÂ=È&ÔáÕps¿Ïï0œûZ*A>÷€¡PãúK¨Œûº¶V¸5j*uA亮}ù¨°›‘Y‡ Ç:át~ŠÐÐÐ@o‡ˆˆˆˆš€DDDDDÍ\vINæÆãLAÊmf·Š ˜‚ D%@ˆJ &aÑ�s3!—æ•e®.€J@òÀùTØÍ¸X…©ƒDÏ6'òøBqÖë„pKrJÃ1¢óÞ?ÂîÝ»þ#"j�Ö¬Y‡Ã£‘ÿ70Ñ•‚ò#""""j¦ìNŠ­ÁØsîjìÊl‹bkˆþ« GB »t ²Á„D¢ø“‹sk©ª�^}¸ DABXP%®K<‡˜ÐÒ&~:""""" ¤¢¢¢@o�ˆˆ�,Ë(**Blll ·BDDDDM„@""""¢fªÜ„ÓùñØ|²vŸMõ,Š"K„àp¥ûŸÓá Ê€h„ Á§äœvÀZBõíÇrZC–E”UãñA+$""""""""""""º 1HDDDDÔL ‚ “è€Íi@…ݬ ʲrÔ¯)‰TºJNn�«þ^4@Œn Y4@.8Ø*”k]ÝK*-8™�ܲpTØÌ6Ûšôùˆˆˆˆˆ(p·AÈÝ AM¼""ª³ÂB`Ïž@ˆˆˆ�@""""¢fH–WãhN"òËÂ`w”‚À`,á‚B!˜‚<�v',a€$’¹8¨,S^ J+ƒp*/�uD¨¹Ý“Ï ØdƒA”šì9‰ˆˆˆˆ(0d�ÿñË/€ÁÐÄ›!"¢:Y½:4л """¢@c�ˆˆˆˆ¨r8E\,‰Ä¯G»àBqÔ¥‚ F„�¥  (*�>5² ÁáLA�œ6È;à,å6 Êm,ÝÓvɈ֑…H/D;]$"""j.dÙõíŽnJ±Æk½ëë°‡Úö¦US-Öº òU=‡J]o~YïÞË›C6à\a ~:x=rJÃ/=£ Æ 4ZéXë³»Ž 6CˆL$ráy@–\Aç cp"7g ba)gð2s±8G³±ÿ| Š­ÁÕãÉ‘èÐê<º%Ÿ�ÅdàéJ'Ë@…ÝŒï÷¦!³0¶ú×–Ñ !ÌlÅÈ®»�•ØM]¦$""" 0%!(a.c`4+�-Y@0(ãF³r×�dÑU“œÊ}ÊM¾å>÷µ«7æ6¿ì ’ ¸”ūڗ)ȵ/À¿  Y4zÎタdz«kÊÖD×}`4¹=w Ê2ÊífœÊ�÷�€)H9ÚW0ø~”ïWp$`·)ÇW–N;¥•ÉNÄ뎨�2D—óàË@QEvf¦â· I8r1 .\…âŠKÀ¤ÈB´ouGsÑ)! ×¶º€0³¢ØB>#tY�dg c°ýt;|»§7NåÇ{+&tn} áEh“‹ð +�ïS"""""""""""_0HDDDh²+œe²(¡.£ 0˜\5Ùt3A°„*5£Y í®npf (‚Á–Eø‚séK`¶x†éªºÍ…@0•šà6¿ÑÁ¢äËÜ÷åïÚA¡ÊœF“2GÕö fA!€h€`2_ª €l0A¡JÐìÿÚÍœÉ Ádpz\AQÁäÇl2 ;!˜-@h{¤|à°Wÿ¨�å$âó̓ѳÍI\wÁìØìeEãïkG`û™v(®F¥Ó§$V×÷eIX{´3bBJ1&-ö[‡Ô˜l˜EGwMW‡dÀî³mñÎ/#qèbŠ­!uA�ðÛ…dÜpÕ)¤·;‚»zlA¨¹‰ˆˆˆˆˆˆˆˆˆˆ| Q ÉÒ¥€_x,¡ÙLAðÙ…D&‹+�ç áÉ’Œ ŽÌÁ€$¹:šÉ‡#y«ŽÕ5š „F® Ý¥ð¡kþÐ( (Ì´ R:ÐIÁmm§4˜P}l¯ö—öfp­m s=kU÷C å¹ÍÁÊ|5Q Æ^¥Ü'\ÁÇ–#«8 g bkŒÊJ3(DõžZɲò3ŒL¬®€NåhX›Ãˆ¢ŠÏIÀÙÖ1hßêBý€UvIŽ\l�Ì‚X”‡Â)‰�$Ϭ$ ¨t˜�[Žû{ ÂnƋÿE«ðâíš®$•#òʱl_/¬>ÔG²Qn÷.˲€ÂŠPì:›Š‹%‘h“ƒS%’£ °k""""""""""¢Ë€DDDD�LûCA ¹ ‚ª3³ÊU¢Ñuì«Een`2¨Ö”ù]õ¾±º›žP½v°Êe¥»žIõÁ ˜,*k —æWÛSuDƒk]ﵵ焪ã�f¯{´ÖFÑ á29"xç™Tl;}­×¸`†`vu<ôéø_w²òó¶„A�†l¯Ê”��$‹¨tˆØ|²ÚDç1ØÌ¾˜„_wÅÅ’(T:Ô> € NI€S2ãxn‚M6Én “Á‰è�²&Þ1]i +B±/+ÿ=ØÛÏ\ƒÂŠ0�+• jvI$J¬ìÌLEJtZ…+¿³[VsW""""""""""¢Ç Q# «„«‚j¢NX®\Çä*ó{ïèÒÚ�†Ó Â-¤'b¯/€,B-ô( 2‚ŒD©a×l$ëŽuÆëY®zå{%˜ü=þ·€`€ ÉV¹¬Ð£üó¡nHŒ,Ľ½6Õ} jt;3SñŸ=}PPêÓõNID‘5;Î\ƒK€ÔèrJ"°åd{8Ÿ‚ ÅÑ>Ýã� ØŸ•‚έϡ[Ò„U \¿³‰ˆˆˆˆˆˆˆˆˆˆ…@"""jñNæÅcÿ¹68S‡ÒÊz§ê ÄŒc9­Qns[W–!K ¢D9JW4 ÖãzëB–!W”»2¿ ŒÁé€l-ÊòëÐA΂8í�+Ë ;¨N# ‚òº² BidQløõp:�ÊRÀaóø¶æ–…cùþž8|1 Ñ!¥ »®µÿ ]Zg"Übõéz³Á³Áá9(ËJ7HC=ÿ/Ë€É!8 ²%°U(Ç8 JǸã9­°dÇ�¸©Ý!ÃÙL™ NXŒvˆ>†x%YDni8~:x=ZG {ò™FÞ!]éDA‚ItêtÁõæ�Dì=w5º%�Aéu™ì—Mh›ˆˆˆˆˆˆˆˆˆˆ(P$""¢ïBQ2NtÀîsm‘_¦uaã°9 È*Š‚ÍáþÇ.Y §•äA®(quÊkŒ ÛÊ{¥kz¡zm¹¬À�k¤ äTæ·W²t©!Ÿ£Ré8g·5Òs Êzd[…ò|®µ‹+‚±33Gsa1ÚxÝÚ%Fᚸ‹> ¢t)øRõUá?ÑPÏÝÈÊñÉA¡B"!;í€Ó$YDVa Ö팎 Y 6S¢ Ãh�àëgH’X&dF£ÈÒ¸›#‚ò+Þ Jj‡Ðk’e9¥È/ƒÝipë€JDDDDDDDDDDDZ$""¢¯°"GsZcï¹6È-�ÜFªOr•{%䢋 ôoM²Œê€� (¯íV%ˆW’ß„k‹Ê_m€Ý yP;¦·aׯꥬSé0á\aL㮩ãBI$lκþñ[ƒrô¯Áõ Bù™˜,Âb —�ˆpH䕇ãàù”T×j6DAB°Ù“Áè­éRNŠoŒ#ꉈˆˆˆˆˆˆˆˆˆZ‰ˆˆ¨Å3ˆ‚Ԏʬî~ר!WЭ:ì'_ZÛ-#טKW¯_½®Ûú�¹fõkáÒºMº¶Û@Sÿ¼½Öo€È£(º’1õ�¨j>#`Œ@,¯þ™D'‚*`#""""""""""""jÎ$""¢OdåšÀêpVŽtÅ5ýš/~�ï¹Üˆk{¬¯²v@¾ïUË×#|(ˆ€XÕý¯žA–•£„ÍÁ‚B W–¶r@á�DTØÍ(¬Eie‚*ë¿58‰ˆˆèÊ"»‡+ŠJ´Æ<†W†r­äT¾ªÖDÀ`¸t4nc‘\„bP¶ IDATkË’òìUk‹åù“,N·µ׺�¼¶ e=É ÈN×Ú‚òì£òü‚€Fë(ÉʺRvÏ“¡ìÙôÿÙ»óà8ÎûÎÿïîžûÀ}ñ/ð6)ê°dÙÖeÙ^+²­$ŽíÍf“_)ë$®Ø‰·Ê›8ëuâ�7›«6åÚuv³ÙØNG"iK²e[WD�”%Q$ÅûIÄ}sw÷óû£g€0C n€ü¾ª@ÝÓÏótOp>ü~�ë7'!F…¦éàö¢¼!pG!9†F<í¡c¨Š‹½+X[ÕGcUï¬gs6nÜ\‰S!„B!„B!„B1cB!ÄÍËB U�Ûë„ÂÔ<“”�JD!…d§¬nZYíØÜóBAr‚TÜ âéº3w°üáyšWsp™$*Úéئ`óø!PŽæ/ß’xΦ֜Ðc&áœw"ꜷ¦�Û‹®qZÞ.gû\Ó4T2‰aˆG˜Û�á<U5 tÍíÃ@¡œÛÆôÐ3RÆ“ïÞÎÙΕ¬«î›õTjº¹{ÃyjBQ¼.s/„B!„B!„B!„� B!nNšŸô†œªj£�°\ЪPxkª}¶Ûh:ÊLAr¬ú ær£…*Á—›{†ã_w¿�Ò '€—NŒ=Æå†`9ZYÝ„ÞtÇ/²fMË„Ô$¢¨LÒÙ§—-PæÌ=)tYâøSÍm›NØ2“D%GÆj¸�ða°\'(8Ýñ îÏÛ§iàDY'8ǹOÓ�kcd«aj`Z:¦åãxÛ:Zj¨Eg=Õ†ê:#•Ô††ñº3èšbuÅuáõáˆÓª[³qóÌB!„B!„B!„â%@!„Bܤ4§ý¯ÇÞšáʆõ4Æ…¾F\N0JåíÓòÛ g£FÃ` eYh‰aÐ�ñ2Í·Í̶tÍÏØñÆ'o|Tn©ö+Û àå·ÛÍU|sy�¹)À�»Øøùk›’ÓÀÊ lsR»Z-;7ÞÚhè2o|¥Æ�UôùÛ§òöiºî„­Œ~K�VÄãGóø '<ß“ÆÏ¼–·ot«éx¶šÞ<˜óA³×F7œ×Cî^ÉÞ[±´�XÚGÛ`Õ̧ÈÞ¿g;WóÒÅø\ ÝÆí2ùЖ“ܵþ"ïmlÆe˜„¼Iªƒ#Ò&X!„B!„B!„BˆIP!„7±làKÙNøOY`ç…ÀFdY¶«¨écÁ<ÅØ80VUMÓœmJne¯lPÙà›*e|-;þÄ}¹�›>š»îÜjlþçÇÏG×LJòlkšóÏÛ¦`b-·^Û{œRæ.6~^¼üçÍY›�·ÞBòçΟ¿Ôñ'Ž“KÊåŽÕòžË¹¦”s�ÎÇØšîÜïšQÂøù÷ÔÄÇjy¿�¯VhÚ:±”—dÆíäP5›ƒçwòn[#ŽÞIÀ�âŽõÍ|úÖŸS”6ÁB!„B!„B!„B”B€B!„¸yåÂs8¿+Ë„TÌ4 �?äT«Ó4°-T*é8J×Ñ<~ð�C- 2)HÅPÙ*sc•ýTÞG�ä6[&*wÚÖê:š'Þ@v|Lg|§r <4]GÙÙ¹Ó ',ç 8­� wÞœÅævÖ¥,ÒIHÇÆª"zhšæŒŸN@&éæ¼ApûœŠ‰ÊF¥ã�N¢,Ípæw¹�ê…ƒdy�C-{n™„sJ��Ÿ­茟@ÙÖØøº MY¨L’Qg—Í_ú<•÷\(•Š9×ܲÐ|!§2 îTƒtÚ6�dÇ÷ ÂN;geƒ™qžËD¹<ÎÚ\Þù ÿå®�•™Û`î5 N `Ý+ºœPe2?˜©gÿ<±#±Êþ’_ÉQÙ ÀÖÀ¶u2dƒµšÆå”�Ë}õh(üî4=#åøÝv¬¸ÆÚª>V–âÒ­9ï|,„B!„B!„B!Ä�B€B!„9¦‰Šö£’Q@C××€ËãTG³Mˆ¡"=àr¡ÂµNÈOÓÁN;Ç v t-T ?h%|«• UYTlpÂfåõNNÃÙ—pÆÇåA V‚ÛçŒog 1ŒŠö;!½ò'œçö€5Ej*7·™FŇ Òå´%Ug×o8ãÇ#¨‘A°ÒP¹Í0ÀíK¡’#ÎÜ©8”×£¹<€‡ë'¶ò‚d– ñöÈ€Ób·b…^4\`Û¨Dí;7—×yNLÓ cv:3_|A`|Ëá¢óg+ªø�sn™T­vÖïÒ�sMÅPÎ!þ0øCNðͶ!“@EzPéøÂh• Îs2‡Æeü4œõši4ÛbÎ{çí\À0¯5³¦�áÎV Ôœ{C7 mËy½€ó»™-?L8ù•ñŒ‡#­ë¹6TÍ}›OóÁMg¸oËiªƒ#R P!„B!„B!„Bˆ"$(„Bd“KNõ¿T<[õÏÌ+¢§œPX:–™¼Cm§\:î„¢Ìà4+´e«¤™NèÌiEœ w¹ÇÚ+åTL'œ{ÅåvB�sL¡a«¼žÊ^«ùæ6uéfèö9ARÃã„JuM× • j‚ž*[Qˆ•²œkeeƒ€fÚ©fie²×{üñiËEo´Œ—/lçê@ §;×ðkï}•¦º. }B!„B!„B!„Ë�…B!r²Á.,Ó D�k«œ�×è¾ü0’ :ŸæöM§oiÞܖ錡�í?ÛwløìÜvÞq3 áåÆ·Í ã3y|Ôø}–•mMkOëŒÇÎÛ›7Û.v´Jà„¹µ\¹ük’ ™ÍÈèú³ãäŸxþs:q|¥œuÙfvß܇Ó܆…Ç0Ç–¤ÔØsd[¹�³œ%׎YCsû XéŒërg€^§½²îrƒ†Êþžû|l$•½%•ó<å^?¹u›'üg¦œª“™”Sy1T ËÒ‰Û^Zêè�•Ñ©"èM±ke+uáa¶5´QîOÌòœ…B!„B!„B!„¸qHP!„"Ÿ¦9m}ÇU6ˆÑF÷éŒ÷iŽ›~ ÎC=;Fþüן›¼¹'[òÜÏ!wþÚrsNßïi56ï„éµÈµ\È4×zÙ¶œ`tâHF³!бAc)zVðÍ—>ƦÚ.ö®¹ÂïÞû¬…B!„B,ª‘øÓ?…p¾úÕÅ^�(…Rðþ÷׿ Ÿüäb¯F!„Bˆ¹7ÃwJ…B!„óé#ÛOðð{Þ™¼#�‚trgr*¢»ÀåqÚ)ë¹Àe.¸—ÿ‘WݯÐGnÿÄã€Ñà¤áBóøÑËjѪV¡U­Ø©<˜¿2ÉŒC·¨ �UDB!„B!ÁÑ£°{7üå_ÂßýÝb¯F”êàAxã xäø¥_‚Hd±W$„B!ÄÜ’ B!„KÐÆênšê:ÆoÔ4T:�J%fÐê¹€lXÏ)2©e«ÿåªIŽ{ 3k7<á¸l5KMÓÑtÍ@ –£•Õ¢ùÂ`xò†cµW– rÇúfÊ|ñ™�§B!„bY[¹r|÷ÜGSÓb¯lLo/¼õ´·/öJÇw¿[ø9Ò4øÖ·{usã™gàî»áòeçó¶6xóÍÅ]“(Íc��ýù‰'œç±­mñÖ#„B!Ä\“ÀB!„B,A °ím‰ÓqT:†R6 9Á½YMdƒ�«Ò7÷­Œ§˜Ü©<è ‚ÛëŢ)¾»V]ãc;Þ]ൠ!„B!ÄÔZ[�–¢ÇŽ�mÛ»¾÷=ؾ}ñÖ%æÖÁƒðñ�ƒ9¡0ýSOÁ�wÎÝr~h`[�I¡Qç¼òx “�n?Æ�Í‹´>!„B!„¸¾�Ž¿íèQxøa8wÜîÅY—˜;ï¾[8üwÛmð•¯ÌÍ?þ±ÓRøÙg�ÿ£WÌÖ­ð¿Ÿÿ<„Ã¥�Çpøpá}ÝÝPW7­åNKS\¼8wã}ñ‹ðÍoNï˜ýû�×d"ïŸ.]‚Ï~~úS§R¥B!„Ë™´B!„b 24›åCܳé õᡱ~¸¶™*>VfæÿJ­²á?ÛšYwß¹ VÆ9—TÌÌèyšMÈ›â}.°}…ôåB!„B,='NLÿå\¾ìT�Ë[4 �<±Øøí»wÃ+¯Ì¾z\w7|ìcð‰OÀÏ~výð8¡Ò?üCX½öí›ÝÜ7“pB–Æ„ÿCùÌ3ð'²(KB!„bNIP!„Bˆ%Èã2ÙÚÐÎî{–m íŒ&㔂L5ÒffÙ=• æFXØÿd’ιdRymˆ5|î4+ʆØRßÉŠ²¡]›B!„B”âÊ•ëï¿|yaÖ!æÏïý´´Œß¶n¼ø¢Óžw6r*ú=óÌô�†Ï|þê¯f·†›É‡>ßúÖäíú§Îó)„B!Är&@!„B!– M·nö%qÖø�VbèxÄi›«Ï  °mO]Z`ÞhÎ ¦b¨DQPÖ¸ ⎕m|þžçXWÝ‹¡/Ö:…B!†mÛ¼òÊ+|ýë__ì¥!¦aÛ¶ëeß°aáÖ"æÞÏßùÎäíÿ÷P]=»±ò§*ÝÐ,ÿ¿ÛúOð�ÿ8»1n&¿õ[pï½ã·)å´UÎo,„B!Är#@!„Bˆ|*W—¬@]5EÞ¾‰û³ÛfÓJUå¯JHMóñÓXäíS�ßLÖ�»nÅÆVS<'jìq31Õu»Þܳ˜¶Tnä£.¡*ÍnÕœà^&‰ŠGP‰h^弌>—öÜÝ73aÛ¨D�‚™=MSTbl¨îáÖµW(÷Åo�B!„óìØ±c|å+_aÛ¶m<òÈ#8p`±—$„˜†¦&øìg ïÛ»î¿a×#æŽmã�NÞþ©OÁƒÎnìæfø¥_‚Tjvãäü‡ÿGŽÌÍX7ƒo¼ÞñÛÚÚ@2øB!„b9s-ö„B!–¦±0•š˜ò*˜™šyûÔIÃ]/“¥ò0ßÙ­Iãk…KLëŠÐ&VèškÅö2«öµÅ²ž×3nºù{"¼.“šÐ0Mu�œë^Å@,ì<Ê;±”áF*Áp¡i“.da£á¿Åê(ÛrŒÑˆ;ï¬è:šÃdsm'[ê;¨ ãq™‹°F!„BˆùÓÚÚÊþýûyüñǹ,ýA…Xö¾ým¨¯‡ï}aýzxøaø¯ÿÜîÅ^�˜©ú'8{vòö¯}mvã*¿ú«�NÞ Áoÿ6üò/ÃŽÐÑÇŽÁ¿þ«Sé/“™|L&_ø¼ñÆìÖ6_¾ðè}`þçÿ,|Ì–-N‹ãBî¼svëY¿Þ Mþ¯ÿ5~û7¿ ¿ÿûÐÐ0»ñ…B!„X B!„ÈÑtpyÀís‚TùmU5P†Ü>0\ÎÊ ƒéFvŸáìÓ²ûJ¡4@Ù·t—s¸–�\7ÀíuönÆhÊp9ûPÙ¹§†Ó4ç8�ÏÇÈÿQCéng»èúø°žž�ÛΠ3ùÖRwÆwùа�ë‡6a|(•_sþµ\¥ëÙ}¸ò¯I)8çÜ0²ç†=~|@åžSÈŽ?vMÐt4—屜{fº×¼Dä&eÇÊ6Îu¯ä�«óÖ`@*#(o-\ÿÔƒ*åî«úŸ² ÅŽtCbØig¬;…ÉË| 6Twów½Â�ë/PÆ­[S („B±ô ñÔSO±ÿ~Þ|óÍÅ^Žby½ð?þ‡ó!nßøÆämþ0ìÜ9»qÿå_àí· ïkl„_ß:º©Éùøô§�Š„ý(D"“�ýùÏ�¶Â¿ð ³[ß|øÂ oon¾~ðOþdÞ–ÄïýÞä`2 ÿý¿;A@!„B!– !„BNÈÎ…æ/sBaÙÐ[6¦h¾ ª¬Öù³78v¨n yPVë„}Aç÷’‚h ´ìøþ°³Íåʹ²mq ×èøšáÊŽŸ[—ž„ªÐ¬Œ³.ÝȶS-¥½-cçSV‡æò€7ÀXÐNoPÎøž@ÞøšÇ¡Jç_8/49Uñ¹ñѲÛ4O`ìÚiš³®�fÆ9o]›ÛíE…«œp Ç?"+ᢓ«f8úˆ®)4.ÃÆÐltýƼv9iÓ…¥ôÑ/ßý±g»VO{Jºv ešê;ñ»Ó¸òµ.ÝÂã’°m1–­“4Ý Æ‚´UÑ:X=ºÏÐm*üqÖVõ±ºb`ɼ†3–1zO¤-±§;W“ÌL]†ÈçÎPˆ±}E^×X‰]Sº�ÛXÜ{E)�´eMúè�–s®g%¦5ö=@Л¢¡,ÂŽ†kx\æ´2ú–­;y¯3€–þZÚ#U Å%�³¡¦‡•僔ûÇ·±÷º27ø×)1^*•âÙgŸåÀ�¼ð d •mB±ä¼ö\º4yûç>7»q•‚¯~µøþüÇñΈî¼þüÏáw~§ðþÇ_šÀ¥hÓ&¸ë.'8™ïoÿþè�œªžB!„B,'B!ÄÍ£Øû­J�®¡¹ÜNÈ.’Ò '$NU¼P%Z°œq­p•BÓ]à £yCÎ6-»Ü|…Þ}vJéi(§Â\¸ -T9v|vÑšá9š¯Ì9DÓÆŽÕ ´@øÃcá4M»Ô7—• V ÊÇæÎV0Ôt-X�ò ç– èÊœàb.,¨gË–4½SÕO VB bZãkºÞ ü#{=rÕ K¡á„ü‚•Îù‘_ÓMw‚�šwÂø€¦9¡K­Ò7þšçÖXlJM !(–Þé Ñ©äJ_=?9¹—C—·Ž? wf "](_ÍíqªDN¼þ*ïÊΆSl1Û¶ØÊ`�ôCtR±ì5wžS—aSas]Õ¡(>÷Òyƒ\) [i(4l[#’ôÓs»¶­Ñ9\É_>ÿ0—úÈX×ÿËÐ-V”ñþˆMu]ºó\h€Û°¨ásgœ`ÛÍ…\ð/eº‰¥½D,5öZyçêF^¾¸�C—¶Kù¦ïöÆKܳù4÷n>ƒÇeâÒmüî4ao‚€×é£ehö sý,[wþ¦PÐ-'žö޾¤�·­ãÿ¼ö �ÃÄK¸vwm¸À¯ßù2 ežÔèö�7I]h]³Ñ5uÃ)§ÃVÃI?‘JÎv®â…s»xæôÞÑýW†m í<´ó(Úz’ú²~W—±p_gsë´mçë”eë ÆD’NÈ}(àTÇZ¾õêGè O9Vu0ÊÎ•×øí>Oupdt»K7 zÒTbx\&ú"¼Æ”ÒHd<ôDËhé¯å­–MüÃ÷“ÌxF³ª¢Ÿ÷m¸ÀïßÿSêBÃxÝS‡É•Ò°l�hÊO4å#‘ö ò¾©øÑ‰ÛyñÜN.ô¬,i�¿t˛ܿå›ëºÆm¯ EySèš�¡ÛóU@X,2¥o¾ù&ûöíãÉ'Ÿ$�.ö’„7��ho‡TÊioZ]=õ1Ó54mm�H8•êjkç~Ž¥âïþnò¶P>þñÙ�ûòËÐÒRxßý÷Ã?8õŸûüÙŸÁµk“÷=ý´ÓZØã™¼OLöïþÝä iÂc�9­€…B!„XN$(„Bˆž¡Ù¸ukr$s‚c:LU@®Ø›´Eß¼ÕÆBe““ ºéz¶¢žŠToºÞ›Ããö©ñ„Ö¥çBk0vòÚ¤‡^W¡ÀÛèyéÈ;oÍÈú¦9þõÖ– ã{G}ôùÐ�Ê‹F‘ñKºæž¯Ñ±'àseð»Ó‡J¹Ð³bܶŸœ¼•·Z61 Ñ©$•™ð­»²�çØåvª4z‚NeÂë±m§jàÄ{eÞhÎsl™¨ä ÷9•ÿÒ‰qϭ˰ٵ²•�n?ί½÷UV–ÎóºJgÙ:ñƒ± }±0‘D€·Z6sðüŽÑǤLWj³Á¬ë_S E4åãOŸýEžôèS¡iŠª@ŒwÇklkh§:¥*8²è•¶æB4åçr_='Û×ðnÛ:Nu¬%‘Ö‰&ý &‚ Å“‚°…¼yeºWpàè]h(ž«*¸{ãv¬pÞÛPÓMmhy.œÐ¤‹Ö�Z†,[çû‡ßÏ™®ÕضsŸ�¤}´ V‘¶ÜXöÔUP]jâr_^Wf\xkçÊk<´óõeC¬ª`EÙм�×rbZ�Ã<{f7û�¼�ÁD€þ‘0ƒ‰±*Àºfoõru –Ÿœº•o;Î=›Ï²sŵрï|K™.Ú†ªIúŒ¹Ò_Ç‘Ö œh_뜇­3’òÑ6T=eH`$í¥?¢¹·~Ü× 2‚-õ|dÛq¶6tPŠàue4ÄÖ-ãX[#ß}ó:†ªè Ó-ÇÎ Ç3’¦C·ùå[Þä–5-S~-L¹ÒWÇKvpìZ#‘Êq¯©Þ‘2b!âoIëüñ‰ÛxýÒÖIïdû v­le]u/�U=”ûÓ8{±Ô]¼x‘ðØc�ÑÞÞ¾ØËBäùñ�á‘Gœ‡ ¹ãxåðùÿÀ¯üÊÌæV3ÈË¿ð‚Ójv¢úzèÊË–77Ãßÿ½Vš ‡aÇø÷ÿ~ó7Á=uà‚tÂp/½½½“×ó‹¿¿û»°}ûÌÆ_ŠÒixâ‰ÉÛ?õ©™_ÇœŸþ´ø¾ßüÍÒÆÐuxè!ø?ÿgò¾áa8yn½ufë»Ù|ö³ðÅ/‚5á[Åù !„BˆåG€B!„Xrí÷Ú«ÆGJq©¯��xÓž,Q ¬ŒÓ†TŸP-[Èn’bÛ‹í³-°Ìì¿ú�=@)Í2�Ö¶º=¾¢ÛtÆ¿Þ~e;sO|—CÙ(ÛD3Óãß�˜îøÅöiZöºfPù­fG«ÀYÎ5ÏUÍ+ÅõžÆÏ­l3ï¼óR l3;·6þº”:þ”ëÌž{�w–Ú‡ª8Ù±–2ßøv€¶­sm¨š×›·ŽÛþZóVÎu¯š|¿çîSÝ—Ïi¡ªBó‡�j‘¯©r¶+»ôk>kšóüg2¨d bÔÈdÎõÉ&FBÞk*ûùȶãÜ×tŠ�5Ý ´¾ëSJ£w$LKͽ ´ UÒ©d$åãT玴^§/ÓR¦›“íëÆmÓP„} ¾zV°²|€Íu]„¼Iüž4k*ú—TUÄ©$3núba†®ö×røê&Ît®âBÏ .õÕ“6gþÎYßH}#e£Ÿ{]jCà ÆCœí\À�Í4ÕuRæ�S&äMnIº:PC×p½#eœêXCßH¶ÒxùÂ.÷ÕM4-¦w¤œÞ‘òÛËH›.êʆÙR×ÁîÕ-Tb¬©ì_”Jo‹E)§en,Lë@ ï¶­ãÅó»x«e3Ë(Øæ;™ñÐ sm°ËÖ© FÙ\ۉϕ™·jжÒH¤=ôÇôô×r¤u=ƒñƒq§Mñ¹®•\êk˜ÑØiÓE,å£;Z1n{À“âÚ`ñ”—Ý«¯²¡¦›êà>wŠr‚†²È¸ÖÒó¡¹·ž7.7qèÒVãÁ‚�Æt68ûâù�TFPhìZÙ:éùˆ&}tF*Jhé¯ãݶFÞ¾º‘s]+é‹…QjêPm1mCÕ´ M.½¤Ðhî­geù n;Áö†6êÂÃ3žG,¾¾¾>žxâ öïßÏÑ£G{9Bˆ^Ý n ÿmÙÏ=W<ü·”ôô8ÕÉt¾ùM§Mi2Yø±Ñ(¼ù¦óñ7ãÏ6o.}.Û†ÿüŸá/þ¢ø��ÝÝð¿ÿ·Dûâa÷îéŸÓRtð Såp¢�}löc¿þzñ}Ó×®âû.]’`©*+áýïwÀù†ŽXYZñg!„B!– !„bYH™.z£e¼pî=´xCõz®ö×p¹¯žx:?Hå„ÿT*†¦l”nÌC[TÍ fN(ltjålOÅPùmcç2`¡œ_T:ž 2ÚÖ×™;ŽŠGò*#¬ªà½�ÍTFXQ>ÈC;�²ºr0/\³4Y¶ÒÈX.º¢¹º�³Ý«8v­‘W.n'šôÏËœ)Ó=)lsoÓiö®½LSmïmlf}MÃD×–nËMÓ60-Ké¼Ö¼�·¯näB÷ Nv¬xœ—ûê¹ÒW‡Û°Ø¶¢�¶œ`çÊV>¶ã!oò†¨FY Ó6艖s´u=/œÛÅKvÒ©$eNýÏ'ñ´—ƒçw²gU Ý~ܹçæáµš± FR>º‡Ë9zm=/]ØÁsgv3‘.¡ÂßLÅÓ^Îu­æ\×j6Öv±µ¡�ƪ>jC6×uqïæÓTbózT ,eðNëF^¹¸��XÓ.~®#)§:֢Ј‡YU>@]x·fa)�Œ©su –Ïíä|Ï Nu¬åèµõ%UHœ�·[6ñvË&bi/¦¥sÏæ³¸ô§mùÍ ™LòÌ3ϰÿ~^|ñELsê6ÓBˆÅqꔪJ.ÄN}½öª¨(¼©QÊiÁû_þ üó?—~ÜÅ‹p÷Ýpútim{mÛ©øýï—¾®o~Ói=|#xúéÂÛï¿vã&“päHá}��P>ùÿéuÏ=ðÇ\xßš5Ó^ÚMíÞ{'Á¹~ë·|9B!„B̘…B±,¤-7ÝÑr^<·‹SÓû×̤éf$å%™_IM)HDQ–é„ÿæ+¢dRÙ@€–Ý–ÄèpB[¹¹çr Ù fÚ™Û™ÀV�N¢"=¨ø<¶xÌUúKdzm†��£JÅQ¶ñ¡ù½æ– ™$�›[ƒL éF�ôgÛÏ3ã\ó eNw®¡¥¿CzT8¡ŠâT^;gBࣅ*Ñ|!pû²á¿Üh…†È?ç½ú_.ôšB%†!A%£Îõ°ÌImoY}…o;Á§o{ƒÕó¼¶Òœê\ÍKçwÒ©äl×*Ît®&’ô�ÿú1Ï¢)-ýu ÄB¸ ‹Úð0ÝÃ<´ë(ïmlÎ{¤ZRa¶´é¢+ZÎkÍÛxµyg:W3 1”L`Ï¿ãmëhé¯%ìMòÒ…íܺö Þvœ5•„¼Eʤ,²#­ë9ݱ†sÝ+yûê&® VKyI-\9ÓÖ¹ÜWÏ`,À[-9ÓµšÏÜzˆ]+¯Mqôò—± :"•üß×?Äá«iîm` œvÅJ]Wúü…M]ÞÂsgvÓ6TÅÕþZZkL¨t<�:†*‰$œhkÄã2ÙXÓE4éç›Î²©vî+¹'ýœë^Å©Ž5´ UcSÚßã-ýµœí\ÅHÊGUp„hÊÇùî½¶�ÃW7òîµF¢)?#)ß‚^?€Ÿ�º…ÁxCWìZÙJÍ2o[~£SJqèÐ!öïßÏSO=ÅÈÈÈb/I1…ÖVøÐ‡œJx…„Ãð¯ÿºü*|ýöo; §«·>÷9xòÉ©ûÇ\zø/ß•+Ó?f)*Û±ªªf7nk«SÁ±�M›¦7ÖŽ·˜½{ï…¯}òö^� B!„X^$(„BˆeÁV)ÓMW´œÖÁšñ;gjRÙpœefƒwó•¢Éµ^�ЊÖ2!›w>¦Wöøù•�mQ› çÍ›lhmbËÙѹ ôÓ™×¹³íS#€6áC»ÞîË¡X€¡Xà:k¶ÇîE�làOw>\pûÐ<~ð‡ÁBó‡Áp£éúXà³èzò[\ÏôÜóîÕÜ|¹J“ÊvžW3�J'� “ɨS 1“Ìkq=¾íïƒ[Orß–Ó4Õv.j�Í´ FR^Ú«xåâv~vúz£et —3/üz,#–k4øÕsÖ�± z£akz‰$ú\W-�>¥œëw®Ëiï{m°š7[6ñîµõtW�6]سh£9SƒñCñ †n3Ò­`$åãÁ­'ÙÚÐŽÏ•Á¥[óÖžµTiÓE4å£?æàù�¾º‘K½õ´Gªæ­bb1 ¥4¢IÿèÜC‰Ñ¤Ÿ+͵ÁjÊ"¬¯î¡2[еÍ'¥ ‘ñrºs5‘J.÷ÕqðÂ.õ6Iûš}}—úêxýÒîÞxž ÿÜü]›± ãAš{xþÌ{xîÌ{Œ‡ˆ$Ä0$š“ÈxIdÆÂëѤŸ;CïH{V·°¥¾ƒÚÐ0O‘’KÓ”4=\¨¥#RÉ`<ˆm—ö—F,å£?¢/¦u°†–þZ.ö4pªs {VÐ>Tµ(_£Ài|øê&Ê} ¼® ^W†°oi”ofçÎ�ãÀ�<þøãtvv.ÈœTÍ6e"n*MMM¼ù曋½Œ%¥¿î»ÏiQ[ˆÇ?ûìܹ°ëš 3 ÿå<õœ?ï´=.æòe§íïÍ*‘€³g'oß³gò¶éêë+¾¯¾~öã‹™¹ë®ÂÛßzka×!„B!ÄlIP!„˃R…Ã.³©hfÛÀB´4Ô&„ ³�,{�‚'£Éªlr+W nÁæÎ{“>[˜ÉÇýì¹nù{½©'œ÷$jÂsa: tÍ©èg¸Àpƒá�@Z¨=PºË©`¨i“–ã¦Èn·íì¹O\Á4wùáD”sÿÚÖXð/“tZ;'†!e‘ßnXÓA×,tM±¦²Ÿ¶œâÓ·½Á–ºEÿYñ —ûêù×ó;yþÌnÞjÙ¼x *`$åã�«9Ó¹ŠçϾ‡Oî>LûPÚhœ±\ ăüðøüðè�ôDˈ§½óÚ†´T Ó6hª¦k¸’Ã-±m—aQŠPˆð¤åþS l¥Ó;¦¹·�ãí�üàØ{9ݹ¥–NYÇád€“ki¨ecM7wo8Ïgn{ƒ=«[nˆ–À¹–ßí‘Jþé­{x«e#WûëIygU î�Ë[H¤½l®ëšuP)�´eÐ qªc-ÿòÎݼqi WJèß·€zGÊxúä­<¿ƒÝ«®òÿÝõ2wo8OcM/ú´¶M›½Ñ2b¡i“—ûxúÄ­ºÜD4éò ¬E þåX¶Î•¾:¾=p�Õ=Ô„† ûºuMÂÑÓÓÃøC8À»ï¾»ØËBLS,>èÙ Ñu8pÞÿþÒǬ«sZ®sø0Äçóÿ×ðÞ÷Âïþ.Üy§Óòµ³š›á[ßr‚~Åüíß:íz‹ùÚ× “¹þ¼_ùŠsýLNœ€o|æç²”9RðÇçiWè+¤¿¿ø¾ðÂÿ¿3‘åõBCtMø6¬­ ÚÛaÕªÅY—B!„ÓµøïÊ!„BÌ…I�«Þl^ÔÞ™ÚÌ ±ÍvÞ¼ßeþÅš{)õJÕŒlu?-æ3œßu¸½h^?xƒhn?¸¼`d�º‹qAÎR f[õªB‘*¯¢"N˜PYf¶½t©ø—I:ŸÛ–SÝr4X;vÍÃÞ+Ëi(âýÏóé[±ºbm‚!3•H{8Ù±–gÏìæÙ3»Œ‡F«í-EÉŒ‡–þ:¾ÿöûI™n†AÒæâýHO{¸ÒWÇ÷Þþ /]ØAÛPiË…m/n¨¦ËÖHš¾øý¼Ú¼•uÕ}|zïܹ¾™�7±à_¢)?WjøþÛàÕæm 'ütW.ì"J¤ÄR^šó*â�¤|Ü×tz‘W6;)ÓÅ…ž•œé\Å;­yåâ6:"•$3¬YÞÃѤŸžh9¦5û–²ñ /]ØÁËwðvËFº‡+šaeÂ…�Èx8ݹ†¿9ø½#e|b÷;¬­ì›u`TƒWí¼:XÃß¼ø1zGÊNú1m–HÐV)'ØÜÛÀå¾zšê$¸˜>Ì_ýÕ_ñÒK/aYË?ä,ÄÍÈ4áã‡cÇŠ?æÿþ_ç1ÓqÏ=ðòËÅ÷ïØgÎLoÌÙøoÿ þè�Æoklt>î»>òxñÅÂǾþzñq#øÁŠïÿµ_ƒï|Çùñ4çÁ��;î€ÿøK=ƒ¥«Xã¹kG NUJ±x6mšçu-@!„B±\HP!„Ë›ávÚ£ºÜN *ßR | ‘O3ÐôlèÏp�…û 4w¶å¯Ë“ ýÁŒªކÿÆŽUÙÏU2 ™0EY…SíOe«ýÙ¦´2NèÏL�µvΘf+jš¢ÜgûŠ6îÙ|–†²!v­j]ô�ÃP"À¥Þž;ûž?ûŽ´n\Ôõ”ÂV:#)ßhkàÅ¢”SùïLçj]ÚÊKvp©·ŽxÚ;õÁ‹Ä©¨q¥¿ŽŽHWúë¨ FÑ4¸sýEžÔœT)+ÅP<ÀÙ®U<n7/ìàdû:ì%F*Lò ¢I?‰Œ‡×.mÅïIS¾fy¶î s¾{%¯\ØÎ™®ÕœïYAë@õ¸–¶³Q¡±º�ë:åsJЩäèµõͪŠ‚ÞÔŒÇ×4œÀø ^¦±”�3]«g<÷|rZoÃÉŽµ¬¯éá£Û�/ö’nj·ß~;_þò—Y»v-?øÁ^ì% !¦A)ø·ÿ,þ˜¯} }táÖ4>üáÉá¿|†ßý.lÜéôäýçÏ?vÿ~HùëzËø‡þË÷¥/Á /À3Ï9¸zµðö�KÿÇE1 ›7Ç«$*„B!ÄR$@!„B,on/Z¨|~4Ý5VéL×�6ªB,)Ù��îÝ@Ë]n'̪eïÙqÁ½™ÿòZ=O¬þ§XiT´Ãy-™‹�òDz3N…¿Ü˜¹Ê›š6.€›kMë2Lž4Mõ�|tÇ»üÎ^ èInç½€2–Á¥Þz~zjûŽÜMsïÒ Õ,EËEÏHÏœÙÃÇÞKs_=iÓ½ØË*YÊôpm°†'ß½�¾X˜•¬­ì'äMÎë¼¹J_—ûêyîì¾ùÒÇH›Æÿ�gZÇÛ‰§½$3n>}ëìY}uY´¶•†i˜¶ÎÉöµ8z'OŸ¼•Þ‘ò9Ÿk{CÿfDZ·ÿ͵ý}çê?r7/_ؾ¤«“N” µ½rq;}#a ÍæžÍgØPÓ³è_ÿ—ªc×YSÙ·ØË8!ÀÛo¿�?û³?ã¹çžcß¾}<ÿü󘦹ØKBLák_sZûóè£ðõ¯/ÜzæËm·Mý˜Õ«áöÛáСÉûb1'X¨â\¡Çç|éKàžâ[þ_ù•7XUµ°ë «®®ðv !„BˆåD€B!„XÞ\”¡ù‚N�*—uÒ 'T%Ä’¥�VÉ-›õË…hfY‰LåUì7¥V âÃNø/9Rb+ἶÚ^Rç€'ÍÞµ—ùä{³¾¦—õ5Ý=)tmqÃñ´‡c×Öóã·ò£·Ó5<÷áŸYÆ2¸:XÃß½ö ¯6oãê` ™9hsºº¢¼Þ¼•DÚÃoÞ}�»7œÇãš¿€Çp2À•þ:?ò>ž;³›”é¶—Oø/_ûP?=µ—ŒeIùЖ“‹½¤)µ Uq¼m§:×pøêF޵®g(œ—¹šê;x`ËIÊgì�…xñüNž>y+¯5oe8éŸã. ËÖ¹Ò_Ëÿ;t?#)?í<ʆšn p_Óîݼ€½#Å”<?ü0?ü0ýýýüð‡?äŸþéŸ8³=>Ãá0Ÿÿüçç}q㨒dO=ßøFñýý¨Óú÷fÒÔT<Ð×Õk×NÞþöÛ…oðÙÏÎÝÚ–²þþÂÛýËóÛ1Q"_‘"û== »!„B!fC€B!„XtMáÒ­É-5-Û:Õ�fy@g›K“šðÇVú+:¼ ¶=¡RÎçf•vÚÿZ&S¦ù´ ŸdÇ24·ËÄÐlt]aè6«*XWÕǪò|î ÛêÛ¸oË*ü#½‹[ùO)è�…¹Ð³‚§OÞÊÁ ;¹Ò_ä¿ù‹Iœ¶¿GZ7ðJóvþõÜ.®Ô,é¶¿SIf<´Gªˆ7{© “ȸùà¦sóÒx(àDû:~tü6^mÞÆå¾z,[ŸúÀ%*žöÒ:PÍ‘Ö 4Õu.Ù iÄÓãA]ÚÂONíåJ­5ô�”Íé\ºfô¦¸uíen_w‰eCèúôî#ËÖi¬æðÕ�üøäm¼}e=ÑåR¶•F4éçL×j~vz¶‚Oî>L]8Bhí€oD[ê;ØRß±ØËETWWó¹Ï}ŽÏ}îsœ?ž}ûöñØc�ÑÝÝ=/ó…Ãaþàþ`^ÆâFÔÛë´þ-æŽ;àÉ'�&7“²ë|«38X8ØÒRøñ›7_¼I²HQp ÞØŠ‹ÝB!„B,EB!IJ i £På0E¶Ú™ ù•””¹p…¶<+, 1m¹¶Á¹Âù÷¾¦¡lË &ccá?]GÓltM�¶î-EÀ“¦Â#àIc^—ÅÝÎqÏæ3¼oÃtMásgð»Ós~š3aÙ:WjxñüN~rj¯´ý�¦Œåb äÙ³»9pä}´V“±–ÿ�“iÓEw´œ�¸��xˆ�5ݬ® àNÍé_׫yµy+ÿðÆýd,Ó^žUóÙJ§w¤|΃tsŶ5†“~Ú«¸ÔWÏsgwó£ã·cÙ:ª”2¦%Ê}Ýôº2¬*àÓ·þœÛÖ]B›fˆÔVÉŒ‹wÛyòø¼²ÌÚþc+�”©óÆ¥&¢Ik«úØ»æ Oïœm—'…¦)jÃjÃ˽Q‚-[¶ðµ¯}�¯~õ«¼úê«ìÛ·�ÿøÇ$‰Å^š7­¡¡ë‡{nV…ŠÀ§ÓPìKÙÆ�󻞥d>€×#>³ÂÑbŽHP!„BÜ–ÿ;6B!„¸)ôÇÂo_G,5á_å4@/öF¾¢¤^¥BÜ0òÂãÂ|šÓº7“p©¸S!0›pª Ĩ S)y¦Íu�Üßtšºp„ ×©˜Vî�QˆQæK ¡¦]ýj¾Ø¶FÒôp¤ußûÒöwšâi-ýu|ïípðü:"7D€-_,ÌÛ-›ø‹>Á/ßò&w6^¤2Ÿvˆ«˜§OÞʾwÞGÚZ¾m'Ò²•y݆5õƒ˜itGËyæôö½‹¡D€îáŠy«ºè6,Þ¿ñ<í:Ê6�eeùд¤ÉŒ›+ýõüür¯/ã¶¿ÅXÊ ¹·�?þ“üêí¯ñ‰÷¦±ºï¦z\&åþ8aoï<¶ sO×uî½÷^î½÷^þú¯ÿš§Ÿ~š}ûöñꫯ¢ %k„‹æÅáoþ¾ô¥Å^ÉÒ60P|_ùMôãÓ|þÿÑÊÊâûúúæo^15�§ðö”­B!„ˈ…B±,\¬á§§öÒ;’_ 'jÒu&ý”š\MˆZöžÏoý;q:é8Xã«ò­«êåöu—¸eMKɳ­ª`÷ê«Tøãx]™Ù-}ž¥,7§:Wón[ã¼´ýõº24Õwò$K Œ)¥‘ÈxèŒTЭ˜óõÌ[iÄÓ^޶6rèÒVž?óZjIdæ¦í¯®ÙxÝÖT P*½òÕ@,DïHñ JÍM +eºéˆTòò…4Võ²²l�2ß5\ÆìBÃI?Wj8Ù¾––þº9 •ù⬫êÅïNã2¦n±­”S‘íBÏ ã¡YϯkjÎB’³¥¤-]Ã4÷6pºs /žÛÉ›W6“± ì9ºWò­,`mUµ¡(l=É[N±¦¢Ÿ{z_•‚hÊϱk�œî\3çmuÍ&äK²¹¶³ä�™i ƃt—3œ Ìz ¹vÀ§;ÖðÌé[ø7Û�³¢|€rÿÒ­œæue(÷Çiò•^æÚ`5=Ñ2Rf‘w“Ÿ;Mcu/÷5�fÇŠkTJá‹¥% ò™Ï|†Ï|æ3´··³ÿ~¾ÿýïsùòåÅ^š"ëÿî»öìYì•,]éënwÝDï"]¯\h–ß>W\çG? .®bƒÁ…]‡B!„³qýè&„Bˆå¬#RÉÁ ;Ie&|û¢ihú�U‰JˆQÙ_ìÉÕ¸ ìl0“pZdk:š®¡k6›ë:ypÛ ÞutÁ—=ßLKg ä�K[8ÓµzNÆÔ4—nã6,4�84�bEù.}ê–iëôǼղ™‘´�´éÂR:ööL×*N¶¯ÃìY�i˜–NÊt3ÛŠ¯)ÓMûPg:W³cEMõ�zzÆ9rÓÒéªààù�tD*§Ñ`»¸\Õ=�ᄸÖTöó¡m§¨DKj·mÙ:¦­óƒcw’2ÝX¶NÆ6–ܽ7¦mÐ sìÚzž=³‡7/o¦u°&{oÌ-MSx “í mÜ¿å›ëºÙ±²•�5=3/eºé.çí–M\¨�“5º…K·pÎתUå<´ãåþÒúËÅÒ^.ö®àصF.÷Õ“2]ÙëÌ_g ¥à�KMDâj‚Qî\o-¹`®­³Ç•¡.e}u·®½ÌêŠþ’ÇxéÂŽ·¯c V<)Païš+üæû^d]Uái ÅÒµjÕ*¾ô¥/ñ¥/}‰£G�²oß>8ÀÐT=J…ó*�†G�Ó§!0û\û ©¬¬ø¾›©Ëy±ûc.®ASSñ}\\±XáíB!„ˉ…B±,l©ïàÑ»ò£·qm°&»Õ©v¦LÍ(ôÿÒ¨J$Ä‚°-'Ø7‘¦9ûÌ*1ŒJ%pa_’úp„»Ö_d[CûB¯xAœê\ÃÏNß³§÷p®{ÕœŒYвµ¾�n:GE`„ 7Åík/Qî�—S 2¶‹÷m¸À‰öu¼Ö¼…Ó�kèˆTÍÉúæŠië Ä´ÔÐ:TCÆš»°õ}Mg¸góiV”±¹¶“å¥#Þ¿é<탕\¬e$éãBï ö¹óº•¶¦ãTÇVU °µ¡�uU}„¼3 åœìXËsgvóÏo€ž‘r¬9h›\á�³cÅ5Ù}€ºp„[Ö\Áã2Kj¥ª”ÂZWÝljöµ4÷6ðóËM3¾÷,[›—ÊzÓ•± :"|ï­{x¥y;Í=õD’’™¹ÿ„¼I>²í8¿°ë(ïÛpž€'EÈ;óþ`¯6ocß‘»x«¥‰¶Áëô†›†Íu]ܶöÛêÛ û’T£ì^}‰Õ M[g(äro=ÇÛÖñÔ‰Ûhª&–*Rg,e0�qäÚÖ×ô°¹®kÖcÎ%C·ñº2<²û0Ü|–Õ¬($ì+ý�ÿ�+¯Ñ6TÍP¼ø»Æ�ÖU÷±¾¦ß¯¤+ffïÞ½ìÝ»—o|ã<ÿüóìÛ·�çž{ŽLFžo!æËÎ�ÐÜìTk›¨¥>ÿyøîwzUËÃõ€]Kë¯êyå÷Þ^¬BÜt°~=\¹2yßt€O> ßüfá}¿÷{NàU”N€B!„âF @!„B, eCܽñ/_ÜεÁü= ÔÔ·„¸a)ÅèëÀ.òZ03¨x•Žƒ•m�í1L*ü1ÖU÷²¢ìÆ«L“± Zúky½y+ͽ D3/÷á2,|®4ao’Û›yhÇ1ö¬n!ìOà6,Â<%¶ÖÌ©ô�°¶²�Õý\ìiàr‡.5Ñ3RNÚ\üÕ!ž=½‡Skæ$ôÓXÝËÆš.VWpÏæ3ܲæ þ8þÏÔÕërêÃÖVö²=ÑNÒts¡gñ”—Ó]«i¨!žö0›*e�ÃüüJ^—ɧöþœ=«[¦UP)'àt¹¯Žãíë¸Ø»bÆkpén—…וáC[OðÁMgy`Ë)‚Þ$ e‘i�ésgX_ÓCû`[ê;8vm=ÇÛˆIfJ RjøÝ<ÆâY”‚XÚÇ©Ž5\î«ãR_=ÏžÙÃùî•D“EÞ¹�·a²ªb€ 5=ìZÙÊÝγ{u ëªf^®Å¶5R¦›³]«x­y]óªXèqe{“Ô…‡¹Ë)>²ý8ë*{ñ¹Ósë|póYʦQ‰¬�úp„úp„[×\áþ-§yéâþîµqºc ]î)¯�¦Ùx “êPtôyXH–­“2]tF*øÑñÛ9xaGöuîÅœƒJ‹cº¦ÐuEØ—äÖµWøØŽ£ü®£„½É’ÃtÅäÚ_¬¡}¨*Ûbwfë4t›JŒÆê^v¯¾ÊG·¿Ë‡·�˜ñÚ4 ܆E]x˜šP”m ítWðú¥­ ÄB\¶�¯«3m <’ôqºs-‡.÷ÓP6D}Ù0�]R%˹fènÃÂçÎð¡-§xx×6×wRæML;Ø�SæOP¶ÄZ‹¥¡²²’G}”G}”ææfüq{ì1:;;{iB,k{ö8a¨²2øÂ`ß>8t¨ðcý×�Vcã‚.qYؽ»p°½Ý ­­_¿àKZpk×ÞÞÙéÜg³u×]ðÄ…÷}ç;ðQÚ8G�ßw½Vâ°žžÂÛåZ !„BˆåD€B!„X,['mتÄ7™U¶"š2$(nlJeÛÿ MX&*‡X?ØcÕÿ ݦ6e×ÊÖY‡‰–¢ŒeðZóVÞ¸ÜDçpåŒ+êºMM(Ê[Nò©½oQа¢|·aÍ*ü—ÏmØ„½IÖW÷ðû÷ÿ”Gïâ''÷Ò “±çG¶«ÕœêXÃP"8ëÖ¿u¡aîÞpž_¼åm>°é,þ8cf¡šB¾·®½Âšª>Ør’ν‡—ÎïàRß̃‹¶ÒIšš{¸ÔWOS]gÉa¯á¤Ÿ³]«8ܲqVm§ ÝÆçÎð©½?ç}.°¹®‹õÕ=s^-ÌïNsgãjQ¾óæ½<¿ƒkƒ5×=¦&4ÂŽ†küú�¯pÏæ3sºž©X¶ÎÙ®UœîüÿÙ»ó ¹îó¼÷ß³ô>=ݳïf0ì ‚+(R$E‰’e9²d9%9¶)VåÚ©ÄWq¹œª8Ž+I•ljû¦î�m]¯Š£Ø’âK‰EIÜI€Ø`° 0˜}_º{z;Ëïþqz°€éÆì|?UÃåtŸÓ¿î>Ý3@?ó¼-èàçwÓ?SK&ï_ñqĦîП¥®|žîÚ1>øÇôÔ Sæ¿ÿðÀDªœ?}ûoôuß×Úƒ>‹öÊ)~rÿ»üÄÞ£”³T—%î{}‹tMôåiŠÏòxçy ]ñZßÞí߯¥É†’Z •ÒÈÛ¯_Ú�Owx¤ý¦î” ¾Ûª'ØU?ÄÎúžÛy’] C„ý9ÌxŽ…¸›®®.þå¿ü—üÆoü¯½ö_ÿú×ùÛ¿ýÛõ^–›Nuõõðߢ?ÿsؽ{é±žÉ¤×øî»`ʧ#7Ù·¾ùÍ¥/û“?�ý¯ï¾±cl7¢¶¶¥·_º´2ÇÿùŸ‡_ûµ¥Ëûÿø�á7óÎcˆ½ÿ>;¶ôeuuÐÕu¿«üà9~éíÛ·¯í:„B!„¸òG\!„Bl Jy�ŒÛ#N‹ãOo½D]oG“ ØªÇþÞi ¶¦¡riT6 VîÚ6ðÂEÍñ)žßy‚Úhñ#D7²¬åc2UÎÉ¡v.M6,{¤é­¦EmÔùü®“<±­—H ·"ÁŸišÂ4b!/È–ÊÑ5——Ïïeh®²äõß�SCm|ïÜ^ÙÐ}“Ú«&y¸ý"?±÷‡Û/•4®ö^|†Ce$Ee$E]4A,”ñK}6½ã 8%4¹JÃUo_颵bŠöÊIBËSl9#óq^ëÛÁ¥©ÒÇN›ºKS|†Ç;/ðÂîl¹BCluÆtºKMY’ò@–™t„X0ͱÁmL¥¢ôMÖá*¿i ¦©�ͱ¯i€u�åñÎó4ÅgWe]7r•Æð\%S©(“©r^ëëáý‘®LÕ20[MjFTߪ,�õ?w�d[õ8­•Ól¾B<œ^‘ãÏeÂ\œ¨çØ`ƒsUËÿ‡[ÄB tÕŒóñ=ÇyfÇij[�}†®éyZâÓø»ÎR_>KgõG¯vqb¨�ÁÙjïw/–ù3—BC)�ÉTŒscͼy¥›Ãm—訾CýÊ*¨Œ¤è¬ç©ígx å2­Ól«™ Z™çXˆåÒ4�#GŽpäȾúÕ¯òÊ+¯¬÷’„ØT**nÿ�âúOÿ ¾ô¥¥÷9q~ã7–ß¶öAñ±�Á¿ù7K_öû¿_þ2ÔßáwlÆÇá·{õÖ¶VöìYz{_ßÊ¿º~â'–ZNNÂ'? /¾xçpªR^‹¥ã,}ùç>ÇŠý¢ÚÉÅ‹·o3M¯S!„BˆÍB€B!„ØÜw?]›,!@±Å,^•{sûß ÓïmѼð_6uÛu¦Å¶ê žßUúˆÈ�*™ 24WÅ¥Éz&’å÷Þá6 Mƒx(Íκa~öÐëìkXõqŽš¦( dy¢ë´n(Ÿãã»�ó“ûÞeWÃÐÚܨ÷ …xá…Ö{Bl _ü"üÕ_Á~°ôå_ý*|ä#ðÌ3k»®�ìÑG¡§z{o¿lf>úQø½ßƒ#Gn¾ìÂøÄ'`~ ü^YWÄb·ß—sçVî6~ë·à[ßZºÄÿû߇Ï~þý¿÷Úç.J§½Ö¿¯|åÎã5Í;ïEq._†Ü%ë‡IK¨B!„Ø\äÇW!„BlnÊ׆%º…ØÒÛÿ–<÷5PŽ×ú—IA>{Û5>±÷=žÛyzÕ—¹™W§k¸<]ËôB´èýuM ¥yzÇû|áð«ìn"º†c’#¾,�ÕãüÒ‘ï/ðÍ“1Ÿ cßç(Þå˜MGxåânÎŒ6“³Íe·yݪ.:Ï‘ÎsüÔ�wy|Ûù[{/‡Z/ñçÐ5—ï�ÛÇÅɆ’ŽôYLkÙßb2–ŸÑù Ž^í`!_Z+�®¹ü̃oðÑ]'ØÓ8°¦��i8´W]o@{¨í�´_$kùˆr4Æf¼‘¸«4Ó5…¡9€bx®’Ó#­|í­qf´…T.ÈL:²*·ë7mêËçøÌo²§q�ΚqÚ*§Vtdõ¢‘ù8§‡[KÄI狆|y:ª&øÉ}Gù{Þ¡*œ\ñvÒ{‰‡x´ãßëÝw-¼ZŠ™tßïÝÃãÛz×´±Ækx=MS|fínT!ÄšúÓ?…�;!‘¸ý2¥¼¶´sç¼V¶»ùë¿öBY¥¸Û÷¶+W ½½´ã®–ßú­;ßד'áÉ'áàA/˜Ëya´wß]Û5®¶G�ï~÷æmo¾éýñ[/½ýš}ûà—~ þð—¾üoþÆû ½FÂÙYèï¿sëߢ/Ù}]ŠººÒö[ôs?_ûÚ�/ïî^ºeïn¾õ­;¿~~åWà?ÿçâŽw'o¼±ôöG]™ã !„B±V$(„BˆM®TàµcÝð´R׿dŠØ2Ô]›ÿ®ý¿í Òs�Oƒs½¹ÊЦÍÁæ+ìªßz�G鼟scM|çì~†f«ÈÙ¾¢�QÈòÜÎS|rïQjë£,�]Ó`�i¸Ä‚i¶\!•  ”Æ/ìfx®‚¼Süý)FÆ ðþp+#óX®¹d+Å�h…F²–Šiw\âSûÞå¡¶>êVaìï½TERìnÄU: ù¶kpu¦ºèqÆyÇdx¾’^ÚÅCm}4”ß=øvt “]ÜÅL ÁS€úò9Ýv��í>ΡÖËÄ×x©¦AY GYÀ VE’4Æg±]Ÿá ¤ ûó˜«üzÈä½ åk—vr~¢�‹ ¼ÓßÅx2^ò¨Ü;Ñ5Cw ˜»†yzû>¾÷=Ú*§ˆ…Ò ]_¹_2°�ñdŒSÃmœê`6)º¡ÒgØ4ÄæøôÁ·yfÇzêFðöšÿ¨ã7j¢Ií¸À•©ZŽ t�Ȇ±‹¼?¶c2�Š2—‰�±ü„|÷·]*Cw1u‡�õÃ<ÑyŽÎš1Ê·‡ä…Bl ��ð_ÿ+|á K_>5å…¿ÿýµ]×Fö™ÏÀóÏ߀»ÑñãÞ×Võ‘�Ü~ÿ“Iï>?øàÊÜÆ¿ý·ð½ïÁ¥Kw¾N6 G�.ïx»w{ÇÅ{õÕ¥·øÃk»!„B!î—…B±9]�ªîÒ‚V¸\&‹-A]ÿ—R^ðn×t,ÔÂ,XY/0X¨*ù,oÌbõ$u÷3m6®«‘Ȇ8=ÜÆ·O=HÖ.¾UKÓ\*#)~úàÛ<Ý}fMÆÖ.E×åÁ OwŸ¥*’b*%• 2™Z½ R�³MÆ“1™0V‘�ƒš®ð›6š¯ò‰ÝïñlÏéu{ü*Âižì:ÇàL³ eŒÌÇ �ÐåCXÈ8?ÞÄÿ:þ0Õ‘ä]€JÁ/ìâ¥sûJZ¯®»l«ç‹O¼ÌÞÆjÊ’%g%…ýyÂþµoG›MG8=ÜÊ¿õgFšÉXW/¹‘ri Óð‚ŽªH’gºOóÿuÑ~så[ÿ,ÇäÊT-§†Ú83ÒŒUDXNÓ¼ï!_žmÕüý‡^§­rjÍ›ÿnõDg/¶k0•Šrq²žTn9³¯ÓðÞ;¼÷¸(Íñtmuš� Ý¡,�åÙžÓ<¿óÑ5x !„X{Ÿÿ<üÅ_À‹/.}ùË/Ãïüüó¾¶ëÚÈþâ/àé§áÔ©âö … ³~?þ¯˜Ÿú)øÕ_½}û�~´rÀx^Ý{œÏž½¿c8à�ºŽÅVfm4Ký~/*„B!Äf²…åB!„ëÈuÁ±¹sM•BÆ‹-Åu¼ñ¾w¢`åPÙ”7þ×µoÊ;u׎ð¥'^fGí�U ¸¬MS}š®ÈÚ~·ø°PMY’� ÃÔ”%šÖ½wXeA_žmÕãü£?äñÎó«z[É\ˆ±Dœ™…2r%4 út›ÆØ,�wžãCÝg×|ìï�4Åg誣"œÆoÞcnÖ-”Ò°Ë1îÙ<§i^c`)­“à�Mn«˜¢16GÈ·þçÞz::ÐÉï¾òçÆšIÂ+-`ZìkàSûßåÿ|öÛüΧÿ_¾ðð�©�&ñÅ�'ÅÐ4…¯pZ®�*¡Ñ°9>þ¦«DüYtmýÃkµÑ´^á§¼CwíhÑû»J#kùùî¹ýüå;�“µV/è\Iòxg/�m;ÏŽú‘U}®…Blò'PYyçËí×àĉ5[ΆWY ¯¼<°ü}âqøá½àf×Ñ{÷Þ¾ýïþneo§¶^{ >ùÉÒö×4/¸úöÛPQ±²kû ôÆ€ßêùç½ B!„›‰…B±y-¶ 9 n)u*ÿŠ™_)ÄF¦ð¯Ê÷Nçua vn2 Èg ™Þ‹£"œb{í�v\¤&š\µ†¥õb»½ã� ÌTc—ض­zœ�ôœ¢!6»!‚!º¦ˆ…Òìm`OÃ-SøW)˜8–ˆqf´…+Ó5$²Å}rgh.ñPš‡Ú.±§q�ºèü†iÕꨞ`_Óuås‹-ªÐÈÚ>Æ“1Fæ+˜I—-ØJdCœnc"QŽeל¸¨§n˜ý-W©-›#°§ëiz!ʹ±fæ3a×@¡­hû_cl†§¶ŸãgxƒÏ|“�î>ÁcÛ.ÐY3AÀ´®5í­4ÛÑIæ‚\o`,ÇU¥½OíjâÙžÓDƒÙ5û»” Ï¢¡|–C­—鮥"œ**˜¨Ðp”ÎØ|œ�¹âGu/WÈ—£¹bšG:.ÒY3Ny0³jϵBˆ�¥¶þû¿óå¶íµ¾¥Ók·¦�®²ÒkFûØÇî}Ý�NŸ†Ã‡aÛ¶Õ_ÛZøâoßöÊ+0³ÂåØðÍoz­‹��ËÛÇ4½±ÖçÎÁü�T»_ÿúÒÛ—zþ…B!„Øèd°B!6�%³|Ê;ï¢T!ü$ÄV£T!øçÜuäµÂ Ūl•IxáX]G7ÀкëFÙÓ8HsÅ4¡"ƒP›�å˜üøâ.N·½¯¦¹„|{ùØîãÔ—Ïo˜`ˆ©»”3tÕŽ±·i€Ôånò%¶ÌÝÍD2Æ™‘fú§kI4 ‡š²$ÏìxŸŽªÉ_Ûýh«œ"• ÒS7ÂlºŒT6T˜¿¼äT:``¦š  쨡<�Æ4n>7Æ1^‹ iñPÛe>}ðmží9EU$µfkÈ;&S©(¯_îáòT]ÑûëšKY ÇÁ–+<³ãýUXaéÂþ<Õl¯ãt¬•t>@Î.þµ ³zÁáò`†ŽªIµ^¦:²þ#¶…BçW’K¼}WU-oÿO} þà`|üÎ×9q{ìöí»wÿúWË»�bÄãKoïì¼óí=ùäòŽýÑ�ÞùøõõË;F8ìµÞ½ú*üÑÁñã04Ù,´¶z�¿ü�o~ÌþÅ¿€Ë—o?ÖáÃË»Í�âç~¾òÈÝPj®üå_Â?ù'+{?û³Þ×… ð�ïÀ±cpæŒò«®†íÛaÿ~ïq|þù;?·wóÅ/ /¬üÚÁC|7¿üË0=½r·÷È#+sœ¿ú«Û·µ´x¡V!„B!6 !„bÑnÿ_å¢ì<šëÀ�>4–@±éݼ#Í÷›O£2I°2 ë€FØ—¥¦,ɧ÷¿Í³=§©-›ßrã,Çà½Áv.N4½oÈgñ`ëeö5 ¥1õõoÿ[´úi¯š¤§n„ƒíÌ®Â혺KÀ´K >š†C,œfóuÑùUXÝý©+Ÿç³¾É\&Âd²¼¨£YËk¼:]Ãè|;ëF¸õûÍÔB”^ÜÅÈ\Ž[\`y0CgÍ8{i«œ*j_±|�±Y¶ô³§q€C­}h¾Jy0³¦kÈ;&ó™çÆ��½ed�g{N±·iWi^/âhð6 ±9Z*¦¨+Ÿ£¦¦äqØ«%ÊПa{í±�T< !Äfó«¿zÿÇøò—KÛo×.øÍß¼ÿÛ_®mÛîÿö>úQïë~iš:\nððç~îþos#ˆÅàK_‚ßû½›·ÿ—ÿâ�Gú*ÍÖêîö¾VÃz¶Úýò/¯ßmßÉ[oyAË[ýú¯¯Þó+„B!Äj’ B!6Mó&AÓÂoÚä­BÀ¢ŠRŽ®‹vÛßÒÝ2 x£|R.D1\uKóßç±R`åPÉÈ¥Á±AÓЀò`–Žê ö6 ÐU;¶%Ãà=Él˜t>Pô¾>æ½j’–Š)"þ,æ_ …÷?Í¡µbŠCm—99ÔFÖò1“Ž®Øm8®†åäcÉ·÷²¿é*Ïï:áµKú7^»dy0ÃCm}ü¯ã‡‹þ6à*�¬å÷Í,ß’ý›yÛd&UFÖöãùø}õÑ9šâ3T—I+ÙJ3t‡ªHŠG:.ò÷¼C{Õ8-3kÚü·H)�¼c0Ÿ‰�±ŠŸ²�ùL˜×úvÐ?]SøN°±~ÉáøP“ɶSü(ìT.ÈÀl o^ÙÎî†!c+uÖ5¿áðpû%Žt�£:’Ü#Þ…B±±ýú¯Ãûo�¿á�7.À7¾ŸùÌú­K¬Œ¥Z6wí‚_ú¥µ_‹B!„+A€B!„ØLÝ!ìËQ›£2œbìÆæåz£N]Œ@!ìW`(uýKÂb³Q‹Vçæóú6ʵ —F%§ÀÊy™MC×]ª"Iö7]¥¾|k6ÿ-Ò4˜>ÃÆ*"|¢i^ó]U8EEh¿¹1ƒ!õåóìoêç@s?c‰øŠ]¥‘±L-DOÆŠa ðø¶ó|æà›DkÛ¨¶\~Ó¦.:O4˜ÁÐÐ|Eç¦ ÍÅ4–†ºKÈŸÇЊ;wtMá7lâáb¡ô–ͽÞ|†CS|†G;.ð{�a¬s¸W¿�Ñâ‰lˆ×ûzxór7Ji%…uW›$6qÜâßGæ2Î�5ñ♃„ýù º"äËñt÷žÙñ>þ-ü}P!„+§¡~åWà?ü‡›·å+ð‰O@(´>ë÷ï»ß…—^º}ûý‘üÕ¡B!„ؼ$(„BˆM!ìÏÓR1Íó;Ob9ß>ù  y¡(×) s�½�Ô�ÿ¾[xJˆ J)/تnlÿ»•ºŽJ§!“€|¦pýëºjÆøÅÇ^Y±0ÅV4-*#)j£ ¢Áìz/çŽ ÝÅÔLݽ¯Ñ­ò¶Éàl%G¯vòz_鼿ècøM‡ ÏFÛ`md·j«œb{í(§†ÛJj([i>æ2’b{íe�Üz/gKr•F:`>a.¦<˜Ù´ío®ÒYÈ{¿è mÐO&]WC•øó–R¶«“³K Þ�¦�Ow6ís/„Bˆõñ[¿ög06v}ÛÕ«ðk¿æ�›Ïì,|á ·oÿÒ—àá‡×~=B!„B¬ !„bS0t—²@–ÆØ,Õ‘F$.­œ÷oM["'¥¼@”¶²& ±ª”[q}·ð(å‚mCz•I‚°\ûµõîÚQ¶^¡»vt ½9U„Ót׎±½v„Úèüz/ç®4Í ;fön× M¦¢Œ%⥭ …®¹¾-á¡¶>&SåœmÚÀ°?GkÅGºÎQ‘ñ¿«Áqu¦RQŽl£ñýx|ÛyšãÓ|›¯N)mCœ·«EᵺJ»ö;+r\–ãýõ×J†§…B±õ…B^ðÙgoÞþ{¿‡Ãç?¿>ë¥Éç½öÆÉÉ›·74ÀW¿º>kB!„b¥È§àB!„Ø4”Òp\Wé^ f1iâÚ(;�rl¼–¿Âöþ³pŠžù¸Ü8Y)µÄ×õËŰød¸n!Ìw·'F×AeR¨ôdo=Úqž‡ZûVm¹[A<´@WÍ(=u#ÔF뽜»Ò5EÀ—'à³½Q¶+ôžVjnÏëúòÖ°Ç‘ÞêÁÖËéêÝ0-`ŽÖÊ)žè.U'™ ra¢�¯½ý$ß=»Ÿ…|pE›4ÅÆÕ›åý!;ä{¡B!Jôïþ|ô£7osø™Ÿ�¿üËõY“(ÎóÏÃÿþß·oÿÝß…§žZóå!„B±âd°B!6 MSø áËv \PÚÊñÆ{éßðÁ¾R×ó ÏûÝB>À§C@×Ðõë�*„ó.Ø.h ôÅÅÐã´qªʹ!´z‡'BÓQù,*“D-Ì‚“÷®¯éø ›ºòyö5]eoã5¼Õn½yÙ•9¹ZÂþ<=õôUNñçHfƒÀú��3<ÔÖGOý0öFã¸:¶«o UnŽón+°]“™…2ŽvñçñÏìxŸºòyi†Ûâb¡žè꥾|n½—"„BˆMÊ0àoþÆ þèG×·».$o/âP&sû¶ßþmø§ÿtí×"„B!Äj� B!6 E,˜¦:’¤"²Àl:BÞÕ o °f[`ú éµR‹cU? ¡¶Å@‰«aÔ4j‚òéºV˜2ë2ŸWLea2«°Ô]#gbÕž°Å¶ÊkM~K?×Îìlf!—ò®[HmFƒö7õóå'_bGݦ.á–­ÂÐ]â¡4åAoœ¥®+Xǧ·"¼ÀOì;Æþæ~¢ÁŒ‡Å†æ*�D6Ì«}=Œ'cT†8Ør…úØ<†æÈù»E}Íñ"�Üz/E!„›X0ßý.|þó×Gÿú|ð™Ï¬ïºÄò|îsðÖ[Þû|ðÿè­ïš„B!„XIB!Ħaè.;êFO\æäp;ïôw2m•y)ÇöF¡:˜>–N)>Hñ6[�OƒšÔAïx#‰LÇ1Š<Âʾ˜S¹o]éæÃÝgXÈ(ógÑ��ÔðÆÉË[Úæá3l¦EÈgq ¹ŸZ/óÿ�y€¾É:Òù@ÉÇu•ÎÌBçÇy§¿“îÚQ"þ¦áÞ{g±* ÝÁoZ„ýy|†´1 !„bc«©ñ¾Äæñì³ë½!„B!V�…B±étTMð™Þdd¾‚…|€™Täúà\Ú &·] Mk[| °« ÜiÐxºÁd[ÌOÀÔ˜��åÊÀgz/0==‹aštnïbg×6:[ñ™&ª5l’gæ9ðéë}�¶8×õÚÿ–Óü¨Ô,*9 ÙT¡ÑÒ;—}†ÃÞÆ¾òÜ·ÙÕ0D]t~5W½åx¡ÿ}a!àÔPëµðS1-YJ-6kÝþ¢vï3³§i ]S>,¬ë.†¾‘^ÿ1[oÍñö7÷óè¶‹l¾Bkå ås|ûô!^>¿ç¾�?¬s¨Ö¤3fb¸cc³œ½p‰Sg{¹|u€D"E4ZFm}=¶m¡iš¦Q„íqÔ8ÌZ69×{•¶²õ¥(ÿ £ïJC¹Ø9HÏA6áµ^jÚµs9ÈÒZ1á¶Ë”2øM{ÕïÂV1›Žpq¢�³ãMÄà 4Ä6nH¡a9&¶kà,ä» …i¸”²LëæË4…©»ø › i‘wÌ¢Çoº»)»2–Ÿ…|pÃtºJ#o¤ó¦µÁ‰ëÇoZ„}y* <Öyž�î)ù¶Ù 'êùÛ“‘Êy¦û}â¡i\C¦áPæÏðĶó¼°ç=zêF¨§×{YB!„B!„B±iHP!„›NÀ´© §šùëa M×kTvÍu@¿ÃhLåz×ßr®‚¨O§#j°·&@]Ø •Jpöâ%~üÖ;¼wê V>�ë*×ŧƒO¿þXøM�ê°Éƒu~.¥§g]¯˜NÛÊ�‰ëD©ÂØ_—{µR*ÇB¥fPéy¯é²üÓuSw訚`{í(Õ‘äZ¬~K™JE99ÜÎÑ«�4Çg6lÐu5\¥cê†^\eŸ¦)¾�ÕãTÝrŽèš"ÈQIR�g4Q�[ähaWiE‡×ÃÈ\%W¦kpÜ�ñ=ÀrLæ³®ÎTÓŸ&Ì®÷’6„ªpŠÎš1:kÆùØîüäÞ£è7œó{14Ssùú{�pv´™ŒUÚ8à¼ícx®’¿:ú8‰l˜êH‚ýMW©§7\ S/uuÍÝR¡üh Ãöš1þÞÁ·ùÔþ£·…”…B!„B!„BÜ�…B±Ii¤­Ë}“R^H*—�@Íôß¾›RÞ¬K�-—hS€£ " ÑQ®èèÊ!‘Lr±ï #cãØ–�iz?êd2iòVþ¦ãøt¨ éTu">�ë¶Eq¿\ÇYíÓîv.j:Ø9Tf5?ùÌM-–ŽÖŠi¾øøxªûÌê¯} RJÃq5ôÂÛ�*•26ct¾‚d6XÔ¾~Ó¡µršôøØY?|ÓeÓ¦µbšÇ».0žŒó�3Ÿ uü«35œi㱎ó„ýù{ï°NþîýƒüÕÑÇÈZ¾õ^ óÙ0§‡[ù³wŽðùïÞöÜ|P=ÞyžÿãCß¡º,IuYò¦ðߢöª >±ï¦áðÍSò£‹»ïë6m×ൾÌ¥ÃüÊÓ/ò@Ë• Žøsìª"J£mà÷ªbµUNñ3¾IWÍ~CÚk…B!„B!„¢XB!Ħdè=õ#ôO×0›Ž ”æ5Õ)¹È—A°l‰=•׸¦\Pú–¬˜: £pßÛ!“Í’Ï[(¥Ð4o4r.oqùê áPÇv©¨ˆ‹–¡ûC„M��¡á×aîUP'–KÎ?w±ùoÑ]\å¢2IÔœ×üwÃèߪH’�õÃ<·ów\¤¥bzÕïÂF¦”â)¶ÝM¡‘·M®ÎT34[Å®ú!‚¾�7Žuf¡Œ¾©z.OÕ2›.n䩆"`Z4Ægˆ…n­©iŠ Ï"L/ kÅßïÓÃ-Ô—ïâ@Sÿ† .äôO×r~¼‘‘ùJT m…®ÒpÝ¥÷s] Ë1p‹Ë `;S©('†ÚylÛyê¢sTFŠ^ÛV fh¯ž¤*œºã8ó�ߢ9>Ñ®sd-YËÏù‰FæŠ|m€÷ ̦Ë8=ÒÊ7Ob!äÉíg©Š¤Vt¼u)çÞ"Sw¨Š¤x°õ2Ûª'¼Ÿ{¶€ê²ûš®öå¶T°Q!„B!„B!ÖŠ…B±)ù ‡§¶Ÿe&áÄ`;Æõ–ºl BQ”r í¦�_áZ…˶jªíÖ�ÏuÍ{¼/�l.ǹ —˜�›gdl‚=»w±½£�Êꦆ¾U�u²Puìëcï@ÕP®ãµÿ-ÌBjËk,ì×Z9Å‘®süã'¾OY »¢!•ÍHÓ¼†¬€i‘³‹kxËÚ>N·²£v„[û¨�&6TÐqu†æ*9>ØÎ¥©zæ2Å…œTaDïbXz©SÏUZÉ£qO·¡Ðøìo f7ÜÏé…2^îÝÃÀluÑ÷Q×\|†MÀgaÎ’ï‹>Ó%ÌƳª¢Æ!/ä\žªãÂD-S\¥•w¦Å¾¦¦�ß´øú±Ç83ÚB:_Ú8`ÇÕ™MGøÆñG˜O‡‰3j»LE(…iÜÿû�†ÂÔ¢Á A_ž¬µDSñ](¥a»:»†ø©ýïJXN!„B!„B!¥}º#„B±ÎLÝaS?»†ñڵțæ�¶²¨|–¥ëq[?8œ{Ù3UE‚®ë€F:“¥ïÊGOœbtt„ô È9Þ—ýÁyˆVŸë€k�rXÖPe¥ —Æ�ôÂVÞ ÿÝ 9>MGÕåÁ ¦þÁÿÍ<Ÿ}à ž.a²å˜ôÏÔpe¦–étygãü®”åL/”ql`¯\Ø]ôx^(„û”~×·=WiE7ØÝhf¡Œ¯{”3£Í%c5(sé¯öõ04[‰íEí_̰«a˜Ç¶]doÓæAÛmÕãüÓ¿È�–«E�0ÍÚ>†ç*¸2UËè|EQû O[å$ßsœ/~•G;.Þ×±”ÒÈäý¼y¥›ÿú£çy÷j'ÉòYgØŸ§¥r†Oî;ʾ¦�¢÷O悼ݿ�scM,äý÷Õ&(„B!„B!„bë� B!6%Mƒh0KOý0/ì=Nu4ɵ¾:å‚•ƒ\ª¶ZêòB€[(¨k�´ci—”¥Ph„Ãaë먬ˆc¶í`Y¶m‘ËYhºFYY„úšj¢ealW1“u™Ï»d 9—-6)ym)Uù뀻̱¿h¨|•žƒ…9ï|^l Ô4ÊYºkGy¸ã{1tWž#À4\vÔ�ÐZYü(d¥4²–Ÿ³£Í|÷즢«°ÂÒXŽÁD2Fÿt CsUäìâÉŸE4�E×ïü~ç3‚f¿á`9X¡‘Ê95ÜÆð\¶³qþ¨Ù?SÉ¡v.Œ70Ÿ {MˆEô›L‹êH‚†Ø,Uáú­kñЛ¯¥Šjÿp]�œíãÄP;Ç·1Ÿ Rü  ú,šâ3<ÞyžgzNs¸í"U‘dÑç1xç²£tfÒQN ·ò�ã‡yw «ävÌù ‡2†®êqjÊEïï¸ó™0ï tðòù½,”Øt(„B!„B!„bkÙ8ŸÊ!„B” »v”ðð�¨/Ÿõ6,ú¬,¤çÁ±oéZ+Œý]¼Þ ÿihºÆlNqiÞatÁ&ëêÄÊ£ìì½•ŠxÓôÂCš¦áó™4Ö×±oW»vl§ª²’¬ír5i3žvHÛ ŠŠÊˆÛ,Žýu›ÿî>zZ)…rlÔÂ*9¹´·o!á0-Z*¦x¶çÏî8ÍþZ¤¶*]SÔDTE’L ­„ðÏ™‘¾~ì1®LÕb9벃™tgG›¹2]Ë|&ŒSB8¬¶,Á¶ªqü†}ǰhÄŸ¥6š Jã3‹k±s•F: o²ž+ÓuL¤bälsÝßb•‚Ó#­¼Ö×Ãàl™S†îöç) d ùóK^'`ÚÔ—Ï f1JÅýÞ`¯]ÞÁÀL5é|q£a…÷ìiä…]Çùéƒï°­z‚€¯ôQÔ‹ÁÛ¯}ŒœßM"ºï ¦)>›ê²åÁt¡M²øÉÑ�NþúØ£L/”­H0Q!„B!„B!Äæ¶qæZ !„B”@×>ù¥‘I��GeS�Ï¢~0L®È^ø·r½V6Íàîml›‡dlL9¼1’¥*ûªtutຊXy9—®‘Jg0t�òP€];ºØ¿gñ8h:Ói‹wÇr $\4uÛÔYQ ×)„ÿ\¼¿{\_Ó¼s79í…ÿ²ÉÛ®²³~ˆçzNóÅ'^¦¦,�!£o 04—ê²$;êF¹µï(-•Ó„|K‡æV›«4r–�¡Ù*®ÎTc¹FI�DÛ5HåƒË „vV�ÑS7ÂñÁŽ¢oÇq Æ1^¿¼ƒ²`†ò`¦øÅ Ú«&xnç)Î�51–ˆ‘¾Ï–áP±© Ô…´55á÷ùiij"“Ï£ká€�ƺZêjÑtƒ¾y‡�ÚœžSLå@×5¯¯ns?4kLyÓk£ á?à® @MCY9Tz•œ†ÜÂMÍe� -3¼°ûOuŸ¡­rjµïȦ£iò[l«çñm½Ì,DŠ*4Ù/÷î%`ÚºKS|†@‘�x+åÂDßëÝËù‰Fæ3‘’�SÌP�ǼK`4ä·hˆÍr¸íc‰8Ó©(yÇ\öH[¥tr¶Î…‰ªË’<Øz…ÊHj]€JÁdªœ×ûvðæ•íôO×b;FÑ}¦~æ¦,Áî†!*é{^ÿ`K?}Sõ%]¥1žŒó�³( d±ƒîu nF‹çñ�–+\ž®ex®UäØçE ¥àâdß:}CW쬢¾|¾äõ™ºK]ù<�5ctV�“Ì‹fm³U|ûôƒ¤òAí¸@<´€q—ßB!„B!„B!¶. !„bS šuÑy¶ô3óÀ[ìjZí;³i…|yºjÆøÐös¼Ö×ã…Šxm+¥‘Ê…øÎÙ¤ó~‚fžïxŸºè<~síÚ]¥±� pb¨�W.ìf..é8ºæñg ˜ö²‚|åÁ G:{ék¢w¬‘|¦ø†Ô‰dŒÞ±FÎŽ6Ó›¡2’º¥¥uõÍe"œjå¿¿ñaNµ2™Š•tœ /O[å$Ïí8Mclöž×?ØÒÏÕ™jþïמŠ >žˆñâ™è¸d,µe "�¾Ç —ÂvtrŽ�LÞ[롦)ÂþA*¤<˜á@s?e�ìš¾Ö,Ç ™ bÝörëŠh KØŸ“_"B!„B!„BˆU&@!„Blj>æ"œfwç†Û8zµ«PôWhaË/xMjV9øüxA–>_liCc«¤ÝïaÖ�ׯÆÒЧflžm4y°Æ$ða>�·m—�”Ãñi‡—†,NL;\L¸Ø®7NX”À-Œ–VË Çh`çP ó¨Ä¤çðžÁ뉉õ#|tç ~ñ±W¨‹–Þ<õAa;:YËWrØgÑÉá62¯ûQJãÑmØQ7ºB+¼;×ÕHäB|¿w/Ç;H縪´WdEx�çzNòPÛ%*Ã÷n ùóìj¢!6‡ß´Ñ4uÓ[ær�%ãüõ{� ¥©+Ÿ§<˜ÁÐÝ’îC)¾yò!¾uúAŽ t�Ì×y£�/OClŽ=MW©*»w`Î6ÉÛ>t]ấŸ¯_ÞA2D)��ìË ôÝuE$�#^ <˜af¡ŒRzÞr.N6ð♃̦#ÔEç8ÐÒOWõ8¦±:A@ÇÕ™H–óîÕN¾WOÎgønéqæCm—9ÒÙKexá®ã“M‹æŠižê>ËÙÑ&Fç+JºÝ¹L„Þñ&¾uêAÂþ<¶kÐU³zã€ó¶Él&ÂÛWº8=ÒÆÅ‰:zÇ›˜JEoºžÏp˜K‡ék¤«fŒ'·Ÿ¥½jã�#_l*ì¬ÇUS QÂöðþp3Ž2–=ÖúF®«3žˆqt “°ßkeÜÝ0HM4YÒ›âÓj»ÌÀl5®Ò˜Yˆz?Ž,û;¯†ãŒ'ãØÆ×ß{ŒçzNñDçy¢Á̪}¯°ƒT.@ÿt oõoçû½{ž«$cù¯]G×ÀÐWc4QA[Õ=uÃËjÑB±¶Ô’è?úÑ/D!„B!„÷E€B!„Øô Ý¥³zŒƒ-ýœi#Ý×MÞŽyíKŽå5¦çÁBéÆÒ­+×kÔÇnî蛦y!>GAÂV›Vœžu ›ñ€E°p7SyEÒ‚¤ –ëíc²2›ûX#×>0S^èÏ]û ÷ þ¸*“ôÆþ&¾®‡P#þÛª'x¶ç4Ov�ÛìÙÔ5S]–"äà‘Ž‹Œ%âŒ'¼ñ¯ÅŽcu•F2âïÞ€T.HY Ë“ÛÏQ]–ÄÔLÝY‘çÄv ,Ç ‘ ñö•íü�÷å¥sûÈZ¾’šÿ4º®( diŠÏÐS7Bmt¾¨¾ºè]5£Ì,”1— ã¸Æ½wº�å˜Ì,”ñíÓò£‹;i©˜âý!e�åÁ !_~ÅÆÚºJ#“÷“Ì…xo°ƒ?øñóœi¹6¾ºæâ3lžÙqšçw� °ÌÐgY ËÎúa>ûÀüéÛO2žˆ•ÜÞ8‘Œñ½Þý„üyǤ:’Àg8ø gEB¨Jy-tyÛ`<ãýÑþ¯WŸãÍË;ÈÚ¾%ÃhŠ«Ó5|¿w/�ñY*")šâ³k:¢¸±Pš½M„yB¾<Ó©2&SQ²–¿è÷ƒÅë_˜h`2%ì÷FG}M«èqÀÛkÆš©\�¬åãÝtYIAß¼m20Sÿñ4é|€ÊpŠõ£DüY|†³¢AÀ¬åcj!Ê•©Z~p~?¸°›“Cmd¬À’ך­â�Ë;8²ý?{èuêŠ|B±út]zß…b«’÷x!„Bˆ !„bK0tECùšû¹4QÏ|&LÖõ�¦ƒm¡æ TŽf˜^ à­GkúÆl\¬õsÝÂtØå5ê\¿š£ eCÆQè^ ®ò¾4À§Kè¯4…àŸë²üYŽ·Žý]z¬oU$É�½Ô—ÏoÈÓr£Ò4…ϰ鬣16ƒ®¹%‡°À{Z� t0›3— ³§q�¦ø -3LëÞ¸ Û5š­dx¾’ ã |í­'éoº¯Ɔîñç8ÒyŽOî;Ê¡¶>ªÂÅ�}~ç)c³üþ�\Ž]íd4QZ“�íèÌgÃd&ùÆñ‡™¯`_Ó¶^¦c…ÆÚΦ#ØÆ©á6ÞîïâÄPÉ\èÞ;ÞE,”¡£j‚†Ø!_þžÍ‰‹4Í îvTMPW>O4˜e>¾¯µ¼zi'ó™0¶£ÓZ9EGÕ$;êFîë˜yÇ$• qa¼�^ÜÉ·N=Dÿt59Ǽë[™«4rŽÉ|&Ì…‰FzêFØ^»zí„÷Ëo8tTMðñ=Ç ˜6ÿãØ£\˜h ï”þ×!ó™0_?öé|Ë1x¨­�ò`qã€uÍû¹åïz�±ùïôo/y=JyÏç÷{÷2•*ç§¾Éî¯ù3J¯XðÔpß=»�ïžÛÏð\%‰lˆœã»ãõm×`>¢ª†¡Ù*fÒeTG’Ë~= !„X}555ë½!„« PQQÚŸã…B!Äæ$@!„BlÍ3<ÑÙËë};˜­&kù¼4†kC>�JÏ�a¢…ïÐ µ8 ØÕ¼ùu…ë  ²/¡g˜ˆ -#æ]¥p=u=ðwÓu ÿÐ�`Q”[ý-~-3Рi¨|¦þ›„lꦱ¿‹I¿]õC|¨û,ŸØóÍñéU¸[›ÏpØÝ8ÄGvžÂr|¼{µ“ñD §È àbëW¢0øoNæèÀ6Z*§ÙÛ0HOýݵ£ø {Ù¡¥¼†¼¾©:zÇšx´™�™j†æª83ÚB"{�1]w‰…ØÛ4È]½TG’E7´U—%ÙÝ0Ä »O0—.+9¨Ð°Û18;ÖÌ\&©¡6.MÖ³¯é*U‘í•“Ô•/‚½“d6È¥©z¦SQú¦êøñ¥�Þc8[yßcb³<Ð|…çw�dwà ~³¸Ç®,�¥«vœçwžD)xùüžBP¬´?~Ϧ#¼?Ò‚B£*œ¤³fœ':ÏÓ^5N}ù<á…¢�y|°�K“õŒ%*83ÚÄé‘VÎŽ6a9æ]_#‹¯×5H傼޷ƒ¦Øì†jš"äËÓU3††Âvt¾{n?ï^íD)­ø&@¥á(ƒ±Dœ_ÚIÆò‘³L´ôÓ›+êX~Ó¦!6Ç�æ«<Ô~‰3#ͤJ¯*4”‚ñDŒwú;±�îÚQ¶×z!è�õÃE?G¶£3›‰00SÃD2†ë«};yå®BHÙÏc¸J#• ri²žÞñ&v5 QJaBˆ�âðáÃ:tˆ£G�®÷R„B¬ /ùËë½!„B±Æ$(„Bˆ-£¦,AÈ—£³fœ  ×[—” NþúàP - s/ü·Ø¼µ^µk …VB+‹Ê.঒hºŽ ¡ù‚¨FyÜm•Ú ÿ!¿°ô»6òWQ軌]8…±¿©iHM_ßWóžOŸaSÈòȶ ¼°û8GºzWþ>|蚢£jSw úlFæãL¥¢8NéÁ°ŒàÕK; ùsTG’ìo¾ÊSÛÏ^{ýþ(¾ IDATÎnmò剸s˜º‹íêäl“t>€£t\× Å¼Ö·ƒ—ÏïåäP+ãÉ8 ¹àŠÜï iÑZ9Mwí�Õ%«<˜áH×9ŽlãøP;é¼uMŠS©r¦Råœncp®šÞñFÚ*¦xrû9Ü»“†"`ÚÄ‚it]a9^ÐÌrŒ›‚icóq^>¿‡ËSuœoâ�+�ØîÊüñ¶µbŠ#Û{ù™ß <˜)z´kÐgÑ›áÙžS('‡Û˜Hê%¦¢üøâNšãÓ ÏUr¤ë»†h¿¥I1ìËòYøMÛÑÉX~Rùëç–Rðƒ {x£¯›ÁÙj®L×:u•FÖòqr¨�= ƒ%߯µ ¥ÙÝ8HÀg‘³Mú§k˜I—Ý×ór~¼‘‰d9U‘•‘…¢€‹zêGxªë,ó•,äƒ%·Ú®Ádªœ—ÎíçÄP;m•“´WMò±]'( f¯_±pJGƒ"þ< ÈZ>²¶Ÿœm¢ðÆjÌVóÖ•íôŽ5á¸'†:¸0ÑPÔš²–Ÿ¡¹*®LW3–ˆÎ,„ÉK/½Ä‹/¾ÈéÓ§½?¯!þöî+H®ôLóûÿ;&}VUfy�‚7Ý0mÉfsšCrH69ŽœY®�¤Mh/$î…®t¹×s¯‰¹ÐÅÆ(4¡�fµ;\ÎhÉmš&›Dt7Þ…ò&ý1Ÿ.NV¡à(  …B?¿tUfž<ç;iª€È§ŸWdÛJ§Ó¼þúë¼ôÒK[½y‘gJÚ ùÃcoSk¥¹8Û×¾¶ýAz³†­/a2HçÀ¸wÜÛÞŒçу.�- ’à_e‰¨^Á6Ø ‰q=LФóãà¸>“�Ò~�¬†ÿönZ ìò,¶:�eÚóœoÛl´4Ë·ž;Î7½Ë‹cç7tåŸEýÅE_¢§°Œï†�5ösE#ð¹¹ÜÉOÎîçüL?<}ˆ¬ßÂ]{uǾõÜqz KÜXêâ£#üó©ç™¯ˆíJ¸¦›+óÝ«cD7‚—gø“×~È+;Î>æ¾"úŠK¼2~ŽÉÅ?>{`CBŠç¦û¸±ØEÚ øÉ¹ý wÍ�ñ[¸ÊŸ¼öC²~À•ù2ß?ñ"f{™­Þjo]¬g999L­•¦øDvc?HÞƒ;{n’ñƒu‡ÿÖê+.1Vž¡¯°Èr#ËrãñƯ˜ªtò÷'sâú(½…%úŠË·Ýþå}'xyü{û&™®ùùù½üÍ/í_qÖðáõQ&—ºhEÍðÑÞÆX2~ðØc°Ÿ¤”±³gŠo}‡Žlƒ¿xë·¸2ßýXûl>ï]ÝÁËãçøÜÄ™GÚÇD÷/ï8ËßœxÖW†y_sÕ<ÕVšsÓý\˜íão?>¶: Ø‹CÌwŽý‚/ïû߉x÷êï\ÚŇ×Gi†)Z¡ËLµÈ�Åóµ<ÖB-H?òz\cñœHãEDžRo¾ù&o¾ùæV/CDDDDDDD‘€"""òLñœ˜רÛw�R®Âr3K¹íÔCÍ*¶2‡q�ÐçæRW;Ørk›k %.ÌöÒ‘©3W-pu¡›““ÃTÚº r©iê­�Ñ\�##—øíçÍ«;Î0Ô9ÿXûrLL>ÕäÕgð݈ rùàZÒVø¸êAšz;LTie9;=@Ê 9}s�…zž”2[-ð«Ë;™­o е"¯JÚ¸Ÿ|ÅL�=½7øÂ®S¸ºî±Éwò݈]½7ùo?÷ÿùý—yûÂnëùÇ^g+ô˜ ‹Tši®Ìw“õoàMWмsiÃ�ó,5²œ™àW—v­Þn1,Ôr4Cÿ±×âûX!É'meðŽî)^?Ë|÷¦–;ë±b�3SüüÂ^†:ç9<|‰âÚ¶½‡PÌÔÙÛwƒßyþ8i7â£#D±³îñÄk…±GØô¨’¡9ése®{õg”1ÇXêAŠw¯Làš˜s3ýœ›éçÚB™ ò’ r�¢ø�Õ’¸Â«ðŸˆˆˆˆˆˆˆˆˆÈ&QPDDDž)ÆXºóvtO³¯ÿ:g§X¨ç C°Ðªc«s˜LëùÏ_Óâ¶æƒvAl’qÀkgènÛŽCcÃ4°Í:¶¶D\«7[í�m;gfð¬%‡h¹ ÇЊ¹W‘œ<6»æËšvHßû5s¿=Ä„-le> ÿ5Ö´uCÊ ñ�ß�xuâ oz�×vžÞøÓù +¦ë|ó¹w©>—æz¸±Xb¹™y¬q¶+AŠFpwˆoz¹ƒw.íÂÁY‡0vÛoåÍy£šv»Ö‹cçùö‘w/Ï7qš�=7okt|T#]³üë—~Êl%ÏÔrÝ!ŒÜÇ  ®h†)šaŠÅ;rÂSË�¼uæ¾[‡0N^›Áb64„ù¤3MFJ³ìê½ÉL¥ƒk‹%¢ØáQ~‘F‘ÃÍå.Þ¾°‡¬ß¢+Wag÷4ÙTë¡÷á»C�óüÞó¿¢ÚL3¹ÔÉ|½@ºòÚ¯63÷lïüþò‹üÝÇG1X‚ØÛ°&Ò{±–mùZÙ‘gÒk;OSÊUùßúeÞ¾¸—ëó]€IZ×Uleãºà•“Ïûï5Ê5ÛY€Gý+ÓíínÉqbˆ¢dQ@Üja[ l£†m5ˆ[Ar[œ¬ÇD`â/å0Ñ�c_�CãÝ\¶Y~½ W*ÄàésõÍÑib×3ò×€q lbëK°4ƒ­/BëîV¨ÝSìí½Áxy†o=œ—4öwÃynLoa‰¯ü€BºÉÿñË/òþÕq*Í�Éz/±5íÖ¬$�»žiÑ�"í wÎ1Ü9Gg¦¶:ês£”s¾ûâÛ¤½�\ªÅ[çöoØ8à;ÅÖÐ=Œyr�¡Ã×øò¾ùãWÞb¨s~C®cIð/^øå|•ÿíÇ_çÚB™… h¼k!Â!ŽüM ]Ykh>�àñ›Ÿ4×D ùŸ~ãïéšãÿúõkÌTŠ�ÜtdžOn±XÏð­çÞå•gqMôÐ%Âùt“ƒƒWùöÑwH{!ýî«\_,Å›÷ˆb‡(6“œÃfŠÚaT…EDDDDDDDDD6ž€"""òLê-,‘ øÜÄn.w¶€mq„­-‚ëƒã�—×Ç8÷hdZì¶ó|÷ùàúΫÛ�1»‹#lBB$�a Ûjaƒ¢FØ8¾­ñÏèíH1Ò™fO_žÃ#(0Ø•ãTÅÁ»±Ô„ÙØ[ƒa“&Ö¬Œ÷] ÿÅëÿ��#ëØÚ¶ºµE[É~ÚOPG¦ÆD÷4ß8ø/í8Gw®Âž¾tfk›tRŸm¾1Ú5Ëë»?¡¤È§š2ø~ìjèoóß�Ù»znòõïóù�gèÈÖ7<è»ýÅE¾¸û$‘u8~ebÓ€«­rO`ZèÊèÕß=ük¾´çcv”§ñÜxC�á8–‘®9^ßõ µVš¿?y˜_·Ço†Õ×Þ&­<7âÐàö\ßÔãlc ë·84t…FèY‡|xŒ« å{6z~𕆾j3Õùnþ¿“‡ÙÑ=Í‹cçqÝ•ŠÞsŒMB€WÛ?;,ÿtêy>¸6¾¾“[‡Ø`sßki/ §°Ìxi†þâ"ŽÙØ÷—ˆˆˆˆˆˆˆˆˆˆ(("""Ï(ß�èÈÔ9:r‘““ÿä÷Ž¼Ã‹c6ç|ä6¹T‹åi¾õÜqZ‘Ëå¹n®-vSmfÚA˜íÃ`ÁX<'f¤sŽÏOœæ;Ç~ÉÞÞdý‡=º^ûû¯[‡ÿ³ü:QìÐý ü$eü£¥Y¾ºÿ_?ø>‡‡.oÚ±<7bgÏôòOb—ÅFŽå+YÂØ!Ž·ÏcgÚ? Ó~À@ǯí:Å‘‘‹[»¨Gä8–ŽL�ÇÎSH7¸±ØE9\žï¹Œ[§fèsâÚ8§n1])ÒWX$å­owOa™—ÆÏSÌ4¨)®.”Yjäˆ"gÓGao4ƒ%—j²£<Íž¾I†»æ6<œ,"""""""""" ŠˆˆÈ3Ì51{ûoðÒØyÎL òÑ�j+c-4k…Äî2ÖI�ãa<ã9×Áâ`ãù` ÖqÁqIÆ»Ò΄YˆBl@'-~Q»5p¥0Ž“m¢Ù$@aÛS~WÂ,«ScS)�½ÝŽ äxuG‰ƒEÆË9º²>ù´»z~#E�Ïf8¹Ü¢‡|²ã˜'Ñ7ö,³kÿÖÓú·ò¨Û¤]²2‹­Î'#㨽eoÿuÞ<øòÚé-,oèȧóœˆÁŽ~û¹ãôæ—ù‹Ÿ|•®ŽÓ××úµÕÇ’öú‹‹üöó¿æ_¾ô3ÆK3dü`S�k1 t,ð¿~ýoøõå Þ»2Á�ÏØ´6ÀÍttä"_Ù÷!ôÊ[ v,lúñ<'¢3[ã÷�¼C1Ý`¡šçÆRK�ܦ{#‡‡/óß½úc>¿ó4;{¦¶zI�%Ÿj²¯ÿ:ÿîKËÿûÞ«ü‡·ß`©‘%ŠÝßù>~z~/¹Tƒÿñõb¤knÝ÷Ïú-öõ]ç»/üœÎl�¿zçu®Î—y=[ÅubŠé:;º§-ÍÐ�¯àlÐxm¹E@yf9Ž¥œ«ð¹‰ÓønÄ_üä«|t}„fà“4ûEØ A„5ã¸àšö8`N°ÆI‚\+·­„㢤)ÎÆ16²kFÈÚ¤.ޱñÊå$@a\‡´ï’õJY�¡r–¡R–ÑR†ÝÝYv–2Ltçé-¦(¤=ÜvCàŠŒç0Rôxs ˜®·XNrˆÜkš±ÜÇjë_¼fäïj:³í~±Êäu`£ZMl³Š­Î%­­úšý0†b¦ÎXi†ßyî8_?øãåµ!=aÆ@Ê -Íá:§XläèÌÔùéù}›6x#9NLÚ xaì"¯î8Ã@ǯì8Ëîž›¤½³É¯'ƒ¥˜nðꎳ wα«gŠ rùàÚ7—»¼ƒ§@1SgOï ~û¹ã|yßGŒ—f6|ìsÓG:çøâî“„±Ã÷O¼À;—v±XÏ?x[Ì11i/à¥ñó|ãà{üæ¾èXÜÔÆÉ'! ©588x•Z+M»ü—�qm¡L3ôiŸ×ʼwuµVú‘î¿2øÀÀ5ÀÐ|Þ¾°‡3S,5s„Ñ£‡Ÿß )fê|aç)^ÛyšÝ}“ìé›Äw×׆(""""""""""G@y¦¥½�熮2Zšå‡gre¾‡é•¦/k1Ö-Lam„eeÄÞýF¾š¤Ði�s]ÙlíèØ;¶oÇ¿p�Á5®Ï�tΣ”KÓ›O±£œæðH'Ï�tr¨/Go>E.õ€¿ªCGÚᵟ˕ˆSó†�ç-µÐÂÊ8SÕÞ›]ý+AMâ0 ÿ=ô.Ú®µÐj`k ØåYhV l±òà;.xNˆçDŒ–fycÏǼyè]^Ùqn#ÏHÖ)íŒvÍòí£¿$¶†+óefª,5²aòÞ{ÚÆm“õ[ vÌóµïóo^þ Ýù Y¿õÄ‚¤+ÊÞ½…%†ºæ™¯åh†µ OµB÷±ÚÓ6ƒãÄøNˆïÆŒtÍò•ý'øÚÁ÷92¼ycï'å…ìí»ÁD÷4Õfš¹j�ÓSC´"ï© ¼2ö7›j1Ü9Ç7¾Ç7½Ç®mÞü·–1–BºÉËãç(ç«\[(Å.×»c»Îá•f†éJÁcõÊù*GF.á»!]Ù*¾ûfû™­hOgk©ëDte«ìé›ä_x›ßyî8¾á)ü'"""""""""²i‘Ïß�8ï7éšc´<Ëç&Îðß¼ò=y�ý}xnLO~™ß:ð¥l•Ÿ]ØË/.ìáãÉâøé{÷dý€=½7øãWßâ�=3P\Äs£-m‘,ç*|÷Å·É¥Zôw,ru¡Ìù™~n.=]m€ùT“ݽ“Œ–g92|‘ýÒOŸÈØßûqŒ%å†üÁ±_0Ršã¯�¿Ê©©!&ŸÎ‘ÀÆXô_ã�^ù _Üu’‰îÍ ÿ%ŹO>™õ[Ltßä{_ú;~ðá1þúÝÏq}±´î&À0rÚAâÇÿ9’K594t•‘Ò_Úû1?:}ˆ|t”w.í~ì}o†ÞÂ2ŸŸ8ÍÿùqdøY¿…1óôýHyf(("""Ÿ )7äK{?¦zc999ÂbýVÈ"iŒ±DÒ.…tš(¶„qL·?¿­ЀIÚ]Ç�òо‹ï%á½\*í›O¹tä=ŠY�RÖ£¿˜¡”OQΧèÉûô3tRä}ÏYÿ§ãÆ\`¤àò…Á³ KêjÈ»s–°Öð»}¶Ùöˆß•‘¿+�͇b°Xl£‚­-%ã~›U›ÉþÚã~J¹ ‡‡/ñõƒï3ZšeOïMÆË3›vj²~¾1Ú5KvO‹áÒ»{'y÷Êóµ<ç¦û973°ÕK¤#Sãððe&z¦80p�7ö|ÌD÷)/Üê¥á»ýÅE¾¸û†:ç™®ùÇOóÓóû˜\ê$Œ¶îŸœžRL7ØÓwƒ×xyü<ý ŒtÍ=±±¿ŸÆËH×îÎSäSMNNqy®—k e~}yâ©©Ü_\àÀÀ5Êù /�Ÿã+ûN0Ô9O6õ౿Ö"ë°žxªëDìî½ÉΞ)r©&®ódŸ#DZäSMžºÂÍ¥N>ža¾–_wpWÏ_ØuŠBºþøk2Éšò©&�™ùT“Œß¢·°ÌÍå®-t3¹Å�Û”ÒSXâàà5žºÂËcçxqì<å\ÇÙ˜€ròÿY¬ïõ´z_›¼דóÙN‘ÏÏ�yaôÂê(Ãj+Í™©Á;FèY,!ùLš±r†”ãYbËÝÃ@“=Y ¾ëPH»ôwdȧ]r)�r.MWÖ§œóè-øtd<:2½…4…´GÆßØ¿†R»:}¾9³Ð²\®FL7!²·ú‡>Óí;k?õ�ã¤ñ/NBŸ·<à²6™¬Øf »4Õù$ü‡m?À&Ɇš׉™è™â�='ùW/ýŒÞüòSØ’»åR-ÆR³Œ•fÙÓ{ƒç‡.se¾‡ÿzöÕV†Z+E#ô7}4ðÊϧ•×P.Õ"㌕gøÖsÇ96z‘ñò4C�ódü`SÖð¨ööÝ`Oï ‚ØÃubjAŠ�®�2]é ÖJ[')ÝÜä^RCÒ4VÌÔ)ç* vÎó•ý'øÂÎÓ¼<~Ž\ª¹¥�‰wò݈±RòÚ;:r‘k e.ÌöÒŠ\¸ÍÀ§¤ BwS»µ¯=ÇDdü�¬ßâððe¾yè8cåYööÝ`oÿ�‡Þ§ãDdüÙT ß " ê91‡‡.±¿ÿÅLã‰! vdêLôLsdø]¡ÒÊ>Ä8ß•ÇqÿÀ5¾và}:3µ ][>ÝäÈÈ%Ò~À`ǧ¦ùõå�ÄÖ$ãË#wµ9ñIüœòÜ�BªAW®Îþþk|ë¹ã¼4~މî)Š™Æ†¾×cÉø-r©i? <\Ãb>Ý #SÇ5æ)zˆˆˆˆˆˆˆˆl$EDDä3e_ÿuJíFš|xŒ·/ì½ívk-žÓWôø­}ýììΓöÂ8&¾«:&i“qH{.]ù4ßÅw2¾‡ç8x®Áw ®®cðw“’xYÏa9Í—FfZ-þáZÈLÃ[ÔhWÆü®·ñn lÒøW[ÀVæ¡Uƒ(hß|kT¥ëÄÒ úŠKü«—~Æ7½KoaßQøo;è+.QÌ482r‰##—xcÏÇüèôAN\çôÍAÂØÝÔ)ß‹0XŠ™:_Ýw‚cc98p…}ý7(媤½€”mÞƒ1à;!_Þû{û&¹¶Xâ?¾û*?ð>®spð»{o’vƒ-}¾ÆJ3üæÞ�øèÆaìru¡û¡îçËΞ)>7q†Bº±)kÛQž¦'¿ÌvŸâk>àø• þŸãŸãÂL³Õ"Ñ&ŽO6Æâ»ØÑ=Å·�¼Ã¾þëŒwO3Ñ=Eg¶FÚ 7ü¹+媼¾ëg¦X¨çùøÆ0ÑCüs<7æÈð%°Æ.?øð(§nQifqÛÀ3ÓKxŽCÆwéïH3ZÊQÌxøbk¹íãmËêekcˆ ÖÄÄÆ`Ú‰;óD’wÉ1Æ .yϬFÛ*AÀBËÅvµ§îɬç Z[ɶ6øÇ÷ý=Äî°É}ƒÛlÿªóЪ'­@2î7yóé$(Ö߱ȿxám¾ºÿºó<'úl„.ŸQ¹T‹ñò ãå‚Èer©“\ªÅ¥Ù^Â(y7][,s~¦Ÿ0v‰ò¥f xNÄxyšñò �ü\ê-.ñ§¯ýcåY\ã»á¶|ý¸N2¾8—jñõïóÕ}'ˆ­áÃ룼siǯì¤ÖLDË­ Wç»™^.®ë…L“ñò4�™Új8éùá˼ºã,/�Ÿ#—j=ÕmÒ™­Ó™­³³gšWÆÏrrr„®l•éJõV>;?ÛÇL¥ƒåÆÃ»’ñÒ–CƒWè-,¯†×Ž�]ä޾M)W#Ÿn®†*‡ëÄtfk|uß Šé:‹�³v÷Nò�£¿À11ޱ¼si7�Äè‚(æ“› ´ÂˆÉ¥&¿{xˆFº(¦ˆc›„ïøÀyM7 Ö†8޳úçIëHÞò‰H‹?¼žŒŽ,¸Û0Pôpì­ÀŸ�ÛOÈ:ưÚ4°­¶ºµyhÖ ÛáÂÛ@DZìë¿Îç'NóêÄ^;Óý_ö IDAT¯ðß3Ès"ú‹Kü¯ý3ÍÐÇÚäÉ=qmŒŸ=À|µ@?Ü?¯\SÊUx­=b5aIyý…Ònˆ1ö™xý8Æbœ0ì¸Îp×_Ý‚Ø:4�ùz�·ÎàÄõ±uíw°cž¯x�þâ…LÒ¢˜O5)¤ëÛ>üw'ωØÕ3É¿ýâ?D.q»ñï�K»899ÌÙé�Ö]‘ü¾‹ùî ?g_ÿõÕ×X>Õ §°Œç$·o$càÐàUþç7þ–®l• ³ýw­©¯¸Èk§øòÞ�èÌÖžª×¾c,/�Ÿg´<Ëäbǯìä÷¬Þî;!#¥Y^?ÇÑ‘‹tç+äSÍ'¾N׉éÈÔ94x…ÿå+ÿeuܶµðÖÙüèÌAÂÈ}è*àœßdgÏ$/Ž�gWï�¼s©&å\ωY×ïØ b Œ•fù·¯ÿå\…__Þy×9uç—80p�7½Goa鉯QDDDDDDDDDäISPDDD>³òéd<á›ßÃ1k g¦Y¨ç°ÖRBÎÏ.Sk…ÔZ“K ^ÛÕÇpÑ'ë¢;›¹5"8ŽcbkqâÇu1í6@gM+àfòCwÆðJoò×=ÇÞž ¹¸Û$Âæ‘Ï´Œplôb»É¾â>¹9ÌR#‹c õVÈ…™%f* ¦kµØá ã�ŒwfÈ¥ fu€bb%ÜgÇÄ€c-Žã$·µ¿>©ÑÀãE—‚oph†1óM¬%¶É˜à§©iéÞìm_V¶=æw5 h¹½�èÁ'fWöGЬb›l}•[Á?cÀ$�[ޱ¤ýédLæ‹cçùãWþ+GG/Ñ_\ÜÀs–íb¨sž¡Îù­^ƶä:1ÅLƒc£96zq«—³íŒ•f·U€Ôs">7qf«—ñÈÇÒ‘©spð*Û¡³íbwïMv÷>{cp_æððå­^†ˆˆˆˆˆˆˆˆˆÈ–SPDDDØÕ;Éïyc,î‡1?¿°Ç1Xk¨6Ž_ša¶ÖâÒt/_ÝÛÇçv”ÈùIˆ.Ž-÷똉ãk-Æâ8ÆqÜ'8¸#eøâ OÖ±”ýˆ\�¸\…À‚ÿÔ‡ÿÖX ûÝú#ùþ![�nmg!±­:Tç±õ ´j4oÃÜþyNÄXi†ßØ}’ç†.óÜÐ\£˜©oÌ9Šˆˆˆˆˆˆˆˆˆˆˆˆˆ¬ƒ€""""@.ÕbGyšo|k!ˆ<ÎL °ÔÈ–ØÂB­IãÆ<ÍfÀ\¥ÁõÅ/Œ–îÌRÊx¸¢Ø·CiƘՑÀk¿®ü1qœ´­†À¶�lôŒ¡'cx¡×#ã¦É{M~4ñþœ¥ƒ±fuðÖ¶®mú[ùÞÞö³÷jú{PЀY¹[ Qa ÛªA«ž•$ø‡í·ö“Ï4éÈÔ)e«¼¼ã/Ž�gÿ5FJsô–(¦ëÛ EQDDDDDDDDDDDDDžE Šˆˆˆ´eü€#×ÀB»üà£c|29D¥™Åu ql©5>º>ÏÍå:çg*LW[¼8Zâ`‘ŽŒ‡ç˜Û‚+ɰµù0k-a­^ï8n»!�öåûy”`àÊ]úóßГ¶dÜ€Vr¡Õ"ÛÞÎ>‰à�#}Û¾oèo¥ñï~î¿`»òß8†(†AÒò׬bk‹ÐªCÔJF¯îËàºß É¥Zìê™d¼{šñÒ ß>ú/Œ^Àuî×÷("""""""""""""òä(("""r‡Ý½“|çè/qŒÅ1–_^Ü $Á8×,°ToñþÕY&—ë¿Ræ‹»ûxe´“ñržÞbš(Œˆb˧ÅÖVÄqLÇíc\׏£ p£Æg<‡�]i~wÂa gøÏ—#>œ·\®X\î†éaØvB/¾=ä·loó(Œ“+-�wŽ n�~×1äS.»:!ë é˜_Nür*äÔ’¥BhÁi/rýe€÷ã{Ûe»æêûŒôýÔ¶¿Oc°+ma¢4’¶¿V‚Á�$�iûñìÎ/óâØyFK³Œ–f84x�ç‡/1Ü9GÊ‹îs\‘­¡ ˆˆˆÈ=dü€c£éÊU-ÍrzzˆŸ�ÛËÏ/¤i>‘q‰cC[®ÏW™œ«òñä<'®wr~¦Âçwt³³§À`g†´ëâ:wMšnmÄmíX_kíjàÚÛã8¾m;×uWƒrŽã$c‡ïu"wWö‘O¹ìô† 1»Š†‘œåï¯Åœ_¶L6,A”„×vã}zÐÞþ½½ÇWs{@på¶•qÉ««üÔ#Ý:Ìê€ß[ ‚q„ šÐ¨@«ŠmÖ’1¿a â0Ù÷J; à‹ï¶èÊÖȧ›ìí»Á¿|é§ìî�b°cžá®9ó¨�D‘Í¥ ˆˆˆÈ§ê\ ¸ç$/Œ^ ;·ÌR#Ëù™~ækâØIÆ»X¬¼užËóU~uyŽç‡ºxy¼›£#%ú i:Ò.Ž“Ïbk‰rD°¥Ý ¸fLðÚÖ@Ç·µ®^ßÞÖ8X‹qÜ5Û8Ò®Ãþ²OOÖ°¿+䟯‡üÃõˆ³K1Í(‰ÿ¹œÕàÞ}V¼Òâw[óßm·ÇâÌï´¦’pí:ÂVÒô×Xiúk·ý…­[c~-`înì»!Ã]ó|y߇¾Ì¾þëè¿J>Ý"å† ÿ‰ˆˆˆˆˆˆˆˆˆˆˆˆÈSM@‘O‘öÒ…€R®Âoì9I>ÕäÚb™__ÞÉÛöPm¥i>ÍÐ%Ž-•VH-ˆXjÜXjpfºÂÛçØÓ[à@_�±ržÎ¬O>å’öÇ´[ÿÚc‚ÍÝÁ¸$Sw÷˜à;/›{Ü×s+8Ç·�^‘10˜…|·CÑsÎÁÛSpz1âârL5ˆ m2`×…ûŒ¾3üwϳ¸ã²YYä=¶_ölŒµq»é/† ™„þÂ6lAЄV#ïɈߕñÂfeíöÃtƒŽL�®l•WvœåèÈ% ^a¤4GO~™ŽLíÞKyÊ(("""ò\Dz¿ÿ:{{oPRüã©çñ�ˆë‹%®.”¹¶P&2±…ØÂB=`¡pfz™”7Ížž¯Œ•y~¤Äx)ÇHW–¾Ž4ù”‹ï:¸í|Z2°×ÞVžw¯v¿{¹3x¯ë¢ûÜ×1PJÃ+={а§høÙMøÙMËÅeXlÆ4˜ضWhìjÃàÃy˜íÌš5ÇÉeCAb£Ââš5l£ A-iù‹"nolÏqÈ¥dý€�=7ïža´k–?8ö ^½€ëÜ>vYDDDDDDDDDDDDDd;PPDDDdÇ’Mµøâ®OØÝ3É™éþö££ü§÷^¥ÚÊGÇ€³&Eç§—¸¹PãÇg§)åØßßÁ��"ãå<ƒY†;3tæ|²)â¤0Šc¢'4�6n—åY �røü€ÃŽ¢Ã‹=.oOEœ˜ 99r£f ­Å¼ÇmÉ3†»ZmÜô‡Ø u«í¯ÕHFûF­d»8â;Êィ=½7ÙÝ7 À×ö¿ÏÑÑ‹tåjôä—þ‘mK@‘urŒ¥œ¯Ð™­ÑS\Æ1–Œ2¹ÔÉ©›CœœYÝÖZ‹µ–FSoEÌÖfª ®ÎWùðÊý�Yú;sŒ—³ vfé)¤èͧ)å3Ò>…”Y ÚÙÕýݽ¦�È ¶ ã(ú�.:”Ò†¡‚Ëán—“sÍ…\¨Ä\­&£�mœd÷œä®ŸÒógV¿XHÂ{Q�4÷ÅØö×(LFú†É(_4om·:Ú7ºkŸkÄùtƒåiz K”óÒ^ÈÑ‘ ìëO€û®2Ü9OÊ 7àQÙ: Šˆˆˆ<"׉é/.ò…]§+Ïpm¡Ì�Ï$Ž“±³ÕVš…zŽF˜"Ž"Ëb½ÅB¥ÁÙÈ’Jû²)Ši:2 tdØÝ[d¬·ƒ¡®ƒy—¼ïà»Ï1¤<ßqpƒkL{<ðíco׆ðìÚËëhì‹,ø®C p°äòRȯ³.¿šŽøÕLÄÕJH%°4"hF1ñÚp¢]ÇkW’‹¬ÆmŒ�¤Í/h¶¿o&Í~+íQq˜|µ1'9�• Ÿ1,NûÜ3~“ÁÎ\'¦§°Ä«;β§w’Ñò,ùTƒ‰ž);Öñ슈ˆˆˆˆˆˆˆˆˆˆˆˆ<ýyL¥\•BºÁž¾IööÝàëßà×—'ø»��rêæKõQìb×1à¸àA„e¡Þd¹ÖàÂô¾ëБOQ̦)dRôæ\ºóºsFº²Lô)å)e\ )‡Œç€×$Í}�dåc0æV Ð1`>½¢ï.ÖBl-Q 9ßag—ÃpÞá…Þ˜oTb.-†|°-X>šm²ØiÅ1ŽMÚýlØã˜(ÄF­5Íí¯6Nšýâˆ;"‹ÉÉçžëKš\'fÿÀUþÝoþé�Ù:#¥Yò©&i/Ä“ò¢{îCDDDDDDDDDDDDDd;SPDDDä19Æ’öBÒ„ŒtÍÒ•«PÎUê\àò|7ï]ÙÁ;—vI3àr#‹µIÓÖYKYš±¥¾Üd®à¹W|‡|Ê#Ÿò)åRô3”r)²¾C!åRLûäÒ>i—|ÊÅu ùŒO!�Âu’ g’_Úsp2õ ¦Ä„18NR¾×l…Ì×fª-æ1Á²Å]Šñ–Pk·Œ�±+�>¯Žùµ+c~ã0IÚ˜ÕÊ@ßšcln:Ž%íäüéöØÞîÂ2ÝS¾„ïF t,ðÊøY²~‹”RH5p�³ŽÀ£ˆˆˆˆˆˆˆˆˆˆˆˆˆÈv£ ˆˆˆÈʦ²©€ÞÂ2G†/Sm¥øçÓÏ‘ó[ÜXîâüL?�À§z„±K­•"²ÖZ¢ØDIHn©ÝÚgc ŽcpH²rYߥ˜ñéÊfèÎû”2žëPʧ)å3x®ƒc ¾�i—œïà;f5g÷i" Ë­ˆÅfLÅI› …j³ÅR½Ér½El-•–e¾.ØzÛjÛøö¢A»öˆw}¥¶pe¼/düi/Àsâä1õ[ôu,1P\ 3S`GÏ4ÇF/ð[û? å†cq�‡93‘g‡€""""›Èqbò©&_Ù÷!¯ŒŸàÔÍ!Þ¾°‡Ëó=L-w0µÜÉG7FYnfÚA¿d„ïýæõÆí¯õ ¢DÌTœŸ1íûX\cp¹5þn{¿[ˆg�Ø&Dz6¹Ÿ,¶}½Åb’1ÁXbk±î=¬w­¯`¬4ˮޛtfª¸NLoq‰Çγ¿ÿ:½…%|7"ãdýcü‘Ï&EDDD6™ãX é…tωèÈÔ™«åYj䘭xçÒ.–ê9¬5±Ëé©AÎL Þµ¯Ûºô¬M€qÌ[½ÕÞ±áCuþÝÏ={·e“oœÕ"¿{mïÐ߮ޛŒ—§WÇõ®x~ø2ûû¯“õ[8Ž%Ÿj0Zž¥·°D>Õ|ôSyÆ(("""ò„õ—é-.[Cµ™æàÀU–Y,†zàóÃÓÏáš[¡8k ±5ÌÕ ,ÔòÉ•*Ó3+÷{p/ßýwa1Æ~Ê¡î &—S^@.Õ¢œ¯Üvk}a×)^Ýq†îüòê¸_€ý×/Oß/7(""""""""""""""m Šˆˆˆl!ÇXò©&/Œ^X êY ¯ò�£¿\Ý.¶†J3Ízï¾â¥î×Úd?­Ð%¶�þW>c,?ÀùÔàÝÆËS¹Ìï~‡ÎlýžÛ wÍÒ_\ÄsãÛr„)/TøODDDDDDDDDDDDDä!(("""²ÅÇ’M·]7Vš¥'_Y½l�Vè�5Œ•g¸Ï864BŸw¯LðÞÕñG^[w¾Â—÷}H)WÅw£‡¾_oa‘±ò /Œ^ ë÷ܦ�n�¹Ïm""""""""""""""ò` Šˆˆˆ<…r©¹Të®ëK¹xmç©Þ?²µVšïŸx�´÷è!»‘Ò,úÚ?3б°®ý¤¼�´’öµù‰ˆˆˆˆˆˆˆˆˆˆˆˆˆlEDDD¶‘¬�ö‡Ú6¶þøÕ·øÎ±_>xãû𜈮l ωÖä3Æb° ÿ‰ˆˆˆˆˆˆˆˆˆˆˆˆˆl"EDDD¶c,®±µ­ ”rUJ¹êæ.JDDDDDDDDDDDDDD¶„³Õ ‘õSPDDDDDDDDDDDDDDDDDDdRPDDDDDDDDDDDDDDDDDDdRPDDDDDDDDDDDDDDDDDDdRPDDDDDDDDDDDDDDDDDDdRPDDDDDDDDDDDDDDDDDDdRPDDDDDDDDDDDDDDDDDDdRPDDDDDDDDDDDDDDDDDDdRPDDDDDDDDDDDDDDDDDDdRPDDDDDDDDDDDDDDDDDDdRPDDDDDDDDDDDDDDDDDDdRPDDDDDDDDDDDDDDDDDDdRPDDDDDDDDDDDDDDDDDDdRPDDDDDDDDDDDDDDDDDDdRPDDDDDDDDDDDDDDDDDDdRPDDDDDDDDDDDDDDDDDDdRPDDDDDDDDDDDDDDDDDDdRPDDDDDDDDDDDDDDDDDDdò¶z"""²~ÿþßÃlõ*DDDDDDžœ¿üË­^�ˆˆˆˆˆˆˆˆÈÓG@‘mèĉä�ˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆ|vi°ˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆÈ6¤ ˆˆÈSÌu]r¹ÜV/CDDDDDä©T*•¶z """""""""[J@‘§Ü×¾öµ­^‚ˆˆˆˆˆÈSé+_ùÊV/ADDDDDDDDdKy[½ùtþçαcÇxë­·¨×ë[½‘-—Ïçyã�7øÓ?ýÓ­^ŠˆˆˆˆˆˆˆˆÈ–RPDDä)—ÉdøÞ÷¾Ç÷¾÷½­^Šˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆ¢œÛí÷‚MsˆtˆBöpOÐúF}óß4á–a�ÿ½^Çv¯ ëÎgT                               ÙÃ=èÈvíÚ¥‚‚‚cóæÍ­4›¶·víZ­Y³¦Ùû[,õèÑC½{÷nÅYD'€ùùùºí¶Û´cÇŽpO¥]íÝ»W×^{m‹�sÙe—éµ×^SRRR+Ì :ÑÂ`þüù.üך֯_¯çŸ>ÜÓ+€Ÿþy›ßj Áw‹­mçpâĉ6=>@¤#apË-·´éñS³sÚôøÁHÉìÕ¦Ç=zt› Ò€0øå/© &´É±{_8MƒÆµmÀ0—\=Gݶɱï»ï>]ýõmrl€hþžPÐÅÆÆjÙ²eºù曵fÍš€Ûô:Y×ÌyY6»£�g×:R2{éŽÿ|mf*KNiÙ¯¯Véé¼€ãwÝu—üñÎ úQ¤>hT ðèÎ\½ýôírÕ9ÛyfáLøoÑ¢Eí;)€Eˆà9„ÿBCÂŒ á?€æ  #‡ ÿ4@ˆ1Hø ù@éH!@Â-C"LGþh9€�‚:kÚyf-Gø u€LðÍ…·FU�ð@ë!¬©àñÝk£&Hø u€w>„ ÿ´>€¢9Hø m€(�!@Âm‡ D‘h þh[ ÊDC°©ðß}÷ÝGø …@Šä`0á¿Ç¼}'p"Q*C€„ÿÚ@ˆb‘$üо@”‹„ á?€öGÎá þ€pžG°¼èá?Aà?… IDAT€0!ç‘ö –�Ð뿾Šð@˜€óL{„ëÃeÇŽþh{à«E‹i×®]áž -’’’¢Y³féé§ŸVzzºé¶ ƒ &øÒÿ›(gu…*KO<á?D’õë×ë?øA¸§@«(--Õ‹/¾¨¸¸8=û쳦ÛÒ: ¦Ú—œ:DøQcãÆ�áž­nÓ¦MMnC:¨¦B€�þ@$ª¬¬ ÷hueeeMnC:°PB€„ÿ"‹=Ü„W}ð¶ÛnÓªU«nCøÑ&--MsæÌ ÷4Ê'Ÿ|¢�>ú(äýLC€„ÿ�ÒÒÒ´`Á‚pO€ üêW¿jV�ÀIçB€·Ür‹$ÉjµjÁ‚„ÿ"g9ýùÏÖý÷߯ôôteff†{J0@à§ÿþážš@ `¢@¢@¢@¢@¢�½=OVZZª|Pï¼óŽJJJÚóÔ  2DsçÎÕM7Ýî©uÚµàã�?®—^z‰ð�$}ùå—úþ÷¿¯]»v…{*D�v nÛ¶­=O¢Ä_|î)uÚ5XUUÕž§Q¢¼¼<ÜS ê´k´{{žÌjõÏö}½†M¾»=§Âè½?Ü­šÊŸu‹%L³ zµkÐívû­KÎ讃Ʒç4@Y¬þq�dž™Ýh @"@"@"@"@"@"@²‡{ i_Úªc»?Q]mU¸§açˆIP¯aS”Ùsh¸§„@"Üço?¥õoü&ÜÓ€ˆ²vÙ#štÇo4|Ú÷Â= lh @„Ûú ÷ "m[ù¿ážVˆpÕå…ážD¤Šâ¯Â= ¬ÁÜnW¸§‹ÿÏ€ŽŽ QÈî €Ð½þºtã�áž´Ÿ^�î¾;ܳ" ˆBT"ÌUW]¥ÊÊʳ˷Þz«fϞƈD€óÉ'Ÿ¨¼¼üìòÅ_ÆÙˆTçEÐ"iä±úâp�\îÐÇšãá‡ÖêÕ«Ï.[,­Zµ*Œ3t$çEðæ±‰š0(^Å•‰Z±¥RŸí«–Ûü8ZæÛ“”žd 8öê§å:Uâjçùš<4^Ã{Åø­ÿÝŠ’ Æ�¶`µJ™É6ÅÚ-úªÄ¥Ú:>”€h´sçNŸ í)ê€S‡Åk xIRZ‚Uߟ¤Œ$«ÞÝ\Ô8Z®w–CÙ©�€±vK;ÏÆ_vŠMýº8š=ÞÞì6)=ѦÄX‹*j<*¯v«ª–pØù¤g¦]?˜ž¢”x«$Éíö†e×ï«óÌM¢:˜‘dÕÌ‹}Ö¹=Ò§{ªƒo(3ÙªÛ'$žkÅ–Jí;é yŽW_” ¾�‡Ë¶æÕèã]~:ºÄX‹.§½c•‘d= k¨ÚéÑñÂ:-¨Óæƒ5Ê;]†™¢5$Ç[õã+Rs.kµJ·OHRE�[Û�Ô†qvˆ&Q¼yl’ì�²RÔ¨¨ÂÔxC1v‹i¸oMHÖÿ£0äÖÁ]Óì†Ç=^Hˆ«#ëžaÓÔa uA¬ß{ÚXœÃ¢¾�êÛÙ¡ÉCâu¬°Nol¨Ð¾¡‡R^S†Äù„ÿšuI"@-j€)ñV éã³Î#éƒm•A�‡*3ÙªéÃô¯fî�ð‰uø‡­*´Ômj¼-Œè£»'§4ü3Ò#î_‘ª¶UjÅ–JÑ XêÙÉðYJÒ‘3NÕFHÞ¶k†ñÇnvªMV‹B cŠÚà¸�qjõ)(sét©+¨ñÆ,–ÀÁ¡†¾9"^Ÿï¯XAÐXOò4}[Û\—4›ßº3 Þƒ¦Æ[Û#tõE ->ŽÅ"}sd‚²SmZººLžþªÝ11IÝÒ¤=öf±ò#¤âfQ¹ñ»U\é&ü€ 5³þXøj«[Pæz¼1Oé)»Í¢[Ç%9Ãz�€ §3 …í;é z¼5]Ö?®U ]tA¬n ù½D¸|´£Z5ÎÀ_ïn¢Â(‚µ3“Tm+s=Þ\CzÄhxï}q¸¶ÅÇBÛËJ±É æºñ@uPã­)%Þª›. .¨WíôèT‰K�Ólе7"; NÛ×êËcù½4¹OTñL™K�¿Y¤Y—&)'Ë®ø«ŽÖiÅÖ í>Þ6ÁSCyy¹vïÞ­øøxuïÞ]iii­~Ž3gÎèØ±cr¹\êÙ³§²³³[ý�9�NíÞ½[N§SÝ»wWvvvP�›«¤¤DÇ�Wyy¹úôé£ÌÌÌV=¾ËåÒ‰'tôèQ¥¥¥©sçÎÊÈÈhÕsè8¢6˜žäŸÚjXU«©ñ–¸qL’v+”³íºÄ¢•\Ø+ÆoÝÉb—Žº‚oMwMJVŒÉW\yµGïo­Ðþ“Nå�;z¢Uýº8ôÍ‘ ÊJñ¶Ö»qL¢v¯íÀ-dM.¼ ¿ñkŽ3en=÷Qi¸§à<°qãF=ùä“Z»v­Ž=ê3–••¥ &è¶ÛnÓ-·ÜÒìs=zTÏ>û¬žþyåççûŒ¥¦¦jâĉºóÎ;uë­·J’6lØ ùóçŸÝ¦k×®zå•WB:g~~¾.\¨wß}WûöíS]]ÝÙ±„„�3FW\q…æÍ›§˜ÿŸý2mÚ4¹\ç~ÿÛßþV£G�–$�}Zo¼ñ†Þxã ½ôÒKZºtiHUëêêô«_ýJ�=ö˜ª«wÒ+))Ñ;ï¼£wÞyGÿüç?õüóÏëàÁƒZ½zõÙmrrr‚>gQQ‘æÌ™£W^yÅ'ô×Pee¥V­Z¥U«ViñâÅZ¶l™.¼ðÂ&�½zõjŸ`~~¾jkkõè£�ê©§žRUUUÀýÊÊÊ´iÓ&Ýyç�gïcVVVÐ×”ŸŸ¯¹sçjÙ²e†ÛœÍÚ­R§d›â•TºUZån·j‚ñ1¥%Ze·ZtºÔ¥êfUël»ÀV‹”gURœE1v‹Š+Ý*©p‡ô>¶'«EJI°*-Áªòj· ËÛæY&ÅY”™lSµÓ£’J·ªjÛöŽÄؽŸ .·GEm> R½óÎ;ºùæ› Cy�¼õÖ[š0a‚rssƒni{ûí·›†Ö{íµ×tòäI]{íµAïÓÐÁƒ5cÆ ±ŠµŸ;Oq…[y§ë´é`µ¶®möñ±X¼-yLjS÷t»Ò}Û8×¹¥cu:ð•Sn¯l2ŒXYãVI¥[© Þãœ*ué¥5eA�·–ôD«ºg·î}kcEÐù4—[úxWµn“p|H�YdÚ ÷,Ë×Û�§îv¥'Y}"tn�·ò�¯œú|µòNþ͊ƺ¤ÙtËØ¤€c«¿¬:ûÞ$ÆZ4v@œÆˆó 4VÖxtªÔ¥76”ëЩÀç½bD‚v;WU13Ùøß>!YµuçîÊþ“N½·¥Òô:6ixïX�î§AÝ~]„Ý©¤Ò­Ó¥.½»¹Âpž� îîÐŒáþ•'%o%È·7ùW½ú¢õíì_A²Î%=ó¯’³Ëýº84n`œFôŽ•£Áíp{¤Âr·ö�¨Õëë˛ݾ<>Æ¢1ýã4*'V]Ó½aц*k=Ê;åÔ®ãN}²«*¨ÐáM—%©[ºÿ³+«rkq®÷ë±G†]W]” a=}ËvÿòÕB•V¹›w1@”zòÉ'õÿñò4úAsjjª.ºè"�9R'NœÐæÍ›µoß>ŸívîÜ©iÓ¦éóÏ?o²mî¯ýkÃð_ff¦&Ož¬Þ½{+//Ok×®ÕÉ“'%Iü±6lØòu­Y³F×^{­ŠŠŠ|ÖÇÄÄè /ÔèÑ£år¹´iÓ&}ñÅr:Ï÷)--ÕÔ©SµqãF 80èsþâ¿ði›Ü¥KM˜0A}úôQMM�Ž?®O?ýÔ¯íñ¶mÛôÏþS7Üpƒéñ=�fΜiþ4h�¦N�*I:pà€V­Z¥ÚZïÏÔÿüç?}:¶¨ ÎY|¦Eã­á‚l».í«Ï´mËÕ8‡E³.MÔè~q>¡žÆbíõïêPÿ®͸0AkvWéÍ�r…��I‰·ê¦Ë’42'ð?ôi‰V�LŒÑÈœå~Y¥76´Nä)Cã5uXüÙ0^ v«”“eWN–]ãÄé� Z¿Ïø·¶®ÕΣ…úÆ�x�î§g>(Qeƒ*‰M�·–‹ûÄŽ�.u«wð+ã …6«Ô9ͦ“Åæ ¯ÉCã5eh¼Ò�ï·Õ"uK·©[ºMÅi×q§þ±¾¼Éª—q‹úu ÜîxO¾SÛ×jÒ�x]}Q‚_€¬^B¬E9Yv͹*MË?¯PîNÿ2Ë]Òl†çi¬W¦ïG�YµL›Uš0(^ß™à²mÈjñ†;Ó­puš6¨ÑŸ—lãÜPJ‚ÕpÞ5•»¥ÛM¯53Ùª›Ç&kp÷ÀÛX-Þm2“ãtA¶Cþ¿–ÿÁç°èúщº¤¯ùgPBŒECzÄhH��§>.Ó±ó÷»G'»údûÿST_ÝoÒ�x]?:QÖ�ÂÕ^%*€ñÞ{ïég?û™Ï:«Õªx@�<òˆìvߟ½íÚµK·ß~»Oµº/¾øBóçÏ×¢E‹ ϳgÏ=üðÃ~ëG�¥çž{N#GŽ”¥A•ÚÚZ½ð zà�TPPReBÉÛö÷ª«®ò«z7mÚ4ýýïW§N�|ÖjΜ9úÛßþvv]yy¹nºé&mÙ²Åï>©ÿÙívýüç?׃>¨øxß………ºõÖ[µråJŸõ>ø ®»î:Y­Æ?wæ™gôñÇû­Ÿ?¾æÍ›§.]ºø¬?}ú´~ûÛßê©§ž’ÛM1Á1þBP®�¤ø“Ö£-”�bÓüYé?Ð!I·OH2küª:·ôÑŽ*=¶¼(`¥°¦Æ[ÈãàGB¯¢x¬ Î´‚[� ãodìVéžÉɺat¢iø/�ÁÝúÙµiA‡îIŒµèΉɺqL¢aø¯!«Eºat¢®¸b^kKK°êÁ2tã˜DÓð_ —ô�Õÿ»1Cý»6ÿþ4Gÿ®ýûÌtÃð_c]Òlúù¬t¥Ä÷ü3“­š?+]c„öÔ%ͦŸ™ô¼‹‹ñšo8ü'©ÝZT‘ÀåriΜ9>ëìv»>üðCýêW¿ zëwïÞ­;v·°°P<ð€Ïºøøx-[¶L�?þ¸_øO’²²²ôÄO(777à\ €A:Q8q•gÑ5nÇÚRC{Æhþ¬te&7ÿ1õδkÞÕiA…­¾;5E�SCHøHêÛÙáת7Xi VÝMºFô.pÈeýãôío$7{ÿöиú\CMUG Ä#iÑ»ÅúÝŠ’€T¬¿ß]`HlJœÃ¢»"µÙ!Àñƒâ5º_èçŸ2,>ä@^¨Ò¬š{uZ‹¾ÞâÍž‘ªÞ&ϼµýpFjÐ!ßzñ1ÍÞô7‹ý»:Zôd·zç7¼_ãI÷LN1݆ €èH^}õUíß¿ßgÝþçjòäɦûY­V=ýôÓŠ�=÷³Z�Ç£¥K—ÜþÈ‘#úàƒ|Ö]vÙezöÙg›lœ��­—_~9è |’”ŸŸ¯¿üå/>ëÆŒ£ 4¹ïOúS 2Äg�ÑuY¶l™Æ�gº�ÍfÓO<á·þàÁƒ†û,Y²Dååå>ë}ôQÝtÓMMÎiâĉú¯ÿú¯&·‰`Ð^[WnØJwü 8õìÔº�Ÿ.i6Ý7-E1­pج›î›žbZ)ï’¾±Ø­}+—}FŠºg„8 ä’¾±70®fÔúb-¦÷ýdqè@I:ZP§ý'�ÿU~QtEj«Üo›Uúþô”f…ÂB© ×P¬Ý¢i¶mÀÛ'&+#©å‰v›tãeI­0£à4÷žŽoZ03Ùª]žTxØŒÅ"}ûÉÍz_’›6†ÒÞˆv/¿ü²ÏrNNŽ~ùË_µoïÞ½uÿý÷û¬{ë­·nûÌ3Ïø­›;wn�³”†ª«¯¾:èí_{í5y<çŠØív½øâ‹~U±X,~óÍÍÍUiiiPç¾õÖ[5mÚ´ ¶�>}ºß:³àŸþô'Ÿåøøxýà?ê\’÷žS@0© Ì¥·W³HºcbëV¡»el’aÛKÉÛº6ït�VY¥MkTXnž„éßÅ¡1ý‡ä¬éºKÍ«ÖÖIûO:µjg•öžpª®…Á›1ýcM[ÕÖ¹¥Gkµjg•VY¥�GkMÃ>7ŒNjvª-5Õfµ¬ª}*˜�§.iæ7èt©KŸ¨ÑšÝÕ:ZPgÚ^5ÎaÑÍc[öÎ;]Ò®ãN}¸½J›Õ¨¤Òü¥j\¹pk^�Vl­<û§¬ÚxÂkvWûl»ùP�ÏxßÎ 2 ÀnØ_£§ß+ÑÏ_*о\ ß­(QÞiãðfN–]9YíW°^a¹[Ÿì®ÖšÝÕÚ“ï”ÙÛe·Ê´2ß c’d3y}‹+ÝÚt°F+·WiÝÞj6¹±v‹®»´õC‘ÐQùUå›={v“ùºõÖ[}–·lÙ"§Ó¿ÃÜŠ+|–;wo¾9„ÙJGðˆ^yåŸå)S¦¨ÿþAï?iÒ$eeeù¬[¿~}Pû†Ò®8--Mééé>ë:pÛƒúUküîw¿«ääàÎn³Ùd³E`@Äiÿ„J{k¥.í§ô-o»¥Ûô�ÁqúxWu‹Ï““e7m±zªÄ¥?¼_¢âF�©‘91º{RŠahçš‹µñ`µêu3‘kT;ZP§?¼_¢ªÚsq"‡Mš0(^×�n^ûã«FïW^íÑŸþU¢£�ÚãvM·é»SS”�âÿ\Œ]º´_œ>ÝÓòûßš’›ÖÖµOð›#Œ«ç9]Ò’ÜRm?Rë³>3Ùª]aÜwpw‡údÛuðThU =’–­+×gûªålð.:lÒ-ã’5Æ EpF’Uv«Î†O·®Õ¶Ãçæ<¢w¬’ãó³fw•ò ÚxKÞ¯#ëöV땵¾e™÷Ÿtjá»Åzð†ô€ï£$]Ø+Ö4$ØšN»´xU©Nû^cÏNv;ܸE°ÑÜ{dØ5¬§ñ=9ð•SÏ®,õùL�¤Ñýbuë¸ä€aÜ {Å(9ÞÒìЫÇã –»äñx—€ŽbÙ²er¹|8~üø�ŽÑ­[7Ÿe§Ó© 6øÇétjÇŽ>Û͘1CVkÛÔ—:vì˜6lØà³®©v¼�tïÞ]§OŸ>»¼nÝ:]~ùå-ž_c=zôPQQÑÙåüüü€ÛmÞ¼Ùo]°• TT A�[zum™áø5—$*1¶eí2%éâ>�P’7ü÷?oû…ÿ$ik^­žùW‰á¾Éñ�èí챕%o°èé÷Šý‚>N—´jg•þµ-pUD3}²íC”õ…ÿ$éD‘KÏ}TjX™nTŽñ} —ä¸ðûvv(Íà~{$ýáýb¿ðŸ$�)sëÞ*Ò™2ã2kS†…Ö–×푯*՚ݾá?ÉûN-[W¦Šã{’eXk©.iÆYè­y5×{<Ò‡Û« ÷ë•Ù>ùê£uZøn±_ø¯~lÅ– Ã}³RßÏ‹û-U¸õÇF�àzö×èƒÏ‹¥y_£¥UnýýÓr=ðr�~­PO¿W¢ß­(Ñïß7þ¬Î77nôY¶Ûí3fLHÇÈÌÌô«Ì·oß>Ÿå£G�ÊíöýqÏž=C:O(Ö­[ç·.Ô`£änÜ»wo³çd¦q[âÆ÷ª^^^žßº^½zµÅ”€ €¡ÚuÜ©íGjua/ÿêX±v‹n¼,I/¬6 ã¢>Æ�¼wT©Úi�Úw©=ùN 4hg:¬gŒ6<h²Zd¸­$­ÝS­Z“"fïl®Ô%}㔑|–Ôìú6ì¯ þ«w¢È¥/׬ØÖ§³CV‹L[×¶7³ª’L[´¶³@éž|§™Tð«¬õhåöJÝ6.pûÖÁÝcd³ߊõd±K[óüÆõj뤼ÓN í¸ú\vª-`Э¥ÞÞT¡¶ï9ã_òºÞéRã¹4Uý±µ¬ÚQ0ŒWoÿIãùwN üO@ãvË ýó³rÓà+¿¨Ô7G$È [Ø·‹#¤*©G êôû%¦ŸyÅ’%ÒÒ¥�Ç.”FŽl×é �ú,×ÕÕ…Ôf×HI‰oá�‚‚¿mzôèÑâói|]’Z¥r_ãëjo�îc[)tl¿Ö8¥í¿Á¹ÿùúúr êž.‡ÍŸKúÄjÝÞjí;Qº -¸2 ›CÉí:kœ}~ p5²†>ÚYeê» Û÷‘wK·ËèÒ]niÃþ¦Ã:u.“k´ø/Ž2i·Ú0œhäxa]À Ã&õÌ´ëp;µ] Jï•Em´ZÌÃ\Ÿì2®`Wï³}Õºö’D%Äø_KŒÝû™…6CU\aœ.Ël£ €GÎ4oþ5Æs�µ·¼hk(2¹ŸIV¿w0'˸Bgm�V‹lÈí‘Nשg'ÿ^t5þÚdùç„ÿ¾–—'åæ+.nÏ™ ¶�mM�ƒrgΜñÛ¦-ƒkíu]í­ñ}´ÙlÊÊÊ Ólœïhü5�§‰�Iƒá¢ ·ÞßjÜúö[ã“e9óq› IDAT=›ý -Ô+@h¦Þ¡Óuæa»¯í:Vk*ËH²5˜› [ÃJÒ™2—ie± 4Ú=-ÑjXÍí‘ö�0IRA™qÕµ.imk.§Y©4IÖ6þ ÌH²*Á¤-õÞ|ãêpõ\nóíZ;”ç4i‹l·¶o¨Îb‘R¬ê�e×°ž170NWŒHЕ£¼&Šo×ù4‡Y›i«Å?£Ú;Ëø·„öŸ¬ ªÂf�AÛèÄXKÀ ©WŸw@GPYiœQh‰ÚZߟÑWWû jÜ^·5µ×uµ·ŠŠ ŸeÚÿhKTüZ(%é£U; N™Éþá§Ìd«¦Oп¶U*Ôúnfa­’Šà[Ÿ–U¹•b´ËL±éT‰÷XI&mJK+ƒìëj¦Ñå$ÆŸÏj‘žº;³E§Kˆ‰¬LkußSÄØ-A…:›+!Öø~ÔÖI5&á°†J«Œß…¬6ªÊNƒ»;4¦œ.ì+Çùwy¦Ì>ƒ†ôˆÑïîmÙ×h|¬E•- LBB‚ÏrZZšFŒÑâã^pÁ>Ë)))~Û”••µøË¥¥¥aš €Ž€à×B©(y«¢½²¦\?¹25àæß‘ðuûÜÐ*–™ØŠC䕚“ã¬g€‰&Õ¸JZ#Øè¾%š„‹ZC|ÕÅÚCe­ù=Œ±[TYÓ†@“ûQB Ô,hÔ²:e§ØtÛø$õëb\ï|—hm ñ1VI­ðÙt �:uòYÎÎÎVnnn«Ÿ'PðèÑ£­~žz�¯K’^xá…¨¯˜—šê›%)((PeeeÀÀ#´Td•K‹2ûN:µé`MÀ1»Mºm\RÈÇ´ÛŒÃTe&!¬ÆªM*lÙ}üÖµe�@ÇFÀúç†r ë£ØÁ¶!=bTbu·*“ Uœ#øäLJ‚Yë×ssªqÏ/Ð5µTm�-gÏe.¹ÜÆ¡§Îi6>Sòq{gÚå0x>gJ]g«EšãÁ?_£j’ÒùñLb,úÑ©¦$K«Ü:tªN%•nUÔxïorœUŵ×4ÛEmè¯#€6vá…ú,»\.íÞ½»UÚ7”‘‘¡®]»êĉg×µep­ñuIÞà•W^Ùfçl�žËÑ£G5pàÀ0ÌÀùŽ` •UyôΦJÝ8&1àx¨-o+M[©‰ÁÓl†cå *ûU9�‡f!Âæ*7©*ètI‡O;[tü‚²Èj-êöHGÎÔé‚ìÀ_j½³Ú°?´ßʰHúéUir<⥫ËÎV¦¬¬1¾©‰Æïˆß¶A¾OÑêºÑ‰†á¿j§GËÖ•kÓÁ¹}yvM·�w@³çY\áÖ™²à[GbV�@`Ó§O÷[·dÉ-\¸°ÕÏ5|øpŸàÛo¿­?üá²Û[?b2`ÀeggëÔ©Sg×-]ºTÿþïÿ.k¤µ ÁðáÃýÖ½õÖ[Ÿ#´À¯Y,MõL†?ÙU¥±bÕ-½å·ót©q¸&-È@^¬ÃbÚÆ³aȰ¨Â$ØíiÝ7³Šˆ6«ôçÿ+=/*Ê5tè”Ó08°kèíf{dÚ Ã’ôUɹwèL™[�·M[cIqY-ò µ’jòî…Zå2ÒX-ÒÅ}ŒC|‹Þ-V~QËBoѤÂ$x²Ø¥gþUÒŽ³ IÔÈ‘#µuëÖ³ëþøÇ?jΜ9ÊÉÉ éXEEEJOO7¿âŠ+ôÁœ]ÎÏÏ׋/¾¨{ï½7¨ã»\.mß¾=èù|ç;ßÑc�=vvyÇŽZ¼x±¾ûÝï} I*,, ØR85}út­\¹ò캿üå/z衇”™™Ô1öï߯ªªª¶š"€óHôÆ¥#ˆÛ#½¼¦¼UŽuø´qÿÍþ]²Ûš®(8À$TV^íVeƒÀÖ‰Bã`S÷ »iKÔæ(©pV³Z¤ÁÝcZõ|‘`ÛáZñìT›ú‡ÌÉ2Þ¾ÆéQ~á¹wÈéòèDQàwÊ"iP÷Ûa“r Œ’ �-útv*�º:TøO’Ž?Ï~]¦ábmgþüù>ËN§SóæÍ ékÖ¬QÏž=õÒK/nsÇwÈfóý!êo~óÕÔ×Ýî‰'žÐž={‚žÓܹsýª þâ¿PEEEÐÇøê«¯4jÔ(}ç;ßQ]]dü û{ßûžÏrmm­}ôÑ ÷¿ãŽ;äru¬ŸWh€_óxš¨bÖÄð‘3uZ··ºÅó8]êR•A‹Ì8‡E—ô‰mò“‡ÆŽí8êF+klÈf•F÷3ooc—âcL^#�ÿâ®ãÆm~¯•`ZÝ®±¾�C¯ ×Þ�rš†È®»41èkŽsX4Õäù~q¤Ö¯¢ßá3ÆßÜLb|¬z—õ�Sœ#p´ªÖ£<“Ðj¤°šTøL3i­}äLËZRG£C§ê ?ƒì6éªQ�Û�â°I=;‘ZÃm·Ý¦Ñ£Gû¬[¾|¹î¹ç•—7]´è£�>ÒÕW_­ŠŠ Ýyç�š7ožÜnÿ>ÙÙÙš={¶Ïº}ûöiÚ´i*++3=ÇK/½¤_þò—A\Í9�;wö 7ž:uJ'NÔ¾}ûšÜÿرcš1c†Ž9¢Å‹kÒ¤I*((imᦛnÒ Aƒ|Öýþ÷¿×Ã?lº_AA�®¼òJmذ¡-§àÛWð|‹ôýé©JŽíz×í­6<_·t›î˜˜¬¥«ËÔT&óòá šyq‚þþi¹Öîiyø²-­Ý]¥›Ç&ëÙÉ®y3ÓôÌ%*¯6¾èäx‹î�œ¢NÉÆ�µ­yþÏw‹Éû4¨»C}²í:x*pˆ/!Æ¢)à Ϸé`p¿áÑ\&½ŒS¬:VxÌìímª vŸìÈ 6Çú}Õšb4�:,^Ç ë~–4ç°höå©êšnëpm”í#/OzóM)7×û§¸Ø›É“¥‘#½ÏšÜqï¹G:|8ðجYÒܹ¡ÏõÞ{½ómÉ1·n•–.õþ�›ë?ž–æ{­#G?¿%K¼ÇnÌhÎ’wûÕ«›>öÂ…¡Í¥^qñ¹ç»|¹ÿóÍÉñ^ëu×ÿl%iÊ”ÀëW­òþ�›+=òˆï=¾çïu¤¥y——/—ž~Úw›ë®“~8ôk­¿ÎE‹¼Ï¶¡‘#½ç¾ûîsç@ôÈ ôòB�žž®#Fø¬³X,z饗4tèPÕÖž+þ³téRåææê�ü£ÆŽë×÷Ì™3Z¸p¡{ì1ŸÀßgŸ}fX,é׿þµ^}õU�9sæìºµk×jüøñúë_ÿªáÇ+.îÜÏ¡¿üòK=þøãzá…šu½�<òˆ–/_®/¿üòìº-[¶høðázâ‰'tÍ5רW¯^²4(þR[[«¿ýíoš?¾OàoïÞ½Ñ:×f³é¯ý«&L˜à³þÑGÕñãÇõóŸÿ\}ûö•Õj•ÇãÑöíÛµxñbýõ¯ *Ð õ¶¢ªZ�ÞØP¡Û'zë£U†�­Î©6ýìš4ýáýWú&ñGæÄè®I)†ÇÍ/riï ÿŠföò²Rlš{ušž~¯Ø¯*Ø�“MÛ ÙÒ©C§êt�A[Ù‹.ˆU×4»^ø¸TÇ´(îšfÓMc“Îo—¤j§'¢Âh�}º·ZÇ«KZàR=2ìúÙ5éúhG¥¾*qéT‰K¥Un%ÆZ•oQ¿.1šyq‚bíÆqµÓ¥.í<êßnx÷q§N»žÛ"éß¾™¦%¹¥Ú~ÄwßôD«~reš2 ‡I+·W_t;;Sê2¬6wi¿Xí<¸ó±ã †ƒ{ÄhpwGÀª•ãÆéÆ1Æ_ëÖ(®¯úáö*M/»Á5Üõ�d ê£|Vî÷¹`µHCzÄèÖqIJMðà'W¦éÞ.RAYàöß„"/Oš7ÏÂjJ}8pÑ"o€jÁiÎó}&OööÙº5ôàÖ­Þ€�‘… Í÷_¾Ü{½fa<É$«¿Þ ¼á±… ½×Ó”¼¼À¡Â¦öijNõó Õ#�xŸ™Ù¾yyÞûºd‰7 ¸p¡7„׳ë\²$ð³_²ÄûW­òÎë‘Gü·Y¾Ü{ìU«‚._î=ŸÑuÖ¿o‹5ýž òL1úmÔ MžŸ0ßáÇ5sæLIRVV–ú÷ï/‡Ã!—Ë¥õë×ûµÅÍÉÉÑ»ï¾ë×ê·^rr²^yåÍœ9Ó§õïöíÛ5fÌY­VõéÓG©©©ÊËËkqÅ=»Ý®—_~YS¦LQQQÑÙõÕÕÕúÉO~¢Ÿüä'JHHÐ�!C”˜èíZ¶mÛ67úl±±±Z±b…zôèÑ¢ù´–ñãÇkÞ¼yZØè?ò=÷Üszî¹ç«¡C‡êðáÃïa\\œª«#» €ð#ØÊÖï«ÖÄÁq-j{ùU‰KëöV†³Smzøæ +¬SÞ)§c­ÊÉvµêýýÓÀ¥x÷ä{[ÔvKü{·t›~ý­N*©t«¤Ò­ÄX‹ÒmŠiÁÛ³bk…~tyªáx×t›æÏJ×™R—Ÿ®SI•[�’lêÙÉîWÏ"éÛßHVEµ[»ó#³e«Ë--É-ÕüYé²dø2’¬ºé²æ…G=’^ø¸Ì¯ýo½××—ëÇß |¿6é¾i):SæVÞi§*ªÝÊÉr¨G'»l&¯Ô'»ªUX9�®“%Ææ.º VÝÒí*¯öÎ75Áªÿú‡÷›Æ“Å.ÕÖ)àûlµH?¼­Ó§Oî?mÚ4½üòËJOO7=ÏôéÓõþûïkÖ¬Y*--õs»ÝÚ¿¿á~111zï½÷‚¸šsFŒ¡Í›7kÆŒ�]YY©�7îß§O½ú꫺ä’KB:o[{òÉ'uèÐ!-ð›í555Ú¼ysÀýžxâ ½ýöÛúøã�ÛzŠ¢\רŠ\ûÄ8ˆ¬|V®’Jã ŒÍ*õδkÒ�x]Ò7¶Éðßê/«tÈ Í«$ýó3óò±6«7 vA¶]Ù©- ÿIÞªtëöš§Ô-òV ¼¤o¬¦ ‹×ÈœÃö·V‹4qpà–¥‘"¿È¥76T´É±ÿ±¾\‡O?ß½'œZ¿Ïü~g&[uIŸXM¯ÞYæá¿3en-ÿ<²JUlÞb¶KšMýº8Ô¯‹CéIç®I«vW2´È[íïÞÉÉúîÔ]1"¡ÉðŸäm�kv#ÝÛ›*tÊ$T)IöŸCß§ÁÝ~á¿zé‰V ìv~¶L´�–„ÿÚºU5ʼºœY•¿@­rͼùfóÎÓ’ð_C‹µÎ}kkõÏ%Ôð_C-yG‚Ù/˜*‰yyMW§¬¯üª–Üœ¦OŸ®�;wêÚk¯ zŸÔÔT=ùä“Z¹r¥²³³ƒÚgòäÉúâ‹/t饗6¹mbb¢žzê)}ðÁJHHz^ åäähÛ¶mzà�d·Lp8º÷Þ{µ}ûö æÙÞ,‹^ýu=óÌ3M†.%)--MÏ=÷œ~ö³Ÿ©sçÎí0CÑŽ €màD‘KY¥ÉC›H«­“–ä–釗§˜¶} Æá3uzs£yðlï §¶ªÑ¨ ·6ãty«È…êÕµå²Û,†í‡CqèT�ç–6½a˜­þ²J.·G7�MRkÕ‡{ws¥>ÞÕtÉß××—«g'‡ºg4ãa5Píôhin©ê̳aínÇÑ•T&žm;Š[*5¤GL‹*w’gõkÕ-ªj=úÃ%úÑ婆­«CñþÖJ}~ rÛt"ÛÖ­Á¦&Mòþ½zµùvyyÞã½ñFàñ{î ÜæUò†Àòò¼mg›²d‰qаwoã–µ‹5þKMõV„+.–¶mkz#F„Þ¾¸½ÔWÎkN»àÆš{­Á´3ÖòåÆU"‹‹£#� €ÐÜrË-6lX«ó‚ .hr›^½zéÍ7ßÔÚµk•››«uëÖéðáÃ:qâ„JKK•™™©ÌÌLõïß_ßúÖ·tíµ×*&&&ä¹ôîÝ[Ÿ}ö™V­Z¥Å‹kË–-ÊËËSEEÅÙñ»ï¾[³gÏV—.]$éìX½ú¶½ÁHHHÐo~ó}ï{ßÓŠ+ôÉ'ŸèÀ�ÊÏÏ×™3g”’’¢¬¬,uëÖM³fÍÒ·¿ýí ‚u’ôÐCù´Nž8qbÐó’¤Ù³gëäÉ“g—Ô~6›M³gÏÖÝwß­×_]/¿ü²öíÛ§£G�Êétjذa2dˆ¦L™¢›o¾Y�:u’$Ýu×]2dÈÙãŒ7.¤ùè¶‘w7Wê¢>±J‰o~ °_9õÄ[ÅúÑå©AU dó¡ýíã2Õ‘AZººL1v‹†ö þüÃgê´a_µnzëZ�¤?.Ó¡SNÝ8&©YÕÒ<o¨îíMH3²fwµªk=ºóɆ퀃QYëÑ‹«Ë´óXmPÛ×ÖIO½S¤{&§èÂ^¡S'y+ÿ=óA±Î”E^¨­¶Îû>µ:6ãöHϯ*Õ\“®„ØàÊîãNe$[•�8 ×;Ë®âÃÁ=ŸHT\áÖÿ¼]¤;'¦hdNóÞ™Š�þñY¹6þ´€YÝY³¤ üÛ£æåy×Uì[¾Ü, ÔV5'Gºûnã}-2ŸS=³j� �…%éá‡½á¶Æ-fss½ë�€�¿@mš%ïµ^w]p!͆æÌñžcÑ"ãû8bĹë^° ðÌ™ ˜SS½Ç¯¿Ö¼<ïs0ºVD†[n¹%¬ç?~¼Æ�ߦç°X,š:uª¦N�Ôö{öìñY¶â`C}ûöÕ�ücýøÇ?y_#=ôP‹öÿáØ¢ýt×]wé®»î jû™3gjæÌ™-:'€óÀ6RSçÑ?>«Ð½““[tœS%.ýú�B]92Q“‡Æ’+ªpkù† mÉ >tãöHÏ~XªË‡'èÊQ M†Ó6¨Ñ²õåêѪikvWko¾S×�N )|x´ N¯®-×ÑãÖ·‘jãÁ+¬ÓU£CVUÕz´noµ>ÚQ¥ÒªÐ‚xN—ô¿–ê’¾±•«a½b‚ªDXç’Ví¬Òû[+äŒà åÞNý~E‰¾5!¹É¶Ø�”¹õ_ÿ(Ô¬K5¦œé}©sKom¬PîÎ*Ý0&QÙCWû™«mQ”¼ÁÊçW•jXÏ]?:QYaÇÆÜiË¡½¾¾\5-ì‰èðŒBh³f·[ÍÉ9WEÏ,ÈgTioî\ãýÞ|³é`^žqËØÔTã깹Ʊ… �C|“'{÷�<9p­¸øÜxc99�Ãrf-osr+T¹¹æ-s~8pX²¸Øø{Ÿ«YÈÒì<“'KF¿\½|ù¹{•–¸šŸY˜Ñ,:b„÷~4w.Xà}_šªl DŠÚÚZ]‘­æ�|ÕòòZjê«F> ¨í­ÀºÞ*8gÒ™üåä›”t¼P I:qÚƒ“h8žU¬©«³PÛK×^á§ë®¨¥Ëƒ}U¿¶·êù{ÉÏ×ë÷\¢Ì3%:šQ¤ÔSEÚ{´°Â!¼_è×jà­Ž×ÖV£…Ô÷QH€�ê×þóó5õT‘~;T¨„ùÊ8ãØÇ2+×ö×R¶Ÿ»�*ÏÆ×[Òñò¿fö?§q?d(²u]ÕÈW�ƒ|tY�oÙ1ÕiÙÅúý˜ñ>¹&}·îŒ6üž¯ö-j+4ÐG¡�> ¬ã­ÔSçtàÄ9§·ü/0jäh¦ý¬É$»ÿn39ø¯¶�©…Ú}¤P7\å§f�|uUˆ¯ÔóQ@oÕõ÷ÒÙó×hVn‰~;\ ­ tÖÆûr¾�¿çkß1ã°ff®çuš¸ž½0•­Ýùìu´·wD„ùHa£ÐUJŠ9fïúöŽð��µy•JL´ÿ:{‚ƒÍkž{ÎxÞVÐ�ìu;|öYÛ!¾à`ó{œ’bü1zï=ç€ç¿/ö:ž?çHwÃó•w$´QøO2�Í›g¾Þ¡CÎ]UcË–-ÊÉÉqw.‘››ëÔñ½’´páB«±F�i�½ß:ÆE‰ò´oúp €ÿ““oÒÒm¶C2kÕμJÛ+=§Dq‰gg'ÌSYŽekfüÍŒ?SîÚ3•øÞJ/Ò¡ôê×ѯ"ròMÚr°@[ºþˆÔôœ-ÚR¹ŸOYgK*ôù°÷è9í=êX8Ö–¢ie¾ö’ÓŠ”œVþç¾d~�¹ß£Å:šáÜû³5ùâ?7LR¥}}–˜¤‡ µãpåu5ܸ?¿ÒöÔ<öŽR-&­^m[#{+‹³@{ßÛ=ÚþǶ4Üi/0 ×yüñÇõ믿º»ŒjåÍ7ßÔ›o¾éî2.9GŽQÓ¦MÝ]7#ÀcÙ ­�ca•òºØXŸ>æ šQ×µùóÍÝçŒê›7ÏvwÁ�íß“½PYß¾Ò�?Ú}p°çuù³ÅÞÑ¿öº$žÏ^ÓÓ:Í\Ê‘n–FŒÏ]1p ñxV–Ô­›Ô®�9 ¸v­c]�a¯ �­[yÇÿÚeIL”®¾Ú|ï=ÛÝ « {ñœ îµmk}l_û½÷¬Ç²²ÌÝ�DF:l›4Éþü¼yæ£o£¢$//s²4h«ó '²Wk·næ{säa«³^e‡A« á?P À£……ýyœëéÓå¯ÏÊ2¯/í0lî¼÷ì³ö�Ï5lÛ�c=—’b}ÌlEºÿ•êÓGúòKiÐ ÇÖ'&š¥ÁÀ°0óŸ.óöÂŽžtL13yòdåä主Œ*—––¦·ÞzK‰qÜFPP�ÆŒ£¶¶Žð@¥hÚ´©»Kàðxæ�[l¬ó]ý²²Ì]õ&M2¿þÝw� ÆÅÆ%sàïü—QW@É|¬¯£ÀÒk–†rüu’9l6l˜¹+âèÑæà£'²Õ¹ïRT�:3 |íÛ·ww .£¯¿þZ¯½öš>\îz 8PcÇŽU“&M\P!€ €j¡´àš5æ`ÛÅï;mš9H¸zµã!À°0s7½éÓ­ç¦O7 ƒƒÍûÚ z æ|­}ú˜Ã…óæ™ï×Ù `V–ùº‰‰æŽ‚ž&(¨úÓ[QÎvž<É?ÿùO=øàƒúùçŸ5}út{ÇÉ:2³×�¯2k}úØž{ï=ç¯áé!:{ïç¥x®A€ÇÚ¶Íò˜Ûó޲ÀËÌt¾g»ù9zİd°ÙºWGï·ªC{¥lw쌈Û�ʬ,sðÑQ¥ëm1=�½Ž‡cÆØÿødeIÓ§WzIà@€Ç²Õ%nútÇBqYYÒöíÆsöÂr¶ÄÆÚ?f÷|‘‘öC_ŠŠ²½wy±Rö:É9{¤¯½÷'%¥rÂv£GÛžKL”Úµ+¿ûáôéÒÕW›×O›æ¹!@{Ÿ;¥ï§ÑǸ4ÜèHHPóøº»°%6Övç³nÝÌ2[ÇìΟož·œ³w­-ÁÁæšÞ{¯üµÎtÿ+5l˜9ìw¡”sÈmÒ$óý^(+Ë|¿ö::[Op°Ô¶­íå´iæ¦Ñ¾‰‰æGóæöƒš±±æ}Ö®5žOL4ßwŸ>æ€di(±tÿyó¬?¾Ó¦™¯k/\è.¶>¾’ù^Í÷f¾¯”ã{(E€ÇŠŠ2Þl…G�6?"",;Ü%&ÚM5o~q=Éâ*/x±ûf°:d=—•eÞ36Öº³`yÝm…$©Ç^G½”ûA;G»†…I§OÛ_c¯»á…&M2×îl×êfïã+™ßÏI“\Y¨î8€G›4É܉ΞÄDs®ôa/xd“]l8,,̸ ßù.6\l®­¼c†Ï¿×òÂmÛ^|¨,6¶ü÷ÞG€ÁÁæ{pôhåò™Cvžþ“Ì5𕉠�V‹Ž®ø^AAæ½J�’½Xö~AAö�â-OD„¹ÆŠïJµmkÞ«"a8G‰ö$&–¿&"ÂÜý.2òâ¯#ýyäðÅïì*}úH_~éüë.æ5àÒG€Ç+íŒ÷ã�Œ5Ê2«høO2ÁkëHÝ>}*Þ}."œ5ÊjsVóææÀXbbÅk »øp^óæŽ_¿4èùå—ÎßsP�ù½JL¬œ�oU‹�•V¯vì>ƒ‚ÌŸ÷±±•×%\:|Ý]8ªOóãüão×®5^Û¶­9 U9¡¼ó­YcÅ=ºò®3z´ù1mšùš‰‰ÒöíÆk##-ï·2•†óÖ¬1a›˜(:d½.(È\CEêˆ�5?æÍ3_oÞ<ãk•~|K?'a+Äxá熣aÇŠt,ŒŠ2¿�óæ™ßÓ ?®mÛþù^”ÖkÜQÑ�;®A@µe~\(+Ë5a¨AƒŒÇ££mw¬ˆÒ Øù\u¯ç3zßSRªæžKƒ}“&ý9VÑ{^³Æ=ël ¶þØÚ»Çóß ‰#€\B\ˆ›4Év÷¿aêþú¥<¥ë[U„ÿlñ”{®J5á@å!JI‘ÆŒ1žkÛÖ¸+!PU€²²¤¾}Íqe÷?@’|Ý]xªµkÍ&&Ú?ú·ys)6ÖUUfÀ@b¢ãGúNšT¥¥†8 Øêöw¡èh©OŸ*-0D $&–¿¦m[iÚ´*/0D ”ŒŽ–Ö¬‘‚ƒ]R`… 8!:ZZ½Zš7�ðÜË×Ý€'š7Ïüçš5æ?ƒƒ¥ˆ·•X!vDE¹»à.%%ÅŠŸó†vÿò­\®Ž}_ÖU­ÿêî²€2 Ö|õ/m‹ûH¹Y:~àWÍ{ç^ýºø=w—”!ØöÓdíúùËA“IæŽÕOŸ UIq‘{ ÎCÎshç*­Ÿ9Êæü¾�sôÃøhåçf¹°*À@øŸŒcû´ôã‡e2•Ø]÷GÒfÍs»²NtQe€5€ )/']ó'ö×¹ü\‡Ög§ÖÌ×{èè¾ø*® 0F@�W\tN &= 3G ç}}�_W˜—£ÿÛO»×}W…ÕÆ¨ñV~ù¬Ò’·Î}ýµ”Ÿ/ düZSI±VN}Vk¿}Y¦ûG•‰ €í×Å“´oÃlù_”|Pòñ‘¦N•>üPò¶ñ]ÕßV~®ùcT˜¦ «þD@�up[œ6ü0Îp®gOiüx˱'Ÿ”–-“ê×7Þ/u÷ZÍzãoʱq”0P™¨‘NÞ¡eŸ>*™LVs­[KsæH^^Ö¯ëÑCJH�®ºÊxßÌ?ökÆèî:aãHa ²Pãäf�ÐÂI÷«¨0Ïj.4TŠ‹³ÝåO’®¿^Ú¶MºõVãùü3šóVoíO˜_IÖ¨QŠÏhÁ¤ÊÍ:a5çï/-^l»»ßùBB¤uë¤ûî3ž/)*TÜ'C´ñÇ·*X1`Ì×ÝÛ¼½} ÇgÍ’vìpq1àFÛ·[�y�Ï뀟>Bé‡wÎ}ýµí®~FüüÌG{óMéµ×Œ×$,œ¨SGö¨çãŸÉ·V틨€§(((Ð| Õ«W+77×¥×öóóS§N�4lØ0»ôÚ° 3gΔ=¿êª«tøðá*»žÉdÒO?ý¤�;wªcÇŽêܹs•] @õBVRRl8>k–‹ d2™œ~ͦyã•”°ÀpnÄÛÝüÊóê«Ò�7JHùùÖó·-Õœ7ïÒ=ÏÏTÝÀЋ»·4h�¾ÿþ{·]ùòåZ²d‰6oÞì¶àwÝu—âââÊž4HS§NucE<G¨ö'Ì׿ çî»OzýõŠí-ÅÇK�ÏŸ<¼C3FwÓ©#{*v!n³xñbw— „„edd¸» ¸Ð¦M›,Â’ôå—_ê�?þpSE< @<˜··�|ý꺻 ðHµë9~äÕ‰ämZ>åIùˆóÑ¿•¡];iÛ6s7@#¹Y'4kl/¥ü¶¢r.À¥²³³Ý]‚$éÔ©Sî..”––f8î)Ÿ�Ü‹ .¬mw—)¬Í­ËÉ8ª…“PqQ�Õ\“&Ò’%’¿åÕuÅÒ¦MÒ]wÏžÕ¢÷þ¡­K?¬¼‹.Y�:uRƒ ,ÆÚ¶m«ððp7UÀ“øº»`ßC>Rãæmut_¼Š óÜ]¸�¯]5»¡›"îx´ÜµE…yZ0±¿òrÒ­æêÔ1‡ÿš4©üëÖ•-’†—Þ~ÛzÞd*ÑúÙc”žºK= o¾U TW½zõª² Vzzºf̘Q%{£ú Ñ®]»ôÆo(99Y�;wÖ³Ï>+w—Àð]%<œo­Új×3j×3î.ª“ɤ¸É�*ãØ>«9//iÆ óñ¿UÅËK?^jÓFŠ�•ŠŠ¬×ìÛ8GÙé‡ÕûÙo�:Ò€çèÕ«—î¼óÎ*Ù{Ïž=!IjÒ¤‰>þøcw—ÀpIŠŸó†’ã çÞ|Sºç×Ôñ�HW_-õî-efZÏÿ‘´Y3ÇÜ®èf+ø²®) ªÀþýûµbÅ ¨gÏž •dþ­åË—kß¾}êÑ£‡ZµjåðžÇ�מ={tàÀeeeéÚk¯U«V­Ô¢E‹ uÀûã�?”�� ””ëÆoT×®]U»ví‹Þó|;vìЦM›”››«¶mÛª]»v ª”½+SII‰Ö®]«íÛ·«nݺj×®�Ú´i#ÿ‹Ú/11Q»víRjjª.»ì2]sÍ5êØ±£|}‰(U…¯.—œ½fkëÒ ç|Pzùe×ÖÓ©“´u«tÇRR’õ|vúaÍ|½‡z?ó�š^×ɵÅ€Ž;¦¦M›Z��9R_|ñ…L&“$ÉÛÛ[ëׯ—ŸŸŸ~øamß¾½l}ÿþý5mÚ4»a»�>úHï¼óŽ’““ çôÀhÔ¨QjÒ¤‰Ãõ¯_¿^Ï<óŒ¶nÝj5W§NÝ}÷Ý2dˆzöìéðžç;yò¤†ª¹sçZŒ{yyéž{îÑ| «®ºÊæëgÏž­˜˜˜r¯Ó¬Y3:t¨Üu‹/VïÞ½-Æ’’’Ô²eK-[¶LO=õ”’.ø‹j�:u4dȽýöÛ"Ož<©·ß~[_ýµNœ8a5¨þýûk̘1N}¬8ÆÛÝ@e:¶“VN}ÖpîÖ[¥©S]\Ðÿ„…I[¶H‘‘Æó…y9úñ¿ý´{Ýw.­ *jܸqúüóÏËÂ’¹³Ü€Ô£G‹ðŸ$Íœ9SO<ñ„á^ÅÅÅzä‘GôÔSOÙ ÿIRNNŽ>ýôS]ýõúù矪ó­·ÞR×®] Ã’”——§9sæ¨W¯^ŠŽŽÖÙ³gÚ·ÔŽ;Ô¦M«ðŸdî‚8þ|uëÖMNí[ÙRSS5räHÝyç�Vá?Éü>|ðÁêÞ½»Î�;gw¯-[¶èÚk¯Õ„  Ã’”��­)S¦èÚk¯Õo¿ýV)÷àOt€jÎd2ioüL%'.Sþ÷~ãÈ�——B®R«Îtåõ�Ý] àwúä!-zÿA•[ÿ€âª«¤Å‹¥ZµÜPØÿJ+WJ�<"}ù¥õ¼©¤X+§>«SGö¨KÌyyó;Ü<ßäÉ“ Çíu¨ûꫯ4qâD[Œ8Pß~û­Ã×ÎÎÎÖÝwß­íÛ·«E‹6×½÷Þ{zå•WÞwÁ‚êß¿¿.\èÐú¬¬,EFF*33ÓîºèþûïײeË®¥²=þøãÚ·o_¹ë6lØ  &èemô“““Õ­[7åää8tÝ3gΨ[·nÚ¶m›š5kæTÍl#ÕÜöåŸé—¯¹»Œrí]?Cÿ÷ò"]qMw—¸DæŸÑ‚‰1*ÈͲš«__Š‹“BCÝPØ||Ì]Û´‘^xA*)±^“øÓd�:²Gw?ý•jù×u}‘à„† êþûïׯ�µiÓ&‹¹Æ�kÀ€Š��ׯ¿þZ6^\\¬„„ÝqÇecñññVá¿   ÅÆÆªC‡ò÷÷ׯ�5eÊeeýùw¿3gÎhèС6Cu»wïÖ¿þõ/«ñ¦M›ª{÷î Öúõë­:.Z´H ºõÖ[Ë}JCp���êÔ©“nºé&íß¿_«V­Rvv¶ÅÚŸ~úI¿þú«n¹å–r÷­ ¥á¿ë®»N�;wVýúõµeË­_¿Þjí_|a,))Ñ}÷Ýgþ R·nÝtíµ×êÈ‘#Z¿~½E4##CÑÑÑÚ²e‹¼ù¥7 R€jîÐŽ•î.Áa‡v¬$¨¦’-ýx°²N´šóö–æÌ‘Z·vCav &Ýx£Ô·¯tæŒõ|ê=¶—îy~–ê7¸Üõ€ƒÆ�§ÁƒëèÑ£ºòÊ+-æ&L˜ þóŸ†s‡¶x>þ|«½ÿóŸÿèñÇ/{Þ¯_?=ú裺á†TXXX6¾|ùr¥§§«Q£FV{üûßÿVQQ‘ÅØ«¯¾ª±cÇZ]ë°ÛäÉ“ JÒ“O>©‰'ÊÏϯlìøñãêØ±£U7Ä~øÁ0xß}÷Y¥\ÊËËË¡áëë«E‹©gÏžã êÚµ« ÊÆ8 ¤¤$…‡‡[¬�5k–¶lÙb1¡åË—[| JJJô�üC3fÌ(KLLÔœ9sSi÷ÔdDi šË?kÝåÈS埱üë—¯éðÎU†s&HüLÃcôè!%$˜�'6rêèÍÓ]'ípi]Y'*7ë„K¯  ú ‘dî¨h1`sîÌ¿ Õ©S'�5ÊâÑ»wo«ë…‡‡[…×L&“U P2S»xñb‹±öíÛë�7Þ°Z;|øp«PÞòåË­Ö¹üòËõá‡Z„ÿJÇ�ŽH¾0<çJ=ô�Õû'I·Þz«úõëg5nTë{ï½g5öÍ7ßX0½½½õÅ_¨~ýúVkT:¨Övýü�¶¯˜b87dˆôÜs..ÈI×_/mÛ&Ýy§9 x¡¼ì“š=î.õzü3µhwg•ÖR\tN«¦?¯½ëgH^^jÕi€º |G>¾µªôº.ö:Õ]8wa§»èèhEGG;t�°°0«±ÌLë_@^µj•Õu d³ÎîÝ»[U|äÈ™L¦r;ðÕªeûïMçs\*##Ãî~U©4°i¤cÇŽúþûï-Æ.¬5==]7n´kß¾½n¸áÃ=ëÖ­«ÈÈH‹ æºuëz_”� \¢"#Ý{ýµkÝ{}@ÍpdÏ:­þê_†s�;KM|¸¢¢¢,M›6uhÏË.»ÌjìØ±c•RoMÕ¤I«±‘#GÊd29õhÕª•ª.=T;á·ü] ›'ã ¥˜iôh×ÖT®¸BJH�zô0ž?—Ÿ«ùïÄ(ñ§O�Þ»¨0O &ö×ÙÓiöšLÊ?“áôþà¬øøx‹ç×_½úöí[¡=o½õV«±mÛ¶Ù\?eÊ«°!¿e©k×®VcsæÌá}Ü„ €jÇ¿n�î{e‰š^×Éæš1cÌAÀÂBVê×—–-“žÞxÞd*Ñ/3^ÓŠ©Ï¨¤¤Ø¡=M&“–~2Dé©»ZŸ—“îh¹pQ ´ÿ~‹1[�²’’íٳǡ}o¿ývÕ©SÇblÊ”)ÊÏÏ·Zk2™ôé§ŸjíÚµe�Ý»wËËËËÁ»¨BCCÕ¥K‹±Ý»wëµ×^³ûºíÛ·ëÎ;ïTauÿ‹:àa¨–üê¨Ï‹?¨U—ûm®™=[êÒE:uÊ……Uooé�w¤©S%ã5{Ö}¯yÿí§Â¼œr÷Û0w¬R¶ÿäðõórªùÀãùûûËßßßblß¾}Zºt©ÅXFF†î¸ã-_¾Üj£À`HHˆ}ôQ‹±””õíÛWÉÉÉeciiizì±Ç´eË‹µ½{÷vú^*âäÉ“Z³f�ÕãBVk~ùå—Õ9~üx«±qãÆéÞ{ïUzºå/‘�={V#FŒÐm·Ý¦¸¸8õïߟn�@%òuwp±¼½}Ôãá÷Úì&ýòýk2™J¬Ö$$HíÚI?ý$]o|jpµ1h�Ô¢…tÏ=Rv¶õüÑ}ñš1ævõù×6jf¸Ç¾�sµeÉû†sÿ»´p¡õøÙì“)Ò³gO-X°Àbìî»ïÖ_þòÕªUK’´yófååå¾¾  Àp|ôèÑš9s¦Ž?^6§-ZèꫯÖW\¡Í›7ëܹs¯«U«V¹]í*Ûš5kSîº'N¨[·ncuêÔÑÙ³g«ª4 �:uÒO<¡�?þØb|îܹZ¸p¡Ú·o/“ɤ]»v)'ÇòÕæÍ›§Q£Féõ×_wI­À¥Ž€ª½¶=Qô ³T«v=ÃùÔTéÖ[¥+\\XˆŒ”¶l‘ÂÂŒçO§%kƘÛõGÒf«¹?’´â‹§ _wË-掉ÁÁÖsyÙ  ê�;¶,èWÊd2)>>¾ìH^[á?I:räˆáxpp°¾ÿþ{«ƒ’”œœ¬õë×[…ÿ$é�wÞQ‹-œ¼‹šãÝwßÕí·ßn5^XX¨ 6hãÆ�Vá?I ÒwÜáŠ�� €KÂU­#3b¹ê7lj8æŒÔ³§ôî»..¬ „‡K[·J�:Ïäfé‡ñÑÚ·aNÙXvúa-|ï•[ÿPëÊ+¥¥K%©qcëýòr¨z7Ýt“–.]ªÀÀ@»ën¸á�9Òj|Ó¦M6_¥¥K—ªeË–åÖÑ AMŸ>]O?mü T0óóóÓòåËõî»ï*$$¤Üõ^^^zà�´gÏuíÚÕ5G¸d4lr�Œ^¥ïPZò6«ù’éùç¥;¤)S$7YI4�Ö®•bc¥o¿µž/).ÒOS†*=u—né=Ló&Ü«‚Ü,«uõê™�GnÔÈü¼qcé÷ß-×ä圪üP-ùûû+22Òb¬Qé_($uéÒEgΜqhîÊ+¯´ÚÿöÛo×o¿ý¦·ÞzKK—.ÕáÃ‡ËæÂÂÂ4tèP½øâ‹:}ú´~ùå•”””ͧ¥¥Éd2ÉËË˰önݺiß¾}Z´h‘–.]ª„„¥¤¤(##C¾¾¾êÞ½»bbbÔ¿Õ¯_ßîûеkW‹ãv/»ì2§Ö7oÞÜp]ãÆ�­Þ_GÕ®]Ûj,$$Äj?{!È&MšX­oÖ¬™Íõ^^^6l˜†ªùóçkùòåÚºukÙûêç秈ˆuêÔI�<òˆZ·níä](@—”:õêÞ—é§)C•”°ÀpÍ—_JJ Hå4–ðh¾¾Ò7ßHÒK/I&“õš­qjk܇†¯÷ö–~üQjÕêϱÐPëug9Àÿ„„„hÍš56ç-ZtQsçkÞ¼¹&OžlwMpp°V­ZåÐ~çóññQtt´¢££�~íù–,YR%ë###í¾¿ÎêØ±£SûõêÕK½zõrú:þþþЉ‰QLLŒÓ¯P1 à’ããë§;‡~¡}†Û\³v­Ô¾½”’⺺ªÊ¿þ%-Z$Õ­ëÜëÞ}WºãË1ã#€O^|q¨2\²n»çÝýôWò©e} ’$%%I7ß,ÅÇ»¸°*p×]Ò¦MR“&Ž­4Hzæëqà <@—´íîÔ}¯,Q�@ƒ³m%efJ‘‘ҷߺ¸°*pã�Rb¢Ô®�ýu‘‘Ò”)ÆsÆOU¼8T:_wU-´ùM0j•LŒÑ©£{¬æ‹Š¤”¶o—Æ�—¼¼ÜPd%iÜØÜÑpÀiþ|ëùðpiÁÉÇÇøõ¡9ÉüÜL™L&yUç7¨"~ø¡¾ûî»*ÙûìÙ³U²/àÒA@�P¿Áåºïµ8-ýd°ý¶ÂpÍÿ+íÚ%Íž-Õ­ëâ+QíÚÒ�?J£FIo¼ñçøå—KË—K��¶_kÔP’ΞNS½àÂ~Éù IDATË*·Pà�””äî5G¨1jù×ÕߟùVíz=isÍ’%R‡Ò±c.,¬ xyI¯¿.­['=ð€ôÔSÒ¶mRX˜ý×Ù fŸ¬ô€êÆSºb{J÷£ €ÅËÛ[]bF+ôªµbêÓ*).²Z³s§Ô®�gþ³:ëÜÙüp”­`^NzåTc—]v™Ž?îî2tÕUW¹»€‡  €麿ܫ~ÿž/ÿzÁ†óiiR§NÒüù..ÌÍ52w¼P^Î)×x˜çž{ÎÝ%èᇖ¿¿¿»Ëx:¨±š„ߦ£VjÞ„{u:-Ùj>?_êÛ×|”îk¯¹¡@7ðò2‡O^pâo^6€—^zI=zôÐÊ•+•››ëÒkûùù©S§NŠŠŠréuž� €-°Q3 µR‹ÞPG÷Å[Í›LÒˆÒo¿Iß|#ùù¹¡HkÜØ:x6ç¤ñb †¹ùæ›uóÍ7»» $q0ȯN€ú¼øƒ®ëx¯Í5³gK]ºH§jÀI¸�[�ÑÀóIÞÞ>úÛ£Ÿ¨Kÿ×ÍçàHH�Úµ“öîuqq.j=–—S’�Õ @8O»žCõ÷g¿“¯_]ÃùÔTéÖ[¥+\\˜ vÌ¡ €§!kÓC1¯Å©^ðe†ógÎH½zI|àâÂ\Ä(x–#€<@0re+ ½Z¡Ín2œ/.–žyFzøaó?_JŒ;žt}!°‹ ØP70T÷¾ºD-ÚÝisÍ—_J·ß.eg»°°*j=v.?WÅEç\_ l"vøÖª­»ŸþJ·E¿hsÍÚµRûöRJŠëêªJF%éìé®-vtˆ~I½†~.o_?Ãù¤$éæ›¥øxVl³Ó][ì"ºæÖhÝûò"Õ®ßÐp>3SŠŒ”¾ýÖÅ…U2[À¼€ž„ 8ᲫÛiÀèUjÐäÃù¢"éÁ¥—_vqa•(8Xòò²'àY|Ý]ÔT¹Y't`ËBå�ɨÐ>iÉÛ*©¢ª·sÍ4Õ ­À^ iª«ÛöT�€�J« g4lª˜?iɇ±JݽÖpÍþ#íÙ#͘!Õ®íâ+A“&Ò±c–cy àQ€ü‘´Yó&ܧ¢Â³î.Åå6Ïÿo…÷𯬘ז)ø²•Pǯv}ÝóüL­›9RÛ—f¸fþ|©S').Îö±ºžªqcëàY:xŽ7øùû×jdø¯²äfi÷/ß¹» äíí£¿Þÿ¦nø=yyû®Ù¶MŠˆ�vîtqqdX¤ €g!n�—}²J÷oذJ·wHppÕîïíc²ÀZwy@}_üA~u çÿøCêÐAZ²ÄÅ…U@h¨õX< @pƒ[ÿþ¯*ÛÛÛ[êٳʶwX¯^U···O-µêrÕ]€‹ÐôºNê?r…53œ?{VêÝ[úÏ\\ØE2ìHÀ£øº»¨‰nøë?”y|¿¶Å}dsMx¸Ô´©ã{zyI-ZHƒK7ß\ EVУ�š»Îš%¥;™ˆ�—Î�3žóòöQ¯¡SVá¨lÁ—µPÿQ+µè½è�¤ÍVó&“ôò辋ۤM“|=ø;´FÀ³ àQ<øÛKpië3Z’l† ¥o¿u.èibbÌgÄÇK=z½¼}tç_¨åÍwWN�T�Úõ‚Õïßóµâ‹§µoãÃ5ß~+%'K‹I ¸¸@O§¹¾ØÄÀàF]bF«]¯' ç–:u’ŽuqQnTþË˳ž#ü¨N¼}|õ·G?QçûF™Ûôˆ�7wíMJrqq µ+)>§Â¼3®/†€›4#ü¸Ý|çSúû³ßÉׯ®á|JŠÔ¾½´v­kër„Q@IÊË9éÚB`G€°wpi0>¾zlá?À¥,¬Mż§ùïSnÖ «ùìléöÛ¥)S¤AƒÜP  ¶€g³ÓÔøj×x�ÂÂBmß¾]¹¹¹.½®ŸŸŸÚµk§:uê¸ôº€'ùá‡äíí­>}ú¸»”*‘——§1cÆèå—_VPP�»ËA5A]QQQ—lpÉ’%?~¼¾ûî;-^¼X7Ýt“»KB5ÀÀàAjÚqÀ„ÿ5IÝÀPÝûêµhw§Í5C‡Jçι°(;êÕ“jÕ²ÏË9åúbñÔSO¹-ü'Iùùùzâ‰'TPPà¶W+..Öý÷߯éÓ§K’Ö®]«'¬;ì_ fÍš%IJMMUdd¤¶nÝêæŠPSSB€„ÿ5‘o­Úºë©éòö1HÖI*)1ݹËWX�åeÓ5×�Ü]‚ täÈw—¸Ì�!C4{öì²çݺu»d�Ç}ä‘G IÊÌÌT÷îݵsçN7WOG<Ð¥$ü¨ÉR~[®’’"ù#\\L9ŒŽ>›sÒõ…Âd2¹»IRII‰»K\⫯¾Ò´iÓÊžwìØQ .TíÚµÝWTêÑ£GY§CI:}ú´úöí«œœ7VOG<”#!ÀC‡\\T% ü¨ÉÒSw)î“!’Á ï¹GzñE7e‡Q�€WÈÊÊÒ³Ï>[ö<88X‹-RݺuÝXUÕëÛ·¯xà�²çIII5j”+‚§#¬¼`çÎÕ+HøP“åž>¡ùcTThýÂÖ­¥3$//7fGh¨õX^Î)×x°™3Í¿ãS�mÛÜ}w€ûŒ5JYYYeÏßzë-…„„¸±"×yç�wT¯^½²çï¿ÿ¾öìÙãÆŠàÉ€‡³}¡�;wjåʕڹs§Ž;¦«¯¾Z;vT¿~ýT·n]‡ö?pà€¾þúk‹±Ç{LMš4‘$iæÌ™Z·n�RRR¢–-[ªcÇŽŠŒŒ,÷:»wïV\\œöîÝ«ÔÔT5lØP-Z´PTT”þú׿Z„­•��­•+WjÆ JIIQnn®n¸á]{íµj×®�Ú·oïôž’¹ÞâÅ‹õÛo¿)99Y 6Txx¸n¿ývuîÜY>>>NíWRR¢õë×kçÎ�Ú¿¿~ÿýwèšk®Qxx¸"""Ô¦M§ëÜ¿¿6mÚ¤}ûö)))I¹¹¹jÙ²¥®¹æµjÕJ�;w–ŸŸŸS{šL&}õÕWeÏ}||tï½÷:]Û…rrr´bÅ ÅÇÇëàÁƒ*..VË–-Õ¡CõêÕK���Nïùûï¿[ÜÿÙ³g®ððpµjÕJ]ºt¹¨Ï+I Ptt´æÌ™#Éü¾|óÍ7zá….j?\º@5RÝB€„ÿ5ݾ�sµeÉû†sÇK÷Ýçâ‚P\,�:%¥¥I;w,0™T�›¥Úõ¸¼6î•��­1cÆXŒÕ¯__qqqzõÕWURRb1÷ÑGéé§ŸÖ„ 4xðàr÷OJJ²Ú?22RMš4ÑÒ¥Kõè£�êÈ‘#6k³eÍš5zþùçµmÛ6Ãù±cǪaÆzùå—5lØ0ùú–§1™Lš}º† ¢¢¢¢r÷<}ú´ÆŽ«U«ViåÊ•ª]»v¹¯ùé'Ë.ú]ºt)¿xŽ;¦¨¨(íß¿ßîºüü|½ûî»Z¸p¡–-[¦-ZØ\;mÚ4=òÈ#Ýff¦ÆŽ«uëÖiÙ²eN‡;wîlñ|ãÆ�ÊÈÈPÆ �Ú—6€P yz�ð ¦ËN?¬…ï= ’âsVs­[KsæH{‚®É$ef:è;y²ü@Ÿ³ò²Ó¥&×T%{á¿ó=þøãêÑ£‡š6mêÔþŸ~ú©V®\iw�­îz zè¡‡Ê ÿ�oÁ‚ú÷¿ÿ­wÞyÇæš˜˜‹.å9}ú´î¸ã%%%Ù níܹS}úôQaa¡ÃûΜ9S 6ÔÇl8ÿÑG†ÿêÔ©£V­Z);;[´êÜ8lØ0ÝtÓMêÞ½»Õk:d~óööV‹- ½{÷*ï‚oÇÇÇëé§ŸÖ”)Sʽ¯ »êuèСÜ×),,Ôßþö·rÃçKJJÒßþö7%&&ª~ýú†ó�>ú¨Ó÷¿fÍ=óÌ3šýT;VzöYéþûÍÿmmÓFjÒDòõ•BB¤V­¤¿þUº÷^ièPiÔ(éÃ¥Y³¤Õ«¥]»Ì!ÀÊÿI’—7ßZð§úõëë‘GÑôéÓ5mÚ4õë×O^üÖS~~¾FŒáôÞå…ÿ$ã`II‰bcc­Âm�7Ö3Ï<£~øAo½õ–a¸ìÝwßÕæÍ› ¯5gÎÃð_ß¾}õÑGiþüùzõÕWb1Ÿ™™©q6ZÁkÀ€Vá¿o¼Qo¿ý¶-Z¤iÓ¦éñÇ·êLøÉ'Ÿh×®]V{é?ÿù�Ř���&Ož¬Ó§OkË–-Ú¿¿ÒÒÒôØc�Y½~øðᆵŽ7NçÎYþ²Ûƒ>¨ãÇ�kÿþýÚºu«²³³5uêTÕ©SÇbÝ矮ÔÔTÃ}Ï—��`ñÜÑã“/4räH«÷&88XÇ×Ì™35wî\�=ZW^y¥Åšh„ †{Ž?Þêþzè!«ûÿüóÏ­Ž<þì³Ïtüøq§ï£U«VÏþùg§÷À¥�€P�yZ'@GÂamïpM1¸AII±½ÿ N§wÀ¸æiøpË.}iiRq±‹ ­€ ÆWë²°ˆr×�8¸Uç þ§UÎׯ¶.oaÿ¨Q ²Ô­[W[¶lѵ×^[66pà@ýðúï¾û,xßÿ½&Nœ¨àà`§¯sùå—k̘1ŠŠŠR³fÍ”––¦ääd%''+<<Üjýܹsµ{÷n‹±ˆˆ-[¶L�7.>|¸†®ñãÇ—�™L&�5JK—.µÚw̘1Vc“'O¶ÑÝsÏ=0`€:vì¨ÜÜܲñY³f˦L™bT‹ŠŠÒÒ¥K-ŽÌ8p î¼óNEGG[¬}ÿý÷õé§ŸZŒíرC'Nœ°{þùç­Â~!!!šêÔ½„‡‡kýúõeÏ�éhˆš� Tsž$ü€´jÚs:º/Þæ||¼ùQ�Ôª]_u©^ðe oÿwÝù |jùÛ\hç*-ûô1Èp¿:�êùا kÓÃÝ¥à×¹sg‹ð_©~ýúéÞ{ïÕ¬Y³ÊÆòóóµ|ùr§�/íܹ³–.]ª€€€²±fÍš©Y³fŠŒŒ4|ÍôéÓ­Æ>þøc‹ð_©qãÆiîܹJJJ*‹‹‹Ó©S§,:ùíÝ»W;wî´xí-·ÜbØAïÆoÔàÁƒõþûï—�¥¦¦*33S 4°X{á±°^^^úüóÏ-Â¥î¹çýå/ц ÊÆ-ZdµÎ™c�%s83--Íb¬nݺÚ÷ñÇW×®]-ÆÂÂÂì¾fïÞ½󃃭:é9bÊ”)V�ú^~ùe‹ð_©+®¸BÏ<óŒ^z饲±?þøC‰‰‰jßÞ2L}áýÛ{?žxâ EEEYŒ]}õÕŽÞB™Ë/¿Üâ¹£Çn£æ —w‡ ÿ ¥ü¶B{Ö}ïî2ÊUË¿žê4R�€Õ 4ÿY70TuBT»~ˆê62Ï6RÝÀÆòñ­åÔþ?÷ á?P˜—­µß¾Lnu×]wY%ióæÍN[¶l©¸¸8Õ¯_ßáטL&­Y³Æb,88XùË_ ×{{{«{÷î@IZµj•E­çwa+Õ·o_›u<ôÐCVa¿ c'OžÔöíÛ-Æn»í6µlÙÒæ¾Ý»w·;vL‡V³fÍÊÆÚ¶m«ÀÀ@egg—�½óÎ;:uꔬŽ;Zt­kݺµa8îB]»vµ %%%©S§Nzî¹çt÷Ýw[|œBCC­påIOO·x~~èÓqqqVc±±±6×Õ¹~ýz«`çÎ�uøðá²çûöíSçÎ�Ëî¿^½zes�76 œ:ëÂÏý ß#€ \"Ü\³Fºë.Â$'.sËu}ýê˜Ã|e¡>s˜¯îÏë4R½ Æv»÷U†¬ãªt8.ûdŠ»K@ ×¶m[«±£G�:µÇý÷ßïTøO’233-ŽÞ•Tn¸í —$¥¤¤X\¯¼òJÙXII‰¦N�ª©S§*00P·Ür‹Ú´i£Î�;«wïÞ†/ô /hîܹïï¦M›4`Àùøøèæ›oVëÖ­uóÍ7+&&ƪ{]yòóó-ž:õúRvÉóöö¶<Í3ø÷ñãÇ­Æ^zé%ýøã�unܸQýû÷—¯¯¯Úµk§n¸AíÚµ»¨û7ráçaaa…÷Ä¥… \B\\³FêÕK*(°ž#ü¨i\^)ûøøúŸ×�¯‘ê6²êÌw~àϯ¶s?«j^^Þ2™JÜ]þ§è\¾|ÿŸ½û�ªLÛ~Ÿié�ZH¤C@– ME"Š€€ìº¨(E÷[qU‚¬Ë.,ëŠJ "B("*$š JB 2t�>©3s¾? ™Ì™É¤Í¤Ü¿ëšk�÷=ç=Ï9‰,Nî<¯ºüPQM(Ûý233küºwïÞµkÚ´©Ísüýý-ÆÒÒÒÌÞ§§§[ãëë[ÁêÌÉusKMMµØŽ·ýôS|ú駘={6>øà«Ï±wïÞHJJÂ믿Ž/¿ü¹¹¹²ÇoŬÕjñïÿ»ví2ëR(ÇÍÍÍì½\g¾òYlµ\ÖžiÿþýqòäI¼ñÆøòË/­Ö(Š"âââ‡åË—cÇŽhÓ¦M…ë(»¾»»{…× ú�@"""""¢z¨¦C€ ÿYÒ¸yaúŽ"íÆ(Ч—„û\Ü+·]Q}òõ×ÀSO9» """¢úmÇ`ìXgWAd.++ËbÌÇǧƯ+×y0;;Ûæ9rÝÞ7nlö^®v¹{¬¹Z{÷î�Ñ£GWh���«sƒÆÞ½{qåÊlÚ´ HJJ‰',:îÀG}„¶mÛbáÂ…V×lÒ¤ >þøc¬Zµ 1118pàNŸ>�ß~ûM6˜””„‰'âðáÃ6šeÃme·r¶‡Z­†F£1Û*×ÓÓ¯¼òJ…Ö±µ}sóæÍ±víZDEE!&&û÷ïGrr2Ž=*<~ü8&Mš„C‡U8lZö0He1HDDDDDTO 𠵋~ݶÌb®*!@†ÿˆˆˆlkäoý‡.DDDDDD É™3g,ÆZµjUã×õóóƒ———YèïôéÓ6Ï9~ü¸ÅX@™O˾€«W¯V²Jëkº¸¸ 22²JëÊiÓ¦�Y.;;{÷îÅúõëcvìÒ¥K1gÎxyÙîRïáá�)S¦`Ê”)¤®yGŽÁæÍ›ññÇ›…׎=Š-[¶`âĉV×kÒ¤‰Ù{kÝËlö5ÏÉÉÁ /¼€fÍšUj=käîÿðáÃØ¼y3Ö®]kvÿ‡ƶmÛQ¡k”}Í›7¯záT¯Tn£l""""""ªúŽûÞëXVqðÒ%û×cø�ˆˆˆˆˆˆˆˆˆìµk×.‹±>}úÔøuA@XX˜ÙØÍ›7ñ믿Ê/Š"¶oßn1>r¤ùg�´8&>>ÞjkÖ¬� f¯+W®˜‚Ö­[›�³5###-: *•J 0+W®Ä—_~iqÍÇÛ¼§víÚYÜc�ÜÒå>|¸ÅØ¿þõ¯rϳÕÑQ«ÕZÜNNŽÙ1J¥ĪU«°~ýz‹5Ê»9ׯ_7{\á5¨~c@"""""¢z®×#/nŠ´˜«H'@†ÿˆˆˆˆˆˆˆˆˆ¨¬C‡áìÙ³èСƒÙø©S§ðÅ_˜�)•JŒ1Â!uMœ8;wî4[°`öíÛg±íûï¿�?þøÃllðàÁðõõ5ëСºwïŽ'N”ŒÅÄÄàØ±cèÕ«—Ù±z½Ÿ}ö™Ù˜««+Z´haQë3Ï}J‚lYYY²»… ÂËËËl¬qãÆX¶læÎ�[2–••…ððptèС$Ä(Š"Ž9b±uïŸþô'L˜0Áê½>|8¾ýöÛ’÷û÷ïÇÌ™3Ë=¯¬µk×âìÙ³8vìXɘÉdÂÆ�±qãF›ç®X± ,0{-Z´ÀÒ¥KñÊ+¯”Œeff",, ;vDóæÍH÷øðaš­Ù¯_?Œ7®B÷�˜˜h¶Í°F£a�,° QRÑN€ ÿQCQP䂳W»àèqñfDQpvIDu‚‡‡‡]Ç­[·;v¬ájÌ�1_~ù%”J¥ÝçŒ9ëׯ·yÌ7ß|ƒž={Ú½¦¿¿?bccѦM«ÇôêÕ GޱØJ¹<3gÎÄçŸn1.¶mÛ†Þ½{›��FüòË/ˆ��G||¼løo„ V�/¿ü²ìÜÙ³gKÖÜ·oŸEø¯uëÖøöÛo-¶_–3qâDÂý?ƒå:ìÙÃÃÃñññVÜÖtíÚ´@Ò6ÒóçÏ·?sæŒÙý— ÿµnÝß|ó�Ù}ÙãÀ�fïzè!¸¹¹Uh ªÿ$"""""j`ì 2üGDDDDDDD AA‘ ~ø-s>ü ¯|òÞXÿæýïsüí³µøý|?Œö‡ˆ¢à‹/¾€»»»ì¼��Ö­[‡§Ÿ~ÚÁ•Ižzê)üüóÏA¸²|}}±téR|ÿý÷ÛÜ–åããƒØØXÌ�;®®®V�S©T˜3g’““1`À€rkíÒ¥ ñÆoXl5+Wïwß}‡Ï>û žžžVë<|ø0V¬Xa±²µzß|óÍrƒjK—.…V«Ehhh¹kÀ°aÃpàÀ”Ý~ÆŠÆ�cذa%ï/\¸€3gÎØunYžžžøæ›oðÝwß¡eË–6�U(xþùç‘��€nݺY=nåʕػwo…îÿСChÛ¶m…j`ÑÙqÊ”)^ƒê?nLDDDDDÔ•·p` õsþ#""""""¢úÀhRà÷óý±zÛ›8{µ›EÇ¿kw°ÿÔ„uûó"ÞFËFלT)Qí7eÊ 4Ë–-CRR\]]Ѿ}{ôïß&L°,+88‹-2 «r}C‡ÅÑ£G‘œœŒüÉÉɸ|ù2üüüЮ]; 2áááå†îJóõõETT–,Y‚½{÷â—_~�N§Cjj*AÀÀ�1}útW¨VWWW,Y² ,@\\Ž9R²®R©D·nÝпŒ5J¶C]YJ¥ ,ÀìÙ³ñÝwßáûï¿ÇÍ›7!š7oŽ��„„„ cÇŽèÚµ«Ý_«°°0$$$`ï޽عs'!Š"<==‚àà`têÔ �:u‚¿¿…žüå/ÁÞ½{KÞðÁxï½÷*¼N± &`̘18|ø0âããqáÂ\¹rF£mÛ¶E¯^½0zôh»¿^Æ CBBöìÙƒ;vàĉ%÷ÿÀ 88;vDçÎ�K¶F®¨Ó§O›máܬY3Lœ8±RkQýÆ Qe+h ÃDDDDDDDT—MJÜÉj†¤K¡Ø|`~ûc Œ&µÕã F ö&ŽÁþSáác0ºÏf„´< ÷tTpG¢z/ |ðA•Öhß¾="##«§ Å�´êäåå…ˆˆDDDTëº~~~˜0a&L˜P-ë¹»»cÚ´i˜6mZµ¬Wløðá>|xµ® �?þ8Zµj…kפðõ§Ÿ~Š·ß~~~~•^S­VcðàÁ†ŒœF�zöUͤ¡wi«©–ð_ié9M½gö$ŽÁ€N±Ø)¡í�ÂÃ5§z/DDDD €DDDDDDDDDDDDDDT+åä{!îø#Øzèi\J A†ÞÕü+Vh‘‘cB%ne Ѝö (*påv6Ý™‰¸�¢[àï˜0à ô9•ÒP½#""¢�@""""""""""""""ªuîd5Ã[¢pälj*ôWZ~‘ˆ+w hâ£Ä™«†jÿ•&Š ¤føcoâcˆ=þ(ž�¿?ñFÍ]�ˆˆˆê-‰ˆˆˆˆˆˆˆˆˆˆˆˆˆ¨V)4¸àß›ÞÁ‘³á¼&�–mÜL3:캢¨À¦ýÏB¡0b~Äv$""¢ a�ˆˆ¨–3åãøžµ¸vö ¹Î.‡ˆˆˆˆˆÈéÔ.hÓ%݆΀R¥qv9DDDDT&…#þä#½¦(Š0˜DÒvÀ޶ýðSx¨çvôh÷»Ã¯MDDDu€DDDµÜÏŸ¼ˆóG·;» """""¢ZEwâgܹr #ž]ãìRˆˆˆˆ¨üðÛx˜D¥C¯ÙÌW‰nÒ/˜ éæ‚u?ç ¯Ðq×/,rÅÑ?2HDDD Q-—’ð£³K """""ª•.'i�]Qµùç?ƒÌŽ�­[þ³ãë©I©©À‡ÊÏõí ŒåØzáêUà“O*wîС@XXõÖCTÛ©pìÂÀ¿Ž(.j ¨… ÝÕØÙ-K?Bi©ÁüñÞøý�BœÔâzš©Æë1˜T8s¥ŒF”Êš¿Õ Õb&“FC�³Ë """""ª•òsÒ�]Qµùç?�™��úö­À[·€Å‹åçæÌ©¿@k÷\…‚@jx.Þê€ü"×r�KíÒ+ö­íî" Uc%z´ScpWt ÐÀÛ]){þã=ðø@ˆ¢ˆëw øý|öŸÊÇÙkÜH7ÂTí=iÙÍ�šÙþ�®W÷âDDDTO1HDDDDDDDDDDDDDDµFòån0ÊÿQvh{5ºjpþzŽœ-„I´~¬ ÷„wsÁÀήhÝD ÁÎÔ  hÕD�VMÔx¨—’¯â@R´'ò¡K5Ú<×ÏS�A�]ÐÄ[í©|¤Ü´}üÝì&¸žÖ†@"""²€DDDuP·nÀ„ ή‚ˆˆˆˆˆÈq>ÿHIqvDDDDäç®u…ÑdûGÙ¢¼2Þ´R#-Û„wfcǯy²�ü{)0s¤»»¢™¯J…�íe¸jôlï‚.m5ÑÓãõø9!E–ǺiÌé�±}Ýáî" ¸¥ ¯¯Ï´Ù­0=» n¤µp¤Ò5QàQÉ 5,íÚÓ§;» """"ªié9~H¹ùL¢²Üc=\¨Ušû)9ÕúâN˜ï§þ@+ÞzÚ[«­vüË+0á„®M¼”hßR]2žt©µAÍUP)ÍÏÕ¨tj£Á›“ÕèÒV�ÕÛr�_dÞ‚pÆH<îYøsQ ånU¬/ðÂÅPPäµÌÞðDDDDe0HDDDDDDDDDDDDD5fÇ`ìXù¹Å‹�·Þrl=T»ÝLo…´œ&å'À¾ÍÂKc¼Ð¾¥°p’¼Ü²±?)Y¹"úvÐ`~„7Úù«ÍÎÍ/4áòm#Î@{²'u…È+ÞžêcÔž(Àg?ëÑÄ[�¾\ÞÍÛ¨ÑÌWYT)<1ØÍüTXµ% ©™F4öVàÉ!˜î@D–^ÄI]!ÞÝše×3¸|»=ró=$"""»0HDDDDDDDDDDDDTƒúõ“¶+µfãF`òdÇÕCT›ÝHkƒ´ìò€pô�B¼¹!?芈þîhê£Âœ1^ØÙ)· ÝÇ -Ýÿ‘¸É$ââMvÿž‡ŸòpõŽÉl=7óö|î®Òû;Y&|4?ËCh�õrÃúÁÓMáÝ\áç¡À ]!:µQ£G�"€“)EØq$?'ä#'߯¥\¼ }�ü¼Òì:žˆˆˆ6‰ˆˆˆˆˆˆˆˆˆˆˆˆˆÈéŒ&®§µFV®¯]Ç‹" K5"z�OॱÞèâ‚=Ý`4‰P*Ì}û’ò±vw.\7 Èh¹ž{™ G™÷#ðÛù"œ½fÀÁÓ˜á�€f÷äÞ=H�n�j(î]wËA=6Äêqí®Fó¬¡M7ÒÚ #Ç­›\²ÿ$"""j°Î.€ˆˆˆˆˆˆˆˆˆˆˆˆˆˆ(;×)7ƒa4U¬�MApê’ÿÞ”‰ôl)ÙW6ü·ù@^]›�3WäÃà¦)Ó°L°¤Î<ñ§ ð×÷î⤮°d\„’ðŸîVÞù& —oW,ü…WœÒõ¨ØIDDDÔ`1HDDDDDDDDDDDDDDN—�ï‹Ë·ƒ+}~ºÞ„Ä‹…ã£}>àßH ùHŸÔMÐËÝüÇçÞîJ«Ûw+@3_%²rMeŠù%׿Ößå9u¹wåO&""¢…[‘ÓÝÍl‚ ×;TúüZªÑ-Hc1®R ˜>Â�ÛªñµV�Ãg PPdy¾w™ �‡e\P�F^FõvÃÄAf[—öX7ì:š�»ÙlÿwÏïçûÃ`T@¥¬ÜùDDDÔp0HDDDDDDDDDDDT‡Ý½ ¼ÿ>¬všrs^yPÉüThñbùóZ¶ž{®üký5pö¬üÜ«¯žžå¯aÍîÝÀ¶mÀ‘#@J `0Hu…„O<LœxxT~ýÒ²³�¶l’“�›7¥çÚ¨ТÐ¥ <úhõ]Ó™®^¶ovît:é~ss�fÍ€6m€>}€ €�Eö;wøê+ùqkââ“ù¦©S�àÊ7†£:âòívÈÌõ«ôùO‡»£±·Òêüƒ!´mªÄ¶ÃyX÷s ÷ç^næ�?ow…EÇÀvþJüåaO îê wëÿ‚´÷Wã‰Áîøï®«]m¹�ÙWn!¨Å…JœMDDD €DDDDDDDDDDDDu”^Œ $$ÈÏ+•RÈK.üXöêe_𫯤õåÌž]¹`j*0cðÖsçÎI¯ï¿—B�ëÖcÆTüÅ €¨(`ÉéY–uë–ô:~\ºWOOàùç�¿ý hÚ´ò×u–ë×�×^¾øBþë~åŠô:tHz.AAÒñ3gjuùëŸ=+}OU„V+½ÊÓ·/€ Á‰”�JÅ倎­UÜÕÍlì˸ôïè‚vþÒ7°BÐÜO…çFyaP¼òI:R3¤ª‹ШÌ}.j*`0Jï Öàíi>hágù‡êþ¤|¤g›0¶Ÿ;@ŒíëŽïêq;³â{‹¢¿$‡1HDDDåªÀïìQCT�›éìˆH†ÁŒk=üÑÑÀ#�8¬¤*;yèÞ]>üWÖÝ»Òý/XP¹k?.uö{í5ù🜜`ùr© a||å®ë,ëÖIuoØ`½[dY))À_ÿ*u¼y³fë#€3W»Uê<À_1OŸ¹Rˆ÷wd#òË =W“Éü¿s[ >�Ûcûº!¨¹�õuƒP&{èáªÀà..i©Â £=ñþó~fá?Q¡Ï7aó=ÞXŸ�u?ç 5ã~[AF„š‡+â÷óý*}.5 ‘UÇv€Ï_ë‹ÌÔg—BD¥ˆ"ðôÓ@l¬õcÞ~[Ú6µ.‰�—:îUĪUÀë¯WìœÍ›�þý� •l¬•™)u^´Öý°6E`Þ<àÙg¥m~+#1èÝ[Ú:˜¨¦dåz!åf‡J�ÛÂO‰ží]JÞ›L">þ!… é²Ë7g!öxÄ2é×–�Uxe‚7þ=Ó Æ{[¬ëí.àOúàÝ?ûaÆHOhÔæ?^Ï+ñ¥V��vå '_Ä­ #ö$ä—\ÇE ôÒÀõr] O_~y…®•:—ˆˆˆ‰ˆˆˆˆˆˆˆˆˆÈ‚(Š8°)7E"?ç.¶­|y9iÎ.‹ˆîyé%àÛo­ÏÏš¼ù¦ãêq¶¥KmwB,íøq)<™—WµkÓ§K[×fÿù°zuÕ×¹vMº_¢šrJ×ùE•ë–×=H WÍý�ݵ»F»PTòþü þ³9ßî×Ãh4zº)ÜR W�å�ÎA€Ÿ—­›¨ T˜‡ø ŠLX³=_Äꑞcº7$\,DvžXr~ë&J´ðSVê¾²ó½qé÷¾&"""ÛTåBDDDDDDDDDD ‰ÉhÀOk_À¿n-ËLMÁŽU“ñêwиyÚ8›ˆjÚ²eÀXŸ;øøcÇÕSSzôBC�æÍ¥t±±Ò¶ÇÖÌ� ìÛg{M½ˆˆ�Â{ÖxxHÝ»w—¶$>rÈÊ’?6- ˜3Ø´©üûq†Ã‡Ë‚úûƒÍšI÷š�`ý9ÇÆë×[vè,Zd9~îðõ×ò焇aa¶k¤í‹©~‹=QùýÊ;¶QCU*c—p¡ùE÷ƒ~‚ÜÍ2áÃïs`0“†x@¥¬\W>ÈÍ7á­ Ø—T£éþ¸(Wnqý®Þî@‹FRðüuƒÅÃå1Õ8u©':¶9UéZ‰ˆˆ¨þc�ˆˆˆˆˆˆˆˆˆˆJäâÇÿý)‰»-æn¥ÃÞus1ê…O�PÀ_ÿ»õùAƒ¤Î€Š:¼TÓ¦ÒÖº}ú˜�_½*mi/ÞþýÀùó@°�fYQQ€N'?§Ñ JÏ×­T²¢"àÃ�üC –µy³´•pûö6oË)æÎµæó÷—:>ñ„ùøíÛÒ½®]+Þ²eÖ€<DFZŽïØa=8t(ðÖ[òsÔp˜LŽœR©sàßH‰â}¢(âü�"�æÇ ��'â?äÀ$O…Y† FzL&@©y) ”Jí‰"�šaÀª˜,Ä'Àd²¼Æ�,#îd™ Š"A€�‡Í}P€yïÁòM*$_î Q =›ˆH^LL /^ŒŒŒ „‡‡cÕªUðõõuvYDT Qµ»šÑgnµÂÏÉÝ‘�ïêìrͽ2188][^A3/+¿¶ODDDDÔÀåfÝÆÎÕSq+å˜ì¼›wSôzäEWEDÅvïf̰>ßµ+°k—d««”JàÇ�ž=-çZ·öìzˆ‹“?ýz`Éù9½X¾Üúµ·lF�¶W«¥ ]ïÞR·º²�:Q”:2®\i}mgؽøõWù9©Ó_óæ–sM›J$ýý�·ß¶œ?}Zú:ŒQ½õRÃv#½n¤µ©Ô¹žn|ÜïõŠ "®Ü6Âd%/—“/býÞD p‡g™à¡Óùøf. ŠDx¸(0gŒ'BZ™ÿ¡z<¥ûOY†ÿŠeêE¤f!(~ž (•€Á(Ž5&“€ëiÈÊõ��GFÅN¦“’’‚—^z qqqÈÍÍuèµÕj5 €wß}½{÷v赩~Ðjµ?~|Éûèèhèt:ÄYûËÕ QµK×{ éz+|{¬îäx9»@pÓ›hꕉ6~w$""""’‘�v [—�GfjŠì¼g£Vÿ·-ðmÞÎÁ• mÍ:~<,:ZkÛV eyÕŽÿ ¯´I“äÃÅT*àý÷�.]äçwï¶Ü´ ÈÌ”Ÿ›üWÚÀ�Rç»Oeš nß^û€ru[¾\>üWÚ[oÑÑÀåË–s;v0HÕ+ùJwˆ¨\ëRW®šûA¾œ|ú|¢‹-wEШ€A¨æ“)7‹°rk6.ß6B¤c "–LóESŸûû ·j¬DpK’.d;úM@Z– F# ¸÷Óx/w”ŠŠi9Mp3½€µÈ´iÓpðàA§\»¨¨ñññ3f ®_¿nÖ¡’O§ÓáÒ¥Kfc tNAvÐjµv�QÝ U;Œ& *ÔÎ.PdTÁ(*!‚ˆ•uçêiìˆz9i×dç·îŒ1ó¾‚W£V®ŒˆàìYà‘G€ü|ùy__ 6¶ü@W]иqùÇtî tìœ9c9wü8`2Éo�¼Ûrgóû›}õ�+¬»p¸~hÙÒ¾ujš(?ÿ,?׺µx,�R Œüï–sÖ¶a&ª¬{Uú\µR€²Ô¿óE“hþk×B‰Gÿä†A�]Ц© .e>¶¼pÓ€+wŒ%ç pþº©Æ’  �Ú¨ñß9�qñ†ûNåã§cy¸rç~;@Ar E³„.jÁ¢{ÝÉjŽ«wÑ¡uRå j÷ûï¿;»ܼy7nÜ@ËÚò< Ttt4/^l6¶hÑ"DFF:§ ;È…_U+‰ˆˆˆÈ�DÈþZlM)ó©šàЋÕ ·.ö•“P�+ß«uÇAxtN4\Ü}\À�;À°a@†•ÆO®®Ò–¹íÛ;¶.gòæ,ª IDAT8P>XT$'[vEé9Éññ±Ýu°´v6š ž8Q{€‡[ïv8x°|@R޵û=q²ÝÕˆ*£È ÂÅ›�+}¾Ád¶S)øº+Ц©­›(1°“ úutA@s6¾i»ª¡`¶–›F@Û¦J³ã î.ºjÐ5Pƒ¿<â… 7Šp(¹GÎàú]¼\ÍF“Ô‘°22õ~¸œ£I¥ÂʾÃäPùÖù¦×ë�]ÕA3fÌ€V«Åúõë>>>ˆŠŠrrUDTU ‘ã @!•ÜÎÃn¢ˆ&È¥ ùÁ4Ñ})ÇÂ�=‡¢ùöx�¾ð”jWFDÅ.\°=ÿ�}ú8¦–Ú$(ÈúœNg¼qÃz Î`ÂÃí»nn®õ¹[·ì[ÃNŸ¶>wà€ý÷{õªü¸(JáÔ¦M+\‘…«w�šÙ¢Òçç…÷?ôrS`úO4ñQÀßO …¾›ú(1a Žœ)Ä�4#‚[ª0²§+<Ýl–©V èØFƒŽm4xf¸'.ß6@¥T¥NÓ盇+B¸t»r <àå–]¹EˆˆJ‰ŽŽFdd$t:ÂíýKÕj ‘ã(T€J¨Ôjh+^Q`2†ÀPǶ$""""ª;NÅo@üÿ“Ñ ;ßeÈ4„O[…’#Õf«Wþ3ТòÙ™:ÉÇFSR¹ÆLYYÖ�×ë«gKÛÚ´v€+W¤WU¥¦2HÕãòí dæúVê\ABZªÐÌï~—>�Z@�všJ¬%àå±Þ8ßÛ€›éF´óW!°™ B~£X¥Ю…Úb<4Hƒ&^ ÜH¯\?Ý­`äx2X‹… �‚ÔÈÚ¹wSprë+5²65\���²ÛQÝÄOnˆˆˆˆ¨†•ÚöWãÁ³?©`e÷½°F ˜Œ s!fßôE€‰Ûb•ul÷8¸)Òê|߈×Ðg,ÈHTܹ<ñ„`³w[×úÀÕÕúœ\л$f×¢\Ž­N…Õ¥6Ý/ÕmWï!Kïg×±j%ÐÈK_Ú6S¡Ï îêŠÆÞöÿ(Š@n� w2�hÕD•ò~ÀÏÃU�îAjt’B|eùù&¤fÑÜW W�`w8°W°k_n íÉ|œÔâÊ#2õ&ÜJ7Á`ÇÇ—º[ 'Ï Í}oØ}ŸäXžM@ãv5T»z×ȺÕeÛ¶mÐjµHLLDFF|}¥@oxx8¦OŸ^©�Ybb"Ö¯_�ÄÄD(Y744Ó§OGhhh¹kDGGãÒ¥K%ï{ôè�ˆˆ€N§ÃêÕ«KÖ¤@ÜôéÓmvÄ+»f¼ÌoÄÇÇcñâŲ燅…•Ûq/##£äÞu:�Ù\hh(Æ�gw×>­V+[cY˜1cF¥Ö[´h‘YÝ111%_/___DDD`úôévÕ[,##Û¶m+Y«ìzãÆ�+ù>+�N§+Ùî¸XéïËây­Vköýйsç2$Iu€DDDDä0‚J ÁÍ ðnAPÞÛ¦@I7@¹@ =s÷æ`,‚�§‚)? "·û%""""2#Š"~» »?�?@0ô™è6ͱ…Q•8¼ý6éìJÇh´>§‘iü¥TZŽÕg ) Ju[^¡®Ü D¡ÁÅæqðÂcžx|€Ü]ËÿE =Ljœ<Y¹F\O3á�ëE¸xÃÝ-®Þ1¢È<ÒÛK¦ùBYj›`k¡¾Â"ž^v—o› VM•h®Bûj´o©B«ÆJx¹)àã¡€—›y8P¡àßX…Éម\jÍôþ»3 1‡ó`´ÌÎó�îV;´÷?Wî½9Jbb"æÏŸ­V+;¯Õj‰ˆˆ¬[·Î®À–N§Ãüùócuͨ¨(„‡‡cÕªU6ƒ€ÑÑÑfaµ°°0DDD`þüùˆŠŠ²zÎŒ3°jÕ*ÙzË®i­FkÏdÑ¢E6Ã{‹/F¤�¿Ðßhh(Ö­[WnR«ÕZ #–fw°ìz‹-BLL fΜ‰ŒŒ ‹sbbbeW½€ô ¢¢¢d×*^Ï××ëÖ­+ tÚ¢Óé,žiXXm>o­V‹U«V•»>QmÁ 9�p/»'ÜûçR!¿Ò]…Rs&æ!@áþ¼(JaBáÞ9ÅëQ cQ~þô%üñëVÙy¥Ê#f½‡úŽwpeDT–,FŒ rv%Ža«Ã�\¾ÀÖVµ�ݺU½¦  ª¯Q]lÝoHвeÕ¯á]»RQ‘©÷ÃåÔöåØ\…ÇzÀÝE ÿ‰¢ˆ;Y&¤Ü4 =Ç?OBÛk QÝÿLðÛýz|4·2L(2”úòAn¦a0Šf@k @†^„ #pá¦n{¼¢¨”@Û¦JÌá‰Ñ}ÜJê¼›mB’®Ùù&´l¤DPs|=~ž uCü©ÜÉ²Ý ðØ…þº»Ü:‰!11C‡µÒ*-&&Z­)))6C€YS«ÕbèСˆ‹‹³+TVlæÌ™ˆŽŽ¶yLtt4|||¬†kŠ=µ+~V½ÿšYnÈ011ãÇ�GBB‚Õï�ŒŒ ÌŸ?ß®g�‘‘�ñãÇcÕªU˜7o^…kÎÈÈ(÷yûøøTx]"gb�ˆˆˆˆœF4™S`4HJ  TI¿+Š …ҜɨÔÒKP@Eˆ&PT �§P*ŠöëüDDDDDv**Ðcç꩸zæ€ì¼ÚÅ�½üZwj É!¢:ÈÕøæà�7€“'-çM&i+à“'�&M*¶n^žå¸ÁPùZáòeësr?¯µxkѰҨ§ÎjÑÂúܸqÀò厫…È–L½/.§”{ÜÍ4#~=WˆÞÁ\½cÀþ¤9[€›é&ää™àé&àí©¾è,u G�kÔC-ÃÅwu1 €Ñ$Â`¡Q™wñóp0¬‡ ¶¶Üg\£ ÈÔ‹l®*9Ï`ö$äáÓŸôÈ/ÑÈK�¶M•è×уº¸ÀÝE�£ç ��[þ>À‰,÷"GÐétvõжâââlÎWtÍ¡C‡"!!Á®mZãããíÚV¯^�yóæ9lû×ÈÈHÙ0Z@@¡Óé̶î?3[¡:G°§Ã }ßDEEYí¸goø¯ì9���vu,ÍZ·ÂÒœ¬$ª(6'""""'Ñäë!æ¤I¯¢¼{�ü"P˜QŸ1ûĽôÓŒâŽEùsÒ!æÜr³Jm'LDDDDD¥åfÝÆÖe¬†ÿܼ›büß¶0üGT‹ùøû÷cÇ›6Éoq 7oO=U±µ­uqÓë+¶Ž£9b}®S'Ë1Aºw—?þôiàâÅê©«¶èÙÓúÜ–-Ž«£˜­-˜å¨ÔpTÐ绕{\Vžˆ×£Ó1ê­TÌZ�†µ»s�p¡7ÒŒÈÎq#Í„Ï~Ê1;§O îbåL*ÑßÝ,ä—[`Â'?æ`Ld*ö$˜ýAÀÄAPÚø ûÐ.èÜV]ò>'ß„~ËÃÝ,r D\¹mÄ¡äB¬Ùž�©ËïbÂ’Ûø"N�;B×Ùl»Iµƒ\xªG�غu+DQDzz:V­ZeÑAM«ÕZÝÚwÞ¼yÐétfc>>>X·nÒÓÓ‘žžŽ­[·" À<0\ÜÉ­"-Z„„„ˆ¢ˆ””¬[·N¶Û›\M«ÕBÅ’×¢E‹d×/}Lé—µðÛúõë-ƶnÝ �N­V �N‡¸¸8‹:u:�Õg áááX´h‘ÙkúôéV�¯¬qãÆ•|ýEQÄÖ­[Ñ£G‹ãäî�ž«Üó^´hRRR Š"dkŸ?~…ëµ'hê¨ð'Qua�ˆˆˆˆ¬Ôö¼F�› 1ýÄ´k@~`2‚BÚ 8/ bÆ ˆw/ú &#A) ó€Œë@Ú5ˆ9wJ¹õ/Q±Œ[±ù_£q+å˜ì¼O³ L\¸ÍÛõrpeDd¯Æ�¥°[ïÞÒûŽ�¥K­¿woź»Y ^»�ö¯ãH·n¿þ*?xyÉÏ�e}M[ÏÔš¬¬ŠŸã(­[[ßÖøâE`«ünð6Uå~mm\&ïA Œ»K>šø¤ÛulA�[ "¿P„Qæw�9SˆSºÂ’÷ …€Yy¡©�ü�ÄŸâ?OótêéKEø&^�»Ù"–oÎÂí ó?Û4QaPg‹µDhÕX‰çFyAQj;áÄ …Hºl(é@Xü¿£t/¹…" vþYÐâŠ}Õ â@ZiÐjµ%]Ø|}}1oÞ<‹ãȆÕ222°mÛ6‹q­V‹3fÀ××¾¾¾ˆˆˆ@bb¢l°°lxКuëÖ!22²¤»[`` f̘!»Ý¯\ý5A§ÓYÔfÑÕ.<<Üj(ÑšððpDFFš½f̘Qõ¢K7nbbbÌê�ˆˆ€V«• ,Ê…ïäº­Šƒx¡¡¡ˆŽŽ¶]êtº w,f\,~ÅÅÅUjka"gb�ˆˆˆˆœH”‚{&£ÔÝO¥±’iñÞœñÞäçLìþGDDDDTÖ�«§±yécÈLM‘�oܺ3&¾þ=|›·speDTÁÁ@‡æcóçX?çõ×­äÊzàùñü|©ë -©©À¾}ö]Ç^»vEE¶�y÷]ëáÄðpëçMœh}î“O¤îŠöúãéëkÿ9Ž6a‚õ¹çž®^µ­�¥Š·nU®??ësqq@a¡õyªßšùÝ@ï�_ TTϾãŸïÍANÞýÏ CZ©1e¨<]³�=]D p7;·È âó½9ÈÌ•¼›c§?eÃ`¼¢»«€��]à¢6;M}øÛãÞhâ}?P˜•k§?åX|¬Y®š<<Ö绪/DTEr¾ÈÈHÙ-hCCC-ºÀÉõbbb,BaÓ§O—Ý‚µ8\X–½0ká7¹ñ²[îÖ”ÀÀ@‹šµPŸÜ3±7üXS¬å|}}.ó³ÄÄD³÷r¡Ò=zXýZÉ]¯2aÍE‹™WK çÀTç0HDDDDÎ'Þ Z|&Þ›+ 4;O”9�ˆˆˆˆ¨a»š|[þ=yY·eç[w„Ç_Ûw瑩Œˆªƒ _m½«šÁ<þ8��]þZ}ûZŸûûß�Ü\ù¹+W€1cª¿ ÞÅ‹ÀôéÖ·…ýé'`åJëçOžl}®woÛ]§O¶o·]_A� “¶\;HH°}Ž³ÌŸoý{äÎ`èP)ÈhËÝ»ÀÛoS§—.#FØ÷}UVûö€J%?wë–Z¥†ÉÓ5�õÙ„Àæç«e½£B{2¦{Ÿº¨Œéã†Ñr…ªT³¿¾4hÕØü›rObŽœ3O£Æ/@âÅûcJ…€®�´mzÿ\owÏ ÷@ß÷;šDbspæJÕƒ�‚`Âà.?£§ø*¯ETUrA+[A©yóæ™m?+¶* {œ­¹êèÖ'×­®6HLLD||<âããJ¬.ö„èäB¥¶ºúúú",,Ìl¬¢_«°°0«Û1ÕUVþªMDDDDä÷¶Jm \v^°1/”ž'"""""8wd+ö|úŒ†Ùù�>ã1rÖ{Pª-·¯#¢º£m[àý÷�gž‘Ÿ¿zU ´mÙb{�‡ÞzK~î×_�=€×^“\ÙÙÀ¹s@|<ðã�5×µí믥õ§NBC�€é?ý·n>üÐúFÍšÙîH[ýþðƒü\~>0nœ´ÆO�:ÝÿÈ¡ øøcàûï¥.¦×#GJÛ4·ooýº§O/¼`}>5ÕúܺuÖ; *Öç||¤`Ýk¯ÉÏŸ?té"=ç#€–-ïÏ]»¼÷žô=Pú÷.O�}TÚjZ£±^sY®®@¿~À�òó+VG�J]‹·.E)txù²tݬ,`÷nû¯IuGç¶Ç1gÌRÌÿ8òŸÚ/+WÄwsÑ5@�ÀæR›>^ç�ü" æ—<¸¨�‘½Ü )õ“ò ½k¶eYlÇ›–mÂÖ_rѹ�î®Ro�v-Tè¤Æ…¨UÀÔ¡˜8ÈêRë=[€­‡rå~¥¹‚D<Ð* ³^ ?Ï»U^�¨ªä¶oµò²g»Y¹ ­5kª3[hh(âã�´-Þ9::Úa[;›Ü÷Ôüùó1þ|»×¨è×M®3!Q]Ç Q=q*~â>Åj—ì.C¦aèôøK4Dõ´iÀwßÛ¶ÉÏælÏúô‘B`IIòóçÏþsÕk­¨´4`ÍšŠ�³hQù¿#Ø£‡6{åëÇhµÒË^wïJaKká6@ ¯U6S ÓI/9åÝï+¯H]­…‹Š¤€áºuö×sà€´ sE»ö=óŒíg´oŸí-¥•JësT· ‚ˆ!]ƼˆÅøh×ß‘_èV¥õN¤áó=zÌŸà /7A€«FÀ›“}ж™ I— Ñ¡•ºäïC£ˆo÷çân¶åߟD¿Ÿ+ÄobPW(j•€ðn®8©+¤Áî×Ï …´–(ŠH¹eÀÚÝ9HÏ©züÏ×3 ³G½‹�–ÉU^‹¨. ¬ÐñÎîU‡Õ«W#22R6WŸÕ–N‹Du·&"""""""""ª~ݾqëX ÿõ�x Ãf¬dø�¨žY·hjc7ïùó­‡ûŠ-[V¹k{xHë×#FÏ?oß± HÛÚV/¯Ê?Ú¦RIÛ�Q}köèa;TjÍôéRçÊÊ2¥­§©þš:t-Æõû.êü*¯µóh>û)™úû-ýAÀ”püßDø7’¥¢(âüõ"ìİÑJwÑÛY&ì<š}Þý¿cõl¯Á¿gúbü�’ðÜJ7â“Ý98¡+ªò=x¸æà¹GV`H·Ÿ«¼Q}WvûÞº&&&óæÍ³ÿ ,,ÌìUß4´À#QMa@"""""""""¢:Ìd4@»áÿ�´oƒì¼B©BØÔeè6ÍÁ•‘#øù6�<"?_XŒ$&îîòÇ<ú(ðâ‹ÀØ]¥ظQúßU«*^·5o¿m}Kbkúõ“º V$ßüæ›@ïÞÀäÉ@ffÅ®WÚƒß|c{û_góð�¶T^´xç«9q»üå/ÀêÕ€[%´i4ÀÎ�À ARGÄÊHIÚ´©Ü¹Tû ‚ˆg†ˆ,½/~<6&±òm�&૸\èóEüu”{Kk©UšúÜ_·ÈJ.À¥[›ë:��3WÝñ§\n. 43ïµs;Àe›³p0¹Àj˜Ð^Je¦û~Qµ…ˆê¨ÄÄÄ mõ[SÛ;BFFfΜi6æããƒèèhDDDX_ß~¡+44ÛÊ´³ž>}z…»@5t ÕQÆ¢ìúðYèŽÿ$;¯T¹`Ô‹Ÿ!¨ÇC®Œˆéá‡�Ù³��>’Ÿÿã`Ö,à믭¯ñÞ{@Fðå—å_ÏÇGÚ^xèPàäÉÊÕlÍÂ…R¨ñ•W¤ðbyfÏ–ˆ®®¿Ö¨QÀ¹sR0î“Oƒíü�™Ö­¥ZgÏu`¿-…X²xüq`ÎààÁŠ�ß·¯´uòÀ�U«£[7à×_¥:ÊëL)'5µj×§Ú¯…ßuÌù.Þ ÆÙ«ÝT>èb01¿äán– ¯>î�~*‹ °Z Lì�NmÔ8~±g¯áfºùE"Ü\hÝD‰N­Õè¬A§6«×:w­o|ž�‹7 ¨úÆ¿"F†îă¢¡VVà&" ´ØnW«Õ"<<\öøÄÄDd–IÚ—íbn±¦N§³êÓjµc¾¾¾åT^{%&&ZtÁ›7ožlø¯>’ûÚùúú"22ÒñÅÕa ÕA¹™Øõþ \=s@vÞÅÝ�¾�Ö�9¸2"ªŒ!Cäo�;ÛwþªUÒö¨99òó7nHÁ«>}äçøâ `êT`ùr >^Úrµ´F�€)S€—_‚ƒ¥±¶mk»Ñi¬de<=åÏiÜXÚ²vÎ)ÔøÖ[ÀæÍ–Á<©«ásσË_Ã^Íšÿý/ðê«À¦MÀ?‡YÞ»‡Щ“t½ñã¥.viÀãímý9UEEÇ¡¡À�€V+m üÃÀ™3–Ç5o.}ï=ü°Ö+þzW‡€„)�úá‡Ò÷¥\WB…BÚnØ×èÚ39²úê Ú+¸åYÆ��„„„:½ 4Qu`�ˆˆˆˆœH”^¢(ý£Ü¼(Þ?ÎbZ¼Qpëâ1ìX3yY·eç›õÂcs¿€»wSWFDDDT½TJž²Wob×o�¨ZØnR˜ÔRòv¦Q1™ˆ;QµJ@ûJôë肞í]àßH /7*¥€"ƒˆL½ —oñûùB9[€«wŒP+�)Ã<0u¨'<] êâ‚¿æW©:AñÒØþ?{w'Eu¯ ü9UÕûḭ̀o²Ë"‹Š\p7b.HÜCÄÄ,ê«ñzßï}“+¹~r¯‰šà5šxãIˆbÔ(¸¢"‹ˆÊ" 0¬3ÌÚ{wÕyÿ8ÕÛtÏÊôô0<ßÏgd¦NÕ9¿ªžA˜yø\tò_  «ã ˆ héÒ¥X¾|yFÇ¾ÆÆF,]º´Ý뮾úê6·¶]ºt)V­Z•ÑP¶\¡¿„Q£Fu¸n¾]}õÕY!»êêê6ëjª[¸p!n¾ùf455%�566âæ›o>âÚª««;lllÌ:OÊÞû¹ËŒ3ðøã�gu8lllIJeËÚ "&î±­-£‰Ž QaɬwÚ9'×X[áA""""¢þ¥æ³·ñ÷û¾�X$�s|ôôóqá÷ ‡+Ïû6õ’2_Ÿókì©�MÕ'¢»!À)# \:× Ë’xë“0VoŠ""1‰�;ãØ¸3 €Öy—¶ü=µ*ˆs§»1r �‹g{±n{ûê»Ü3ô.:é9,8õi†ÿè¨�èÄ6oÞQ�”••aÕªU¸ýöÛÛ=oÔ¨QxüñDZ|ùòN͹aÃÜ~ûíÉ [[n¿ýv¬Zµ*çö¹½-Q÷™gžÙá¹gžyfÎ-x.\ˆõë×·;ÇòV©k IDAT™gž™ ^¶Ö™ç{4X²d 6lØ€«¯¾ºÝóJKKqõÕWcÆ mn+Mt¬a@""""êeiÛùjà.†ÐÕK…Ó› áòš˜ñÔû°ÇnÈ’*Bw¦‰ˆˆˆˆú—u/?ˆwžý)²ZÒØf^xæ^v;D{?¥&""":Š�:i5nY´Kÿø+DcžN_§ à´).œ2ÑMhh‰cýÑvÃ}�!°âýŸ]·Sâ¹>¼º>Œ�Í.ÍSUºßÿòÝ=ð‹#+ˆ¨ÊÊʰtéÒä–À6lÈŸ7o^›[þ¶§½9g̘�yóæuªëß²eËr†ízêüt‰@duu5–/_ž5ϼyó0cÆŒvëž1cV­Z… 6`ÕªUÉ9ÊÊʰpáÂdØqÙ²eYÛ·„\²dI·^ƒÄº�™oÆŒmÎÑÕóu/‰­Ÿ{âójÆŒxã�7²Ö êo$"""¢‘ºá)¼%ÉcꇚvÈÏSá-VC–LŽ ¡N�  aoluw""""¢>ëíg–bý˶9>÷ò¥˜uá ½XQïÓ5 çÍX�õÃpßß~ŒÎ~#Ðí8~„>·:ÿ³š6ôÌ÷w0±eo Ç�p¢²DÔю.%þãòÛ0}ÌZÁ]Mèè¶páÂ߆õHçì(hv¤çç2zôè¬p^W͘1£ÝZF�Ýé[WÎÍÇ|Gº~O|^•••u;It4a›""""êqºfÁÐ-doÇ›¾‡††ÜßiioÈh˜9–—icZÇûs,3Ž×Ÿ¸¥ÍðŸ¦8ëê_2üGDDDÇ M“Xø¥§0ö³0´X§®‰Ä$¶ï‹á`£…ݵ1<ùz çþ±~©5uqì®5±µ¦s5€ÛÂÍ ÿ §My�á?""":bìHDDD”Gá˜÷ŽB} ‘ø±óG¯šÆؼ¢¦#㸴L �û![ýö$!Ë¢AH3–�?$"""": Ä"¼üðwQ½ñ•œã—|ÿ·8núù½\Qa•ú±øì‡±ïðHlØ1R¶ßïÆ´€? ã‹ýqÔ5[ØuÈìÑ;üÞgQüßG`I‰�:×ýÏi„qÑÉÏá«sÿ·ç !""¢cÚ±óSh"""¢h {ñäg`cÍ(4}….§×Dâ‚1üT×?{ B-�RBä¥KŸ€”& ±ˆ ² E"Á&üõžËqp纜ã.o)Üò �™ÕË•õ coÁ÷/º ·=þ4ø+;_¹ùO(®ÖË•õ=ºfáÂÿŠ�&à‰×n@Ütº¤¹�!ܼð§˜9öƒB—By°þÏßÅú?·ÐeÑ1Š@"""¢<BÂÐ-èšÕƽ„ë3ëöÖÚDDDDDG�ƒ;Ö᯿¼‘`SÎñAÇÍ‚{.oi/WFDDDÔ·]yæc¨©�×6ÌïÓ!@�3€ožó.:ù…B—BDDDý€DDDD½&|€¦š�dH.oÛáZ€e¿AªŽxBš-?ëÊ´w¬¸êv˜èx˜XWËcg¾ÄZ–©îŸˆˆˆˆ¨Û¹ñüãáï" ä=ý|\øýßÂáòõreDDDD}_yQ=®9ï~쯎�;OB_Ü D×â¸àÄðµy�ºê!†a �º ãDD¤ðÿDDDD½%ŒÓ ;!|e€á„Úª6OkFƒ�á ÙÁ8 0\î"ÀéÍ_PZ€ƒ 6ñˆ N{m�½=oX0£�a? ÚáÇþé`K)4•açá*LºƒKáqÄ  +o�—ˆˆˆˆzÎ'«ŸÄêÿ½–™û‡‡SÎXŒy‹Mç·q‰ˆˆˆÚ2vÈÜ´àüàá?Â..t9­HÌ·ל÷Š=-….†zȘ1c°uëÖ‚Öàt:1räÈ‚Ö@DD}¿sDDDDÔÛ„áô@”…ð«n€=MªÿÈ–:Hk? TøÐé†(Q:ùÙŽW¨ð_ØÄ£�f @\5 tz!Jª€Ò�BËÃúBuþ µÀjØ õðü}ËÖƒCðÏ-SñÜúSñÃsWàÌñŸbPI\F ‚[-õië^~ï<³´Íñ™Þ€Ó.o{œˆˆˆˆ!$fŒY‹]v~öô]G½….)iHE ¾÷å»1¼rw¡K¡tÿý÷ãŠ+®@cccAÖw»ÝxðÁ¡ëzAÖ'"¢¾‡@"""¢^goë€ît]åà�lÉ—ØÆ61�>†´-uÓçK�2uަÛc"u.ì-€u'T*°�ë“Ó§_Ÿ¾¶HOŒ¥�¯Ù]þ„P[ëN|”²�{kcþô­”[×-`ÆÕ3=ZàímªÀŽºÁØ×TއÞ</~2 #ÊëpʼnïbêÐ=ð:£….‘ˆˆˆ¨ßª«ù•Ã'wù:)%Þyö§Xÿòƒ¹Os/»³.¼á+$""":¶\tò ¨÷Wá™7¯Á¾ú�2ÿðº“t-ŽñC?÷.X†™c?(X”çŸ>:„ 6 ôêÚN§3g΄ÇãéÕu‰ˆ¨oc�ˆˆˆ¨P„¦Bp‰NxRB²Ct„H†Ý$ Âz€ ¾¥}óJJµån"|—³Ã}k&ÞìµeÚÁºó#}þTPQZécj\$î+#<˜vަB`¦îÛ^[´Z;k~{FU—L«Y$çN¬ÝÿX–@CÈ‡íµƒñÞŽ ؼ876ԌƖƒCPUÔ‚w Á"Œ¬¨Ãð²Ã(v‡ ]6Q¿‹ðÂ/.Á) nÅ ç|»Ó×™±^}ìFlûà…œãºá¹߾N¹¤§J%""":¦\~ú˜8l3Önûv׎…eõ~‡4�3€±C>Çì‰oaâðO{}}ê‡'Ÿ|r¡Ë ""À QÙí$Ë‚ŒG3@ 'àpª³,Suµ‹G :ë9á Hiñ˜z“–ºÎpBh:Úß^7ÕiOÍbQœKÌ! Âwñ¨Z_Z€ÃèðR5[&¤á‚p8Uý²u—´uk K­�Ù÷ ÀpAFr{`�ªõ¥•š_¨ù¥b5ŸfNOr,÷Úýƒ)5쨄߽{6^ß:»ë+“c¡˜ »\xfÝ—°ißH̵M]� ÷ÃiÄ X5Qÿ²ñÕGö×cõŸþž’JŒ?yA‡×Ä"üýÞo æó·sŽ;\>\|Óÿbøñ§õt¹DDDDÇ §ÅÉÞÁôã>DÔtõú· …4aÁiD`èü~õ‰ˆˆˆ )Ñ ÏŒ�È@“ ØP@!ÔXÈÙR hO P<`Z@¸2ÐÄ£E_™Ú~WvÐ/±õ®‚M�Íu€Ãá-Š+ì0� „š!CÍjþÒ�€§0Ü€ia?d°2V5UŽ[ÿ¶U€eªµCM€”%U€V`Å�p3d 2Uó°Çb@4ÙtP�^ˆò¡™Ý û) �C-%Xµm2êüÅ9Ï9Ð\†`Ô…�uq ¥ ¿Lþ¸—+%"""êŸb‘>Zy¿ú@J¼òÛïÃ]T�ÇŸÞæ5ÁæZüýÞoààÎu9Ç=%UøÊMÿ‹Acfå£d"""¢cŽÓ…Ó-tDDDD½‚@"""¢‚²Ãj–  @êUw?�/µ}®eBÆÂ�þÃ¥Â}¨PcÒ¢a¢‹†UÎSÜù˜&d$鯇py‡;5.% ÁFÈXð–@¸µIUW° §Â[†ŽxiÛ[¦ òÕZžbw‘š_2jÏ ./„%S÷��Fõ ,3µMq?%%`Z:Öï�5;' úpUb$ãð‡]ðGÜØ×TŽpÜ@ÜÔàqF1yð^TµôzíDDDDýÉG/Ý�h¨9ù±eÆñâ}‹ñÕÛV jÔ´¬óîÀß~u%šíÌ9_QÅ0\òÿ lИ¼ÕLDDDDDDDDý—V興ˆˆ¤ê¨�Ú[êZC°ÒÇLuP؃Vb਄ëê¾R]‹¨yÒç—öX[óËÄöÁUwî»õüÈ1Ƙ°w¶RcfÿßN#fhùðìºS±|ãIê`úk!D2˜™>¶½vVnž‰W_ˆO G8æè݉ˆˆˆú‘°¿^y8ëx,Àò{.Í ùÕÕ|Šçþçâ6ÆOÆ¥ÿñ"ÃDDDDDDDDÔm õ)¢íî}BK y¥Ÿ�Ç»º¬4-Õu0múäxë±ôz5Ñý�w3êÏ1›Ï$mìHîý(±»až|ÿt|P=ûšÊÓF 9o™zÓ�öñT8°.PŒw�ÅsëNÁ›Û�‡%ù×"""¢îxÿ¯¿@,È9ö×ã…»!ä¯Ô|ö6þrç¿ Ô\›óüá“NÃWoûŠ+†å­^""""""""êÿ¸0Q_‘d­BxÜÒ¯ër.}­A¾ô€žhu~ê„Ç;»v[á?´Ë1. »»öÑ#u¡úð@¼¹ýxT×WÁñ¤uà)�(®4Mm§lba»k¢@0êB0êªmS i.#†)Cj¸0Qøë÷á“U¿o÷œ–Ã5øëÝ—âÄ‹oÆ«¿½f<’ó¼ÑÓÏÇE×ÿºÃ•�R‰ˆˆˆˆˆˆˆè Qw°¹;êbw}%‚QWæÖ¿Dé@ˆÒÁ€a@xK!ëuH=j±C’[E8æ@mK ®?ã(q‡à4úÿöÉDDDD=὿ü –ëð¼ÚÝ›ðòC×"½#sº)g,Ƽſ€¦÷ßoÍJie{î9àóÏ P Ñ1dëÖBW@DDD…пËDDDDDÔOìo*ÇöÚÁØÓ0¡˜½Å¯e.„§¢¨0 @ÓwDÙPÀpAJ™Ñ jý%X³s<*|~ø#n\0ùãÂÝÑQ¢aÿvlyï¹.\‘;üwÒü›ñ¥¯þ¿ž)ªBË >ÿ¼z#"""""""¢žÅ Q3u4‡=ظwÖï�æ°7³ûŸËxJ!\E©]�uà-4 ›k�°ß"¹ðë[¦@Š\?x/*|þ^¾;"""¢£Ç;Ï.ÍÙÕ®Ó„ÀYß¼SÏ\ÜsE�@""""¢>+uaw}%ÞÛ1ë÷ŒÉÔ4ÕýÏ[è† øI @šÚ X¸‹`�–eoŒävÀÛk‡À’šC^ÜxÖË µáàΠعáݾ^h:Îÿί1á”Kz°ª¾Ípy  ]Ù ‡»Ð%Qi….€ˆˆˆˆˆrBÂÐLÄ,á¸C”àôžÀ餅Ìmæì÷5¢t DÙ ÀíS×¥uôGÜØÝP‰Ã�"„¢Î^»/"""¢£É[þñ]/-–ï¡jŽ•#¦º""""² HJ�æ�Ûj£>P„˜©«ÕñÏ] áòA8\™Û§Â]X`Y�͇€H@},üªWá�íásFp°Ýð8¢Ðµ#ØÞŽˆˆˆ¨©þø5ìßöþÏóÚc7ÂW6#Ž?½ªêûλöA¼ýôíˆ ] Ñ1Íå-ÅÜË—º """Ê3‰ˆˆˆú )SMÜÚ tµwmOÕÐÖq{wÙž%ÑþÄ�÷_qKþ¦r¼úÙtìm,O½6B†ÂW 8\vW¿6{RB‡ð”@8\°¬8¤Â@hF\FÝxvý—6�TÒ„Á%�ð9#½w£tÄ,KÀ”â–)Eò¸&,ºC3 XQJ8æ€%Ó7"�p1hâØû}žˆŽï>wG�Ì#-/Þ·_½mªFMë‘9û²ÒªQ˜ÿž(tDDDDDDDDljˆˆˆúÙAÖ­u®7í…�0¤'ÑNø01uŽñÄÚ=€ìCâ–ŽÍexcëÔú‹ÓF`¸o™êØás—€¦¶ %U€iBÆ¢¡ÁÍeØu¸ ûËQæ 0x”©õ—`Û¡Áødÿ4‡=ÉãÃJ0aà~L¶nG¬€Ò±NJ sâoŸ„=�’¿eº…"gó§®Ç°²úÂID”Ö5Ïãpͧ=6_,Àò{.Åå?~¥�ë±y‰ˆˆˆˆˆˆˆèØÆ Q�©„Pa.ÃN@ÓÕ€°Ç„®ŽN;ô%ì ¤f�Y¦º¢­¥rB]—¾v²°´ù¥Tc©ÌY¢.‡Ë® èZP@jFæüé dÜ›‘S¥iöu`8Ò„¥D0æDu}UæqÍ.µµ¯Ð;~êyyJ�XTmñf €€?âÆÖCƒñÊg' Ì@™'Èm€�M!/Öí9ŸŠ­‡bó�áh¥€CK1~à~l«ŒIƒöaÜÀ(r†¡iýäk„Ž –¨i¬ÀÚ]c±|ãɨ®¯Ê FâLRƒAÅMYQ‡bW‚‰¨À,ËÄš¿üO�Ïö×ã…»áòÿÞÒ�=>?{$"""*$)iðœo‰ ³ÎÔ¸ÐTàËS†½í«’³Çà)‚0œ€Ã­º½u&—ÜRVno)àt'’!<{ îb‡ióNDÓt‡Û®«Ã…S× ]­í)VõN5G¢|úéN§;5&©;€Äu.o'×>zèš„žÔ’êóÃáV¯G§I@šêúÊ âXõ1ÀŒ'?¶×ÆãïÍà ÃvaÌ€Cð¹Ø°/³,�=õpß_ÆÚÝcà�¸‰;`Z©íU7í³ðƶ)(÷øqéÌ÷qÕì·qüิx+§c‰%Z¬Ù1¿z}>¶ÕAKZ—J§†cÚÐÝ8å¸m¸lÖŒ«<§ÁÏS"*¬OVýÍu»ò2wËá,¿ûR\ú/Áé)ÊËDDDDDDDDtì`�ˆˆˆ¨ ì0œî€(®TÛº èd„ì¼%€Óc�é*„'ÕÖ®ÂS8½êcÝ¡:ñY�Ý’W…pûÔ¼‰N~‰ù}å€;ÐKÌoª.—WuáÓv'¾.lÉ«¾2äÔš®æB…]>ûÞ uïÒ„áöÆu›š–êNØOìk.GMCEö€Ë áòvoR)U ³lnQãQ@Ô4ÐòaGÝ Ô4V`â ýGP=åÛ! ¶Š=�ÐòÁ45X2ó À²"1‡­b¼øÉ,´DÜøéÅÏbPqS�ª¦cI$î@­¿ϯ?¯o™‚mµCŒ:³Î“R !èÃúšã°¯©cB±+Œå‡ P5‘�…ñáßîÉë‡÷~†¿-»—üð/Ð�ì߉ˆˆˆˆˆˆˆˆ:‹@"""¢Ÿ†Ê¢füË ká4âÐÚ °R!­Ûs–o<õÁÎmhZB>¼·s|΀”wµ-%ø z<6ï�Íå�º&néX¿g4& Ü�©C÷Àç ÃЭN„»Òã"!ÀRk™–†uñ̺/aÞøÍYÁm8û"‡nÂíˆu: iZêüÅøÇ§Ó1¬´3GTç·@:æi‚C‹·Ó7[ÜÒ±ißHL¾-a7ÜŽ( 0HD½kÝË jéÑ9…Ð0zúy˜:o FM;Gu³&""""""""ê!GMðPõÆB—@DDí8°c-€ÔgÕ¶”à£Ýc°aïhÔ:×-«§DM‡ZJ‹§os+U(Ï_öç)§¦”Ñ ‹ØÓÛëÄ£�ÁFUC¾€–©¶–�Gi¥šÆ#jíx4@i©ù£!»«�ñGÜØ¼v7TÂmÄÚŸ&ÆTÂÄAû:Ô5+îJÜG"ü×Ö¶É�&ÕöÉ./„§D…%Í ,)p°¹ ïí�éÃv1ØGiBB×$:û5$!5 Ôµ#íý˜tìB}žv%â"¥@C°M!L©¥u@%"êa6¾úÛ›Ï[2“ϸ Sç]�âŠa=6/Qº£&h™9ºŸQŸa¶ê´EÔ—4†|Ø^7›öŽD­¿$5��ð[{�>¤ÄÂ�M{gÝÄ} ¡Þ�…U¯åp^r‡HÛ±VýGBSÇ¢! †DžBeYk§Fbö6”èÜV”=SO*¼r ¥Q³»ü–€ÐÕÖ¿ºG„zMˆ¢ È`˜Œ›ŠðÙ�áh‰ônÇLÊ/MXð8£pèf¡K!j—èRç@"¢žòÁßîB,rä�¢‡Mš‹ió®Á˜YA7=PQÛŽš Qwéš§ÞÞ6„ù´î`$3jù\^´ú@¦u”ë­uÓß—v °×ÖÎÕ=ª7B%Ù늜G»8§¦Ûɘ#š(E×§p¸€ˆ¡Â©PÛ˹Â04n½IDDDÇý>lzã‰n_ïò–bÒœË1í¬o¡|ȸž+Œˆˆˆˆˆˆˆˆ¨Gyð{®,tDDÇ %vº¢NBB׬ì`2V€-E�ÖM_3ŸË'çnë™çY®e ùz'AøPµ°ÐÑ#÷ UWA8ÝN/¤¢A@hˆ[:‚Q'‚>ø#.¹"G¾Q¶æ…;a™±._7pô L;ëL8åNO*#""""""""jßQ`^¡‹ ":y ]Q÷¥o‡«iv *��0 ÕUÍ2Õ[bm¡©îk‰­qóŲז–ø²×Ötuÿù$-ÀL[°×ÍóÚj=ˤi¯-Խ놺!�·N€–TëZ=¸Íª„ªÙp©ç×#!F !4Àá‚tŽ ìt�`Ô‰}�ØV;#+ê0º¢öˆW3t =�ÛzQÓ°;>÷éNŸo8=˜pÊ%8áœkQ5rZ+#""""""""êØQ$""":îbˆâ€Ã£Ba²§·;€4!CÍ@°5Ht]ó@”n†ËK&J¡È@¨ûÓ쵋*oi*˜×“„Pá·X²¹ˆ+®Ž;½€¯ Â[ª>îéõ…P¡ÇXÒß ž»´×v¸!Jª·O­ŠLÖ ÀS Q\Ù* ÖÕùÛ¨YÀŒ?h„LtÛ“ „§H/…ÖÉõ»ðz¡Â†á €L˜dU~ IDATÏÌ%îÛWδ`w_ï5 ©é@,ÒÎý�ïV)R[ ëv7L˜–ÓÒ±åàPj)Åç‡ñJ[ A}°UEÍp9bЄÄð²z ,n â&µU·°`èyfµ¡®æS|ñÑßÛ×tÆÎºSϺÃ'ÍíÅʈˆˆˆˆˆˆˆˆ:‡@""":FÙ¡'§py!tC…õ„@Fè+PSÁ(™6&Ò·¶Ï‘ÉÀ—„€€4MˆP3 é™Q0¡„Ëgo隸©ësÌ�´ù!¥æ—`©€éÛí h:„áRk£�^rí¶æO¯­uHNf ÒŠgmW+ìµáòB$C—ióK™9W›¯GjL¦� MSáC3¦‚xɹd2ô §ÂéÎlõzgÍŸ~¾HK@4hwÓ˃ŸÔ~6š®¾Ÿ+öçV êF êFMCE÷—°??Û?ol›·ƒ®Ypqœ;q¾tÜ6œ2z; =Ž"W|~nLDDD½æí?ÿgÎã†Ó‹“.¾SÎø¼%U½\õeáp÷ÝwV¯^�@ Ыk;�NÌ™3·Ür JJJzum""ê»$""¢c˜ø’–ݩϬ´˜ÐRá; už´ì.iB�€•˜+-P¦iêWiÙkäZÛžOÚÁ7+}þÖk§ÍßÞÒ®M®Ýzñ´û–­ÞmÝw"p¨¥î‰ší9„¦î;±�²´�3±–|æ"u^Ö3Ï1bîKª×-ÙÅNS¯Erí\/¹L=kËR¯yúüÐRyÀ\󷾇DShÙϽ§I™ª·§ ]……ÞÁü2ã—ì×W¤ý’Ù­0niðGÜF�v£A‰•›gâÝ/&¢Ô„ÏÆiã¶`ñ)o¢ªˆÛQþíÛº{>]�üX #§ž…ig]ƒÑ'œ§þq Q+K–,ÁÓO?]°õ_}õU¬\¹ï¿ÿ~Áj "¢¾…@""":v%ÂsP¿J3D‚@< @ž"Õ­N@š�‘ Bj„Ó¸|êRËT[¾Fj»[‡+­³ŸL{ËQ@â°‡Œ�XØžß ¸¼ê,3Ä#öV¾ºÝÅÎ ¡i©µ£!Vsz§Bw´±fúÚª.iÅ�hˆR]�^!ÔüÑ «ÀœË8ܪcbbkãhÒŒC¸¼j}CSÝ sÉdê¾…}o±�º)SókzÚü!HËLͯÒ„ŒE�p‹ZÆp@xJM´¸L,ŸöZH+õÌMÂ]¤: Õ RÆ#@ØoÏï„ðBƒ”�©×ÃŒCNU›ájí#&3Ö³!ÀÄ×€¦©-€50ÍTx3½Ë¤ì‚kvH³õŽÄÒþOz'G;(i À²’{+°�ð8¢Ç�(÷0eÈŒ¬¨ÃÐÒšÙó;xëÏ?xŠ+1ùô¯cê¼%(©Qઈˆˆˆˆ¨¯[¹re¡KÀ|€ÆÆF”••º""ê$"""JˆÇ![C†[hÚÀpªÎnV6B6 ²¸J…ü„XQuMÃ>HM‡(*œ$ëH¢Û�ƒ ÔC¶Ô«°Yé †Pc!5? '„¯p$‚j1 Ô ÙrX…ôJ«pžÃ ˜¤¦kÇ£�ÁF é€Ú–¸h€]¿®æ6Aú3 ”…ÐuÀáL ö«µ#A t„áàDû‰­´m}Í8l‚å¯W[ì– QáEÝ, 2ÔÙR—º7Ã¥^“x\…1ö«€™»pûdn9Üæúv?lT÷‹ÃUý†¦î5€¬ß§.ñž"|³, ‚l:¤ŠîbˆòÁê5éA?Uo< a™èñ”¡¦§€V"`˜¶5³€î°»Š´Ž�­‹†ºÞŠ«�­¸ KŠô0aö JcN|´û8ìi€³ÆoÆã>ÅY7c€Ï—ïÙû%""¢cÞŽõ+a8ݸà{¿ÁØ/†n8 ]¤”hnn.t€Ã‡3HDD’-<ˆˆˆˆŽuv§²X’ÝÝR-Õ0Pa73šv©¥Bz‘µ;v©C[ÚÚ¿šÃJl*’kËp ­CaZ‡53D‚j<µ»·u¡eš”@<òÛ÷–¾õª}ßÑ dØow KKr™1UoØß�û¶ë�GÕº‘€=¿•*ߌ¶š?íÒDÇÆH@u0ìÊÚ"míÄüfÚs•‰ùíÏ…h(µ­°”€iBFíµcv÷Å&!`É´ž´ëÍG0=°©*|ê Ÿ•#!Ž�V5Zå(h•£ ªFATŽ€V92õ6`$DåˆÊ‘ÉsEÕhˆAc€ÊQ@ùÀW¡:[êFÎ{ˆÄ8Ø\ŠW>;¿yû<üü•…ØV;¦Å¿¶QÏ6q¾zÛ L8eÃDDDDDD�tÿý÷C‘ñöë_ÿºÐeåtþùçgÕZSSS貈¨ ÿüç?³¾foºé¦B—uÔ`@"""¢$;ˆg™v Jf %Ç,­UØÌÞò4q]"(Ö•^bmÓt»›H ©ù-õ–˜?b“Rm kÙ[·v'„—¸7i¶šß¾ïäüöºéc–¥:½I«Kwœ\Û’©¹“µÛ]ÏÕ¾7‘Ü;8Q·™ª»;’ÏÕÌñºÙó'^û¬ºÓ¯ëù}�z<ÕùNصšqõf™‰ƒG¸ŠýÌ…PÛZW¦ºýnÀá„0R�ÿ$Ô_º‘‘”P�þ©¶€NÛfZ˜qH3Ä¢*h�BÆ"*¸·�I K „cNìkª@cȇ: Š\aLºƒ‹1sD5ʽ�#¼g""""Àå--t DDDDDÔ¯LP•§¹ý>ÊÓÜDDÔ0HDDD”Nµ­oƶv-9¦!3Ü'Z]×õœšC4{ŽôõRDzæ·ßZ«sººvë{HN¯-mÍŒk[?“®®­h­ÐQ[ròâQµUnØHÓÞ¶·»¤üËJöX&B›�h0cÔeıpú‡˜;öóÕGDDDDDDDDDDDDÔ·± 3M P6hL¡K!"ê�¡YQ~MY��5£PÓX¡¤ ÄÂ��é¶Ðíi‡ÿ,è�Ý„»E0£�ÁFjŒÇ’™GC3Qì cöèí˜8h_� $"""""""""¢þ¦¶¶ë֭æM›P^^Ž©S§böìÙÝÞq§¡¡ï½÷vìØ�X,†1cÆàÔSOÅ Aƒz¸r`Íš5ؼy3êêê0bÄLœ8'žxb—çÙºu+>üðCìÛ·“&M¬Y³0lذnÕÔ›÷¤>ÿüslܸÕÕÕ¨¨¨À¸qã0gθ\®nÍ�F±}ûvlß¾[·nEqq1Æ��qãÆaĈG¾‹S7lذ~ø!š››1eÊœ~úéðù|Ýš«¾¾ï½÷ª««‡1zôh̘1cÇŽíÖ|RJ¼ûî»Ø¼y3�fÍš…O<EEEÝš�R$"¢c‡+~‰5Ëï¤ÄäÓ¯ÂÙK~U�?pu–C�cÜÀøÖœ7ðÀª PÓ8@ H ˆGUÐWéôtsã^i‡é¿Þý=1™9ŒE õª³¡”€PMÊ]F ƒŠ›0¶ò 7÷jmDDDDDDDDDDtd~øa\wÝuYÇÿô§?ák_ûZòcÓ4a™Ñ•iÓ¦áã�?Î9ïSO=…¯ýëÇþë¿þ ?ùÉO:¬)㦛nÂý÷ߟ56lØ0ÜvÛm¸îºë ëz‡sÀßÿþwÜsÏ=xóÍ7aYÙ;íÌž=·Þz+-ZÔ©ŸK^{íµxì±Ç’>{öì¬\¹?úÑ�°iÓ¦¬ëæÌ™ƒwÞy'ãØ´iÓðÉ'ŸdÌýÈ#�`ýúõøö·¿�õë×gÍ3sæL,[¶ gœqF‡µJ)±bÅ ÜsÏ=xûí·sÞÿ)§œ‚ýèG¸ä’Kڜ箻î­·ÞÚîZÏ=÷\›ÏïÒK/ųÏ>ÛîõÍÍÍx衇ð›ßüÕÕÕYãn· .ÄwÜ�qãÆµ;W¶mÛpûí·ã…^@8ÎyNEE®¼òJüøÇ?Æ�!C:5og<óÌ3¸âŠ+2Ž}üñǰ, ×\sMÖkër¹ðõ¯?ÿùÏQUUÕáüRJ,_¾wß}7Þ{ï=H™ÝEbâĉ¸îºëð½ï}n·»Ã9ãñ8xàüâ¿Àþýû3Æî¼óNLŸ>½Ãy¨mܘˆˆú½·ŸYŠ5/üO2äòé[ÄæÕ(pUDDíph&ŠÝa8t3sÐŒ�fÈ` Z羑Á²Ô[Auƒ‘d¨ µØÛ§Î˜2´ןùŒP ]+T�DDDDDDDDDDÔUO<ñ®¿þú¬ãË–-Ëÿõ¶ùóçç ÿÀÞ½{qã�7⪫®êp˲ð�o|_ùÊW°jÕªœá7øàƒp饗ââ‹/†ßïïr½Üpà ¸è¢‹r†ÿÆêÈž={°råJœrÊ)9ð~ýzœ}öÙX¹re»sÅãq\qÅX°`A›áGxÿý÷±hÑ"ÌŸ?Á`°ÃóaçÎ�˜:u*þýßÿ=gøPÁÐ?ÿùϘ4iüñç¼ï¾û0uêT<õÔSm†ÿÕ=Âĉ±jÕªnÞAçÜ}÷Ý8餓r¾¶‘H�?þ8N:é$Ô××·;�eY¸âŠ+°hÑ"¼ûî»9ðeËÜ|ó͘={v‡sÀ•W^‰ý×Í ÿ@,ÿýÛ¿á†nèpj€DDÔ¯­}qÖ¿ü`Öñíý½ÕÐQAJ¨Þd9þ@+‘6ÖzÜ>v$[©¦wckãÔi…d¾ßîù]­¡�ÚÚ\¦�gÖñ‚Hu¢kc<ù\r½&2u^wtôÜÚû|8‚e;ËiÄQáñcHiªŠšì£B÷b!È@d°Ùòu²ƒ_òµ´zîó¦;,2Ðh²»ÿ©{ÂBeQ & Ü�“Gí@™§0ß """""""""¢®{þùçñío;+8të­·â?øA�ªR¶nÝÚá9O?ý4yä‘vÏùÞ÷¾‡?þñ��^÷¥—^ÂüùóÛ Êµ%Œz衇Ú=o„ εnÝ:\vÙeˆÅbížgš&¾ùÍo¶{Þw¾ó�»î¥{饗°`Á‚.ßÿ‘jhhÀé§Ÿžì¢ØÓ4ñ­o}«ÝàŠ+ðƒüÑh´Óu´´´à+_ù ¾øâ‹N_ÓUøÃ�ÇÛ=g÷îÝøæ7¿Ùî97Þxc—^ÛM›6á‚ .hwí{ï½Ï?ÿ|‡smÙ²¥ÓëR6nLDDýÖ'«ŸÄ{Ïÿ,çX4Èí$©#©0•l�òÊ™™êþö©™Ó‰öCe9²y“5¿Ýµ-çy¢õ�®­/Ë5‡hgô¶¯m+ëÙžŒåò÷B8õ8*|-[y£Ô¡Ö_ª^i– ! ¤¯Ð »~'êI†ÿ Ô -ÓÞú·ùU€QÓ 4À©›3à ÆVD…¯½ý¿°QßðÊ+¯àÊ+¯Ì z}ík_ÃÏþóU•©¨¨§�v&OžŒ5kÖ`Íš5Yõþçþ'/^œskÓ^x�>úhÖñ“N: 'žx"\.>ùä¬^½¦™ÚÝçÍ7ßÄ<€›nº©Kõþò—¿ìðœÎt¬­­ø|>Ì™33fÌÀ®]»ðú믣®®.ãܺº:¬X±‹-Êšçé§ŸÆO<‘u|öìÙ˜5kœNgÎûíµ×ððÃgu†œ;w.n¿ýöŒ:['OžŒË.»,ç}M™2¥Í{¾æšk°wïÞŒc�g�u&OžŒÚÚZ¼ÿþûøüóÏ3ιîºëpá…æÜ¶÷Ç?þqÖ±Ë/¿7Þx#¦OŸŽææf|øá‡¸ãŽ;°nݺä9~¿·Ür þú׿¶Yï‘BàÄOÄܹs±sçNüóŸÿD È8çÅ_Ä›o¾™s›ç·Þz+gØ´¢¢gŸ}6 €•+Wb÷îÝãk×®ÅÏ~ö³Œ×1¡±±1çö܇sçÎÅŒ3°nÝ:¼û} Q¿ôù»Ïà�?ü[¡Ë £�Ðà 8Ü*H•¾­ª¤în@7Ô@ª0˜¦ÛcºöXgH@tµ6N@3ÔåÂ^\Ó‡K�é¤hR7Ô¤½vÃpB¨ëœn5�žþGD©9Ôq@Ó2Ãzš½¶ƒÐ»óGKMÍo¸!`©ç—‚Ô õL¤´ç*¸&©iö˜ éϤ38uoÐí{ƒ•9?™xM{þÔ3�Ð '¤ÓTŸ3]}æ�äÔã¨,jÁ”¡5øüàP¬Ý56­ˆ„=¤«¢¸pz:žTJ¸+T÷?iáXM�P³ÚÎXS�ÉKÜ!ŒpK¾´§·UEÍphfQ¡½ûî»X°`AVˆçâ‹/Æ“O>Y ª2M™2ï¼óJKK“Ç6mÚ„yóæelczàÀ<ÿüóYÛ‡ÃaÜxã�Ç„xì±ÇpÍ5×d_³f Î=÷ÜŒÖý÷ßßå`‚¦i˜3g&Mš„¡C‡B�`0ˆêêjœp �šã²Ë.Ãã�?ŸÏ—< …pÕUWá…^È8÷¥—^Ê †Ãá¬ú5MÃO<�Å‹gç�wpî¹çfl‘{ï½÷fçÌ™ƒ9sæ$?Þ¼ysÎàÒ¥K;u� ¯¼òJVØnäÈ‘xã�70f̘Œã?üáq÷Ýw'?ŽD"xì±Ç²Â~Û·oÇÇœqlÁ‚xúé§“cذa8ï¼ó0iÒ$ÔÔÔ$Ç^~ùe�ŒçßS|>Þzë-Ìœ93y¬©© ‹-Â믿žqî]wÝ•3xóÍ7g»êª«ðØc�Áår%�=ôÐCYÛõþüç?ÇM7Ý„òòòŒã�<òZZZ2Ž 6 o½õŽ;î¸ä±\_‡Ô5 Q¿óź—ðÚc7vkK: ©œð•„  ;¦éžbÕ PÓ ÜEê2)Í€pù€²Á€ê}¡¡sA4 ÜÞôÓuÀåErKaÝPë• †ÐuÀåˬËåƒ,©‚0cîb;Êyý¡C‡2Ž}ë[ßÊ ÿª³ß-·Ü‚ÿþïÿNÛºu+>ýôSLž<ùHn£SruœüÝï~—þ€_üâxî¹çP]]�<öÌ3Ïd<˜um®  ywÝuWVwÁP(”—àµ×^›þ€ÒÒRüå/ÁÈ‘#ÑÜœÚoåÊ•hjjÊøZذaCFÇB=z4}ôѬϙ믿«V­ÊØ*8 áÑGÅøÃŒsŸzꩬZxà�Œð ¾ï½÷ÞœŸKÔ9 Q¿²çÓÕxù×߆”üÁåÐÖÏã¥4¡;€¢*ˆ~ƒ*g¡€¯Â[ŒÖ[á MÜE* ¨1Ñz+ß\?}V­ôD¢s_Q¹ Šôù¥ªËm¨ð�°çO\+4ÀS¬‚r‰pšÐ«³á{~o‰ â%Ö¶; ¡¥Æ2îÍèyŠ Ü>ûc ÐDûÏ:kmð–BxJ2çGbþô{KÌ/!48½ånûYˆTwÂÎPa9o© ^žßn ¡©ù�­æì1� Ц?óD�m-)d›!„D0*]} {›Ê±³n^ýl>Ü5.ó‚Ä}˜Q ¥V0�nÀéÊ~þ2í)í`ïPÍím‹Í¬@ào¢Aû™«×ÔÐ-”{Syå^Ÿ #I)`I Ëh {p8 ¾&,K`s9Z}>¾¨ÜaK×L )mÄ�Îû+Æ <� ‚ÝÄ âF¸1hBBô“0›”*T‰;ˆºÐòÂL J®Ý5«¶MÆ;_LD ’½¥Fk'�þgŽßŒyã?…ÓˆÃÐ,xQ»BðºTXIV¿y~¦¥©ÿSHàPK ‚QWòKzcÍ(<üÖyØß\†`'žÝ—ÆlÅÕ§®Âà’&x�‘äñ"W‹š¡ š�}"ÀÖWXR %âÁ¾¦r|¶^ý|Vnž•w1?x/æO]‡s'Å1¨¤ # CïÝ?‹ZRýþ$!`Z‚^4…ÕŸKƒ^|²o$|óöw8×_ ¦Ý¯3‚>ò¸¡ÅásFQî ÀiÄ ¸•R wâPK ªWáýêqxìݳ3‚�ÃÊcΘ­YQ‹�EÍp9:þÿ‰”¦¥^ë–ˆ¡¨3#¨üò§3ðÏϧbë¡¡�ªó«3×à쉟`üÀÇ5¡È�&,`.`�’ˆˆˆˆˆˆ¨§ÔÖÖbþüùY]¾¦L™‚—_~NgÇÿ ±· 4(çñÅ‹ãúë¯Ïè^¸víÚ¬óV¬X‘uìºë®ks½‹.º(#¨­€»œ={6^|ñEÆ‘Ç{ÚšcÚ´iðz½ƒÉc¹:±åºÿÖýÒ}ùË_ÎêþóljjÂêÕ«3Ž�7çœsNÎó…˜?>|ðÁä±M›6¡¹¹%%%s!T³Û�wÞ‰ªª*\qÅYŸëW^yeOÜN§´î¼—PZZŠ3Ï<3ãµ3Mk×®Íx¯½öZÖµßýîwsnƒ 7ÞxcF^ýõŒ`,ÃÆ�3ΩªªÂÂ… sΙkËeê<‰ˆ¨ßØ»å=¬¸÷°Ì¾¡¾Aš™±C`*8¦5�k뇴mþðV¤BeYçØA7MSAC)´ñ/àÚûápƘÌ<(Ñ*Lت®d§= uó"ëÔvå ¼%ïKË1AÚ} =ìÊüíÕ–ãµõõäë¡Ù�Û˜¿SÏ<Ç땜;{·Ë褔®1äÃÖC™±ùû¦ñ~õ8Ôа¯©‘X«?ºKK½Æ†CuNtúìN„í°,Õ5°õçJÞõ›qȰh® @4”ñÚº…iCwãÂɱø”71´´!Ïuužii¨¡!àC] M!/Þ¯�×·LIž‰ØU_e³Ú¦-7îxy¼Îhò¥B¢ÂÀ7f¿…ãïÅ_ *|þŒ.mG«–ˆ;êaÓÞØP3 Ÿì‰PZX§%ìACȇƠ7+›Ëš�ã°õà<»îK�ð:#VV�¹c·bÊ�=ÿŸ½ûŽo«¾÷?þ:ÚòÞÛ±ãxd8{’BF(„ ÐÐB{[ÚþJ¹Ž& IDATo[h{˯ôRøuq;¸··-£-£ÐB ”�V d9‰ã$Ž÷^òÔç÷DZË’lÙ–GÂ÷ùxˆà3¾ç{dÉ–¥÷ù|ÈIh"1¢{˜‘¦6%4©¡Ú”H‡5 ·GÅ‹Ÿ\ÎéÆ <åqÖã0PۇíÅíî—ì+˧¼5 ½ÆéÞ*L«acá1’£:H�1‘Õ1nçu1q¹Õ4tÅðöéù¼rd%íÖ0Úz"i·^¸BW%y°Të©2%²íÔb6Ì*bM^ …©5VéÍîÒPÛG�ÍH»%œŠ¶$ŽTçp¢nšr=vµñAUŠìqèi3Gp¾%ÙëgP”ÑJAr=WÏ*bfJ=I�#®°7VÍÝQ«ÍæÙk¨ïˆ£µ'’¦îh¯ê«§›K‹ZåáÖ…X˜Y9ìÏÒvk8­Iì>7‡c5ÙÔwÆz=§Zz¢0™#°8õCŒrÁÖKØ[6Óç÷þÕ³O07­š¬ø²ãš‰6ZGpö‚ ‚ ‚ ‚05=öØc8�N¯eqqqìÚµ‹ÈÈá/Fœ yyy”””ô/«««Ããñ Ð}èÔ©S>û¾ùæ›lß¾Ý︫®õ©¨¨ÑÜ~þóŸ‡$ü7œÈÈH¯àÀÖÅ}ü�ÿ믿îÓj·O{»ï{ý#=ÿÑ8{ö,n·÷ûA:�nÈ6¿÷}ÊÊʼªê%''³yóf^yå•þe---Ü}÷Ý|ýë_çÊ+¯dÙ²eÌ›7�U«V‘��0ö“ �%K–ø„7ÏŸ?ï<{ö¬Ï~[3¶bÅ ´Z­×sð}XSSƒÇãýéòåËG4w!x"(‚ \š+‹Øú›;p;mÃo JWá¢âr«°ºtTµ%ÒD•£�J3hé‰ôýÐÛãQª§9í r{WEë-Bç#Ðò¾uà�­ò¸ÁíTŽ5`gYö ¹œàtô[öݸñ‡[×[q�A/®‘=Èn'’ÓîÝ*{¤ã^ßÞ’r\—£·§|a¹ì·K¹Ïûªæ�t|óêÛW’�=®ç=`'YV–;{«^y‚ü~ßß:¯,�¤<¦<¾AƒÊ¶D>©šA”ÁûÃ~�,QmJàÃó³¼–¬Èå|K 6× P_ßãT¥Vª" "), I­ Ðþ¼¯òŸ{Û£KÊ÷ßá@¶ö [:”¶¿N›rß÷&F¢�²âš¹qÞ'\™wš ¾%ô'ƒ,K4tÅPڜ¹æTê:âièŒÁìÐs¶)�uY£ÛîÒrrÐþ2Zµ›ü¤zÒcMä'5©·®³1=¡Y ^$¬NMÝјÌ”·&q°"�³Íi”·$QÕž€Ã¥õØ­=Q´ö\¸êR§qÖCcW,‡«”ö ˳K™™ROŒÑLjt‡Ïónª+mN¡¾3–Æ®Š2ié‰Âã‘Ø}nÕ¦„aƒ¦�´ôDÓÒí³¼±+†Nk Ý$׳(Sy.!¢›œ„fTÒ§§²²,+ÏѦîhÊ[“9Z“Ížss8P‘‡Ë£Æ#ûÞ÷¶ÞöÀÕí XzbŒr1êãV%Ï#K˜ízšº£)kIæPU.í–ˆþ¶¸e­)T¶%Žjl‡KƒÙn ©;Æk¹Qg§²-‘ÖžHæ¥W3#¡‘„ˆnÂuvbÂÌdĘÆ=´\Ò˜ÎçfóÑùYtXýZÿœe["ï”ÌǨs`uêX<­œ°Aß�N«‘šöÚÌ”·&s¼6›£5Ù”µ¤`²„#ÓÒ}(µñÔvÄû,·»4œªÏ$)²ƒë �37­zJ…ÞAAAa4‡ÿ@©wøða®»îºI˜Ñè$&&ú˜:;;½*«µµµùì7¸ÂßpüUÖJ|¼ï{ AöóYÂdœÿhø›çéÓ§yä‘GF4Ž¿¹þå/¡»»›;vx-ïééaÛ¶mlÛ¶ •JÅ•W^É=÷ÜÃ-·Ü‚ÑhѱC);;ÛgYG‡÷EàþÎ5===à˜Z­–ÔÔTª««Žé/;Ô˜ÂØˆ  ‚pÑ3ÕŸãõÇoÆå°ø¬“Tj¢¦ÑÙ<þW“ãËáÖÐÒÍ»gæQcÙ35íñ”·&{Uœ% &[{�Ü.dI „:à �Ç�l· »ü,Ëàq�­Ùã¾P -”!Yù�l3+�»þ€¡¬|m7#›Û œ¸­Þ`„Ç¥Tys;½g²Ûv ’¹YR1.÷¹Ü{Ÿ»Þ§çqƒÝ¬„5ÚÞy…òü{ÏÝÖÓ2ôû“ªtÙ�D h» àt«©hKâý3s{—È^ÿx�#I€ ÔjÐ�"‘Âã�"ã”@ ß$cïyÊžç<~åšäþCºÁiE¶v!w·)÷K_å¿Þ¶¿F�“éñM\=û·->0%Âv—–»›SË'U3xûôŽÖL§¶=¾¿íïx�‘è¶yãÄbÂ̤Fµ³xZ±a=¤F·³qÎ1²â[T“ õãwìd\5‡žÚö8ŽÖæp¦)•“uÓØW6sÄáí`9\ZºbièºðFÜ™¦4dT2#±™eY癑ØD„ΆFåž²ím­Nv—»KË¥s8\�CYK2§2Æõ±PeJ¤Ú”€Ví¦ ¹žÒ\¥"éœÔ Zñá=+˜^jn-Õí ©Îa÷¹9|X:‹¦îATγ:tì++`yV)öB�RiQúǛšÇd §©+†ãµYì)�Å®³…tXÂqzÆïm«COis*¥Í©¬È%?¹�ÌØ6âûÉKjd]þ)#ºÐiBôÈv—–#5ÓÙ[63`ø¯�ÅaàLc:ÿº¬FršÑª:Ѩ=8ܬ-¥-©ì>;‡ó­)œnH§¨6 ×8ÞÇk§s¼v: ¼¶uºÕD,´Î «)‚ ‚ ‚ 宻¤„”””ÉžJPüµ*¶Ù¼ � ns<ÇÅû>›¿@×HMÄù‡âûþçƶmÛxì±Çøå/é·R"€Çãa×®]ìÚµ‹o}ë[üþ÷¿çöÛoɼFJ¯÷íj1øÜ?ÖA ù ep{à�$ìvïÏÂS=A.jMå¼ö‹qXý¼à”$6|å�´TqôíßMüä„�r¸µ´ôDòQé,NÕgŽh_Û€@O?YîàÉ*uà–±c%ËJÌÕ÷BZê_æéhTB[}ÇåúRX.Ç€0šåØrW+²¿çMÈŽï·[ |Éò…�£ÃŠÜÝ{ìñ¼ÏÝ.¥Ò}Ç–”Š„]-JðQ5úª>ÃrõVtuÜÙæ4j;âQª¤%£„9“´sVCX$#‘"b•êZCoø¯o4CÈJrÜ«ÿ)¡Wœvå{líD¶u+÷‡ÛåÓö·0µš ³Npû’�I�š�Î4¥²ûl!õ�±”4¦sº!ƒN››s˜öÊ!Ôc×SÓž@§5 ­ÚMbd�–p6Î=Êòìó^ÛNdëÍá8Ý»£ùèü,>©šÁù–Læp®‘½u¢RɨUò¸=?UÍà�Óó©íˆ£ª-‘êö:mÁµÐ•Æ®ºíFN7d¢Ó¸˜‘Ј˭fun ¹‰¡swÛ œiJçLc: ]±~+1úSÓOis*f»w¸Š«�³M©­Éᓪ¯É¦Ûn¤Çn˜Ðû`癹XzÂuvæ¦U“p‘·-Aaüø"Çßöÿ>¨ ÂÄ¥ÏdîÚ{ˆOŸ9ÙS.qlÞ¼™={öxµÑ�ªü ·0÷ªr¦Õj‡l“êÏìÙ³G7Á) ""‚žžžþ¯u:—]vوƘ5kÖð�Qxx¸Ï²ŒŒ f̘1¢qU_T©T<üðÃ<ðÀüóŸÿäoû;wîô[ ”êzwÜq±±±lذaDs…�ß³>QQQ^_GGûvŽènܘïŽ"ƒ�̘Â艠 ‚pÑê6ÕñÚ/nÀÚÝêwýÚ»Eþ²M´TMðÌ„ñ T~QÂ%Õíƒ*Ž&Ô$÷†ãÜNƳZÿ±üµ¢µMÀ½}Çî»�úÛ»À>ÞÉ¡¾¶³νÿØãüðy÷U>´õL@bÊÏyæ0:Ìa¶‡þjˆ’¤<$%•rS©@£�IÆ$}8"@­AêÕ þ“=Z\�öü¥A-‘/Ì[öx”ï«Ó�ì°‚Ý‚lïQ¾Ï®aÈÞû>Ê`!;¾…ÏÎ;•y§ÉOl˜Ô ›Ó­¦Ëf¤Ê”Èûgæ²ýÔBLæHZz"i·DLø|\n =nMð«Õ‰Ó¥¦ÓFykùI ˜,>aÒÉ ËÊýWT—MqC&uq®Êád}&ÍÝQ8ÝÚ ƒ:¡Ôn‰ ÃŽZå¡ÕIM{M]Ñ\;ç8…iÕ„éhÕîqkÏ,»KC§5Œ¦îhÞ:µ�OªfPeJ ¡3³câ‚ T¡”e¥e·MiGÑn §Ý�Ç#±0³‚ôhÉõ$Dø¾at±’e0; ý•>ËZ“x§d•mIý÷ÃH�iLãÝ3óXŸЏðÐÜW—†Vs%�l?µˆ÷Ï(ÿºíÆaBäãÃêÔcu^8n§U¹¯*Z“X�YÁ¼´jR¢;ˆÐû^å;ºãé¨hM¢¶#“YyLÃl7Ðf‰¤¹'š3Mi”µ¤PÞ–Ä™ÆtÊ[“hìŠÁ3†V¿cQÓåùhÕn>¿ô#fVm¼¸Ú• ‚ ‚0q¾ñK½ñødOC„KDÝÙ�9¹ëÏÜýóCD'MŸìé—ˆŒŒ ž}öYn¼ñF¯Šh{÷îå±Çãᇸ¯Z­F¥Ráñ\x¿Óår�ë|ý©¯¯÷úZ’$""¼ßNMMõ :�N¶mÛæ³Ý¥*55•ÒÒÒþ¯].Û·o÷¸ %툇’ššê³lñâÅüë_ÿ Õ”¥àÝwßÍÝwßMgg'»wïfß¾}¼óÎ;œ½€ƒ¹˜z\õ¤ÿúxd5í üýð* ’ëIŽê@AAª,zo²§ Â%¨ºø抠3gÎd×®]¤¦¦ò›ßü†¯|å+^ëyäÖ­[Çå—_pŒèèhÚÛ/t‰ij }‡�¡´¶¶R^^îµÌ_ðiõêÕ”””x-ûýïÏ÷¾÷½q�ßT±zõj¯ ÇãáÉ'Ÿä;ßùNÈŽæ[Ha`è2óçÏ'<<Ü+Œº}ûv*++ÉÎÎõÜ>ùä¯1cbbX°` <†7mÚĦM›xüñÇ9vì[¶l¡¸¸¸ûÊÊJN�:Õ¿ÏDÙ³g�ϲE‹y}½jÕ*~ýë_{-{÷Ýw¹æškü޹k×.Ÿe«V­òú:!!�ÌÌLjj.t—9pàv»Ýo[bal¦~�UAAÄÖÓΫ?¿‘®Öj¿ë—lüw]ó� ž•0é$éBÅ4©75ÜM¥RÂVã} 4§‰8vÿñ{‚λ¯½ñàcOØñ'뼃x ªÔ Ö‚F:è# , Âc!*). )i:ª”\T©y¨âÒ�¢”P ÔÚ“ƒ¬þ&{ü.%%èvs9ÀéPÚ9;ÌJÈÏÜ�Ü݆ÜÙˆ§­Okr[ rO8,€ûÂqzEèmäÄ7³,»ŒëçcËò=¤Ç´#Mb6›SËÉúi<p ?Þ¶™W�-§´Ù÷*·©ÂæÔRÓžÀkÇ–³ûìê;cGÜš4”¬N-å-I<õÑUì<[HCW f‡~ÂÛhC©"«åÕcËylÇÍüjçgù¤rf‡aR® è±8לÊ3ûÖñÿÞ¾™¿\M�ijºúÈ2X:*Ú’Øyv.ÿ*ZÊ¡ªÜÉžÖ˜9ÜÎ5§ònÉ<þzh5ûËó©4%bqêqY].�»�ÖžHÜž±?:¬a¼[2�ßŸ½»‰}e3iéñm�1UØœZÎ6¥ñÔÞ«ØQ¼€êöœî±ß –<£ú�QÛÇS{¯âHu=N�zÊmeY yV´&Qeò½"ZA¡�Ón~#A„²[DKq!4î¿ÿþþÊ_ÿöoÿÆÕW_íµÞãñ°yóæ!C\Ó§{‡QM&eee>Û9�Nžyæ™QÏõ…^ð»üñÇ}+í~æ3ŸñYvóÍ7û,{ä‘G|B�ɲ̽÷ÞËË/¿<‚™NMþÎÿá‡æüùó÷ñx<Ü{ï½AWßKHð}ŸôСC477=OµZÍM7ÝäµÌår±e˯J“ƒÕÔÔ°~ýzü®ÿö·¿ÍÚµkûo7nÄíöñëÂ… ùÜç>ç³¼«k|~ö9rÄïò½{÷²wï^¯e)))ÌœéÝ~ýúõ>¡¼§žzŠÚÚZŸ1=?ùÉO|–_wÝu>ËÖ®]ëõµÙlæ·¿ý­Ïv²,óÔSOù=!8“_–A„)aøçðó;H�¿þ¶n…W^™ì™\ü¶^ü&ÚÎù]?çŠ-\vËC<+aRi´ 1(ÿªTŠ™õ­a*’ÔH}aÁþjZP©‘ú‚�Z½òÿ* £®TÙþ»°¿ÜÛX¶v‚ÓÖ$â¹Ò×ÎØãî½¹�Ýn¥‚¥«7 èvõVü맿褄$yˆ 337­šõ3O’Õɬ”:ò“GwN!ÒfŽàlSZo+͹¯ÍžÔùÃ#«è±ú[OY–p¸Õ«™Î‡¥³x¯d•¦„IiC,¥ DE[õ�±œoI!BgÃáÖ²:·„p�µjbZ*›Ìœ¬ŸÆ[Å y·d.g3&¥Mrð$Ü5Ý6#‡Ž]çæ I2z�“‚äzâCÔâv"5tÆPÜ�Éîss8Ó”NYKU¦lN]HÆOŽì¤ ¹½Ö1¦qªL ªÌeëÉỤ̄²mêÄúunYM§5ŒNk;N/D’d>3ó$Yq-Dl£_yY'�êסÙnàtcƨ�=ž”ÖÛp¤z:é1&®™]4ÙSAAA„1{á…(((ðªèרØÈ]wÝÅöíÛýî³xñbŽ=êµìk_û¯¾ú*‘‘‘œ?žûî»Ïoå±`=ôÐC¨T*¾ýío£Óép8<÷Üsü×ý—϶·Þz«Ï²«¯¾šË.»Œýû÷÷/³X,¬^½šÿøÇÜxã�L›6­Ý�¸÷Þ{)))áùçŸ'22ÒoHêb±qãF-Zäõ½2›Í¬X±‚G}”믿žÌÌÌþuü1_þò—)))á…^à�7Þöü###ÉÍÍõ vww³aÃ^zé%fϞݿÜd2±k×.6n܈ÑhôçÑGåoû›W@oïÞ½¬[·Žx€uëÖõWt:�üþ÷¿ç¡‡Âl6³fÍöíÛçÓÂvýúõìÛ·¯ÿëúúz¾ñ�oðÇ?þÑçû¬×2I’ÈËËòüGëÍ7ßä‡?ü!�=ö*•R nÏž=|þóŸ÷ÙvóæÍ>Ë¢££¹ýöÛyþùçû—™Íf®¿þzžyæ–,Y@]]<ðÇŽóÚ?33Óï÷vóæÍ^cüçþ'éééÜ~ûíhµZÚÚÚø÷ÿw^aŠ1@Aø”KJ‚'ž€;îP>ÛÿÞ÷`@V!ÒÓáÎ;á®»àK_‚¯|DkûÑq9m¼ñ«Í´Öû]?såm¬ý¯&xV¤Ó�"À¦ªú>î«î'SÎ…ê�RPÛ[ÝO¥¬—=*ü�"íÐòÃãö­þ'{”–½Ým`íÐ8PI »z[þº.ŒÙ×^º¯ÂbÿH2’$cÐ:ˆ 3“ŸÔÀ5³�󥕻 ›À •?²,auj9ӘƶS‹xýør*Ú’&m>#›KKM{<;аõÄ*LI“Z‰p¤ì.-õ�ql?µˆvK‰‘�ä%6c4�knÜ#K8\Î4¥±£xO~tN·fЇÿ¼¹=jN7dbwj±»´Ü¶h?‹¦U®›úí€�n5¶Þy©ÉáõãKyûôZÇ¡šÞìÔZ®�sœ£eTû÷µý=X™Ë+G.c_ùLLæˆÏrüôµ'ÿ¸,Ÿvs8•‡µùÅä'5 Ó¸&yvSSis*¥Í)“= AA¦47\ ¬™ày‚pñúo }Ø­!ùË_þ¦M›¼–¿õÖ[ü÷ÿ7÷ß¿Ï>wÜqO?ý´×²÷Þ{�ÔÔT/^Lmm­O‹ÞÑ�e™üàüä'?aÖ¬Yœ>}«Õê³]aaaÀ–ÅÏ=÷ ,Àb¹ðÞO[[÷ß?÷ß?¸ÝnÊÊÊ” ò{¹Ýnn¾ùfêêêˆ��ó¹L–¿ÿýï~Ïÿë_ÿ:_ÿú×)((ÀårQ^^îuþ.—‹›o¾™††bcc‡<ÆM7ÝäS•±¨¨ˆ9sæøÝþäÉ“z-ËÎÎæg?û™O{æ={ö°gÏ´Z-sçÎ¥¢¢Â+¬ PZZʽ÷ÞË›o¾éµü»ßý.O?ý´W…À'Ÿ|’½{÷rà 7 Ó)wuuñüóÏÓÖÖæµÿÚµkû«eއŸýìg¼òÊ+dddpúôiZZZ|¶ ç�¸ÿ¶mÛ0™LýËŠŠŠXºt)III$&&zµ4î#IO>ùdðp �7²|ùr<Ø¿Ìf³±e˶lÙ2šÓ¸x>¥!ä’’àðaè áKÜ~;ø¹ÀAƒ-[.!Û°Ž‡åËáœÿvBn—ƒmO|žÆ²Ã~×ç,¼Ž«îý$QñíÓG­c$’!\ PõÕJU@A˜²¤þ*yJè�±…þô:¤ Üv°vƒ­ì?í�Ì•ÞJ€’jÈ‚�}ŒZ'‹¦•³iÞ'LOhazBa:;*iò ´­=V3�­'󯉥4vEOê|.6N·º¿�æ‡çgQÛ‡ÓíûGýÅ ¹'Šƒ•¹¸v]Ç—WíbUÎÙq 'uÛŒT´%ñ¯¢¥¼sz>·Ï[ÍN–†®XÞ?3•äÁîÖrUÁÉÉžÒ°ºb(ªÍâTC&ŸTÍàXõt:­aãr¬œ„&.ŸQB”Á÷Íã`´[ÂÙy¶�7O.æ`eݶɭú9ZYEu{ø W\q ,ðZ¾nÝ:®¼òJ>øà¯åf³™?üÐkÙ�~ô#}ôÑÏI¯×ãp8�e‹Å°eªV«õ[Ñ­O^^/¾ø"ŸûÜç°Ù|;œ={6à¾ßÿþ÷/êð(çÿ /p×]w�øüzè¡aà´Ú}ê©§èìì jN>@PoEEE¼øâ‹>ëœN§OÕÉ>aaa~[ÜFEE±sçN.»ì2¯¹û Æ Íþð‡áNeÌÊÊÊü¶ÏîóÔSOyU©(--�;v°~ýzzz¼;¿477lÃüÄOpíµ×ú]'I/½ô«W¯¦¾¾~ȹ ¿�)!8ç'5‚ ŒYd$ìÚu!ü×çŽ;F7žJ°j•Ríî?€ûïWÆ»òJ¸È_ÇŒÉ-·x»wûÞ÷B`�›í¿û5§÷ø]Ÿ9{ ×~ýOJ%-?ü‡Ç®&œJ’Ѩܨ¤Aß;IRZ¤ªµHjÍ€›VÜÄm ß4Hj¥ à…@�<à6F²G©ì××¾·¹¬Tÿ³v�ÓÞ[ÑÏ3ôMö(í}û‰½íµÕ*ƒÎI¸ÞN¤ÑFL˜™9i5\WxŒ/¯ÚŽ+wó¹Åû¸®ð8—M?ËŒÞÐÇdå´eZ{"9^›Í›'³ë\!mIX�S·míT"Ëàp©9\•ëǖóþ™¹”6§`¶�å‹óÏJ›SG]g�ŸÅEKxÿl!=vøTäë°†QT—Å W³ûÜÊ[“q{Tý•Ò.6‡žjS55•W^y…ðð𠶯¨¨¸î¯ý+Ï?ÿ<A�uÍ5×püøq.\èwý¬Y³(**â†nj<€•+WrüøqòóóƒÞg¤¾úÕ¯²|ùò€ëµZ-�?þ8wÞyç�ã,[¶ŒÝ»w3wîÜa�Ç3Ï<Ã7¿ùÍ!·ËÉÉáÀ�ÌŸ??à6¼óÎ; çÅÐSÁÅù.ò–�~ªhö[´µÂöëþû•¶¬ƒ¹\`4*ÿçå—á¶Ûü¯ûÓŸàË_~ áÒo¿ þ*änÝ:²±òóá¾ûàž{”`ÛPêê”àÛ¯~¥TÁ Öç>ƒ.ñ²j|üqðãõ9{V™¿?÷ÝO>éÝÞ½Ê1ýùùÏá?þÃ{Ù÷¿ï¼š?qÓÒ`ÏX±å…^²,óîS÷Quâ}¿ëÓò/ãúoý•ZüJ»äIàñHȃƒ2ª� X'»ÁÓûGœ¨ )|ZȽB¹7ü7ð±/IÈn78íÈÖ%ü‡*j•µÊƒzÕù"ô6’"»0êhÕ.tj7˳KY5ã,˲ÊP«<èÔ.Œ:GÈOs4\5e­Él;µˆ7N,mG@–%l.- ]1l=±„׎/£.Äá©ÉâpihêŽæ_'–ÒÜMJTÓã[ˆ2XP«Bw±@YK2Ç3ûÖátkp_¤¡É�<²Š–î(ÚÌ‘“=¿\n5Í=QT¶%RÞšÄ[½ÏýP/¥ÞÐv¤ÁJN|3[–}IJìóHƒ/X†Û£Âl×ñIÕ ^>r_dmñÈ*ì.—Ðn #>¢›¥Yeä%6Ž8 y)’$•ä!)²“ÄÈ®ÉžŽ ‚ ‚ ‚ +##ƒ5k¼[Ч§§ûÝ6**ŠçŸžÇ{ÌgÝsÏ=Ç×¾ö5¯e ìÛ·�W_}•;vpâÄ JJJHOOçòË/ç¾ûîcÙ²e\ýõtww÷ï›��ísŒùóçãp\xzݺu|ó›ßdáÂ…üä'?áý÷ßG–eÒÓÓ™3g·Þz+wÝuaaÁu�(((`Û¶mœ:uŠ­[·²{÷nÊÊʨ®®Æív“‘‘Á¢E‹¸öÚk¹çž{Ð뇿(²  Àçþ�ˆÝ{DK—.õ©68T'µ•+Wzµ~�Žº{NßùŸó™Ïpï½÷’““ÔXK–,¡¨¨ˆ÷Þ{�íÛ·³ÿ~***°Z­dee1þ|®½öZn½õVŒFcPcfffrðàAþüç?óÚk¯qêÔ)ÑëõÜqÇ<úè£dffrë­·RSSÓ¿_^^Þ¨î�O£‹ÿ›)¦µΟ‡Ü\ÿë. . �<�Ò:tß¾áÇT5×ËþýÃï/\º^xV®ô]þ»ß�ŸJ¶~Í� ¿þ5\uUðÇMO‡Ï^¹íÜ _ø‚ «?ÿY™�Ó9ö±ÆÃ®]JUÄ—_öÎaLŸÛ¶Áe—�[|öÐîç¾Ké¡ù]—”=Ÿ¾ýw4Ú‘_ Ð\YÄÿÜ›8Öé�™VNæì5\qçÿ#2>¸+O>­LæN7f`q úIT�^4ËÕ«T.Â^•%¥Ò ËŠl·€ÃªT÷ëýÅc´�ÑE|x�ßQýÉKj`]~1I‘�„ëí¨$™h£™¸03‘+2ª¨ÆÂã‘°»´ÕfñÚ±å¢íïY�Z*Û’xáÐjv�›CSw4.�z²§R&sGk¦ó»=×pë¬È.%6Ì2âW ï”Ìgë‰%8=šq©08$IF£ö ™‚í\]n5MÝÑì(^À+G/£ÃFSW nÏø/µj7Ë²ÊØ8÷(˧—’Õ9âkì. Õ퉮šÁ¡‹¸ío n�ŠÊ¶$þçƒk¹kéGæ9ÈŽoõ­ìü)£U»ˆ6ZˆÐÛÐ�c rAAAa"üøÝ8�üû¶ãí¦›n⦛n zû«®ºŠ«Fð�²J¥bóæÍlÞ¼yÈíÞ|óÍaÇzüñÇý.¿üòËy÷ÝwƒžÓp ),,ä‡?üá˜ÇzðÁyðÁC0+øóŸÿ<¢í_{íµQgîܹÌ�;—‡zhTûeúôé<ýôÓ!K­Vsýõ×sýõׇdZzŒ‰ùUÄ-è5S4…ßËîÖrª!ƒãµÙãRùO¯q’ŸÜ@„ÎT`L–%¬N �14uSByyd ‹CÏÑêlö•ÍäÝÓó¨4%†¬m²Jò ×:ÉŒ1‘|å+“9‚–ž(L–ð�µ¶»´ÔwÆòÁ¹9dǵ�ÕN”¡�zl᤾ö³'ë¦QÙ–òZ”ÁBV\ F­�zø ž,+ÙÎ5§Òn{u9•$‡,$9V² ·†Æ®η¤PÜ�ÉÎ3…¨ÈÃéV㇪‹iÑ&¦Åµ’ÑÍú™'Y_pŠÌ˜6 Ú‘ýL”eè¶9V“MqC&ÍÝ¡ )«$y‰ A‡Ì\5í–pšº¢é²�ýõv_;àâúLv+oŒ\;»ˆÔhÑFë˜Ç/z�“h£…”È" ¶ ÷«i�§¹; »KpƒÖAv| kó‹™“ZClØÔù0GAAA�Ó“=AáSLÇÁÇC  £Á³³•ö � Ón€!ZgÓÝ §Åë�O%£Ñ7€PY C„¬½üÛ¿ÁÿØ›µ£¸8ؾn¼ÞzklcýøÇJ›àÕ`§œÿý_¸õV¸òJïå�<¢++'cVSס­¿âÄÎgü®‹IÎá–¼�>,*¸Á.‚XKõÉɞ”×ÔÍþŠ|º¬ƒ+âô†áÓ®¯êŸÇ·¬¬Lo0ÐaV€²$*5hTnæ¤Õríœã\;çøÄÏ{œÙœJ°k÷ÙBNÔe…dLµÊ�^ã"\gG%yˆ ³°qÎQR£Ûƒj£ì–U˜ÌªÌåHMf»»[‹Ë=µªê¹ÜjZ{"Øyv.¯_F…) ‡+4B†ëlÄ„™‰ 3³zÆ Sƒw¶9�“uÓ(mIÅéVcwiè²…ù¶ˆ!»KK]G'ê²ÈKldFbá’}Ô•,mN-•m‰¼U¼�êöB“SI Z'‘z%0•ßÊU3OÖ�!ˆ ®GVáò¨x½h%�é8\,Ný”{ì�†Ã­¡®#žy¼wf.‡«r¨m�ÇîYk‘`¨T"t6O«`mþ)rš™•ZGv\˨Æë¶¨hMboÙLÊ[CRÖiœµô:�‹Ô¨v6Íÿ„hƒ%¨ý-N=e­)¯É¢¬5™.›§[=¦Ð­Œ„,ÃÇåtX‰1ZX™svÊ%”`k¤ÁJjTÓšY˜QIZ´iø�{í9?‹“õÓh¢�s\x+sÎñÕËß#3ÖD„>ø€¡ ‚ ‚ ‚ ‚ Â@"8†ª®L0Pûß>Á‡jÿLû`áÒô£Af¦ïòï~7¸´Ÿù <õThç¤ÑÀë¯ÃWÀÁƒ£Çh„ÿùØ´)ts�=æ4á¹ç`ÍšI™Ò”tbç3ü×Ïý®‹ˆKçæïoÅ™ôxaQ¡¯öjN{pÆ~šå&5rç’½¼qb 5í}ßÿÞv§n7hT<„O �G ö &IJ(ÐeG¶ö ;l(3%"ô6’#;YœYN^RÃDÏxBœiJã­â…¼]¼€sÍ©!3>¼‡™Éu\‘{†˜°Âõv–N+#Úh *s.ËàôhX˜Yɉº,>:_@qC&õ�q!™_¨¸<*:¬ÔuÄQÛ‡Óº°õªçX“WLjty‰ ¤Fw½ïÒìrêÚc©jO¤Çfà\K*¯Y1d¥­‘8Ó˜ÆáêæeT‘×:êPNIc:Ï_­¦¹'wÚ&G­ÌI­á¦ùŸ�ÙÉÂÌ tWP­TeY a%Gur¢nç[RØ_ž?êÇžÛ#�Ke½‘rºÕ4vEóÒ'«Øs~6盓鴅�Kø \ggì\?÷(+sΦ³¡·�z¼•ù¼|ä2VæÓКª 9 Í,™VƬä:" 6â»™ŸQ…1Èê„Êó?œòÜdŠj³ø×‰%ÔvÄc¶�½5±Û£¢ÝNQ]yI $O­ß?j•½ÆÉg �rE^ 1&R£Û‰4TÌKj¤¶#žKxÀmbÂzÈŠoeZ\[P^AAAaj�$‰°°0,–Éÿ\'11q²§ ‚ L"8Nž› ~ÞïkÍ{î\àý‡ øÅÇ?ÆP@Ñþ÷Ó© xÀwùÑ£ðÚkÃïo4Â_þ2üv.;¦TÂŒ‹ƒÂB˜=ôCtŠÓ锪‚‹èX¤o„k¯…;F?ÆxÛ¹S¹Ï-ò^~ÅpÍ5ðöÛ“3¯©äÌǯ°çÅÿð»Î™ÀÍ߃ð˜ä�™¿ü&ŽîøoÌM¡˜¢0IR¢:X5ã ”Φ¦}àšÞ  |ZõUþ“=JЗÙÒ�ì°€ÛÙ_U§vc4“ßBjT𬋅ӭ¦²-‘½çgr¾%…NëèÛXjÔn ‘zK³Ï³qÎ1dTi´¢U»I‰ìDdkÍ>±Æ¦Å¶’ÓFis åm)ì+˧¹':d•öÆ¢ÝÁÛÅ 8UŸ’ÐOv| 3Ɉ5±&ï4 3+ˆ1Zˆ1š Ó9† Wrd'Ób[˜m­ÃæÒr®9‹]OqcÕ¦,>máG ¡+†ýùè5.6/ÚÏ‚ŒÊ–epËjÊ[“(ªË¢´elÁS�Ê�VãF¯qrÕÌ\‘[Âú‚S„ëm¤DuŽxLƒÖÉô„fêÚã(H®çXÍtŠj³1Y±9ƒ RJµNtêÉ .É2˜NÕgRÞšDYk2oŸ^ÀÙ¦4ºmÆ�O«v‘c"'¡™¹iÕ¬Ê9ËüŒJ²âZG=¦Ç#awi)iLç£ó³hìŠShQ§q©·‘Ùź‚S\=»ˆ¬Ø Za:ñá=¨UÁ½f’epyL¤G›ÈŠk!Êh¡²-‰ó-)«Í¦ÛjÄ=Êð§G–è°†q¨r9 M¤Fµ“߆FÄUiãDBF%y(L¯!/±�ä¨NÖœb~FQ+a:Ljæm°�ŸÜ€ÕøùdÔÙ ï½ ‚ ‚ ‚ —n¸�¿ÿýï“:‡eË–d§,Aá’7ùŸ*]‚<%ü´n�ÿõ Ž-°råÐc UiP?�¾÷=Ðúù,é›ß nÿŸþÒÓ¯7™àË_VÂw¶AER eÝ©>ÿ\°¾ô%xÆÇ× =ù$äå�} †òððm›ïòÿóD°ìè[¼ÿ'ÿJCx,7ÿ ¢GÞ¾1,*‘»ûxÊ´Ù=óñË”ìýÛdO㢡·‘å¯BJoöÉ/YKD¦¾þ¶¿ž€AXY–ÁiC6w€Ó®ì£R!!£U»ˆ4X‰ 3>†êUS‘Ç#ÑfŽì¬˜C\�0$µÊC|X7™±mdͱ±ð(w,þ­Ú=¦.óqáfâÂÍä'7`¶ë©6%à–oä@y�Ý1¸Ü*&뇘ݥ¥¶=Ž—�\FYkʘÆR«Ü„ií,Ï.å†y‡Y1½”Ĉ.ô# LöÑi\Äi\Ä…›% m°°£x»ÏÍ¡¦=žn»§{tîöØ�Õfq¦1�¼¤Ff¦ÔcÔPtºÕtÛ�T´%Qe ¾bñ`}mH"ºIï&!²‹Ï/ûˆU3Îõ·­äÈÎÞ꟬+8ÅÞ²™üeÿ•¯Í¦¶=—gèûN­r®³“ÛFÊ$„‡í. ‡žšöxþqô2>ÎÕ³ŠˆÐÛƒÓâpk¨íˆ£¼5™ºŽ8ÜžÑê$IùyžÕA^rsRk¹föqÖæ�zn’Zµ›¤È.»™�ZKSw ûËó±:u”µ(m�nͨÚo÷Ø œªŸÆç:‰ 3“y˜pÝØïÓÑèk—¦µ³qÎ1®+û,+V¬ ½½}ø�Ç�Ñhä¾ûî›”c ‚ S“Ž“ýû‡¾ü²ÿu‘‘0wîðã¯ZÏ>ë�J¸ Ç ?¾pi1àöÛ}—¿ñ†VάYð­o^ì|ö³PWç½Í¿û¼ô”–*•ýy衱33•€ÝC�mœñ´};Ü9Þ˯»fÌ€²²É™×d«<ñ>oÿáKÈ~,ZC87}ïuâÒòG=¾>,ŠŒ™A$¬'@w[­Ž‚Û£ÂîÒ †‘eðÈ}�NáÒ%Ëàq.£ëv!Û-`6�ÛÕ_ýO­ò�ÑÅÜ´j¢Æ&šŠœ5žŸÉÇù4tÅàt�.¤VyHŠìâšÙǹsÉ^#»HŒèsøo �ÊM¤ÁFNb3ÿ¾v;�\ÅëÇ—ÑÜ5êÛXU·Çsª~ÖðQßw}’"ºX“WÌ- qùŒ3Dèí£Õøe°²(³‚œ„&>3ë;ŠònÉ<Î5§�zL·G…Í©å|K2盓™•R‡F\0©ËFqCŸTår¦iˆ+h†¡Vy0êl^´Ÿ+rKÈOn 5ªƒpÝèZ¦s°"»”Ô¨vžÞwïž™GUÛÐícâÃ{X�QÉV|À¹gB:Ÿá¸Ü*Î4¦ST—Å'U3ø°tU¦.-žQц¢U»Éì 9$×óÅ{ÈOnIø ¹'Š¿ZÍÇå£ÿ�RÑ1'¾™Í‹ösÓ‚C„éìÄC׆H¥’1hœ¤E›X™s�ÆÉ‡¥³8P™ÇÙ¦´ «F$ËN·†}å¨%«gœA§vMJpz|3óÒ«™“ZÃU3O1;¥½Æ9)sAAA.z½žo õá© ‚ L0'C…ª†ªÎwùåÁ�?T•À™3ýWz%tÔÝÜ1ŠŽVÚçåAV–Rí­¡ΞUn¡RP Ì?1’’ ³ª«•[M�rÜ‹MZšrßåçCl,45)A¹ãÇ¡¥ebæ°i„‡û.6lw×]ü€»« Ö®U¾WÃ1™à¾ûà•Wü¯ÏΆyóàĉàæȃÂóχö±jÿõ_¾-•% ¾ñ øÎw&gN“©îì~¶ÿî xܾ•€ÔZ›¾ûO2çøÙSø4‘e�‘üûëk:x�<à&€Â%ª¯ío ðŸ$!Û-ȶp9ú—�.J‹6±¾à$‰‘]4á‰asji鉢¤!ƒª¶D£l©©×8IŠTÚ@n˜u‚U„‡(ø3�$�Zò®³3+¥žu§pºÕì<;—ÚŽ¸Q…kÆêT]&»ÏΦÛnS¨*;¾…åÙ¥\?÷ó3ªú«ö…’Zå鯶i°¡VÉ8Ü´jgšRq�¢"œŒ„[–8\•Ãôøfr›Ð¨‡¯èt«iìŽæ@eU¦„Q·NÖ¨<¤Ç˜X5ãëò‹Y˜YAjôøTÚSI21aŒÚ®�s £ÖÁ‘šZ{")kIÆ#«ÐiœD,¤Dw0/½š5¹§Y<­‚„ˆQü�9BY¢®#ŽÖžHZz¢Ø[6“Sõ™T´&QÛ�Õ9Ú Ÿ�EèmdÄ´qõì"rš˜ׯÌä:bÂB¬ë°†QÖ’LqC�]ÑÁ_à0H´ÑLnb �±6¿˜™Éõ!™ß`*•Œ^å"%ª“¥YeD-dĶq¸*—ãµYÔ´'ô¿V †Œ„,C‡%œò¶dVæ±,ë<ÓšÇeþþÄ…÷0#±‰+óŠY”YδØ6r›/¹Š¸‚ ‚ ‚ ‚ Â¥å¶Ûnã¶Ûn›ìiSŒŽ“�> ¼nÙ²Àë‚iÿ JE¶ÈHÿa¾@Õÿ`díµZ¸åøÚ×àŠ+og2ÁÖ­Jhi4UŽ£¢àž{`ËX¼xèm?þX™ÏP±ï~W Wùsîœ2Ϋ¯ÂÍ7û_÷ì³Ê|‡’�÷Þ _ÿº˜ ¤¼þðøõ¯•ÏîÇË–-¾Ëdvïnÿ¡~wüæ7Á…ÿúüãJ29ÙÿúµkÇÔjáÏþù4µúýÒ—àÿþ_°„®`Ç”×\YÄÖßÜ�Çåû¡ºJ£ã³ßú+)3–LÂÌÆ�ä/Q(¼# O&`ëS.Y}?3dxܾðóEîý�lík�Ï6Q+³Rê¹zöñNA]6#U¦DÎ6¥ÑÔ=ŠdT’LRdK¦U°eù‡ÌI­÷vŽ’$¡·±:÷ iÑíô8 ¸Ë ¨n�ï­6þ?ÇÜ ³ÃÀÁÊ<Þ;3‹}tÁ*�Ziû»bú9n^pˆuù§ˆ4„¶r�?±afÖæ#ËJe»6s8&KĨC ‡«sȈ1qÛâýƒØÞêÔQÓžÀîs…4tÆŒøx}1÷øˆn–L+ç«—¿G~Rý¸'Ók�\=ëÓš)(SBd§2±»´8\j¢�ršY”YÁêÜÖ䕌ãl”™$�Ë£¦Ûfà`e.'j³(oKfOé,šGõÜšJ’Q«ÜD¬L‹keiV_Xñ¹‰M£nYHCg,'ë¦Qׇe-Ê%ɃNí&'¡™õ'øâŠÝ¤D�à³Q2h�dŵ’×Ê‚ôJæ¦ÕðôÞõJ cytU [z"yóä"bÃzÈŽoYuÕá¤E›Ø4ï6aVÊø'AAAAA&‚Ž“în¥ú˜¿°YL ¤§ûo—l@PByÛ·û.Eðê«á¹ç‡´Š‹ƒ/~Qiû¥/)meƒ¡Õ*a¾‡†øøàöY¹Ž…ßÿ^ Iuù)Vó�æç+-bkjC’”ó$Põº¾}ñ ¥]®.ˆB-99ðøãpÇÊíüùá÷©ØX¸æß凃9ˆÏçÌQ*?ò§?�|N‡ÃÆ�þ×Ó;+W*• _|14ã…Zc£ÒêwÆ ïåQQÊãïõ×'g^­µ¦˜×¿—Ã7ñ(©Ôlü?Ï‘9{Í$ÌL¸¨Ènp;{ÃMø©(—¤¾ê~ó’ t9ÀÖNßàÚõs�pÕÌK/ü½À¶ÊÛ’hí‰ñþj•‡£…u§øâŠ˜•RG”aâÚ$‡ëìä&5qßåïe°òÏ£+h·„áòŒÿŸoÖpÞ-™ÏéÆ #i»>Hrd'ë NqÓ‚C¬œ~nÂ+j-É*'ÊhE%yxëÔÂQ·âÕkœèµÎ ï«SGCg,Gª§cuŒ¼r£$�Jòpû¢}\;ç8…i5µÃW µÊÍô¸f{«ú-Ï.eÕŒ³ØœZÂtvÒ¢ÛIŽìè_?^ú‚x’$S×˱šéü×G­†o~Ž�”ßõÕÕpà@àýý…áZ±Â»\P*¾û®ÿuááÊýöàƒÁ…ÿZ¼X©n8Ô÷n´V¬•Ÿgú·ÿ-·^W^>t˜2�ǯ›7oäãòÛß*•2§ª@‡ª¸y)éh*çõ_Þ„Ãê'É+IløÊÉžwÕÄOL¸ÉJÐï*ùÂM.²ÿÊS’”­�à°Â€ëj•›0��Ù)µä&6MðÜÇŸÅ¡ãLcï�™GCg,N÷ÈCsá:;ëgžäêYÇ•Êë„kÔ*áZ3SêùÌÌ\?÷™±&tjç¸ÛæÔq®)•¦®(Ê"× IDATœ͈~|JÈhTn¦Ç7syî®›sŒyiÕĆ™QIûs8Ê`eFB#×Î9Îòé¥L�oF%�ü{èpk©íˆcwélº†¯èw¤:‡�ÎϤË6ªÇ^rd7Ì;ÌÚ‚b ÓjˆÐÛ&ô±'I`Ô9IŒè"1¢‹‰M\6ý«sϰbúyæ¤Ö0-®mÜ«9ZJ�ò_Ç—òüÁ+xíø2NÖM£¾3“9"¤aX•äA«v¡·2/£ŠÛí窙'YšUN^baZR¿.·ŠºŽXNÕgr²~�¶0<#¬œ§U»H‰êàÆyŸpeÞi²ã[Ñ©C[¡0µ‡h£…eYç¹2ÿ4±a=hT#Kzd5ÝV#Ý6#Öqny®VyÐkœ,ȨdeÎY2cÛÓM\ÈVAAAAa<ˆà8*lç/èµh‘ŒìÅý·‡]¹ÒÿØK—ú_ÞW•p(ßúüüçŒúª{IR*ÂÝzkàm4¥ráHªú“› ï¼ã?Ü6T•¾¡ªû ·þµ×ü2%I©|8ÜØCILTaCµ �@-§ƒmÿ;~àu§N�|>ÿùŸr ƒoCµÈö§«K Oú“�?ýéèæ8…0? ÀnS¯ýâlfÿ}Ã×Þý+ò—mšàY ��á¾€UÐú¶›Ð™ Â8émgÝÿ¸wèÁ-¸È=&¥úŸìéÿe¡·1-¶…‰M¤DuLàüÇŸ,KtÛ œ¬Ëbë‰%´tG�x µÊMRd·-:À†Ù'ˆ6Z&¼ª€J%e°²6¿˜/­ÜÍ’¬2ƹêšG–°8t4tÅÒe ÇéV�¨ $É´–f•qÓüC|fæ 2cÛÆqÆC‹ ³pEn ëò‹Y˜Y‰^ãq�Ël×s¦1�׎-§¢5iÈme>87›wNñzµ›¼¤¾ºú}–e•‘éç"‰ ¦s�c";®…ôhQš x>4wGq°2—'v_Ëow]Ç«Ç–ÓØƒG]y¸¾ÇkŒÑLFŒ‰Ù)µl,<ÊWW¿Ç¢Ì R¢:0j¨T¡}átk¨lKâDmÅ XGÐþW’d$I&\g'/©�»–íeYöytׄVÎìŠÜî\º—üäÂõ#‡JÈhÕnÚÌÔ˜úZž�­ÚE\x×Í9ÆÆÂcDê'6à-‚ ‚ ‚ ‚ ‚0Dp %�ÿ €�qÛ·CQ‘ïòåË•0Ý@ééJ‹a>ü0ð|@ %þò—Co¬çžƒ™3ý¯ûâaݺ¡÷¯¯‡C‡ i˜¢4óæÁí·û.é¥Àû¬_?tÀqÆÀë^~ÙÿòTÆ«˜غUi�*þªJÂð�‡> �×�|>ãáÞ{Á  Î7¾º¶Â¡¶s§ÿå LíÊ…ceîhⵟ߀¹Ãÿ|Í]?£pÍ– žÕóóCH µÑóx.´öûó½74%— Ooõ?¿$�Ôà´!ÛzÀÚ£\½0๑ÿÿÙ»ïø8Ê{ß㟙í»ê½ËEîÝÛzï$99�äœ4nBn’CrÂ!•TrS &!…^C  ¸€{ï*VïÛË”ûÇHX–v¥]i%­¤ç�ׯfž�ÙggGkíÎw~¿‚F¾xÆëÌ-jÀfûŠQ£KÇfV�d�`Ä2¬°P~š‡¹EÇÉOsc7�~Ž¡ØÍfæ7óï«ßdÍŒƒ£úXž ƒfO�~ÁHâÖ¬f…’ÌNN¯ÚÏY³öŽyÛßXJ2;™™×D¶Ë�%Á*iº.¡j2aÅ4äñ$IRÌ„”áU§+Lï¦"§�’ÌNìcØö7}X;“_¼q)ûšKñ‡m£³™#,.­åª%pÛyÏsßÇæ3«Þ¦ Ý=¬*vñ’$sOKሚX•Í^åÙí,)­%ÍJ‰ðZAz7Ë+ŽrÍÒÍÌ)lLx}M—©^Ù»„|¸–�’ÄÄýä¹<¬™q€Õ30§°Ë(´wAAAAAk"8Šöî5ªîE-«¥ïk¯ÁÛo\n·ÜÎpÛÿ:�FûÞÁZ×>ø ´ºè"ãÏÿ÷ÿ¢W&ìÝÞ·¾5p¹Õ ßýnìÇØ¿ßh‡[Zj׊ŠàÒKÁï�½Î—¾4pYssìfVVìPœËe´Ì�¦³Óh[ÜßÊ•pÏ=±ç﮿.»Ì¤ V}oñb¸æšØã‰Šv\íß>_|ëlmÞœ’íÀøùÏ£�I¬[7üª–£©© º».—å‘WÈLUAo'Oýè ÜmµQÇW^q;‹Ï½eŒg%Lh½UÐT…�!¿>ÕÒa2Ð1~ùÒµ!ŽkB~z 4îß“Ìvz™‘×Â’Ò²�¾¤¶µLŠfbK µy¨ºœPõº^Ór[8wÎ 3ºÆ¤ÒÙPdYÇe RUÐÄÜÂzʳ۰ŽR0±Ù“Á¾¦RªÛóð„ ­k’42í~VTevAø´ý�¥2·•%ÇÉOëÆnIlßéH -ÞLº³éð§¡G ºƒvÖWÒêÉ@QMÚçì‚•Ö‘çrOÂpnbÜA'5ùøBv´žŸåáü<ÇR’ÙÁ™Uû¸vé&®Xü!›µ�E%µ”dva1©£öÙAQeýº®-[ååÑïïõÂyçÁÖ­'/ñEøÚ×bÏmíZÈθ|8m€/º(vPì±Ç¢·ÿ½çž�•{55-™¿÷=£zà /ÀokT ¼ûîØóû�ÿˆ=–ˆ™3¾ÇŽÅ¿�ÜÜØc�@âs-wß uuÑÇV¬€/~qL§·¶¶èË,ÛyŒ…pÐËÓ?¹š®æ£QÇŸ{ «®ºsŒg%L4Q3OºJ4F鄱 Œ;]7ŽuM´åµŽŽ®)èA7zÀmTÇDG6éXL ³ YXRGYv;ŽIXa,¢šyçÐ|vÔW&¼®$i8­!–Ôqñ‚met§L@Ò,kdØT4±¨´—ut*ëµx2ÙÓPFu{ž`b@³É�;g7ÓsSä*‘•9m,.©anaY?²dÄÉâåÛ¨íÈã`K1u�9¨ÚÀkšÝ™¼´g)5�ù¨zb³eIÃn ³¬¼šS*Ž�ãò‰ªd£ÀbRH·ÈOssjåQn\ù.Ÿ^õ/ØÁœ‚ƄáÃVÍ´yÓyïè\޶&¼¾,ïËÊ�qîœÝ8­©ó>î´†™ž×¬ü&J2;‡u Ë’†Ìè¯3ì¦ç¶rJÅQò\£ÛR]AAAAa,‰à(,t×7¬WU=hÕ[ù/Z@ˆ?¨iƒ·$¾þúØc<`Tÿ‹fýzøþ÷£�ÙlpÕU'/«¨ˆý8ï½õõÑÇÖ­‹]mN’Œý×ß#�Ä.Ž«Ío¢í³³áì³c¯óŸÿ½M®®¡ÀX¯ÉYg ^y/^3fD_­ê\,Ñ•½bµÝ�Üzkìñ{ïMÎ>M¶XÀÂÄϦ´HÈϳ?»Ž¶ºè}£ç®ùgÞxïÏJ˜˜¤�ÿ©©èJ4b�4U…‰î£à Ç9’qµBЋîwC8`”•EÂe Q™ÓƧNy—k—n¢8£ ›)…þ!O’ˆjbsuûšJ^×i ³zú!V”%ÛéK¸Uìh2Éé¶ 3óšYX\‡s”€“ŠÍVðÑ,«d9},¯8JIfç(ÌndŠ3;ùìio³¨¤»9±ÐTP±ÐèÎâHk!Ç;sÑ¢üZ<™¼²o1u¹ WÌtøYRZòòjfäµ$´®¿òìv.ž¿�¯ŸûO¾|æËœ7w'™öAJÍ�‚°j¦ÓŸÆ®†rê»ù C®ËË5K7±¬¼Ú¨Œ˜B>ØLJ³:˜–ÛBIVçGmŽSI¦ÓOYvóŠêÉrÄY_AAAAaˆQ·LH–Á€Ë–Á[o�Õþ·7ø×Ñ»wÃÂ…'�÷ŸÅ îÚÁÝ�ÊËc·ÄU¸ãŽèc½þð‡Ø-p׬�¿üåÄ?þøðZ±jšÑ¶6??úx´`Ws³*ŒÖJuõj£Ýoÿ6¸—\}û��'^«¾n¸L1Îï½û.<óLô±^øƒ±�¢Y½ž~ðõ‡’™}¹Ûÿ6b=?H½¶ºO? /½_óøýïÿyk±€c;�Ñ¢© /üæ³4Œž†®\||áwQ[“›-0Ñ~ØÆ�YVqZBev‘ãôÒÔÝ'å¬kF«SM“­göìg]?qá?a¢Ñ{¬êÉÇõº��ÝÓ‘�‘ ‘$dY#×åaIi EÝØR0œ•,’6s‹I!’@øD’4lf…\§—l‡«9õ*Wet³¤´š¥eÕ4¹³’Ôt‰@ÄF›/�fOfÂ-lÖÎ8ÀuË6�n $eNÉf5+¦w“n`’U�, ç¦L’34d’5Ö0&)±cG–t¬&…,§�L‡R¶æo“JiV«§äòE[0Éãü’G.v¼wd.ŽÎF×¥”ªØ+¢š«fT-ñ÷‘®€‹}M¥¼´gNk8i@“¬ã°„8{öÎ�³;%CÊ‚ ‚ ‚ ‚ ‚ #!€£Ìã�½{aþü�c}€Ñ*;MM'þûí·áK_x¿5kŒàòå±ç1X%ÂòòØcõõF;Ú¡´·GÆ $öWV+V@i)CQ‘Q-=ýDVcÑ¢ø¶Õ×c�Á/=ïqá…'/¼pðíD3ؾ †Þwƒ…¼âÝwƒIF@Ÿ/öv¢…ìÆ[]�Q‘2Vkê?ýÉ8–R¥}ñd®¨k/ýöfjv¾u¼döj.ýÊŸ‘åÄ«ƒS“ËbZn+—/Ú:<µm% õTFSA "ñQªCïû§ˆãM˜`tTŹÆL+I Ëè>ø»!äpß¹E |ùÌ‘çòŒöŒ'$‡%B^š‡ÂŒ.2©`#df1©XLÚˆBDý… Õíyl8:›7.ÄJü—<«YÁa‰$u^£aF^ 󊎳µn:Š:þ‡­&…\—‡yE ¤Ùc”lFDÓ%|!;�þ4:ü.2íþ” ùEÕd¼=?Ÿ©ý3èHhÚðfgTH4ŒXPÔä^ $I`‘U¬)ØšXA„±ÑÕ|”¯ýoG=3–]Ìܵ×#‰ EAAA˜$ÆÿŒÇ°aCôàüù`±€Ýóæ ïmÿÛëµèÖ®5*ÔÅjÿÛ;‡X ±Ýpƒq.‡cðñ«¯†¯|Åhe<Ÿµ››�ʉgž9pìÒKOþï .ˆ½�õë£� ¶ï~õ«øæ‹Ó9²õ!vpÏ“À¹ÿ®®ØÛq¹ŸÓXøñ�áßþ fÌ86g|ýëÆ}RA¬`¬v×É[ýG·½u¬hæ)\ñõG0™­c<+a"“%‡%LžËC¦Ãb P’¢ä¤z+ŽåŒa„tíÄm�Reº®�¢@ =èé¹?ýr5» ‘E¥5”g·�Á¤'¦,‡Ÿªüfªò›ÈOKàJ‰q¢j2Z+išDP±ÐpÒá‹QZ{ ¥xø`yù1šÜY쪯H‰ Ã¢<»�Õ3�ãû–´S�ªÉ´ûÒØZ7�—ö,c팔eµc³LÄ*pª6y/fБŒ¢ÍÉÞ®‘žŸ÷‰ð>%‚ Bòùº›yäîsˆ„|Ýöu{ßáü[îŸr�IAAA˜œÄ'›1+|'ËFh/V•¸wÞ9ù¿;:ààÁ�÷ë­+ØÖ‡Çžß`!¶dˆËÍ…—_†§ž‚sÎÝŽŒ±ª÷••�¨²g6óˆæÑG£wæ”$¨¨HΣIF¸Îš„lÕ`- S5¤ Á-·Ä¿ûîÑ?îãå÷G_>Ñ¿wj:ò!»ßúsÔ±¼ò\yÛãXlIH¹ SŽ®K=ÁÙx#îýDSЕ0ºªÐC1–÷ùkÏHþiåÔ×· ²®ëQn'Æ…ÐûbhZOUËÁ^ 4=àE÷wAp`ÊõôœZqdÔ¦;d9|Tå72·°�‚ôÔÊ’ŽÍÆfQŒV¶IzOî¯ã’ÙHÉv¤ý­¨8ÊUû±¤H0—5DEN§Ï<@®KGƒª™h÷¥óî‘9¬Ûp�Í¢Ù›5ì*uÂèKö+#Ëi¶@ÊüÜ ‚ ‚0ömú(ü×ëÀÆ'xõ�/£kÚ8ÍJAA!y&xÄdb¬úÞ²eÑÛÿÂÀ €±–-Zd´Ê�ìñÁã�&‹åäÿ..†�o¹›L�<;ÐÐ;‡µkcî}4úòôt0�bñ…þûm8B¡èË£µkŽe°àôé‰Íg,½ù&<þxô1‡cä“%ÖëÜÑ1¶óH¶½ëÿsìªÛŸÄj^u!A£•ŸvÒûºšjĸå‹[]²ŠÚd§ª"ÚÉ7E�º×„ñ¤)ÆM�#¬ Aw‹ÑúWxÿåÕ,*­…IN2Õ„>ʄ渼\¶p«§$ÇéÃ,� e"uÍ )‚‘$ü¢�$š.Mˆãn2pìm*ãwïžÏ³;Và ÛQ5ñ•ÈTPžÕΗÎ|…ÅÇÇ{*‚ ‚ Œ“ ¯;êrAAa²ÿžGSÀÞ½FËÕôô�cË–ÁÂ…—75ÁÑ£—¿ó|þó'/“e#À¶xqôÇ*èã"'?|¢ò^4šf´Ü­®†úzˆDŒå7Þ8øz±ttÀ[om†û»à¸ÿþÁÛÿ¾ÿ~ô1�§§›d Ÿ¯ki‰¾<++þmìß½…2À´i O 0¶íõãØÿÝÝþ¾ö5¸ì²è­¨¯º Âáä<ÎHäåE_Þ>Á»4ÎX~ {Þy8êØ»�~—óo¹Œg”b¢¾qLÝ`Z"$IÇfQ°›#ØÌ"ª©' x"¨« HrOœ¢Ï¾îÛS.…ß»“MëÉGXe°›$Lò‰] ÷C=a@I¹·€âÚO©CïÓúwˆ÷IFÐn£úŸÚóK“$a5)”fupjå×’åð ¾­)Îx{�&DL»9ÂŒ¼&J³:pX¸eÊ8ž«Êtø9}æ~—Ö�n"§x{M­§’lêÌrbw“�ª™pìk*å¥=Ë0Ë—,ÜFqF'Vóøi…ѓᰲò0ùéÑOü ‚ ‚0µØø€h,‚ ‚ „&€cä½÷ࢋ._¹2zpï�7¢oçµ×¢/¿å–Ø•ÄbØzµµÅ{ùeØ´iðõ‡ žøû¹ç·X}î¼jjŽ­\9¼ m€£ÎÎ=×hÿ+ø·¿ÅÞ¦®áÂXõ+èìL|®½jk‡¿n¯ææèË ®__übô±… Áf‹]i0–ÿüOøä'£�=÷\ò€MMðíoÃÏ~}<-’G*V剬\t.…Ó—Ó|l뀱ýï?†Õ‘Á™7Þ;3&: � ›Ÿ\——,§ŸN¿‹°&¨ ºAR0[{Òk}R½mU§H¨­7P¢é:N Ø$òíà°È˜d©§Ë¬FwX§-­A�HONrŠì¦Òó‚õV«ü¨ú@ôWâ£#;è7„}Æ}{R›éö Šëøìio13¿9%ªÄ Éa’52Ò¬A,&iœw™?çÍÛżâ㸬ARš¦Éx‚6×TÑpQ–Õ�©\£(³“¤Šãw’²™#gvá´¦À`‚ ‚ Œ“Á?7}üüo‘Ä/…‚ ‚ ‚ L@"8F6lˆ\¾<úý£µú#ÐtìØÀÖ«W^ýþš6t€o°`{;Ü}÷àë'"Vè àÿ0ªü�FŒÇƒßüf`Ë^— .¹V¬ˆ¾^¬ö¿½ÚÚb7n4žÓxJFðÍ7c�ÙlFxòùç›×ªU±ÇöïOl[Cùå/á _€9s’»Ýd‰Up°ŸË‰@’$®¼íq¿çb:ßùúØÓ²Yuå7ÆavÂDf6i,(9N‡?�½Mel8:›ÖHº‘‘Rˆ„A ƒÙ’å=õË·&IoË_‹…XSdaM�Ìâl™,‡‹I6v‡ªpÌ£±µ]åí†Ý:�0Mþ]”‚t£…o”6¾'“Œû(4O»ìgaI§Wígå´#8­á©pÈO9’¤#Kãߦ*¤X8ÚVÈâ’¦å´ö„Ç{V‚08_ÈÆáÖ"~õöÅ\<+×.ÛDqF7V³2ÞSF�¦K„Uª&ÞœAAˆíÀÆ'�ÍÎýÜ/EPAA„ GÔ3#Cµáíï�w3Ljrnß~r¾h>ü0öØe—%7#1XðëþûG'ü'ÚGóãGŽuu°yóàÛlß]rIÜÓ5É64 "ýÖ·›Ó…Þ:x°c8Tþýß“»Ídš¬lÎ ®ýæ³däUDßüìOØùúc<+a2pYC¤Û‚8,d¹OøE�€BWBFµhWwkzô哌ÞÓÆ×i‚SòL|j¦…Oδr~™•eùVæg›™›ebN–‰¹9VZ¹¤ÂÆçæX¹´ÂÌœL M›üû*5ôS5Õ¸z#ž_ˆ”0º» ‚PBôV 4É.[�…%u,*©#ÃÕÿ&™`Ä¡Ö"ê:óð†l¨Úø~¤sí¼{d‡Z‹ñ…íè¢~¨0ŠŠ2ºXQq”t{`DÛÑtOÐÎÎú >¨©bwCþH ”БP4šžÌ÷ ]—õ�AAʾwÿÁëënE­‚ ‚€ñõï±f…u¯zùî_»xâ]�â;\AadDpŒlÜØ§“Û::¯‚«:`4ñ_xÁIE“™ ·Ýÿã­YW\{¼¤$öؾ}ñ?Îp<öXôå±*ÃÅS½ï™gb�}â°téÐÛèõµ¯ ¾†ãØ1ˆD.O$F83–ÓNƒ¯=¾íØlðÀ y/�^y%±¹Åãý÷ᡇ’¿ÝdˆUðС±�Çhq¤çqÍ7Ÿ#-§4êøÛ»‹ýïÇøá„A˜M*vK«IE–{{ݪ †�0”ã]]ë¹é£—:O:`– È+6qC••sK-ÌÌ�1é ^¯�ŽÎn:»Ýø!2,:KóÌ\;ÝÊfVæÉ¸LÆiòI¾«ÆYO µ·í¯ªÆ>v?"¡k zØ�îiƒpÀø%S’�$H³©Êobaq-Óób\ Lh¾°�] n-Är %Lnƶ³µv5íùøÃV´¯°eD€DLq"±˜ÒlòÓÜ,*©å¼¹;™–ÛŠÓÑv5]¦ËïâH[!Ûê¦Ñåw¡¨â+’ñd’UlæNk‹IœøA!‰øbC„A„Ñ¢ëÐáѸí�N>~O+¿yÞà ›Üû˜›+¾×Â/Ÿõà ŽÇAabßn��öî�ᆵ¿>øx²€n7üõ¯±Çï½>ö±¡·sÙeðÚkðøãF0šî�ê>2~ì±9sàŒ3†žÃ`žx"vÐ1šX�Á¾ž{ÎhË�Õ O?;àÕËl†ÿý_£Uí›oÆn)<‘lÝ:pyUX,ñoç±Ç¯Hwß}F%ÅÁ””À“OBYYìû<ñDôÀb2Üqtu�ζG"VÀõëÇv£)=§”kî|Gzô†×ü*G¶¾8Ƴ_ÑÚˆˆ/3=·…ë–o`nQ=YN¿±°· pÈo´Ž¤êM³Mîý­é�a� Š%Î.63#ÓŠÝ,ÓÙíf÷þƒ<ýâ¿X÷÷ÇùË£Oñæ¦-Ô6¶ I³™¥yV®žfaIŽD¶"âû†Ñ§iF€5Î÷ÝÛ‰ÞÝ AK¢|± IDATïGá?‹IeQI-ß¿ì1Λ·‹²¬ŽÑœõ¤c„]S?æ ÙØy¼‚#­…øÃ¶„ªd麄¢ÉhúÀ��#-øi´$ÖS¾ý¯,k˜äTzcKý}6Þʲ:8oî.n?ÿyî8ÿ9>·ú-n^ý«§'犙ú®\Þ=2�=�e´x2’²Max²�>–çª%P•ヶ ‚ BeÏŠº¼7(‚ ÉÒСrãOÚ¸ä»Í¼½k`û>M‡¿¼îå¢ï´rçºN:<âÂ8A!1"8†Þ?¾û ÕõèÑØ¡³á>æ~;g6ÃoÀhTpë?vöÙFuµçŸ‡Ã¾½ü2,Y2p[ƒµÌýñ�Án?y™ÅŸùŒdLK‹½®5ŽnMÆóˆG]lÙ2ôýÂaøŸÿ‰=>mšüüä'ŽeeË7n„»î2–Ížm@�Îøæ��.ËÈ€SO�¡Ü~ûà÷¹ãxï=øîwáÜs!=fÍ‚«®2އÁ¥—Æ^?„{î‰N‰jkƒo~sô¶?��=pygç䩨+3¿’kî|»kàÖu�—ÿßÍTï|mf<Y?s Èuy°›{“Ã2¨ô ×h�ªiD­t5‰KÚéºñE�à ¥.™ÕEVfg™‘ÕÇëØ´e¯¾õ.>ÜÆÖ]»Ùø^¯UQ�$ Y–Éq˜˜“maU¡…ò4 ÿ›œ»l|éôÿÔ8JEK蚆ò�¯ÝƺèÓí*sÚX9íÅ]ØÌÊh?ƒI£Ý—ÆÞÆ2vÔWr¼+g¼§3( E5¡ê&T]Ž»–�„ŽYÖȰ°›Ã'�I:“†ÍÁa #K‰ÿÀ›d«Y!ÕÖ¾� OÈ‘255]&¤˜ñ†ìãÞÎ9•ØÌrœfå7röìÝÜ´r=ÎÛÎÒ²*²Û9gÎn.]¸•3fî#ÛéÑc¹ƒö7—ð÷OçÕý‹iöd h¦$=!“B®ËùsvqýŠ÷XP|œl§o¼§%‚ Â$íÂ[{Z×~ó¹AC€o=ü�Ñžš ‚0ÉmØâ?~ÓÎßkáÀñ‘!r}��ÆkÛ‚\ñ½Vîx°“£Mâ;^A!>æñžÀT²a|á Cß/ž o¼ŸúÔà÷ik3ZÀÆãða¸ûîØa6“ î¼þë¿ ± 'ǸE ߥ§A¶•+�Àb¯?Œ†X½vî„¿ÿÝþÍ�k„ £¤ú‹·jÞ£�Âùç}¿Á*"ö÷‡?¯ÅÚµÑÇóóá‘GàÁ¡¾Þ"–•Ai)Q«},Yb´e¾ðB#`8R›6E_¾fMüQ0Bž—\×]û>kÖÄ®þ8”o} ŽÞºñúÃàóŸ‡+F÷qâuá…Ñ—Ut¢Ê)™ÍÕßxš'î½”HðäzšªðÂo>ËU·=AéœÕã4Ca"±š²>l¦²Ôœ’$# +a$M‹}©ƒ®�4ƒ:šif™Š4ss­ä9Lø¼n=ÆÆ­Ûغs‘pMÓÑ‘0K`–Oüƒd5Éä8Ì,η²Ïb{‡j„ÿ¤d7Ðõ>m{vr¬»‚põu¢ÜFëßž_$dYÃ,«Tæ´R•ßLÎÃ0SQ‡/�½Må쨯dz^KÊVOÔ4 M—1ÉZÂ!=IÒqZCLÏm!Çuò1"÷Œå:½ä¥¹itg£©‰ 4]î °I¤r°É�MMG^Ê„í"ª wÐI]g.eYí¤Û^>å8½ÌÌobf~3ÌßÉ¥ ¶!Ë'Ž«9…�hšŒ¢šðG¬ìm´ˆØÙblaÅLSwÏí8E5Q–ÝÎ’Ò²�þ«i¼ß[M ²¤MªÊ‘é¶³ò›¸tá6®X¼›y”Ê ‚ ‚ ôãHÏãÚo>Ç“?¼‚ÎÆ�Wdïzsg}zˆö7‚ ‚Ї¢êl>æ¡W½l9<¼“½�°Î;‚¼±#ÈËíÜxv +hï&‚ L9"8†âiÇÛÑ»v }¿·ß:øî»ñÍ«×=÷!¶‹.Š}‹**ŒÛP¢U\·Î¨$WX}�Y³à¿ÿ;¾ùö«�jO? ¿ÿ½hÌ£�ÆÿØŠ×^ {ö Dt¹Œ c-VpíZøéOÛÖ-·@y9œvÚÈçÕ×ßþf´@mºŸûìØ=|9ÖÎ=7úòÉÔþ·¿¼ò\uÛ<õã«Q#'ŸàÖ”0Ïýüz®ýæsL‹RBT�ðGl"}’èºn„¤B°…�ÌQRê½eò$&]¢MT²mÓ3d²l2²®âöx8tä MÍ(³ÙøP– ðŽœü%„E†B‡Lž]Æe‘ðER9Î3AiªÑ²Zëù…i°cQ’A ¡ºÑ»›�ðŸ~¢òŸË¢"»�ϯ}ƒ³fïý¹OBº.¡jrOÛTå ÛiêΤ±;OÐ>ô }XÍ*9íܲö æÕŸ4f3+Td·³¶ê Íž,žÜ¾Šî@b%©k:òÙÙPÉšépZ“pË(ya÷2ùp ÁHj|aÚt²«¾‚¿n>ƒ›V®ðÚLUkgà+g¾L^š‡¼4ÏIá¿^Ór[¸lñÌ&•gw®àíC Fô˜ŠfâÝ#sèò;ùÚÙ/±¼üÅ™]#Úf²¹¬!æ'ÓáGJá÷ªDUæ´ñɨÊoÂj• AA["˜˜­[aÙ²ècŸþtbÅzýþ÷±‹güú×ðµ¯%¾M!9®¾žz*þû«*ø|àõž¸y<ƹÏÖV£»Ù£��³¦ ¯×8?Ø_m-TVŽý|„Ñåél;âžG»iîLÞE…¯l òÊÖ ó+Ì|û†lf™°˜&ÙÉ AaÄDp 8`ü¢›žû>ñ†j ñûÒu#TøôÓp晉­Û_WœsÎÉÕÿÚÛ�°Ü[o탓%Þ`G¼úêà!ÇÇ�€X"š›�mþóŸ±Ã�ñúà£Un2ªÿ�ñÔ×û:ýôÄ·åv¯ëóÏǯ%êþû�ðCv>L’]»ŒÇüÊWÆæñsñÅ—éºñ38™Í<…Ëoý+ÏýâShÊɺöóôO®áºÿû9%ã�˜&“¬²¸´–ú®6úg¡ëRO›Z‚^°¹À­¼nT\Ó5ÐåÔH'‘®ƒY»IÂÔóÜTE% GY–Ñu†Âï¼Ä×�Dà¾ûŒVÌÁ$wþúÓŸà;ß9yY^TU�ÇDÆþ»ývc®¶áuÚÂë5®|æ™á­?ßú\½±ÆËœ9PP0pùK/A]ÝØÏg¬•Ï?“K¿ògþù«›Ðµ“O¨†nžúÑ•\÷í—ÉÌŸ¬—ÀE9ñ;ÎÞŽ1‹IeÍŒƒ4ugòAõLTL'¾Î ù @×5@B:)ä×s¯ž±ÉšjëDÉRï~0ž¯$A(æÐÑj<^m�,\0ŸYÓ+ɱ91IF…ÀɹwƉNO•JåDÛßA¨’ñ©„Ðý]àë2Ö•NWK³:X5í7­\Oš-ˆYN^He"’$H³…°™Ã„”Ä>ê„3ûšJ9Ð\ÂiÓa1©)T5™Fw6»+8Ö^€;˜X…>]—Ðt飰t´CϨ„8¼Ö¸ûK1Ë*ŸYõ™Ž@ʵðì ¸x÷ð\ê»s~޲¤a1)Ø,a,&5êû¢Å¤‘áð÷´gÕÑyùÃ6j;ó9ÒZÈ´œÄ[FTš&Á ŸImf…yEõÈ’Ž®ƒ?l%)ÇÞ‡M—é8yq÷rÂ3ùinN©� ¾ð;$ià?EOOýèJ<¢ ž›YVYRZÍüâúž@Fï�d´ŽÑÃÁáÊÞ*€SçĹ‘=Ó{B‘ Ë2 á9r¬–·ï¤±±¿Ï‡„Tã¦L�]4ú4´è*q5UÖuùÑÚëÀÛ‘°þë£,«�é¹-dØS>ü`7‡ùÄò÷9{­�#ª™êŽ|ŽuÐîO#¬¦ÎµRÕD»/�-µ3xóà‚„Ûó‚Q¡NÕåAßö4]J¸‚]_¾4ݲš=�eÃÞÆhÐuèò»Xd.Ç;sP¬™a0¿¸ž53±¨´³iàÏÚŒ¼fn=ç%––×$ÜÂ4¨X¨ïÊæX[�ÝÙ ­+*sZ¹tá6>½r=«§ÇùA,]—„­l86›ûß¾�jfÒâ¤|EœÖ0å9\±øC—Ö&¼¾'dgSõ,ö5•â [GTMPAa*‰È�¢\åÊ,äÚ»ž'³`zÔílõ÷¬ÿÇ·“>?A˜ŠL&£ Æg>3Þ3„Äuz5ø——«ÐʯžóPݬ$þãâÜOŸ“FU‰…3$~!£¦Ãîê0ßþK7þ¤�'ßóã Š/óA¦²Ô9«5Eüñ�F¼X¶o�[wÜaTÑ‹&y�lÿ~¸ì2£¥í)§À²ePREE�–f´ómm…cÇŒP]¢UËjjŒ Üi§Ὢ*˜=ÛgmßÛ¶ÁÖ­FUB0*Æ­^ ™™Ñ·×Ôßãz<Æv\®�cš{?_<ÀsÏÁ¸Ù³�}7¾±ßJK�ðak+´µÁÎ�ðä“àó�ü1SSc”T¿ð“—ßy§qL*‰�£üÈÑ£pÅF%ǵk�[a¡QY/'ÇhÜÒ��°w¯ñº9’xÞæõ×áì³£� wîû›qÌÊ1Îq8{ݯ~5öqXS3ôcË2ü× \ÞÜèv²˜½ò*4%Ì«|yÀ˜·£ž§~xŸøÎ¿p¤�c¹F!eI¤Ûƒ,,©ãºyeßâÁ ]ƒp‚0[0Êõóé Ê'68 ˜$p‡uê}ž°F¡M&Í墢¬„ã M´µw¢ôyóÔ4‡ÝFVfeÅEdf¤ÑtZ*�!�@Ï]'Éî½mu¥_Ïû!ªÿ…<è¾ðv‚j´oî}!Òí*²Û8£jËʪSªRÝx2›4æ×S™Óšðºº.ŒXÙq¼’g¶¯ä¦UëɰFa–‰ +f»³9ÒZHmg!%ñövK˜ [y�Ša“ŠÃÆfV0Ija@ OÐÁ¶ºéœZy„Å¥µ)J=ÜVÄæê*ö5•Òp%T�Àn‰P�î¦$³ƒ<—'ê>ÌvøXQ~”l§7áíkšLH“Ù\SE®ËË©•GI·°D  ÑÙ-ʲ:8köÍDD•Ùß\J‡/-áÀ§Ž„ªK´ûÒÙv|o:ïR×.Ý<â÷Z‹I%Ý`v~#iÝ ¯¯j&ºN6UÏâ…Ý+¸dÁVÒí£p™ ‚ ÂÖŒU pû«¿•! $ Ö­3Ч$Ú­Jƃ7¨óÌ?¿yÎCDYØN×á`}„ÊB3 #ûèP}„ÿ}´›?¾ìåÖ+Ó¹p¹YTA˜rDpŒµ´·d¨®ºÒ^2ô†’F+˜´q£q‹Ç¶mÉyÌáVGL„®!²Á‚dcé�¬¬4Úð®[7²mƒFHïõ×G¶�X’ùsÓW"7ûéqxýõ0cÆÀå÷ßß/2EÌ]ó Â7oÿí®cî¶Zžüá•\÷_ÂæLNåaò™‘×ÌuË7°£¾Òö¦Œ#At7’=Ýdéµêù›®Ÿ¸M’t›„„I†Î�Αn•Z�B±ÓJzF:sgͤ­½“Î.7]n7Š¢ I²$SQV̲Eó™S5“ì¬LÚÃ*ÇÜ M>• ªc’Œm ÃÑþëÛöwˆ}©ë:¨4_xÚ!0ŽÑžãÔe 2#¯™ æîäœÙ{™Wt|ôŸÆ!K:9.yi^œÖÁˆ%áŠv›KxF5±fÆʳڱ[Æ·•mH±ÐìÉdûñii+Ât k;%™�Ì/>ŽÍ‰ù–—a÷S’ÙA®Ë‹;èH¨�ª¦K"V޶r°¥˜šŽZŠ3º°›#Èòø]}¬i»ÊÙplõ]Ù ·\£°ÍÁe Å<¬f…‚t7™?6KdX$w7T�ãòqyÇfä6“åô'¼�©ÌjV˜S؈Ñì^çÑ­füaÞPbÀ^Šf¢Ý›Îó»N!×ååìÙ{ÉvúFl•$«I!/ÍC–Ó�Õ!¢š®ä·½®’4k�S+ã°FR&l+‚ ‚�²¢]‘>ÈwA½!ÀÇp1žö�•DP’G–áþn¸a¼g"ƒÓu¸óÁ6ˆ¯UïP$ ¶ sþrµ­Ã¬vÒOk·Ê·ÿÒÅÁz·^™Üsj>Ÿ�´´´“–�rÊ)|0'ÝôÈ#�pC¿7•ïÿû|ç;ß§ BòÐÚz¢Bnn.mmmã8£áÙ¹s'o¼ñ\~ùåX,ñ=PU³9¾ïÞGãç~Æ ¬Y³æ¤e7ß|3<ð@Rg¸D `A˜"žzʨ8Øßÿ7Äù)$Aï‡ÙþÚÛáW¿ûù¤ŠÅçÞª«îŒ:ÖÙx�g~z ‘�8 .D'K:fYëÓÀPò¡GB=½ß¥“Ç?ªg;Ö B‚*ÔûT>lQë‰`·Z™^QÁªK9ëôÓX¸`>U³f1{öl–/^ÀÇV¯äôÓV’•™’Lg@a{K˜z¯Ú·èœ0ZOøO‹³å´ÔÓÂÚÓf´ý yÜeV~#ÌÝÉçO�™ùM¢úßItL’FŽËKU~3Nkâ_È)šŒ;èà@K u�¹£0ÇÄÔwe³þð<þ¼ñc|På ‚8­œv˜Ny�LG쪆Ùm¬šv˜Ù… d;/QVM4tgó¯½KyrÛ*ŽwæR¯V˜,š.R,4vgs¼+E3 «ó»¢™ðElDÔ¡ƒdÓrZ¨Ê�³4y?ª&ÓêIgsu��(åÊ…¸”g·qÖì½Ì+l Û9ð=4Qªf¢±;›Ç+ð‡�ö'ËéöùinòÓ0€õQkV™É�të�¾ªCGÞlTɲGȰʔ¦Ù˜^^ŽËé¤jÆtBá’$á°š)ÌÏ£ ?dû;U^¯WØÖ¡ÓY6jÿMð]3ÆúT—ÔÔ>•ÿ`Ðê’„¢ûºÐÝ­FøOS?Úùv?Ós[¹fÙfάÚKeÎÄ»ªk´I8­af4pÎì]tùWá ÙÚ†ŽDwÐÉ?w-GÓd.^°�Êœ¶q«¸§±Œî^ξæ2ºG Ëè  V)Ìa�PšÝÁé3÷Óêɠ×FH±ÄÝÒV×eBŠÌ¾¦R²~––Õ�åôá°$÷ËÑøæMî,Þ8°�·Íçpk‘L°š©Í¡(£‹ååÇÈs ý%ĪéG8ޕǶºé ÏYÓ%º³yzÇ©˜e•532¿XTøL”á$«ƒ•ÓSוKCwš&%üÚƒñ~ ë°·©ŒG¶¬AÑL,,©£,«cØó3ËÅ�Ì)l`NaÞÐt ¶õD¬T·çóè–5œ7ogÌÜG®Ë+á‚0û7<ÎÑ­/ô¶�÷TA„QPàýa­—–SÂÇïú'OÜ{YÔJ€[^ü%k>þíÍO&M�ǸõõòËð‹_À‹/‚±×¿öZØ»wtç(#±ir¾ßÒuÈN“˜Ubá– �ŠzŸ>ÇE ¬s¸!B0<òïâuj[*òED„Ô¢ë:÷ÝwßIËöíÛÇO<Áç>÷¹qšÕä!Þõa ùà#è÷oÿvòòûîƒw߅ÇÇcVSGE…ñA·¿wÞ�¿ýmì瓊μñ^ÔHˆ=ï<<`¬áà^øÍg¹ì«#›ÿçk×›ëØñÚt6LÆT…b3G(Hs³´¬šºÎ<šº³€ž6ªJ=à«ìFpFêóÿ=w4Z’ÄP­Y' (°¥2l*i–0« ¡,ÍÅÌiiÌš>Í›õ"CªŽ'¬ÓÜáµz…gk{!¤-……xõ„üz�)µOøO‚ÁŽ/£í¯‚îë6ªÿù:ý£ÃÒa 13¿™‹çïàªÅ2§°aôŸÎe·D¨Ìieմü~`R§žPðG×%|!;oZ@D5c·„9Þ.J2:pXÇ.¨j2]'Û�Oã½#sp³õ¯Ù¤’e÷‘f "IC‡ÍÓmAÖÎ8À®ú ö4–RÌ$úÞØîKç`K;ŽWRœÑ5.Á¤&wÔÌà/›>ÆžÆ2Ú¼Ãk{bOmœ=k%YC”,æÕq¨´è£ª´‰†ÎÚ¼¼upV“B b!Çå!ÛéÃf»«¶ÃŠ_؆;èÐÊXB'Óá'ÍÓŸ‡D9,aVN;L}WGÛ hrgˆXnµÛëh[!í¾4¬&…�b!Í$ÝÖqm’5òÓ=LËm¡2§•=�åtÇ.ÌUD5Sß�ÍSÛWT,¸¬AVN;B†Í�Ù4v?k!ÅB›× «}Û­ëF»ã¼4™v¿¸ˆ@Hy»Þ|ˆ·¾c¼§!‚ Œ1)ÎßÕEPF®¶>ñ ؽ;v°iæÌ±�“ $êpcì‹j{ë öù·²ÀÄyK휿ÌNU‰õ¤ûž¾ÀÎé ìhºÎ¶Ãa^ø À»{B´{†ÿÇÑ0§/HìÂhAo_úÒ—ØÛ/ þÒK/áp ï»q!õD"‘¨ÕþÜn÷8Ìfò@A˜bî¸Ã¸’*=ýIJìlxí5£$ûl?!äæÂ›oöÀg?;>sJUgög„ƒm~fÀXÍÎ×xé·7sÉ—×!Éñ§’êlà­‡¿‘Ìi )ÄbRÉtø™SØÈÖº$©÷·nä±Â~㠃Ŋdé‚é­Ò†ÄdI»õ>Ã� ›ZTÚƒ:GÝ*畘Y‘oÆa³`êù†AQ4ê½*ÛÚU^9a{»Ê!·†¢ÁäØã@ëi-­ÇÛ»A5ÜþkÆ+xâ[ ª‚fΟ»“Ïœö…éS¼dlTM&¤X†öéµ§±Œ¿n>»9Âê™Sؘ¤NÓ$Þ>!eYÖ±mPÁó IDAT˜T®^²‰sæìÁ$k){¬@Í®×Ç{ ‚ BŠë >~ÏÅx;^�·åÅ_b²ØXu¥”�·ùóaÑ"£óQQßÉ·´ÀñãÆ­¾Þ(–p �<$ﱄÔRÛýBÈÒ\ß‘Ç ›üüòYJ¿¯¿Ò·^™ÎÕk†îì!K+fÙX1ËF0¬ñ‹gÜ<³!@¤ß×Ì«ÄOoÉ&Ý!ñ韶Gý¼½é`˜/Çûä!ElÙ²…ÍýÚ*Šhg=™X­V.¸à^yå•�–9�N.¿üò¸Ö7™L7éëÁä–[nIÚ<'*„)¦­ ¾ö5xðA蛟ª¬„ý >ö1ð }nSH€Ý¯¾:°õ¯ª-�{?¬ I’¸à ¿C�„9ºíÅãG·½Èkú*çßrÜÛl©ÞžÌ)ŽŽážý�$£ àüâã,)­fG]%õÝ9øCV�tˆу^z�LY`2 ³|Ô X¤ ßïVêIê@göviT�:¯Æ»Í*™›Éhkèk4ø5¹5vu¨´‡t| ˜zvÃÄÞcH×1vzOøOëûMÏà{QÐýntw ½ *­c1+d:œ;{—.ÜJeNrUܦº,§ŸYM,,©£3ࢾ+gXÛñ�ìo.åñm§Ñtb’5ʳ;°™G§òYD5Qß�Ãöºil«›ÆÎú ö5•VÌà 3Ê’Fº=À’²Z¦å¶b·D†¬(K:.[ˆ,§—,‡ŸNê0r{Þ��-%<µ}%u�yet²rÚaæ5 Ú†x$TM¦¡;›w�Ì៻—óaÍLºNt}øqæµ3pþÜ�亼qÍÛa 3=¯…‹lgÇñJê:s‡\'𮀋=�åè[%dIgíÌÌ+ªÖ¶âÑ[Émýáyl«›FuG‡[Šèð§�t?³¬ÒØ�ҵә™×Ì…ówP•ßãuX·®ßWv 0›á[ß‚ï|Çø{4wßmtÛºývØ´ix�#¤¦Ú…æ®èOQ¶‰L§Ì g¥a5ý�Ÿ¨lµz®•ßœ�ÓvòAQtv ±x† «Y¢Ó£ÒØ©2¿âÄgk»UæÎë2ùÂEé|ægm4vžxü‡þ+—ª n_ìzom„�JNºi¸O[aT<ÿüóüú׿æÅ_dÑ¢E|õ«_eFÿ …0,"(SÐC®[wòòåË�+”â X qúË_`Ù²“—é:Üxcbø§Y6qñ—也_OÝÞ·Œïÿ1¬Ž μñÞ¸¶§D‚ÉžbÒ¹² Ç{ š,éTf·²¸´–¥åÕxÃv‚‹Q}IS äG÷w#Ùœè²)ú©u]3*ʽˆ'vôM’ŒŸªƒWÑÙÕ û»Uœf�L«‚­çiú":ÞxŒª˜{¾�˜Ø{`Œô†w{C¤šÒ'Ð;DðO×ASÐn£í¯·O0¢'„šf Q•×Ä™³ö±jÚ቞M39N¶¢zN�v˜ã]94tßÄ'ÚŽUÓ%¼A;oXDH±â´„9kö 3º±šl½òF@×�ªq!ÅBWÀÉúÃsyjÛJÞ<¸��bFFxMBÇ$kd9}ÌÌof~q=éÝ Uà+ÏngaI-Ýí¾t"jbÕD—ßÅkû³©z¥YxBvlæÙNö`Ò‚”Š*ã Ûéô»ØR;ƒÞ;—}M¥´ûÒ‡^9“¬b7G8sÖ>Κ½«)¾Ð¢ËbVA#W-ÙŒ;à ¡; UÞ­í¾tÖž‡Ë"¤˜Évz±["ØL kxXÛìK×%TM&±Pß�ÃÎúJþ´ál6WWõTÐø3#¡SߕûGæP’ÙEIf'eYØ-©Ù8Ãd^QvËF¬&•n¿‹úîlüa{Â!ÀÞ}q¬½€¿ —-„$�Ãr˜4[â퀧ç¶`3Gð†l"VÚ¼à úFT3õ]9<¶u aÕL†ÝÏ‚âãdØØ-‘¤VÞô†ì4º³8Ô\Ä;‡ç³þð\v7–Ÿþë«É�Å–Úœ^µ§5LIfר€AAU±èœ„×ÉÈ«4¸áɈà’$øÃ Ñ‚/² ]dܶo7ª÷uvÆ¿þç?¿ü%ÄÛ‘pÉxúi£PÀM7ãFbî\xûmp:£�Ë2„B#{ŒÑ0XÐÒýcÅsæ¡Í9sâÜyóà�à¶ÛŒcåý÷ã_Œ�å¿þe„.‡rúé°q#üùω—Bêzu[ì;Ž…ùîÃ�|ãã™\{º‹ —‰ßþÓÃY‹íüÇ%騭'>ë?ü†—m p´IÁf‘øçÝXÍ-Ý7ý´� ‡ÄìR3ÿ~A§Íµ#I9&þ|[ßúsEçÎë2˜Yl¦º9Âÿü£;æ÷ź‡VÍ@AR‹Õjå¶Ûnã¶Ûnï©L:"(SÔC¥ÉøÃ“—÷ê'!65Ê9®/~}tìç2‘È&3—ÝúWžþñÕ4ùpÀøÎ×Àž–3iZk,>÷óã=… Ï$ë¦w³°¤ŽýM¥tú\5 ƒ¿Ý™…d²Uûëm,É©Y°·¬Ÿ¦õt‡�¯R¡ ôæ 4| UY26£éÆMÂþ¥à3ŸúTý‹»šgŸ¶¿îVðG¯ •ýÿÙ;ó8)ªCm?U]½NϾï3, û. Ä…¸%jˆ‰÷K¼ I4s“˜Ä%jnâ’h®IÜwMD$€Šì²ï0 ³ï=ÓÓkU}Ôl=Ý=ûÀ õü~­Ì9§ªNUWUwŸzÏûZ™ž{Œ¤HÇ <-+‚ b4øÉ‰« %ªQPz%¤kAUaÏ™,Üf¼²�1iE¤ÇÔô‹ ¬(­�¥¸>ޣ婼¸å"—§ãé¥ë€ATˆ0y¸ ç Æí`|F!ñ¶žÅ‚Î~�øˆ<~‰�§†RêèÄΠü²ˆÃmÅ]™Ìª}“¨qÚ—~šÉYäöS¬m½ÛÆÎÓCØ[œÍÖÂa(Í ÁÓͧ0aˆ²¸É�¯ )²‹äí¶ÐSÀfô’[Eb¤»ÙC½+Ì™n²µp8.Ÿ £A&+®ŠÜøJF$?lì)^Ù@£ÇÊÑòT6Å¿öN¥°:¯,uz+ST¯,áp[)¨N¦¨6žáIe}îÏ@Ñrܾ1roíœÁÑŠT¼=µ¶§Ámåý=SQƒ¨05ûQ–žÅ‹‚J’ÝÁâ Û(¬NdÓ‰‘½î�ª‚×/ñÙñQ4¸m\?q3£SÏ�WE´µÿÜ–fðñÁq||h<Åuq8ÜÖN�£_1Ðà±PTOI],µM$D4ôY8­£s¶Hqá¹î‚ŽŽŽŽÎ`²F’5æÆÌ¹µWËë"ÀÁÅ/Ùw‘Õ„ ðÙg0gŽ– Ô�?® Ézüyšàðª«`×®Þ­C’୷‹ÿZxõÕÞ­ ?>|]I7~æÞv<󌖺ÔF�Ò„“¿ø<öX÷–ÉÈ€ zQ|ë­ZµA×^}%X¿7¼É„_†UÛÝl9ìá7DsÙ$+ó&j'©Ð< {à”—ß½^DZ’¶†V“6ÀlÔÆå\*;�ûØy¼–yÍÜ}]4ñQ⣠üõqšxñ“žûȉËÛùïëCE>¦�0÷aÏ¿š:tˆM›6Q__O~~>³gÏÆn·w½`dYfûöí9r„²²2ÒÒÒÈÏÏgÒ¤I­ïQRRÂçŸÎÉ“'‰��eèС̘1[Wðù||òÉ'8p€ÄÄD&NœÈèÑ£1ôâ†%Ë2Û¶mkÝÿŒŒ F�5 ûßWêëëùâ‹/(((Àãñ�››ËÔ©SÉÈÈèõ:KJJ8|ø0Ç�Çáp0tèP†ÎðáÃ1›Ïþµ×ØØÈþó>LZZ&L`̘1g½ç;ªª²uëVöïßO}}=Ó¦McÖ¬Yƒîœ….ÔÑùó‡?À±cš`TsâÁK/�Û>}yé%¸áíßuuZ$À»ïžÛ>�/HF ×þômV>º�ŠÂ=AõÛÞ«=–q—ön”gÚ M62FÍ&)§“Ñ�n“[졇Ùtb§kpûŒšCñƒ· µ© B¸˜—V7¡í×÷`@‘Qe¸]ÚH€AsD·¾ljMšÛ©m‚¿€6ÍÿЀ=BUšE-¯n A‹ýmÿ¹5‘j»z€ü”3\œw�«Ç|IFŒ›ØSŒ™Ñig¸lÔ^|²‘í§†RîˆFî¡°ÅõËá¶q¤<�•{¦±ãô2㪛ZÄÈ”ò’J1ºï¨ªšk׉ªd—¥³¿4ƒÓ5 œ©‹ç@i&wßc¢¨mu26½ˆYÓр±›v-$Ø�z†+G瑩ÉÞk Š€_6à— ,Ë ÎÁÞ3Ù¯La\ú)â#ɉ«$¹‡1ª n Ç«R¨nŒäDU2Ÿ¥ÃÚ8êÝ6¥÷‚ÏÔèZ&eœd~þF§a’zvììf7Ã’Ê™?jª 뎌¡Ékb µMì/ÉDE ÞÖÀÐÄrf =BN|9)QõÄÚœ=^箢ŽW¦Pæˆå@i:ûJ²8XšŽO–:½FZ®E1Ðè±°éÄÒ£kµPT¬F/ÃËPñË"ÏöSCQU¡ÇΠª* «Zôî§ÇGáòñø$&d’ݳQ“ä'5ºŽ §˜šsœ%4öB¼ª" ªPîˆf[áP|²H^R)ÓÊH‹®aTJq�ß#¿,RëŠàtM" Ñ( |vbë�æs¸<=¬ë_{U Ñcáxe ‡ËÓÉO=C¬µÉ  ujˆïpã.ýn·çutttt¾~´ˆß~ð šêƒ­Ü6¿ó{$£… —}ÿôîëÃEiq¸ýÁèÑð׿ÂÒ¥�·»ë®Þ‹ÿZHM…õëµm÷|ùï};o³g<Ø»þ £F…�ÿ…®�Å-·§ZõI‚GÕb›ñ‹ÎÛ ‚fäÐSñ_ —]Ö»åt~Y¥´¦k÷”ꕟ>WÇ[÷I M5¶–ï<æáûOÕÐñW‡( ˆÍÏ Ú»¶°v—‡/Uðáo“±[ÄVñߦnžüW÷&ú<Õ÷‰Þpúôi¦M›Fyyy@ùœ9sX»v-R»í[o½•—:<œÞ¾};SÂXnZ­VÜî6AfNN'OžìV¿N�:ŲeËX·n]@¹ÉdbÉ’%<öØc¤¦¦vk]§OŸæÁäÍ7ߤ¾>x\311‘[o½•û￟˜˜˜.×÷Å_0sæÌ€²5kÖ0oÞ<ÊË˹ûî»yã�7ð…°R=tè#G¶M,ýÓŸþÄO~ò“Ö¿%IÂëõ"Ï?ÿ<÷ß?¥¥¥ëˆ��å§?ý)÷Ýwbg¹êÍœ;> ‹ÑK|DcÒÎ0kèaÜ~ »Éƒ¡]´e¤ÙM\D#FƒŒ×/Ñä5QçŠÀ¯ˆ(ªˆÓcfSÁ6ÍÁ² ÊÑ4yû>+P4÷¿É¥ŒN-bhBïs…¢­..~�=ÅÙ(Í Þeë““bUcU�Qì-Φ°&‰½ÅÙdÆVqá�£ŒJ9ÓÜ›ÉKrd=¢ à•�T;#ðø�øä¶Y¨åŽ6Mau"GÊSÙu&¿Ü?Óêsâ*™“w�oNþ‚(‹ Qì™XÉbô‘]Ãe£ö ûJ²(wD÷ZZð§Ç´�´èNV'1#÷(#SŠÉŽ tRŒ±6a7»±½ød‰�…jgË,fM(¶jÿD¶§¸.ŽÓµ 4¸{&:ST·ÏÈÞâlƤ†èlD[›“V„ͤE÷V6FQ\‡Çoìzá0)O£ÜM´ÅE´µ©ÇÀF§�aÞˆ½”ÔÅâôZzíþéW T6F±æÐxv�É%#¦š¬¸*æ�Ü×,tl;—âm ÄØš€F�™�•&¯ EðøMœ®�g{á0Ž”§¢(ûJ²8Q•Ò£>¹}&ÎÔÅs²:�2G4cRE@·�×ÑÑÑÑÑÑ9ÿ‰JÈâº{ÿÍ;�\RøÙ¿ÐE€ÈïzØNUaóføè#8}JKµ4¤‘#áÆ!77ôú®¿^å8º~ìXÍý¯3 áÓOµ¨Ûùó5÷¸PDGk±ßøFçë EWâ?|îC†hº�iJ6o_×áÛN§öfÄèJopß}°m¼÷^ø6?ø\Ø…)tE…Ö÷‚˜<¦Ní~4´Îù�ׯÒäéþØPGW¾ÉÃÍÜ6/‚ç׊cD ÍׄÍ,¢ª�÷4É܃ÝxáÔ6ÊAmÃq°Èßí~÷ÕÕÕÌ�;7Hü7~üxV­Z þ;›lÞ¼™Ç‡ÃTçõzyõÕWY³f ;wî$33³Óu­^½šE‹áé$k½²²’Çœ7ß|“M›6u¹ÎPTTT°víZ–.]J]]ø1§áÇwº¿ßÏéÓ§ùÕ¯~$¶l¡¶¶–_þò—ìÞ½›·ß~»Óõuwÿyä^}õÕ^ï_QU•ï~÷»üóŸÿì´ÝŽ;øæ7¿É»ï¾Ëk¯½Ö©òÈ‘#,X°€£GƒŸW·G–eÖ®]ËÚµkùÁ~ÀÓO?Ý«}è>Ÿ�ùóçóÉ'Ÿ„¬ß¿? .äÑGåî»Ï½1Î`æÛßþ6¯½öZȺcÇŽ1{ölnºé¦³Ü«ž¡ utt(.ÖìígÎÔ~˜êô/² ×^ [¶ô R'³-Šëî}Ÿ]E]yAPý'ÿ¸ £ÅÎÐI¡g"è|½0I~®·“Z—�£-³µš {\¨îO$˜m t‹¨ÍQÀ t>*5ÐÈ~ð¹QÈ®FT·ÕçA0H²ÁbGDDƒAóu–ñŸÜ³»ª‚׃ÚP�ê¬wÍyÎÍÒ¢k¹jÌ—\9z“2ƒïy:=#ÑÞ@~êâ"‘D½û´àñKT6F±õä0ŠjãØrr8V£C;¡Øôœc\5æKíJ1(Íà?GÆRÛdGQ\^M\STßì×?â5£A&#¦†§nbbf÷f¿†Ceì LÌ(¤¨&��ÇGáôô2g§…Õ T4Da–|ì85”ô˜Z@Àæ§œá;®ÇjôQ\Ëû&s²:‘jgÛlÏz—•Ceé4y͸|Fä>8þu$=¦†ìøJ,F_�ÅíI°7�SCB„ƒz— Gø´˜QåŒbÃÑ|Ž”§’hw�ÙPɈ}LÍ>A^RUÎH6äñþÞ©@óGœ*°¿$“2G ^YÂãïݰ€ ¨˜%_Ÿc°Ï&FƒLv|WŒÞ…Iòóìgó(ª�ïÓ:=~‰ý¥™ÌÒùÀ_gdÅV1!³�»§÷©/í©uÚhòš8U�@q]�å·F ‚ŠˆÂâ‰[¹dÄŒ¢Ì¾’,¶ŸÊþ’L<~^¿�*g$¥õZt¯ªB“¯÷"eƒ "‰Šÿ«££££££ó•"&yˆ.ùõ¯ÁÆ»°î¼S¹µçúëá©§ %Ä<šK/…‹/Ö"i{KU•æfwàdfjsæÀë¯÷~�ý…Ý3fh.xwÝ]%!†øY­ÚûÙÙòï½§½wÐ*Œ9R‹ˆîì9ý /@v6„0¯B’´u†CU5ÊŽ.”QQZ/¾8ü²:çÇKüxýÝû-»h†•ÑÙÁ7ŠÿwU$sÆYøÑ³5Ô9µu í€BÀñ„!F~ss4™‰Áã˜WM³ñ÷5NŠ*»N¬(­‘)®ò“žpv$!n·›yóæQP8¦�——ǺuëzUÛŸ¬^½ºË6•••Üpà lÚ´)l›O?ý” à÷wO\YTTÄœ9søòË/‰ŽŽîvAs|ñÅC:«µ�““Ó­èÞùóçsäÈ‘.Û­X±‚wÞy‡ë®».dýúõë{¼ÿßøÆ7عsg¯c–{ËøÃ.ÅíyóÍ7IJJâÉ'Ÿ Yïñx¸ä’K(éNf};þò—¿�––Æ/º²�í%‡#¬ø¯=÷Þ{/]tÓ§÷ßøãW‰çž{.¬ø¯EQxå•WÎR�z‡.ÔÑÑ´+Ÿ~®{ñÕ¥³Ùk:ÝÙÀâŸÿ‹·~?ŸÆšÀ<UUøè™e,Xþ™ùÁ¿¬…Pžgºó+‹$*ŒJ)&/©„X[# «æ Õâ¦çq¢6Ö ˆ˜,a¦ +š¸KȰý:µèaUö£úýàsi‚?�ÕíBõyPü~�TŸ‚ «H¶DÉF#(j™N¿ÒrÏh‰ûmÿµÜKº8úªŠên@uÖ¡6Tƒ×¥‰<[–k>ÇF¥sñðƒ,ž°�a‰eD[]±7_+L’Ÿ”¨:®ó%²"òù‰‘¸}Æ>9Ù©ªˆ×/âõqû�”;b�D9àVQ\ËÉêD¢,.jœvÎÔÅs¨,�Æf�O6Ðä3ãòv£ÙÆgœâê±;™žsŒ´èÚ>­«ÅMpzÎ1ŒŸl`oqå ]ÇVt…ËgÆÕ,&jôZ9^©= 1ü-O¥Î�Éà§ÚigÇé!T;#\ê¼²Ô,Jê¿;_¤ÅÅðÄRf=B~Ê™Ç&wÄh�šXη/øŒ÷öLeËÉaÔ»"úÜO¯_¢ÚI£ÇLQm7·ÿªÍâ1AU@–Qe/ª×ƒâq�«ÅåFñx[7ëÌÌØD…ɇרÐhp+tÛö_§'¨íþ§6 ÿš€¡Î™pk�ýàkvþk¬wc[AÀjòb‘¼XŒ>.~�ãvpaœ¤t‚‰4»¸zìNU ÊIauuM}‹³mÁí3áö@T6D±ýÔPDAEVDüŠ¡ùR˜ UÌ’Ÿ©Ù'Xzü&<~õt Ñ|vl’(£ ´ž�¢ (Êù÷áiq“WÅØô" (‹‰‰aýúõ¤¥¥ |º@EV­ZÅå—_ÞZæñxXºt)ÿê`ûôÓO‡€=ýôÓ”]vÙe¼ÿþûX,mã.N§“«®ºŠ�íÞï½÷;vì`J8ûÚ.ÈÍÍeÚ´i 2“É„×ëeëÖ­Œ;¶[ËÇÄÄðŸÿü‡‰'”¯X±‚%K–”­[·¿ß×üÄOPVVPvå•WòÎ;ïíÿå—_Îç휇V¬XÁþýû3fLk™Õjå7¿ùMÀúV¯^RÙU®{;TUåÇ?þqPù3Ï<Ã�wÞP¶cÇ.½ôÒ€hèûî»�… M \±bEÀßV«•�7’ÒÎæwúôéLŸ>�ˆˆþüç?·–û|>V®\´ýþâšk®aåÊ•n�|ð×^{-Š¢´–mذ�ƒ’ŸŸ? ýèˆÝno~ÈW\t¿8—¼øâ‹¢U€„„¾øâ‹‘íñãÇ™5kVPÄù`âæÚéèèèèèôœèÄlÿü},±Au²ÏÍ¿þt…Á3Vt¾~LÉ.à'—®â‚Üc$Ø[FóMŒåig-xœZY¸'ôŠ_ö¡yý¢öE­H‘Áï�¥±¹¾ ¹ª ¹ª¹º¹¡Õ«Í"Qiî‚_A!+ÁÊÌáq,ËE’-šFQÑMuŽf‘&²¿±¿‚1-ûQ]ÔšbÔ†*íÜë@fl3‡añøm,·ƒ)Yzìo#â#¹8ï ß›¹ŽQ)g°™º7x×[UÀׯÚ"þHÌ’ŸôèR£j‰2»úE¼ÖžX›“ãvrÍØ�\�{ «ÉÛ¯ëo�¢ xü^E§œ�‘òüÔ3\>z7ßœüÓÊúíø‰‚ŠIôsÍØ/¹eÚgäÆWiî§,à0¨*Ȫ¨?ÙЯñÈ�Ûðø�ýâ$x¶1 Iv·_°�«Ç|I‚½Iìý罪 ¯Laõ� ¼³{:ûJ²�Õž]÷6³‡¼¤R®³›Eã·‘hw ¸»¢¬ˆÚµ&Kvž´nKð+¢.ÔÑÑÑÑÑÑùÊ“<„Å÷þ kdBÈú /ßþõÏŸå^}u)- _·`lݪÅÁ>ú¨æögìð³åôéî‹ÿ.º(|]C£�¼ôRèr³.¹¤ûýhaýz8~¼çË 6–-ÓÞ�P \ºÎãÑ"�»Ã¯~¥ C‘� EwdæÌðë»÷Þ®·YR¢¹êœßTÖ+4¸”® .°bµß¼ŸíwãoføÃÛ <þŽ¥Ýþèlfcàïð˜C€øÏéVøþSÕ|°MG*(“9pJ{f`6ŠŒÏíÞxLquß&w‡ûî»/(Óf³±fÍòòò|ûÝá¿þë¿Ä ¹Ç=ÿüóAÑ´ëׯ§ºº: LUUžzê©€2I’xíµ×Äo<ÿ|ðg~o¢CãããY¿~=¼ñÆ<ôÐCüæ7¿á¡‡bݺuüñ�ìÖzî½÷Þ ñÀõ×_$Jt»ÝìÛ·/ ,Ôþ›Íf^zé¥nïÿ /¼Ð­¾ö•O>ù„£G ®¼òÊ�â»)S¦pÏ=÷”9r„�!,�;о†  þkÏu×]ÇÅ_ðÃÍ$è#6›�7Þx#( úꫯ¹Ïo½õÖ€ôã|æõ×_*{â‰'‚6‡ Ö-gÎs‰.ÔÑÑÑÑ9ïˆKËcÑ=+1Z‚côüÞ&V>¶˜šÝ=ëëN¢ÝÁ„ŒB.È=Fn|‡ÙŠŒÚT�ÚX«‰³|mŠ ¿Zã^[B¿‚–Ó"‡5g?ª»¥±¥¾¥® ¥¶¹¦B{ÕV£4:Pš\¨^/ª_F•P@P!)ÊÄÄìh�OáÖ 2ùÎŒLæÇ3?ÛÊôxˆ6jÎ‡Šª§[÷jóÁTäæ÷¿»Â¿æÅÕãDm¨B­¯@uÖ‚×­�OÍçH”ÕÅøôS,·�[gl争[›všhk÷c%tº�Ñ “Sͬa‡¹~âV.r›Éƒ(to¯§¨š;š*¢¨*€¹ØEY›•RÌ’I[˜1äQÖþ 2É‘õÌvˆËGï&b”Ú±‘•¶c7PDZ\LÎ*`Á¸�\=f9q•ØúYÜ(Š*15Ìz˜Ûgl`ZÎqâ#z𤩇´œ{Úñë[ŒlgH™Ñ©EŒL “Ó4ˆ°½ŒN+b~þ–LÚBv\cÏßû–kÛé±PTÏLJƵFøöÄ9XT"ÌòSÎpÅè]\?q £S‹º^°´Ü£ú7ÜfÉGzL Ù±U$GÖØ=WGGGGGGGg0—:ü+/ì,õl ’):¤ ¶²w¯æà×ùùp÷ݰf TWkŽmË–A˜gõaÅ΀GŽt½Ž)|Aýì)|Ðóen·æbØ™“Þ¼yáë6m ܑРí<Ç‚�gfjÂÀPÔÔ„w—ìȇv¯�Î२2ÌM(Œl‹"m,ðæ§Müà™|þî�×Õ6ÊÜþ§*v´ÝtVmo‹��Ý=`ym÷÷¡7<òÈ#<òÈ#e’$±jÕ*¦N�: Ûî á¢Wãââ‚ÜþTUe÷îÝe[¶l r¿[´hQØhãÜÜ\F�Pöé§Ÿö¨Ïƒ�µk×2gΜ-ŠÎ"˜/¡´®©© øûóÏ?§ª*ÐåxñâÅa×;lذ ñTO÷¿·¼÷Þ{AeßëÄjöŠ+®* Õ×aòè8À]wÝt¬f͚ņ ^�õ¡/X­Vl6[Ⱥï|ç;Ae;vì�~œ¯(ŠÂ¶ìÑÑÑÜxã�!Û§¦¦ž�nõÝxXGGGGç¼$!s4 º‚•�]‡ß(–ñº¼û‡kYòË�ˆNÌùì5”å°ÎW £A&ªYØq¼2…}ÅY8½fEÔt\ž&T¡,‘`´¢JF„6]4»÷ùÁ iÿn™?!ÐN¨Åù¶&ƪj³[œdŸæçÓ"~U¯Uöke~ª_AU”æí‚€`°Š6I$Ê&1:-’IQLÏŽatj™±ZTfR­YñpÌ¡Ðä‡&?tc�¾¡ªmÿo*´½Ù]`U‘µ¨é¦zÍõÏÕ �-âPÀfr34±œ+GïæÚqÛŸqj`öG'›ÉKn|%׌Ý� ¨T;íT%SïêŸ8೉€Š ¨ 2Câ˹tÄ~–LÞ°„2,ÆNžÈô‘‘É%¨¼·g*&ƒ§×|^?ÐÄÃ˸fìN®½‹Ñ©gl[’AfHB·Lû QPðÊ[ ‡ãõú%øl!4ß #Ìn²ãª˜;b?“2ÏO×RQT‰²¸˜’}‚h«“z—•-'‡s¢*¿Ü3ñ^ ¿‘}ÅÙì+ÎäTM² dð†—5—™ó5ØÝ‰¡yo£N;[.œÐçƒþ~úÓîm#2R‹ñ]ºTûûàAX»Vhu& MÖÁª�{}p¹Àj .ï é‡÷|™Á‚ªÂ[oiî}'NtÞvÈ�ðu==� 5Ç� ü;''|Û3=:çl¨sþp¨¨{¿éEâ"µñ�Oaÿ©À›— l;âåt¥Ÿ¡©špÏíUùñßj¨rÈLÍ3óó%Ñ­í_ßàäDi°sßž/ªª"I1ÝOrya_¡‡±9æ®÷�}ûö…ýõ¯íÑÚÙbüøñ¼üòËe\z饭oÞ¼9h¹ÆÆÆ Ûöx<�¨Ož<Ù£~Ýxã�!]ûú›PñºÎ¶©¡ößáptºÿ¾³zºÿ½%T_·nÝÊ®]»B¶oll * Õ×åË—óÑG<_~úé§yç�w¸á†ˆ‰‰!##ƒ &0iÒ¤>ìAÿ1~üxAèsaaá¹ëÐ ¤¢¢"è\�G½Ó H¢B^R)S² 8V‘Êžâ,j�-#v*x›Pë}( M¨¢„($‚$¢""ˆ‚¤‰ÿTÑbóë—?@•}ÚÈ£"£ú¿Ü&S”æY?ª,kb?@@@iÕ• Úÿ›Ó‚Mf‰‰V&¥F0sHù©QdÆX°[ŒX¤6‘Mz¤ÄŒT8Ü Ðà÷s°VAz#YÐiCmýµ¸v‹–£®¢69P« ±|^Í=°Ã�…É¥\=æKŽh‹îøw6‘D™Ô¨:®ó%©Qu<±þ våâò™Îu×z„(ªXŒ^R"ë¸zì—Ü<ísR"ë0K'þÍí,5ªŽûæ¿Ç¶Â¡ì8=”u‡ÇÐè ñc�3!£�ËFíå–iŸ‘0€Ž|- 2ÑÖ&ŽßN”ÕE…#šG,uMÁŽÆƒA€ñ§ùî…똚s‚ìØà‡šçF#’JùÑÜÕ¤FÕñܦK©wÛð˽f~qrf£�»æ|DVlu× tÀfò22¥˜¥“7ckâùÍs8]Æ~bcìf79ñdÆVшÐÏî¤::::::::ƒ‘àŠ‡®Ä㬠ªßðò=$3ù³o:½ë!4w¢I 'xà¸ùæž;ú�溗Ÿ?ú‘¼l™ŠºˆVÌføõ¯{¾ýödfö|™)„ƒ¯W‹,^·ž|²ûñʹáëêY: ÆÄþÝÙ{^Ô£v]xþ³ùp÷0DŒÍ÷ÀF—–ÔÓ‚Åc²LŒb$-®m¬aÍ—Ml?¦=×:YÞÄåS¬ŒÏÕÆ']hÃë‡}…^öú�›Íô›¼*ŠDZ»?wå®v¸µ°zõjî¸ãŽ~ßÞ@‘Âò³¡CN|ÇøWÐösõêÕÝÞN]]]«€³;tæÚ7Ðt4Q µÿ«V­bÕªUÝ^gÇXå�"T_~øá­#”«ß¼yóxüñÇùi‡Ù¥¥¥üéO (ËÍÍ妛nâÎ;ï$##£GÛîO$I"22‡ÃÑZÖñÜþºÓþØ´�žž~zÒ?è@�óšô3¸ê‡/òÁ“·h®[íh¬)æÝ?, g\'Y:_iA%ÚÚÄä,m:i½ÛŠÓcÆã3B³8Ï‹€Š"xQ‘PD±ÙýGšEª j ½–º@EY�©Š‚*·Ç´ÿ«ª Š‚Ú’ÑÛ"ö3ˆ˜�¬’H¬U"-ÎJZ¬•ÌX Ãâ­ ‰µ�Ab¤ »YÂÐìØ‚É ’!qiTz ¼ÉKƒOÛ-ñü3ã:w´ºþ5‹5¥íýk%Ü�rí&e2=ç)QuLË9NZT-fÉ?à†E*&£SÏmi"-ºŽ&�™½ÅY”7Ät½‚A@¤ÅÅðÄRæ�ÚÃ%#�d¯G2œ�XRQPI´705ûß›ý ì›ÄöSC©w ~ ((˜%S² ¸<7Ós�‘U�IØ(™�FUl&/Ùq•ÌÍ;€ÓkaÕþ‰×Åáñw/N§# Q)OÃÝKa± ¨˜%?¹ñ\4ìµMl99œc)8<}'ž Œ?‘3‡áÂ!G–TÆ�„ ¢ÿ«££££££óõ!.u8‹þ>ïþáÚ�"Àu/ü༺\áëBØYäpC\x!¼ÿ>ŒÛ»mLŸ®E ?ñüä'ÁõQQ½_wwå Ø!t g�3gà[ßê¼�ªBi©æô'›™uIgǾ»"ÂŽ _×QØÙ9ÙÝDI‰¶ß†ÁýN' ^¿Êž‚îM´U[ÿâ#E2 ,¼ÀƼ‰¬æàñƜ䶛¦ @VBÛ‰’'ñã…ÚÐèVøp›‹·»´q¿æ±¿ž¤\­Úæâþ¢1ˆgÇ:`åÊ•<ûì³Üyç�ge{}Åd ¿quøÀ«¯¯ï—my½^Ì�Ýd)ý±ÿªª"Ë2†¾)öG_½^oÈòŸ4Q¸÷Þ{ƒ\ãÚsòäI|ðAþüç?óä“O†Œâ=[t<¿Ý�ÍæøJÈl4önLx0  uttttÎ{rÆ}ƒË¾÷,kþö}T5ðÁb]y»×þíõLg0`–üŒI;CV\5Ÿ�AI]eŽæQUEPUÀ‹ È¨ªŒŠØ±.òUÒ"l¡EØ×. ¸µ}sò«$Š�D£$`³‰�0“d7“kbtzù©ÑŒL´’aÄjì⫚ e™™j¤¬Iæ”C`OµJ£_EU­çº`hÚ�ÊÐ.îWé¾8¡õ[‚ŠÝìaZÎqí Ô6E°­p(§jñÊÔ ƒ=-¶·�B½¸'2 ±½¤DÕ±ñX>Ç+S(sDZ×M£ÁOR¤ƒü”3Ü4u—çïÆh�uñŸÎ &Ôƒ3a�}ÐÑÑÑÑ9?IÈÈ/TÕóRØÙ3㸸ޭ³3·µ®ÄV'OÂäÉð�ïhqÀÇ÷®¢Ë—k1±ë0”"°_±Xz¾Ì`0ïq¹`Æ�ÝFYYøºž 3;;Ïš:„stv|{bÈe±èâ¿ó™Ý^<¾î�·)*xüZÛ»�5&w¹ÌèlËFòì‡�üþÛÑÄF†>Yì‘¥E°ô¢ÀÉ£ ®î�ú¨w*­1ÅgƒåË—3{ölF�}Ö¶Ù[B ¢¢:Üd""ÿäÝ�ä|Úÿˆˆˆ ãþä'?ù ßûÞ÷ؾ};o¿ý6ï¼ó¡ÇI�N'Ë–-cïÞ½üùϰ>uFÇó;Täó×™Ž×:@SÇ/çƒë©ŒŽŽŽŽŽN/É›¶Åïeíßp®»¢3H1dÆ¥�æDeJ›°‚ `|(ªU1Ц%U;hš_‚D𣀛(Íâ¿–èXÀ`±š D[$"LÄÛM$G›–`cTJÃì¤Ø�ØÍ&IÄdº=O¬�™É~ÙH“ÏËÁ:h’Auý_ç¨mŽmyÌÝ£9ZõºÁÝ€ÚPMð{hµxlÆnö�[EVl3‡áÖ鉴賬Q!!¢�y£ö’éà³ã#Ùtb$ûJ²P”ÁwõXM^†'•²ìÂõÌvˆ”È: ¢zN#5ã#Y:i 6“—D{=§k8V‘Ji}ì9ëS("LF¤”�WÅÄŒ“Ü4uÓY‰ý ‡(¨˜ ~®›°•ÌØ*ÞÜy!Ë2(©‹”n€‚ 2*å ·]°‘ ‡!7¾r@·§çžýkÐjô‘›PÎ]¯æƒøÉ¼¶}gêâðø{&ôË|~‰þø¶½ŒN;CnBóFîcíá±ü{ßd¾(Ñçu‰öf =Â3?!?õ V£O�ýÕÑÑÑÑÑÑùZóUv=Û›(Þ®–«­ízyŸOíýío0a,] 7Þ99=ïËŸÿ Ÿ|²“ù›N'ìØÑóí´çL/æ¥  ®aPQR¾®³xàP ¾®ãy]lÚÙJˆ¤Ð°ô´�:ƒ‹ý…¡ÀZˆ°ÄÙEòÒ%®žn#;©sÙ…ªBE�ŸÄ¢ �ÿßr‰�.Ž@2´�øe•j‡Lb´±“g .°a5 ¬Û㦰ÜOe½LS'‰ÅõM*q û�gŸ}–wß}—�?þ¸µÜív³hÑ"öîÝ‹¥¥s(7<gùïÀ™7â˜Ö ©©©Am^xán½õÖë×`"Ôþ¿òÊ+Ü|ó;ힸ]‚Ö×ö‚ÈUî‰'žàÊ+¯ä²Ë.ë·>t§ÓIc‡™ Ïm×á¹"111¨ìÔ©Sç 'ýƒ.ÔÑÑÑÑùÊ0òÂ¥x]6¾zß¹îŠÎ Ä(ú™5ìN¯E8T–A½ËÖZ/¨j³üKÁn–°›ÍÈŠŠ_Qð+´¹éµ hn�QÀ$‰D %£(b3iѾ&Q‘V‰X«Dr¤…Øq&"Œ$GZˆ·›ˆ0�zaÁ/š?I²ÍÀäD#Å� ÁÏ®PU�³äìþ 6Gü¶DþÅýv†€Š ~ª»µÉ¡ÅýzœšøOmV}6ç°ÆÚ—~Šùù{ÈŒ­fxb9 öA0M[§ƒ¨�YÏä¬bmN2c«QTBmS'*“9QÕË'ýH”¥‰qé§ÉM¨`TJ±ù]{Öbk;à *D[›˜š}‚8[#•�‘|rx› FPæˆÆ�%ƒŸH³›áI¥ŒJ)fjvÉQudÄÔœÕØßp$ؘ˜Yˆ(À¡²4N×$R\ÇÎÓ¹ƒ"R99²ŽQ)ÅÄE42%û9BZtm·bUU@VÅžH«1ˆ2ÃË’P�Íä9ë®q‚ b‘| I¬`tj#SŠ©vÚ{<4¡œ™C�`7w’�Öƒ>™%fɇÉàçÒÚçKŒµ‰ò†(ŠëâCNl8›˜ ~ìòS‹“VÄÔ¬ŒL)&ÆÚÔoâ?Pzx>µ.«jçcÇ‹utttttttú�à;_ƒ×å¬l$#f\n:Ø Â×�ß»u¦§‡¯ëLpŠÝ»µ×/~'ÂÂ…0mL�Ú=ç6‹î¸~üã¶2¿Š‹C÷Óé„9szÖÇþ L2áWŽÒÒðuçƒ0;»ûmuGŠC�}Hx|Y,3óÍazŸÊö¸((õST%sºÂÏéJ™&�Ê}ߌbɬˆvë \Ç=ÿ¨eÃ>v‹@f¢�œd‰ôxÃҌ̛hAhw6IWM³qÕ4퇬¨¼´ÎÉÓÿ=ö¼ï¤‡Üäþ§“$‰7ß|“Å‹³hÑ"FŒAm;åö±cÇøáÈßÿþ÷°ëå¾UÞÓ›ÙºukPYn‡›ÌìÙ³ƒÚ¼ùæ›_`¸ýïo Íf *««« yž„cöìÙìÙ³§õoEQxûí·¹é¦ÞO¶8sæ Ç;dÏOŸ>«ÕŠ ̘1ƒ3fðóŸÿ‡ÃÁý÷ßÏÓO?Ðþƒ>8ëÀ/¾ø"¨¬ã¹ ƒã:dEäpy: îöz**~ìV39q"L¢ à“Ã=1Ö‚�ÍB¿ä(‹&ü3IÄÚLD[�ÄZ%lF"-"-ñ6f KWñ¾=ÄnmdAŽJ“Ê\~Jݬ<çP IDATàSÚü‡„¯³°õ©¿ªEýª¡\ÿº8@ªŠŠ~/ª»©Ùõ¯¼MíLÿDQÆh�•RÌe£örÓÔMÄÛ0Iò@ì�N±™¼d™ªÉŠ­fDr “2OR\Ǧ‚Ô»l8½fÜ>SsÚ÷À\Ljóuª"Š 1Ö&ìfÙq•,¿�qé§Éˆ©&5ºs7Xg“¼¤R†'–â“%¬&/‚ r°4ƒ’úXêšl(ˆ¨Š0à±ÊÚ1TI°7�YOjt-?ÈôœãLÊ:‰Õè=kqÉÝÁh�ÉŠÕνI™”ÖÇrº6Éàç@iM^u®<>#Š:pÇ®ý¹g4ÈD˜=DY\LÈ(dþ¨Ý¤ÅÔ2,¡ŒaIÝø1J~¢,MDY]XŒ^Ü>S—ËH¢öY=&µˆH³ûœÄÆŠ¢J”ÅÅÐÄr¦fŸàhEM>Þnˆ[â’G§qÕ˜�ÄXû×–#Âìa|Æ)l&ÙñU¯Ha×™våPåŒÄí3âoŽ>÷)³ä#>¢‘X›“‘)%̵›‰™…dÅUa7»ûõZ“D…(‹‹h« ›ÉC“×Dwc¬N’"˜$ÿ ºöu!Î�¯õg�� !#ŸE÷¬d壋BŠ×üýÿ z`gÀÙ³5QVgŽy™4©sAUQQ÷×Õ‘]»´W YY0kÜz+töü=”ÐïäÉÐåII`·|LpG”s?ð¬°eKøº… 5¡fg±Ô-�pÝuáëÛŸ'……àñ@C$2241á‰]o÷Ê+»n£3x9\Zik!=Á€×¯RPæãã�.Öïu“›"ñÈí±XM">¿Êï^¯Çã \V >20eÀ/«"À܉�û=8=*‡Ïø9|F“mä²IÚ³Œ†&™»ž­¥Á¥pÙD+—Œ·�‘h Ö>Á`Õ¶&\пb– &°xñb@sÑzþùçY¸pa@›üã\uÕU,Z´(ä:B‰‘¶mÛÆµ×^TþÊ+¯„Œëío½õ÷ÜsO�ÓÙÁƒY½zu@™ÑhdòäÉeÓ¦M####À-põêÕ¼üòË|ë[ß »Ý5kÖðÏþ“×_½U¼y>rá…’ššJi;eö¿ÿýo^}õÕNE€~ø!o¾ù&/¾øb·¶“âKÁ‡~È�wÞÙí¾.^¼8H|wÏ=÷0kÖ,²²²B.£ª*wÞy'—_~yÈsuÍš5,[¶, ìßÿþ7W_}uPÛ¨¨(~ñ‹_õÁápµíª««Y»v-óæÍ ª{ôÑGƒÊ.¼ð ²P×á–-[¸ãŽ;‚Ê?þøcŠúòm2wîÜ ßïçÑGå�j»yóæ³Ùµ£ utttt¾rL[ðS\ Uì]~V‘úu%Ñ "/¹„ÄÈzDQå_{§ðù‰‘õªª`’"%®�ÊðD;IÄ'+(!ž ª€A0K"1fÌFFƒˆY’0ˆAÀ ‚(hN|Q°zV£Èˆ8s2Dª|^VŸöQáVQTt@µ�ð¯GŽÐ&0PQ] ¨�µÐX>ÈÍ"¬vï©ATˆ´¸H‰ªç†)_på˜]$Ú�D]üw>�dwcmÂ'21ó$sòðÉ¡qì*Êåpy:>Ù0 .R’(# *‘–&®½›©Ù'“VÄÐÄr¢,.Œƒ08Ï%A“äçÒÈO)¦ÌÃkÛg²æà8½V¼~ ¿bà>¨˜ 2‹'lå#÷“]CZt±6'ipG‘&GÖÑÈÈ”²ã*9Z‘ʾ’,V˜Èñмè¦(*’¨ *i15LÊ<ÉEÃ1%ëÃË�D¥[®íI�ªcNÞA—§ãö9\Ö‰­G3’A&?å C˱½çT“[Åܼì+ÎÂã“8]Û=›QP’PÁŒ!lj0 LÜ{N|%)Qu\4ì%õ±|y:—W·Ïâxe U Qø•žE÷AP1Š2‚ 2$¡‚¥“63:õ YqUdÆVaö`l¾�õ'1V'³†æhE 5Mì/Éj;vƬ¡‡¹jÌ—¤DÕa1úºl¯£££££££3�$e�ëRh¶E“3>øî`¡3 Àc�Á’%tûwóòåáëd _o2Á�!�—Çk¯’øíoC·?}^{M{}ÿûð쳡ۅr ,,Ôă¡øÖ·à™gÂ÷´hâI“àèQíÕ.™°Ç|�œ­·nÕ\C$O’œ ?ûüþ÷]¯ç¿ÿ»s7¾·ßüÛï‡õëáòËƒÛ ‚vÞþð‡�o36:hEtÎ3êý@ðïk�–ýôS¾ûÝïöºoû÷ïgùòå<õÔS ÚxÂÎ�;ùö·¿�Òáyáüùó±Z­e‚ ð»ßýŽÛo¿= üÛßþ6Û¶mã‘G p «©©áÞ{ïåÿøŠ¢�™™Éc�=ÖëþŸkAà·¿ým� ì–[naûöí<øàƒAûÏ=÷ðüóÏ£( iii<üðÃ]ngÒ¤I¬X±" ì·¿ý-ãÆ� ®É²ÌöíÛ‘$‰)S¦´o‰æ]¿~}kYqq1ãÇ�ç/ùK�àÎ�;¹ýöÛÙ·o/¼ð7nä‚ .hó�o|Aâˆÿû¿ÿ›)S¦�’œ ôÐC•åååu¹ÿ½åæ›ofÇŽ­G‡ÃÁC=Ä'Ÿ|Ôöúëƒ'›t<†/¿ü2K—.eþüù­e{öìaéÒ¥A×L8dYæ³Ï> *¯©© *Û¾}{�ëàĉ‰ŽŽj»aÆ ²ö¾ ƒÚZ­V¦OŸP¶dÉžíðÅðá‡&##ƒ[o½“É„Ãáà·¿ý-úÓŸ‚¶3˜Ð€:::::_I.¾ùadŸ‡Ÿ¾|®»¢3È0K~"˜“w—ÏD“ÏÄñŠn¨*¢ Ðèñqªº‘c ¤G[ÉK²#Dø‚ßòOMØg6J "¢( 4÷À³‡€(¨X$‘Qq—ûÁ-ÃÖ ?… šxQäkbfÒòÆ´ýZ#›ÿ@¸"4G>«¨~¯ïënÔâ~]�šëŸ"Ójý'hÂ?³äã¢a‡™�QHJt9Brd½.þ;�0ˆ VÑ‹ÕRœŒÍä%ÚâbJö ŽV¤²áèhª#‘›6M>s'Ñîarc7k!QP‰¶º˜“w€øˆ¬F/cÓO“WIrT=‘f×9�¬í.Ñ–&,’—¤H^Y"?µ·ÏÈ©š ª’9U�ˆÇ/¡¨"^Ù€«›îjí1ˆÚ{c2ø[¯¯ŒØj†&–3,¡œYÃ32¥˜H³«Ñ‹Ñ0ø¯AÉ 4¿Ç>†%–kk$+®š¬Ø*ög³¹ ��¯_ûïp[ñú�ÈjÏÅ^ÑVMÙBN|%S³Oaò�UOv\CËH�®!ÚÚ»[«ÑKFL Æí ÂäÆã3Rêˆ ë˜WÅøôBÆg’UwÎ?¯"ÌMà6y3±�¬94ž·…&¯ �¿mZ\ÿ"Ìí&e0%ëÆþuÀk�Ñ ¹ÌÚUÉ‹Eòb4ø)ªMàxe _œÈÃém›ÑÞèµàôXz´ QP‰h¾†@ÛÇŒ˜j¦daò�`w05ûÉ‘õD[›ˆ0yÅ�Ùg“ä'Ñî`Þ¨}XŒ>|²Äéš„°÷ßX[#ãÒOsÙ¨½\�{Lë›p~ÜCutttttt¾Ú´ˆß|àÒàJUå?/ý”ïüqïÙïX79|X‹KMN]Ýušî®»À×Éü £Q ÞrKø6ëÖ…ŽºMI�M› 'Ä?‡ÜnøãµhÞÎxï½ðÀ½!ÿŠáûú?ÿÏ=§‰ÆÂñÀ°`AÛßG›ðÿvî켿í9׿•Î6ï¼^lwï½ðÁZìs8ÆŒ�_ÿ:|ý¿þeeÁåo¿Zš€ôõW8½.Ò$äeXØy<|Þv¨kñ¥O[~?¸&ŠÍ‡½m%|÷õQ˜�Ú‚.�Êÿ¼T‡Çÿ»ÒÁ_ ©�m‘¹c-¬ÝÝ6©pÞD —Ml;¡Vï«éêÞpÙ”îG¨ö…¿üå/¬[·.À)®¡¡�E‹µ ¶Ú3}út²³³9uêTk™ÓédÚ´iLž<»ÝŽËåbÛ¶m}îÛ3Ï<ÃÇLff&'NœpókÏ�~ô£�å·Ýv¯¼ò ëÖ­ (úé§yþùç™4in·›ýû÷ãr¾G�?þ8ãÇ�ç–Î>ø9Ë–-ã�7ÞÚÿ'žx‚¿ÿýï­û¿oß¾ §ÆGy„‰'²téÒN·±páBî¿ÿþ€çp¥¥¥Ìœ9“üü|ìv;»wïÆÛüaùòå!Åkÿüç?7n m‘ØuuuÜ|óÍÜÿýdggSRRÂñãǶåõz¹òÊ+9xð`€°/++‹»îº‹'Ÿ|²µìäÉ“Œ1‚¥K—’ÞÎ&xÕªUìØ±# ?¢(rà 7tºï}¡²²’¼¼<¦OŸŽÓéd÷îÝÈrðxøå—_NfffPynn.S§Neûöí­e>Ÿ�Ë/¿œñãǃÏçcË–-Ýÿ¸\.æÎ�Û­¶¡â´7nüÿìÝw|�ùÿÿ÷}Ÿ‘“}’&MwÒ:mJ˶4eUEmÄÑQA‚_~šÊ’¡”�ˆ("©?E> �¢ ’ "e””](mZºÛ´'Í>ã¾ÜIš“œ“œ¤M³^ÏÇãXrÏë “ôîû¾®Õ:ãŒ3¢–E"‘„�ùÛßþV¿ýío£–M™2Evjã{æ™gêøã�×›o¾Ù¾, éŠ+®Pii©f̘¡7ß|S¡î~¹$†­…K~ª`s�>x¹¢Ë:£óÕ!Œ(n—¥Ùã7K¶¶\zê­B­ß5Nõ-ÉrR}KHì9 ·iÊçq)/#I³R”îsËcH–mG÷�³ö“³mK² Ù†%Ë8ØíïÈ´wwÎ1)Í¥T·Ñm«…ÚŠXvû=‹C¹Ý|Loîü³¬¡¿'ÛÙ7’Ýâÿì†ýR°IŠ´ý’ðýMMjѨÔ:åeÔêÂ^ÒÙ3ÞШÔz¹ÍȈ»0;œ¤xƒÊÏÞ«üì½ E\Úy S)Þ 6×ä*qþß´­6[÷æ)l¹ÁcN§¿üì=ÊÏÞ+Éù¾”›~@_=íYMÊ®‘˰äq…‡äçÇeZJñ•â jÑÌu:{ú›²lComŸ¨W6OÕÚ�¦¨±Å«PÄ­º O[÷�Òžºô^�#ÍçŒFÎô5¶‡“Ž¿E'lмü•â\£~{+3Ùu:%g�NÊß wwN�?¹A{ê3ÔtÂgkFko}†êšv†ÓÁíØ±)7­®=¼6gRµ.(|IY)�JMj9,¡e—i)3¹QgOSéIMªmNÕ‹NÓîºè ΆáÚNÊߠų_Õ¬ñ[”�r„çgÅàqE4:½VŸ™õªÒ’š »µó@–¶ÕfiGÀß¾�iÚò¹Cš˜U£cÆnm×Ý_A¸Ž ÃVº¯YÓ};tTî.Õ6%ëýÝã”ìiQ 1UmñÄM5¹Ú¼/W¶m$Ü-Äí²”êmѤì½�V+Iò§4èøñ©xö+ò'7È4ì#®5 [Éž N›¼^¹iµªmJÑêŽQuMn—çäqE45w—>7ç%�5ã-MÍI|t5F&;æÿ1†à`À�‘‘{üœ$…ƒM²-kÐ^»ŒD¤‡–âd#$9á¨Ï|FºõVé…œpÕž=NG´1c¤¹s�@\œ)|íz(öò�;�N„S¦t]çóI< }á ÝwÊ‹1%¯Ý‹/v]¶j•2+,ìºnìX鯥ÿùŸØç<óLé¼ó¢—edHóæ9] ¯¸"~-�{,~05ÕüíoK÷ÞÛuý¥—J¿ø…ó¹ˆç†b/ÿä»îrÞ«ÎÜnéñÇ�÷µss%Ãp>?øAüsbhøê¢4UmܧH/.-¿º!¤U/5hñ)©r™†n[ê××îÙ§Ýç §Ï<øa|bM£jêœå¯¼Ô¿ßjÒÇ9!¿Ož”Üœ”ëÒw>›!Ótº�Ýû×:í ôîz·Ë”.):¼ããÉÈÈÐC=Ô% SUU¥ë®»NwÞygÔrÃ0tË-·Ä#ûZ§tô©§ž*Ó4õŸÿü§×uù|>577kãÆ�ÚØM;ÛË/¿\gŸ}vÜõ?ü°Î>ûl­[·.jyCCCÌNgm&NœÕÑp(2 C?ü°Î<ǫ́ ””ØóŸ3gN�ç˜9s¦.ºè"=üðÃ]Ö½óÎ;]–mÚ´)æq ôÇ?þQŸÿüçÕØ݉³ººZÕÕÕqkX¸p¡òbÜéðÓŸþTï¼óNTW½è7¿‰?�®Í�7Þ¨)±~q9 Ú>Û---ú÷¿ÿw»œœœ.]î:ºù曵hÑ¢.×H:ÖgΜ©)S¦èÉ'Ÿ<´Â™ûî»Ogžy¦ZZ¢»¥666jíÚµí_·½Þƒ@À°e†Î½â>EBAm|=úv¼”ÌÑT“c¶)#¹Q)Þýå�¹zqãtIÎ?÷ÖÞÞ¾OšƒÚ¸·AŸ-œ “ò³4.#I–å„éb_Gt–Ú¶sW�aí-å�$¿×Ð9<ò¸$·)ý}kH{šlElÉ5lÿ=Ó>ø³,õn̯Zo“l}qBͲ[d7ÔJ û¥`C‡cF¿€¦iëØqiþÔ÷tÚ”÷4küå¦ÕÉeÒih8ñ¸"›ÐÕ žQ(âjÿTm-Ðsë�UMCºB Žhu�J«×Ǧ¾§“'à,´�ÀM¦¯A×ð Žš†-Ó‘mKÇ�Ûª©9»T<ûÙ2ÔòhCš*?8VU[ zuÜñþ}úä±k5&£Vi>çŽÚ$WX>OPÉžÁ=ê··<®ˆ¦çmÓµg=©ˆeÊnýð½´éh½³c‚Öïêy´nðä6#ºäÄÿh昭ퟳ$WHÉÍ2 ë°' C*œ°Yc3+TþR‘>Ü=Ã4,�Éèô©ëUtôÛJñìèßÎLÃÖiSÞ׌1Ûµë€_¯lž¢7Îh_ïu…51{�N.Ø 9«•žÔ¬$÷‘¿ÔeZò§4ªpBµ&�Ú-«õsbÛRåûÇêÙõÇ)q·~z’âmÑ´ÑÛubþ‡:j´ÓÔ­$wHé>ç³2ï“aH“GíÑ·Ïú«Æfì×k[¦vyN¹éµš™·MŸ™õª²Rzhýp„5ÕÕè±Û‹ã®?áãW Úð_›;îpF›¦¥ÅßfìX©C“œ^Û´É Æó³ŸIñò]äÃn¸Azýõèu¹¹Ò7¿)}ï{ñ�ý ±—ßpƒÓ-.–뮓N;Íùsófgl­aHW^é¼^ñ. Þv[ÏÝ Gºçž“žy&~7¾¤$'äWV&½òŠôÎ;ÒôéÒÉ'K£{ø'€›o–:åÚµ´H+W:Ý,cñz¥¿ýMzùe§¾ª*gÌóÇ?.�tRÂOƒØIÓ“ôÝ 2õ“Gk{µß¯žª×©3|íwiÒh�~úÕ,ýpe@)†r2�ïï;÷‡õ³Çv&³léÎ?×iþ±É2 éôc’49Ï%¯ÛнW�’?ÕÙïÝ�BúÝ¿z÷M#9ÉÔ½ßÈRNÆ‘û7Š¢¢"]uÕUºçž{¢–ÿô§?Õ'>ñ �uVtÜK.¹D[·nÕu×]ç-iþüùZµj•®¾úê>+**tÙe—iÛ¶mq·¹úê«u÷Ýww{œœœ­Y³FË—/×ÏþsÕ×w«ÛíÖ•W^©›nº)æ(Ó¡&''G¯¼òJÂÏßãñèë_ÿºnºé&¥§'vøý÷߯M›6iÍš5=n/(Iç�wžÞxã }ûÛßÖñ~€w0nÜ8ÝrË-1;ÑIÎ{ùôÓOëÖ[oÕí·ßÞãs—$¿ß¯{î¹'fÀõp¹ôÒKÕÒÒ¢x î6ùùùzæ™g”ŸŸw›sÎ9G÷ß¿®¼òJ…ã´5ž={¶žzê)Ýyç�Ã.xÚi§é™gžÑW¾ò}ôÑG1·INNÖc�=¦/}éKª©©9Â&† `X3M—>ñ�ôÜï¾£w^xH²m†©ã.èÒ0$¹Ã›УßV0ìV0ìÖ{Æ*ÐäŒZ¶¶×6jͦ=’lík ê´©£5>Ý£d·3Øö÷S˲dµŽ¶åR Ã�Ù¡+`r™†Ò½†fe»Õ‘–ôÒî°ªë"²l'»d¢€E¯µwùS럭_÷±ãŸdÈŽ„¥pÐ ÿ5×Ëni�š¤P³s‹{û¦_¸ñþ�\°A§µ^…ã«59g·²Sê ÿ Sn—¥œ´º¨eöøÍJó6«!˜¤ˆ•Ø…4Ãp:kMÎÙ­±�þ(uÐ1 )ÉŠ FE,S9©u2 [Óó¶÷êx™É�š9f«Ò“šåuw3gi˜Hr‡•Ûé³7wÒFMðïSá„ÍqöêÊ0l™†¥ãÇmÑèô‡»Ì¸|ž�Æû÷kÑÌuª™}—µaØÊð5jbV�Ò}ƒóîÉoP>÷~eøš”ì jbÖ¾öu.3¢ìÔMÌÚ«¼ôÞý£Àáf¶|ž�|žè:N*Ø ìÔúÖÑå‰ýð÷¸Â�V«‰Ù5•:ð;ò¸"ÊM«SÑ´wtT®Óݯc0-©I£ÓhT*?�ÀàÒTW£?ßú)íß¹!æú§]¤¹ŸüÖ®ª÷¶ms‚n�r‡Õ¥—:¬xž~Zz÷]iæÌØë?õ)çH[¶8£„Ç�w:vwYîÁ¥íqþzú—¿8³x œÎ8#v÷Àxjj-$9’|á Ò[o9ïa<¹¹Ò'?é<ñ׿:ã›»SV挵7.özÓ”N9ÅyÄ :aA MÎOѺMÁ˜#wãÙ°Tò³½zä¹JK6uÌ$¯ú^Žêš-çß l[=×Ð¥³à¶šˆþYÕ¤³ }r™†îº"Ks=íë?ÚÖÿ[£p/ñ»LéòE©š5ùÐ?„.—K ,ˆZ6cÆŒ8[KwÜq‡¶lÙ¢ÚÚèk÷ÝwŸæÏŸ/o§ÿc|ï{ßÓ‚ tíµ×êµ×^S0ÔèÑ£5kÖ,]|ñÅ*))‘ËåÒé§Ÿ5ºwìØ±]Î=zôè.µžuÖYzë­·týõ×ë÷¿ÿ½�ƒ×dO:é$}ë[ßJ8¤•””¤[n¹E×]w�***ôôÓOëí·ßÖÆ�ÕÐР””�p š?¾®¼òJMê©å­¤ÌÌÌ.5uÔQ ÕÓÙĉ»+ÖëÔfÊ”)]¶ÏÉɉ»}¼çÿᇪ±±Q)))š;w®æÏŸ¯¯}ík =ÿŽÒÒÒô /è׿þµV®\©uëÖEueKNNÖ¼yó4oÞ<]vÙeÝkêÔ©Zµj•Þyç=ñÄzî¹ç´aÃmÙ²EápXãÇ�× 'œ E‹é²Ë.“¯»–±rB€×_½¾ùÍoêž{îÑO<¡µk×FW3335{öl�wÞyºôÒK»}-ûâôÓO×þýû£¾¾ä’Ktæ™gêg?ûYTçÌììl}á _ÐM7Ý$¿ßëpQ.»ì2Í›7O¥¥¥Z³f�ššš”��­Y³fé‚ .Ðå—_®¤¤$�xâ‰QŸ™ä83ïc}ßè�X5†qHÇßÍ/EEEzÿý÷õûßÿ^�>ú¨Þ|óMíØ±C^¯W^x¡nºé&¨¸¸X6ü}~úôé}®çp3ìx1êÝ}÷Ý*--�Z6f̘˜-8Ï:ë,½Þév›>~•Nÿü²ÏSþÝTWÓ9iy›¤nnÓô“c$½µä¤ÅßÕÉ‹÷÷ä}Û×kËÛ«•Ü™ÊÛ·_œ�4ËŠè_ÓeùŸÿ,}ö³PÐ0öæ¶Izòí9úë›'è½]ãu Ùù…ÕŠX’m+ÝçÕISótÞ¬I:=?Sù™>¥x í»jû5Ë4̓Ý[ÿ<’£�kš-­ÞҪꠞÛÔþ)d;�ì uásp°£þhüÙ­c~ÛÀ¶¢»þõüÄì¶ãX©¥AvK½ì¦:©¹¾5øn�™éÜei¶’÷±ýàóC¿ëŒ47ß|³~ô£E-;úè£õþûïw»#Fö¸éÊ7xRø\¦åmWzkgŸ'Þ˜§ç?tî^3MC² Õ5‡ôÒÆÝÚhÔ{G�Ö¢yš?e”R½NˆÎ²lÅû2GÝÆ IDATë·eY²,K†a(Òt¹\2�ÐH—L¯¡³'x”íµ5Þg©bKXÕõR‹%y÷T™hm£}Ûƒ~�C‰^ýlÛΖ"!ÙÁF©~¿ü 69]ÛºÑ/�ÛŒhrön�5ã-N¨Ö±c?ÒQ¹;•â òÓÃÏ¡†ÿ#ÛvF£65IßùÎá ¤ÝtSÏ]ÙÚ¼ÿ¾4w®°š;÷Ðλm›ë.ü'9ÝÏ<Ó �MœØ·sÎøâ z�€W^‘æÍsÆýž~zß�ó»ß9&# f¹^]:õT'ØM­.6n”Î9Ç�¡Íí’¼v”J~V£ûîÜoé‹wìÕ _ÈÔ‰Ó’Ú—�ö»õÜOò´+Q ÁR(,y=†²ÓL�ÉrÉë9ø Õ¶mýíµ&ýôñ:íëeøoÖd�¾õ™Œ^íÚ†Ò?ùô›$wXc2*šöŽÎ™¹Nó&mT¦¯Ñ¹øjH2¤Æ–�¶ÔÔéùv©bÝV=þÆ6½³«^�æˆ\¦)�Ë”ÙáŠg¬ ·¶m+bY G" …à …à ‡Ã²,K¶m·?'—a(Ýcjf–[çLôê³ù.�0ÊPŠËVĶÕÚäP‡ù´}Ð!Ôg·Žòµ"ιHØùï¶åí�ÿ:ïotx´1$Ã�-gÄ‚Ên®—u`�ìÀNÙ�]²ë÷9]ÿÂ-’}!'Õ×¢±™ûu̘­ú‰ÿÑ•güCŸ>þU�:å}MÍÝ¥´¤fF €.†cø¯£ï}Oš=[zòÉC;Îk¯Içž›xø¯ÍÞ½N×¾ /tBy½ I+VH3fÄýÛÙ‡JÓ§K?ú‘TW—ø¹,Kzä§^Â}³n�ô±�I]Ô»qË’´~½T\ìt“N4ü׿½÷¤ã�wÆ@÷$–n¿]:öXi×®Þ�ƒWN†KË¿˜)Ÿ·wß«·×Dôíû÷)bE_ÇNñ™š<Æ£9S“tÒô$NñjÒhwTøO’ê›mÝðûÚ^‡ÿ2RLÝü¿R}Cóg  oèÐÊç iöøÍNc8Ë¥§Þž£÷vŽS}K²\.C–e«±%¤··ï×®º&mÜ[¯= AÍ�˜¥còÒ•ásËm:ã}ÛC|m£~;œÇ¶m…[¯4rF»l»ýbow�ûrA¸m—¼T·Ò<†r’lù\!#amª—ÂRÄnÝÎ>cD:�ôm=qûò�ý¢ÆüÆ¿`»í-KŠDd‡CR°Ñ÷ÛXëtü‹�paû± ¹\¶<®°R¼AMÍÙ©üQ{”ŸµWç¾¢&n"ðº5ÜÃmÞ|SúÔ§œîh§Ÿî<æÍsÆäŽ/¹\]÷ ‡�ÜêÕÒßÿ.=ûlßÏKú“ó˜>]úÒ—œðÕÌ™ÒQGÅ»u«Z\¾\Ú±£÷çlj’n¾YúùÏ�ðáW¾"�qFìí6o–^xÁén¸ysâçøÅ/¤Ñ£{_Ûáôî»ÎkKMMìåGÂ#�8�£�–JJœðè1ÇH))·Ù¾]ªªr>g/¿,=ýtïƒÕÔHŸùŒÓÕïÜs¥ùó�ϹËåI׬‘þügéᇥ�;îWYû5 ú^ ÆÜ£“tõ§ÓuÇŸôj¿ŒS.ÓP]“¥{ÿz@'OORAžG£ÒMù¼†LÓùl6mí=цíaí9ÑgOK‘Ë”\¦éÅ¥h�KúõÕÙ7ŠŒ4|çèdƘmÊHnT²'¨¿¼9W/ntFG†ÓMO’j[ôêæ=ÚTS¯Y²µ`ZžNË÷kJNªò2| ‡"ŠX¶iª×6"¸�Ûínï$hK2 ã°� Nö˜š–íÓçÝ.MÉêÑêˆÖÕXª®·eš’Ë�b\—í'�ƒ~�ÿû¦ó†Y–l’jrBÍ�Rs�jv®¬´_c�¾ØžêmÖØÌ€Ž·E‹g;¡¿ _“2|M„ÿ†‘˜¿±ñ `à�”ð_G;v âµ1MiÌg\n$"íßïŸ�C cų~}tA�Gš:UÊËs~¼Û¶jÛ½ûðœïÀé�œ‡×+åæJ99’Ïç„ý:ÁzëÞ{O�‡â½÷¤²²�®"¾>�~øCç!9Ÿµü|çsÐ_»üÃyHRr²4}ûm©¥%öö«W; /HÕG{"zøß ïóÕEi²m[—­Ø«wDôÈóMíë:^ïüãà£=a]wa¦Šfùô÷µÍ �Ë0¤kÏÏÐÑã= ×>†xp£¤Ê�.F Æ�.èWIî°Æeî×¢cÖ)-Éÿº½6[›kr´½6[’ÓÅ/±´«®Ik7ïÕÞÚ&½³5]Ç�÷ë„IYš’�*²G>¯K‘ˆÕ%ÏÖ¹#`G‘HDì‹gš¦LËŠº(Ü1èŒ)6ºéƒw�iJrš�î–×e(5)¢Wv…õß]!½°U–¶d¶ÙûËлûÙŠþ÷Ô!¿¨mZu‡úkí¼hE¤�ÓÙÏ6ÉnipÁf):8N¸­†Ö×O’rÓèÔ)ëU0j¯&ú÷jæØmš‘·Mc2jåqõÕi0¬ŒÄð_<–åtbKt¼îá 9!¶÷ÞëÿsƒÒ¶mÎcçÎC ]öVS“´ví‘;‡o-N×Ëï7kãΞ¯Ÿ~ŒWŸ:9E;öE´a{¤Kȯ»/¯Ê0 •}ѯ Û÷$t¾Ïœ’¬‹ÎHíq;Àð4Ä€¿j}^Iî°Ž»U)Þ�J= ÷÷ŒÓ‹NS]K²šCE,—,Ë ¼«¶Q{�ú°æ€>Ü[¯�štjÁ(MÉIÓØLŸ’\.¹LC®¡ïuëxÁ×¶í¨n€íË #j;—³B’4 #v·ÁNÁÀ¶c¤x\š˜njtŠKã’ e'Yò¸,m¬³µ³ÙV(b;�øt0Øýei;ú¿íÚ–¢ÃmëÚÆ%·WÙ홞¦}ÀïÁ1ÁVDv¨Ej®—‚ ²[�1¿á d…�c·u”d¶<® üÉ�JMjÑ´Ñ;t~áË:*w·Æfì×xÿ>™Æ!Àˆ0ÜÂcÇ:cu1ô¼þºT[;ÐUÃO’ÇÐo¯ÍÑço٫ݵ݇ò¾´0M—¡·7‡zÝd|ëÞˆ¶î iBŽGgÏIÖ¯Ÿ®ïvû“¦yõÝ 2{wÀ°2Ä€ýk‚ŸrRëtúÔõŸ¹OM!¯>Ø=V5 é²,Ó ì6%[ 4õê–­ß}@«?Ø­Yã³tÊä�8)[c3’”‘ä–Ët‚z–mËJpD°­Ö.�‚�m]mÛ–ÑŒu Á4M¦)Û¶ešfûcI2 Éç6u\ŽGÒLÍÍ éïÛ"zfkXïÕZj;ñ?·)™íÁ½8wéâkû¨Øcϼ³- ;7ìtúSS½ìPkà/Ô,…C;ýI’Ñu¸±ÇÖ¤ì-š¹Ns&nÒô¼::w‡|ž�ܦEø`¸‹ñûmb½µˆ6ÜÂ’tÞyÒý÷tè‹3Î�ž~ «†§ôdS·]š¥«ï«Q}SüëÇk?l‘×#ýü/u½>‡eK×=Ðÿ\”©w·»Ý6'Ó¥²/ú•ì:?_‡ß� š®!S*ŒH¦Ë3Ð%ýÂãŠÈãŠ(ÕÛ¢Ó§®Wº¯I;øõÒ¦£õü†™ªkö©%ìQsÈ-[RKØR¨!¨æ�¥šÆ 6ì­×óîÕ´Ü476C“sÒ”�âQZ’[>�KfëßÉ-Ërò}1.;î¢/$tlÛv—1Â’“•³l[Fkpв,ź'ÑeHY[ÇúMùL[ù©.ýw—ôv ¢k-Õ…,…l[†ílkÄ Ü9øûYtúºõ(1/|·�å=Ø=ж#NÒ¶¤P³ì`³n–I¡ç 9�þ¬ˆS“m<~ëŸé¾&e&7*;¥^ó�zOs&nÒ´Ñ;4&# ì”z¥%5÷úŽL0r Çð ¾Y“=*-ÎÐÍׯ½gþþgtÿ3 }>Ç»…õå;kºÝÆã6tÏ׳”—ÕõæwÀÈ2dRu9“T»{Ó@—ˆ#sôä�.èW¦ikjÎ.MÎÞ­¦�Wã2÷+qi{m–¶²µ-�­ˆeʲ�»óêZBªk ©z_ƒÖlÞ§£sÒ´iR¶ŽŸ�¥ü¬Mð'ktF’R½.y\f‡`ÝÁÐ[ÛuCŠ’ë^[p0V8°Ëó3¤L¯T˜m*?U—lhì.)Å´U]'Õ¶Øj[²,§Û°eH½¸p�Èv­Ç¶mI–óµmI‘ˆ ËŽ„Z»ú…¤–FÙÍ R¨QŠ„�mœ¤`ôùLS’”âmV²'$Iš’³Kù£öj¢¿FÌY£&n’ËŒ» �Â02Ÿ’¢�v‡µòÙ¾‡ü…aH?)ÉÔÑãhÐBÀS/ø‘j¶½«ÆÚÝ]  “£æ}FÓN*è2€#Â4m¥xƒ:kú[š=¾Zì«¿¼9Wÿ÷ÚéªoI’1e’Ùá¢n8Ö»jµeo�žzg‡&d¥jæ˜ ;6C“G¥j|fŠ&ú}ÊJõ*Ùë–lKVÄVIJ9BhÛ‚‹’”î5µ`œK3³L�1Æ­ÿìŽhÝÞ°Þ¬ i[ƒ­�eËeHnóOj:ذõ`¶öS8(YaÙ­�ýìP³3Ú7Øätùë2r¸ý 1O5sÌM½]’ôÉãÖꄉ›”ákR†¯‰ðÀˆãn€þ€‘Ë0¤Ë?ž®×6„ôÖæîÇôö‡ ?–¢¢YÉGü¼€ÁiÈó&ê²»ÞÖîêu 6×t9€VÙã¦)%#w ËŽ(ð•–Ô¬dOPiI-²lSiI-Ú^ë×Û;&è�míÛ¶uß Y–‚Kõ¡ˆ‚!í9Шw>Ú§ÑÉÊÍLV~vŠÆeú”›ž¤1é>�JMVFŠW^Cž¶lœÝ:îW]so‡/'hÈ0$¯!å%›Ju›�êRá(—ÞÝçÒ[û"Úp ¢êzKuAK¶å\è0�]»éóg´ÿaKÎ(ßpÐéìgY­c{Ãíá?;t‚~á`k׿Hë#|0ü×á˜ÄiIMšš»Kã2•Z'Ÿ'¤Â Õ:*w‡$é¨Ü]“�Çk 2@ÏFBøïÉ'¥… º ôÅo tÀÈ�œdè—Weëó·îÑŽ}Gîz󼣓ô� 2�Øùƒß� ¶]0{ K�$¹LK9iuš—ÿ¡ò2ÚÈÖèŽQKÈ+Ij&)Д¢æ°W–e*b9á·ºæ�4´¨:bË›äQZ²WcÒ“4&ç1>•›®I¹çOÓØT—R=¦<.CnÓ�×mÊcš2MC.Ãh=ö¶ãee»ã×½¸ÞlIò¸L帥ѩÒÔ SÇd¹4ÝÖ«{"zuoD[ëêÙjŽH-K–m &Úmãx[gÛÆóÚ–ìHX 5;Ýý"a)Ô"E‚­ã|CΟm�@Ûjíh ú† Ù2[Ÿ»ÏÓ¢±™�Ö÷ä€N.Ø £swjbv�R½Íšœ³[c3‰¿qŒ„ðŸ$íØá<ñ¥$úÅ7Fé+wîQ}sÿ�ô“åÒ-Kürê„À°2䀃MVJƒÒ’šuôè�š6z‡³N’ôÚ–Ézæ�B­ß5NšR±\2$¹LC2]’[ŠÈV ©Eu�ÍÚ´ç€<.S©^¥'')ÍçUnŠK£R}•âÓ²&ç¦kBVª²|.¥yMùܦdH.Ã�Ùaš®ií™ I¦!Ý·èë¶%˶±¤�©)~SãSM��kéãõ–6׆õF@z;`ëíšÕ6‡´,™¶%EB²Ã!gŒo8$EB2"aÙ‘ÖÎ~‘ˆdµþi[;üEG�'cľ’a¶|ž�\¦¥c¶ê[ ŸQFR£2“›4!«F©Þ%¹Ã2dÉë¦Ûº²;·Ö–´öéŸkׯ× @ó&g(ÿø³tÜ‚¯È0û–œ)á?@âòG»ô½ 3uÃÿ×ÿ7¡ÿòªl�Ê ýˆFà™†­$wXI kbV�F¥ÖI’ƤtTî.m¯ÍÒ+›§ê?N—$Õ·øTÛ”*Û–"­Ýñ"¶‰Øj±"jªkÑÞ† Ü.SÕnSÉ·R¼nù“=ÊNMRf²W>·¡4¯[é>·R“¼Êô¹•îuÉå2”îó*-Ù+·iÊ0$·!¥zœ° Û4lÙRcÈRCÈRزeš†$[-Á°ö7µ·!¨ÚKÍõ¶Ì–ܵ-RC³¬`(:Ð×þß–l»mÔ¯å,�êhwÈþE‡].[Iî�Ò’š•äI’F§ÐÔœ�š—¿Q^WX£Óè”Éï+É’×Qª·E¦a‰kíè‹më_èýdSÕ3ªß·M§^ðÃ^ïKøÏy'&kÆ·þµ®E»Öa>º­)cÜ:s¶Oc²\‡ù؀ဠÀaäó„äó8!µìÔͳ] A¯&fÕ´OêÝQçׯ½yjy »¶\j z±MÙ¶­ˆe+±¤`Xõ2$£E†$Ã0dš†L9¹d�Ké>�üÉ>�Jõ(Ëç–Ûe*+5IY©>¹]¦LÃ�Ç”2“\Jñ˜ò$ŒØR]0¢ÚK¡ˆå\¸¶¥†– 4µ¨®)(˶U´µ¿9¢p]HvS³ì`P¶mE7ŒêªÒùìmm ÛÆûJ>OPIî�ܦs‘$ÙÔ茓P¦¯Q’T�³Gs&nÒ93Þ�×–aØr™ý?^ }›ßúW¯€„ÿ=™:Ö£©c=]†‘•+Wª¢¢BUUUª®®n_^XX(¿ß¯Å‹«´´tà 0hèG¦i)ÕÛ¢³¦¿¥“ò� Äëw�ÓK›ŽÖ–ý9Ú]—¡Ýu™z{ÇDÕµøZƒ~ÎßxózÛîl EÔŠho}³6î5Z÷±å2 ¹tpü¯ ÉÕzÜD/AÛrºZrò{†ÚzõÙ­ËmÙ2œ1Á²eÙ¶l[êyð@ÏLʪÑÔÜ]Êô5ÈeZÊM? ¹“6jFÞvå¦�$y\ùäcVTThéÒ¥ bÿÎRUU%I²m› Iú�iÚJKjVZR³$)ÉÖ¨´:hNQ]³OûÒôrõQªmN–m FÜzgç½»cB—cEõÒ³m' h9Á¼ö-b6ÜëKHΈÿ¥qpA[hQRì Ýq.~OÏÛ®©9;•îk’Ë<8aÖø-šž·½=Ü—êmÑØÌýÊN©WŠ7؇çÄ–ü™Úú À FøÄSVV¦åË—·]QQ¡Çü�B€åååZºtiBÛôù<†€GXvj½²Së%I–m¨¡%IùÙ{Tל,[†šB=÷þq²­ƒŽmÛ�eÚט¦@cª³°§ëÊÆÁýúÊ�-ðãœ*V¨ÐYæu‡”â *;µ^.ʱ�túÔõ:¹à�J­k÷+I3ÆlW~öžx¹Aà°™³èJÉÈÕ‡kŸRKÃþ�.ж­1ÆÒÄ.:ôþ;öŒ/ká’Ÿþ`„ª¬¬ì²¬¼¼¼ÏÀêêj]{íµ oO@€ÈlípwÂÄM²lg€®-CnjݪϾܾ�eªoIÒãU'é¯oÎëñ¸¶í'vɲûþ+ŸaØòyB2ã†cËÏÞ­Y¶hñ¬W”™Üs›ñþå¥×Êí²¢²„^w˜ðŽÃ04ã´ÏkÆiŸèRýäµ§þW/þéÆ^ï—HøïÌ’Ÿjy uîÐ'IË–-SYYY¿�Óï÷÷yß+Vtû›™™©ÒÒR•––F;Ä<iõêÕQËl»/Ó­€‘‰ À3M[ÉÞPÔ²‚ì½ÊK?Ðþµ3Ø%Ÿ'¬cÇníñ˜–mª9äÑšê£ôÊæ©}®-7­NŸ8öu�J­—ÇNx¿œ´:�÷×èøñÉçÅÜ&ÅÛ¢$wâÇ8ÿ€D¬X±BEEEª­­•ä„õ%\¸jÕª.Ëâuôûý‡60¼„|ž�|ž®Á¹Ìäw5oÒ‡=î±L5½çß§Œ8ø1.s¿¾|òóÊKÈÛ‹°žÇV’;,¯‹n~`àÄìÓÍÅ Â Q………ª®®VEE…ü~¿ŠŠŠ)”W]]õufffŸÇ Y !>wHÞ;ñe¥úÜœ5úıU}>ŸÛŒÈŸÜ(·éU�Ï0l² ÿ€!ƒðè-¿ß¯’’’~9vaaa¿ÀðC`1 [.#Æ�ë1¸$e¥4(+¥¡‹´º^G1bܱHø€ÄUUUiÕªUª®®nïZWXX¨ÂÂB-X°@ «ººZ+W®ŒZ¶dÉ’¨c¬\¹RÕÕÕª¬¬l?WAA�–,YÕq¯¼¼\›7onÿzõêÕ]ηzõj-_¾�@ á`Yg+W®ìqßÙ³g÷éØÃÝÒ¥K{¼+//ï±#ßÒ¥K{õZ¸pa�aA‡#€0¢þ qË—/ï²ìšk®QYYYûÞòòr•––ª¶¶¶}›¶N~%%%½:_"¶Xã…;�¼-//×Ê•+£¶Y²dIÜzºë(XRRÒeäneeeBc�cyî¹çº,[¸paÔ׳gÏÖŠ+bî«Öªªªöñ¾m233UQQÑ^{[׿ίKÛhßX*++c†ÿ®¹æ·o³bÅŠ¨÷¿í\±öíüüKKKµnݺn·@ KvŒ€�öþ :òbÓÚBu�;÷UTTô:Ø&??_¥¥¥*,,”ßïo÷UWWÇ ÀF}]YYÙe›‚‚‚.A¾DÄzeee}&RƒßïïU­±žoiiiÔ1ü~¿ÊËË´jÕªöå�@@•••1Ï+úàƒF½&EEE*..VQQQT°ã9:ê|žX�ξ¼OÀHE#F¨¹^¡æú˜ëÿÐUçNl±ÂZRìÀV_GÀ.^¼XåååqÏ…®Š‹‹»„ ;Ýqyçp^UUU—÷°-ØQ~~~Ì@daa¡JJJt÷ÝwGí/° àð!€áÉîÚ0ÂÄ–h'¶ÃòÊÏÏ'üׇôÄ kÆê*Ø]GÇÒÒRÞ7`ÀˆFø€ÄTVVjåÊ•ª®®V è2øp())!Dv¬\¹Rååå’œî~}éÆëýí.dXPP ²²²^ŸÀ¡!€‹ð=«ªªÒµ×^³#—åË—kÅŠ}¿ÜÆùƒ@ Kv#€ ÿгªª*-\¸0f ,???*¶zõê#X:[±bEÜ|³gÏnï¬X]]­Í›7ÁÊô'€qÿ�˜óÏ?¿KøoÙ²e*--í2ª×0Œ#Y:¨¬¬Ôµ×^µ,33Sååå*..ŽZ^VV¦åË—÷é<ýÕY@ß™]ÐRýcb.'ü@bªªªT]]µlÉ’%*++ëþÃÀª¨¨ˆ¹¬sø¯7 »,«ªªêóñô€–¦Î=OI©ÑáÂ$®²²²Ë²’’’#^G_tM<Ä æÒ1cW­Zwûòòr†õèk`� !�8€–|©~�ÿÝÇ•›?KÉé9:ísדð_™$ƒ<|lÐW±Æ½Æ f•——÷s5½+¸råÊ#_ÈÒ¹S£\ïêÕ«:fAA�,Xµ¬ªª*f0T’î¾ûî.Ëb…c�§³X Äæè€þ’;é8]¼ìÙ�.€!)V0kùòå*,,lï.WUU¥»ï¾{ÐcϪ««µpáB•––F�0®ªª’mÛ*--�y¬òòrmÞ¼9jY¬ÝêÕ«µ|ùò¨e ,8äN|‰(,,ìRãù矯|°ý}2e� IDAT\µj•ÊÊÊzÕ]¯´´´Ës=ÿüóUZZªÅ‹«  @«W¯ÖŠ+ºwÉ’% �£¨¨¨K8sùò媭­�aTUU¥üüü!Ó‰8ƒ”mt†#ÃdX S\\¬ÒÒRÕÖÖ¶/ Z¸paBûwÜïHóûýZ²dI—`YeeeÜvÝéšëØË–-;"Àâââ.ãy+++5yòäC>îâÅ‹£ŽTVV¦²²²¸ûeffv»¾ó9:Î$iÅŠZ±bE—í¯¹æš„Ž ŒüT©`cìÑ}p(BÍ ]†¿ß3€OfffÔ×½é4×ÊÊʺÔÔ�x#s‡‚’’-^¼8¡mc½&±F·)//×ìÙ³{UOeeeÌ’±ôös6П+`°! R¦Û;Ð%†ÜÞ”�.CHII‰üñnƒtùùùzî¹çbvº«¨¨èÇêºWPP ÊÊÊ„Âk™™™Ý†à†‚òòò»ã-X° f€®»‡~¿_UUUZ¶lY��Ê èõ×_�9‚¹;%%%ºë®» l&,F Fƒ”Ûëè C†i t bŠ‹‹T^^®ÊÊÊö \AA�ŠŠŠTRRÒ¾mçà—ßï�{Ü‚‚-[¶,jÙá—[XX¨ªª*UTT¨²²2*üæ÷ûUXX¨¢¢¢nÏ[RRÒçºݯóëЗ�[['½ÒÒÒöçÛÖÕ°¨¨HÅÅÅíïσ>Ø%ðX]]ÝíyËÊÊ¢ŽÝqÿÎÇï‹ÒÒR•””´Î:vd,,,lÿ¼Ê9€áˆ zTRRö묧 ]g*++;äºQ\\¬âââ>íÛÝs>\çëPPP ÒÒR•––ÆÝ¦¯ÏÉï÷÷ø98~¿¿ÇÚD# R†buéºTÒ—�t)†¬K$íˆZû{ Šƒ”-;ÆÒIEG¶CXR—%±¿·€¡Èè@ï`"ÀD€!ˆ C@† €ôƒ-o=§7ž}@�µ»º0L¹º†“{·èŸ\­më_”$½ûâÿés?xR.·g€+à 8 lÛÖÏþFøÑÇÚÃ’´{ÓëZSqÛV†+:pˆìÝ¢¿ßÿ íø`MÌõkŸþ¹Ž>©X¹“Ž;•€áŒ€ô‘mYªúǯõ‡},nøO’lÛÒß~õ5EÂÁ#XîÐ�]õè-ŸÔóü¡ÂÁ¦·ß¿ã}F€ÃŠ ½`[–^ÿû}zè†Úµñµ^í»öé{´kÓëýTi� ¶®/<|½"¡æ˜Û¸<>�vá šñM]Ö1 Nî�.€Áζ,Uýã>ý÷±[ãÿ$itÁl�{ù}Ê{”lÛÖ†×þ¢¬‰Ú¦v÷&­©¸M§}îúCªé‚ iw0  ûwlÐ?¸ªÛq¿.�O§_s}C†é4×5 Cç^þKýáG§+lŠÚ~íÓ÷hêÜO)oòœ~­`$ *++è2HÈóÏ?ß§ýƒeEôúßîÕK�ÿDV7#{ó¦ÌÕ¹—ß+Þ”.ë2r&êÔÏþPÏ?ü£¨åm£€¿xÓ r¹½ÝÖaÈèÛ€À0ø;€ø�€–/_>ÐeЯÌ�.€ÁfÿŽ zô¦EzñÑÇ ÿ¹<>�~á2]ø?OÅ ÿµ™}ÎÊ›|B—åµ»7é¥ÇÒc-†iÊ—6*ñâ`Iõ�è€E€V–Ñ«O®ÐCËhwõº¸ÛåM™«K~¼Z'|âªö‘¿ñ†¡s¯ø¥Ì�þ^æÚµéõëšsî•=#Ðì³/è )))]‡]jjj�Û0I5ÛÞÓ?¸ªÛàŸËãÓ)ç_§9ç~½Çà_Gþ¼):õ³ÿ£ÿUª‰Çië{Ï+lJø¼0\y’R5ñ˜Ê�t\�ÛîÛ¾^)™yò¥ú�@eÊ 't�ÈÀP7wîÜ·!ѬHX¯=ýs½¼êY‘PÜíò¦ÌÕ¹—ßÛí¸ßîÌYô mxå íÚ´6jyíîMzé±[uúç—u»ÞäBåM.ìÓ¹`$ªÝ³Yÿ|àjmÿ¿2L—>õ­ß«`ÖÙ]€~rÚi§éW¿ú•zè¡�.€ÃbâĉºãŽ;zÜŽ `ĪÙöžþþë¯kïGoÅÝÆåñéÔÏþ@…ç\Ù«®�µ�þÃõóe…ƒQë^ÿÛ½:êÄÏ(oòœ>pІWŸÐ?{�BÍõ’$ÛŠè©_,Õ…?|:¡®�†¦+®¸BW\qÅ@—ÀÕ÷$CT$ÒËOÜ©‡ËÎì6ü—7e®.ùñjÍYô�C ÿµñçMÑ)Åßï²¼mp¤S0Ð;‘pP«ÿð=}ïeíá¿öu¡f=uÏ›êãì =#Êž-oé‘ÏÕšŠÛâŽüu{“õ±‹~¬ ÿç©>�ü�gÎÇ¿©œ‰]»MÔîÞ¤ÿ>vËa=Œ$u5[õèM×Ïþ&î6önÑ?~ó�#XпF„H8¤5·é‘Ïé±ëß–Wj΢¯–®�™¦K‹¾vŸL··Ëº×ÿv¯vmzý°Ÿ†»ê7þ©‡nX =[ÞìqÛ�¯?­ªüúTô?€€aoÏ–·ôðò3õòwÊŠ„cnãö&ëcߨ/]ÿ:Ë7]'æ»]WØ6£€ ¬HXÿyôÇúËŠ/(Øt áýþóÈ2nÀÀ°@0lEÂA½ôø­zäÆs´oÛ{q·kïúwî•ýÒõ/–>y5£€àÔïß¡Çn[¬µOÿ<î6Ùã¦+ÕŸ×e¹ ëÉ{–¨¥±¶?Kú@À°´»z�^~–^ùËÏE׿ÎÚG»Ü]Ö1 º÷Ñ;«õÇhdž—ãnsì_ÖÅËžÕÅËþ¥”ŒÑ]Ö7ìß¡¿ýêk²m»?Kú@À° µèÅ?ߤGn/=v«¶°æ°×  C^$Ô¢ÿt£¹ñ\íß¹!îvc�>Y_¼éžûµëú×™érÇü÷_2 $íØð²º~�¶­1î6ÓN¹@/û§²ÇM‹¹~Þy¥Ê?þ¬.ËmÛÒÓ¿¸TMõû[½À‘Ò5mÀ²sãkúço®ê6øçö¦èÔ ~¨Ùg_.Ã0Ž`u‰É7]óÎ+uºXtÔ: ø’ÿ-·Ç70ÅÀ²m[¯=õ¿zéñ[e[‘˜Û¸<>�qÉ-:nÁ—»=–aZôµ_é×ÏWÃþQëìÖ3÷^¦âïüyÐÜ0À`3ož”–{Ý;ïH»w÷þ˜Ó¦IãÆÅ^·u«´!þe_ô³œ鸮Ãkâ ‡¥†©¾>ú§qóˆ0¾äru]ÞÔ$­¡58Œ†¤p¨Y/=þUýí—qÇýJN׿s/¿W9“Ž`u½wâ§ÿŸ6¼úíÛ¾>j¹3 øÍ¿øÇT Œæúýúûý_׿7Ÿ�»MFN¾ÎûÖï”3á˜„Ž™”’©ó®Z©?ÝòIY‘pÔº­ï½ 5«nÓ)çÿà�ê`¸úÍo¤Ù³c¯û⥇êý1¿û]é«_�½îÒÒއǂҟþthǰm)�öì‘vì�}Túío�ÜHð·¿IÉÉ]—WWK“'ñrÀ0F0äìÜøšþþ믫v÷¦¸Û ö®�™.·Î½â—ú¿ågw 4Výã>M;ù|åMž3@Õ}×T¿O›ªžQ]ÍÖ�.%¦¤¿¦Ìùø ¿ih¤Ùµq­žüEI—N}M.ü¸Î½ü—ò&ÇiEGÞä9:íÂezáá뻬{å¯wiÂŒùš0óc½®Ñ CÊÊrÓ¦9¡Âo”n¿]úÉOº:€áƒ `È›ôßÇnÕºüjXtýë,wÒñš{Þ5zõ¯wE¯`0zP»{“êömè2bJÉÈQö¸é]pX5×ïWͶweÂ6n¯Oc¦Ìè20@óσä´le�Ÿ1$nÌÀáU»{“þïÆsÕÒèRºõü¨ÅÿïQM:¶h K�¤ª¿ÿJÿy´¬K‡¾6¦Û«�}¾L³Ï¾¼Ïç˜sî•Ú¾þEm|ýéè¶­§y™¾°¼RiYcû||Ä–•%Ýz«4eŠôµ¯�ìÁ‡ @À�°ýƒ5úçW÷Øõï´ÏýH³Îúê�ýÇå“O×>gðÍšñ�T£æ†€žøÙEÚµií@—Ò­ìqÓõ™oÿŸÒ³Çt)ÿ?{÷U•ÿqü3é=H�XPª`¥. T(²bA)–] bÛêÏŠ¬XP”bDša ½hZ „„�„�òûã k˜{'“2%Éûõ<ó`Î9÷Ü/$B2ó™ïÊmÕÌGµmåtO—áP@p„úÜû¾¶ºÆÓ¥ÀMrO�ÐÂ×nÖѽ¿xº‡jÖ»HýüTáµxº¸ÑîÿÎõúðßYÛ¾ÿˆ ‡åådié{÷jßæ%–kÂk5P¿±+:®u¹ï×óΩš3±«2ÓöÏÍ:®ESFè† ‹åãËÓ§®p×]F‡À»ÊþžüÉÇÓàÈ™ÓÙZ3çqÍ{ñ:‡á¿ºMÛë–Ék+Í‘¿VÎl³Ùÿ½yÙ4Ý·ÉUÁ[m^úŽ×‡ÿ$éøáßôë·S<]PnGöþâõá?IÊËÉÔšÙ<]ÜhËò÷¼>ü'ÿü²øMO—7Ë9yÌÓ%8íÔ‰#ž.¡ZK;¸Ss&^í0ü׺»†>½ºBÂ’¦¾cgÈפÓzʾMZ÷ÅÓr˜»óN©[7OWPùx­Ã 4ûÉÎÚ²ì]ËsüCÕeØó2þëJw䯕膭uiŸqöœ&×ýEÁ+e¦&yº§e¤&zº Ü2R=]‚ÓÒ�ìñt p£ÊõïA婤¨ÐÓ8­¨°ÀÓ%T[ÛWÍÐçÏôRfšùß>¾~êxÃSêÿà§ ‰¨Ð{G7l¥.Þ3�Û¼ôû#‚ ìliõêÿ=Ö®•6m’¤äd)+Ëù½ž3ÿV ¥À¯sæô)­Ÿ;Y[W~`ü“Œ®½îšZe‚Õ~à#ÚóóB»®‡)ûôß¹“ÕyèdUoRX˜ïéœVXPyj¬T¶¯ãÂÂùøøzº ¸Aåú÷àŒ§K€»™tç ‰TíØ–(æ2R“”uüP±1³.Üp­3§Oiù÷iÏÏ -ׄDĨïØU·I;—ÕѪëm:¸s�~Z`7·ô½ÑöÌê*ùs'@Yíß/]}µã5ÁÁR¯^Ò„ R;ßÊuè õì)-[V¡%T+^åàîuZ1ý>e¦í·\㪎×?¡ÖÝî¨ÔÇý:âë Þw¿£/žë£¢óº¦l^þ®š\1@u›\á¡ê'™¼¡§vÃVüÈ|ó?ë>Z¿.™Rlìüï»áZÇÿ®Eo ׉£{-×ĶèªÞ£ÞQpxm—×Ó}ä›JIÚj÷&¬3¹YZôÖÝøäRùúù»¼€ª"'GZ°@úö[éÓO¥Aƒ¬×B <¼B^n–ÖÏ}VÛVNw¸®*wý;_DL¼ù‹�EEúeñºö¾™î/ ^/0´†úŽùÈ£5¬üèA»N�ªÀ*t>ÈÃ!–ÿÿ¨ ó_´§û_õ®~ã>ñh ßü/�8ò‡Gkà�~ûqžV~ô òórLçm6]Ñÿ!µëÿ�ÛÞôå¢kïûDŸ=ÓKùyÙÅæÒlךÙ�éšÛ^qK-UI^ž4j”Ô£‡n¾&6Ö½5T5wp÷:-{ŒÝ\etý{R­»�¬²]ÿþjï¦%Zñá–ó•íJ¸Oý‹:©A³N®¡#@TIE&]¬|ýƒ<þÿÜéSé¦ã\½yÇ¿�(&?/G«g=¦�kgY® ¯­>£?Pý‹:º±2CÍz©ÇÈ7µä�;íæ¶¯š¡Í:«i»n¯ ”,2R>\jÙRŠ‹“.¸@ª[WªUKJI‘4‡I7J_|aÓÊ«m[鯥k®‘ê×7!9"ýñ‡ôÍ7Ò—_JÇ�—nß1c¤èhûñï¿—V¯6þ»K#X×¾½Ô �qϽ{¥�>’fÏ–ò½è)äÔT£à�7šÏ7hPú=¤Áƒ¥Î�¥¿ýÍx4l(�8!=*íÙcÜsáBããò²Ù¤ë®3Ž>nßÞ-Ö©cì�� Í›'Íše|þÜ� Àcòr²´î‹IÚ¾j†ÃuÕ©ë_ÎÉ4­ž9^ ?-°\ãë¨ËûY‡ÀÛœ8ºW‹ß¾]Çî´\S·I;õ3]¡‘uÜXYqMÛ Ð�]k´cõÇvs˧ߧè¸ÖªQ§±*f‚‚¤çŸ—F�–Í×Ô¯o<Ú·ÿߨ[o!¹7Þ0Â[¥Õ·¯4y²tÉ%ösµk�V­¤¤ÿüGš2Eš8QÊÌtnÿ±c¥fÍìÇ �à½÷Jo¿m„ÒΊ‹3×\#]½Ô¿é_®´{·õ\i:^x¡ñç3|¸T£†ý|LŒñhÝÚ8vxÚ4iæLiüxéðáÒ×}¶¾9s¤N&ﳋ�5ݺI/½$ýûßÒ+¯G ¸‹�§ TOv®Ö¬'¯rþó U×[^Ô�ñ_W‹ð_ÂÆš9¡£Ãð_Dí†üè|Õ»°ƒ+€²KÚ¶BŸNêfþ³ÙtYßû5xüB�†ÿÎê2ì9ÕŽme7žŸ—­oÞ®3§³M®î&ýò‹ôàƒÖá?+QQF—½ Œ.~Î ’>ÿ\Z´È<ügÆÏOzà#hصkéê4Ó»·4ujñðßù–.-ÿ}*ZD„õÜ©SÎí1r¤´e‹4nœyøÏŒÍf„ÿøCzôQç®ù«Ë/—¶m3ÿ�/,Lzæé×_�”îBàVy9'µò£jþ+×;<ò·~³Nºå¹uº¸ûUþÈßœ“iúæÍáZòÎ�ʵ8ÆQ6›Úô¸K·LþAüír÷e”~ä-šò�9mþªnPh”®»¶:^ÿ„×]ïç¤~ãfÈ?(Ìn.=ùw­˜~ŸªçûôS©E‹òíetԻ⊒׆„H«VI7ÜP¶{ÅÄH+VHwÜQ¶ë%£ÞO>q¼¦ À8ŠÖÛtëf=wÈú¥IÆŸýgŸI|`„0Ë"(HzñEiñbÇaÄ¿êÜYZ»Ö8bº4š53Žšö÷/}�eÁÀ·9°sµ–½?V§N±\㪎×?¥‹»�tcežóÛ�ó´fÖcÖÁ?]ÿzÞ5Uõš¶·\ÞèÀŽïUp&×t.¦Ñ%ê7v†Â¢¼¯=JDí†êu×T-zë6»¹„Ÿ¨A‹®jÕu¸*’ÑÉ­_¿ŠÙ+"BúòKãøÜÂBëuS¦?F¸,|}¥wß5:ÊmÜXúëÇŒ)9T¶l™”nýt³G *]|±õ|IGó~þyÅ}¾ûô1>ß½z9þ|‡†G—5pØ AÙ®( €—;��©>{J;×:~Ûaýf�Ôóη^³¾›*óœìŒ-Ÿ~Ÿ’¶­°\c³ù¨M�»tå�ÇåìÆê bÔ»ðJ˹¶=îöÊðßY�/飶=Gió²ivskfOP�F—(º¡ýQÁÀõž|Ò|<9Yš>]úî;iÿ~ãã:uŒŽlÆI·Ý&ù˜œ�Ö �týõFÐÌLÿþÒí·[ד™i„ÊV¯6Be={û™…Ç||Œ}-[Jyy%ÿ^ÿÊ™ŽrÞÖýoÄ#ôèÈÚµÖs£F•þKI‘~þYÚ¹Óø\·o/EG[¯ïÞ]zþyiüxë5/¾(5lh=_P Í›'­_/%&J—^*õè!uìè¸VW p)g»þuºa¢Z_ãà”*d÷úϵfö�Îΰ\ÓH½îþ�.h|™+€ŠU;¶¥Z]=BÛWͰ›[9ã_ªÓøRÕ¨ÓØ•9§Ó�“txÏF¥ìÛTl¼àL®O¡¡O¯V@°ýQÁÀuê×7º³™¹òJ))©øØ�ÆcÙ2# ÷á‡ö×H}ûZŸ}Öºžùó¥{üå)ð�?–&L�fÌ�®¹Æþš&MŒ`Ü{ïYï[’U«¤G1Bo H7Ý$=ø 4wnÙ÷tVHˆtõÕÖóaaÆç¢o_©m[Ç{åçGûš©WOzýuëkss¥‡’Þ~Û~î®»¤·Þ’ͯ}ä£ÃßöíösQQÒÝw[ß÷Ø1iРâÁÅ ¤‰¥I“Œ_܉ À%Ngghíœ'µk݇ëèúWœÍæ£6=ï6ºþù—ñlð"�‡NÖ‘?~QÚ�⯮æçeë›7‡ë¦§–É?0ÄCÕ9æãë§~cghö“�íÞÄ•™¶_ËÞ­~ã>öPuTO-[ZÏåç;¾ö£�¤[o•jÖ”~ýõ�Í›�0™™®]­�¯=tÈ8ÞÖìÚŒ.€ûöÇ Ÿoøð²¿øÂüÿö›ôÌ3FàÍê÷Q‘6”¾ÿ¾böz磃¢™;î°>‚÷Ô)£ÛÞÖ­æóï½'mØ`„ôÌþüm6éñÇ�ÏßùÆŒ‘Ì÷-(0Â� æó“&] Ÿ~Ú|ÀLš\P>‰[—k愎ÃþA¡ºzø¿5ø‘ùÕ"ü·ë‡9šùxG‡á¿È˜FºþñÅê|ó³„ÿT~þAê7n†üƒì;å¥'ÿ®Óïó@UÎ ‹ª«Þ£¦¯Ÿgï¦oµyY gÚ€ å砽ɚ5FG¸˜ë5=zǵÞy§4uªôã�ŽCsC†XÏ=õ”ãk�7Žš5Ó¹³Ñ¹¯´NŸ6j?þû«ôôÒïçIü!=ü°ùœÍf­¼ð‚uøï¬­[­ÿü%# iÖMrÀëk>üÐ:üwÖk¯I'O:^P‘*Lî©Zöþ}ýúPeg¦X®«ß¬“n™¼®Zù›•~Dó_¹^˧ßgyä¯Íæ£Kz�Ö°g×pä/€*)¢vCõºkªé\ÂO ´cÍL7WT:q­»ëò¾÷›Î­û|¢ŽžwD0U‘YàÌ÷Û¿ßúšÆ�¥—_–’“�îoÏ>+µoošãwZ‡Ös«W—|ý’%Ösÿ{éë™;׺c^e’šj£k ìÞ]Š‹3ŸKI‘þïÿœ»Ïo�ÍøùI={óñ‘Ú´1__P`tZ,ÉÉ“F7Fw!¨‰[—kÖã�´{ýç–kŒ®/W›®;ÖÌÒÌǯÔ��ÖÏ�íúwÕMOÓõ@•Öø’>jÛs”éÜêY�)uÿvÓ9oÑaÐcªÛ´½ÝxaA¾Maù¦/ªŠ¼<ë9¼âhuœïöíÒÞ½Ž¯õñ‘Úµ“žxÂèðwô¨qüï°aR­ZÎ×àï/µmk>WP %&–¼ÇîÝÆZ3^è|-g­\Yúk¼Í®]ÒWHÛ¶Y¯éÜÙzîë¯�?ê87Wš7Ïz¾wïâ׫g|ÞÍlÝjíìŒï¾sn@EpÐ$€’åf¥kÍì úíǹ×ÕoÖI=ï|»ZÿN?¤Óïwü³ùøê’^÷ªý G þ¨6:Ý8I‡÷lTÊyó Îäjñ”úôjÛì l>>ê;zºæL¼Æ®ëý©ôd}7m”®{`Žlåi1€s¸rt,¯#ÖsV@IzõUiÊçï-�a<ŠŠŒ ×¢EF¹ãÇ­¯kØÐ: VX(­XáÜý %__ûñ²÷í+ý5ÞâÀãHÞ÷ßwüù•¤ú^J(íŸ�£ f«VÅ?ŽŽ¶^›–æü=�u~-@yªº½Ö IDAT”ÙÞMK´âÔ›uÌr�P˜®ºq’Z]=Â�•yÎöU3ôÃguæô)Ë5Q4Q¯»ßQL¼Å9PEùøú©ßØšýdg»Žy™iûµìýÑê7îcUW²�Èõ3]_¾Ø_EE…Åæ’¶­Ð/‹ÞÐå×>à¡êp­œë¹²­çĦN5ºùuìXú{ÚlƯmÚH÷Þ+=õ”ôŸÿ˜wé ±ÞÇß_êÚµô÷ÿ« .(ý5))%¯ñ‡wí2ŽB^¼ØC:Ã]ÀÐÐâ•GJ-çä1-yçn-zk¸Ãð_ýf�tËäªEøïäñCúòßõýÇY†ÿl>¾º´Ï8 }f5á?ÕVXT]õ5Íxõý<{7}«ÍËÞõ@UΫ״½: zÌtîǯ^Ðá„ n®÷pwÀSÖï±VQ‘Ô­›ôÎ;Æ—UT”ôÖ[Ò?˜×äâÃ[ ­¤§W|¥µ{·ñ­\I�úõ¥îÝ¥±c¥o¾q>üW’҆뒓­ç‚ƒ‹ì(ôiÖÅÑʉί(/€€RÙ»i‰f>ÞI ¿²\ã¦kFüŸ?2¿Êù[TT¤­+§kÖã�th÷:ËuQ4Ñ�O|§N7<%_?Ïj@5׺».ï{¿éܺÏ'êèyG{›Ëúݯ¸ÖÝíÆ‹Š õíÛ#•�Q‰Zóà$GÀš5˶gD„õœ£ $�>mtðkÕJš6­|Á¸Œc…Ïçên{e feU|Þèða빺uK·—£õÇÎëq�™i½¶vmçï験 @Eã`€SrN¦iÕÌGµç§…×ÕoÖI=ï|»Êÿ$ãxª¥ï�V²ƒî6_]ú÷±j?ð‚ð=¦C¿ÿ×îgªÂ‚|-š2B·<»V�!‘ªÎ1›Í¦Þ£¦iÖ“�u*½xK™ìÌ-ž:RC](›ï¿TŽº®Õ«W¶=4°žËÈpn��;¥{î‘ÆŒ‘zô�n¸Aºþz)²”ßFŒc|üøÿÆöï7Ž6ëü–’b\½—³òòÊwÏÊÂQ×¾F�J·×ßþf=wþ×µ£Î}¥ ÆÅ9¿ ¼J”°q�V}ò°rOY¿…2 8\�n|Z­ºwcežQTT¤­+Þ×ú¹Ï*?/Çr]ÍúÍÔóŽ)÷ &l>>ê;zºæL¼FÙ™ÅÛëœJOÖwÓFéºæÈfrT°7 ‰T¿±34÷ù¾*,È/6—œ°A?ÎQWžà¡ê¨xüa=×ݾ1n‰|}�)Ý~Òwß�{v•.¿Üx\v™s¡±nݤ¹sÿ÷qQ‘4»6$Dš4©t5V„üü’×Tî îÚåøã¿*MW?€À�x *ÀRÎÉ4}óæp-yçN‡á¿Ø]uËäõÕ"üwâè^Í{ñ:­™=Á2üçãë§Ëû= ›'®$ü„DƨϘé²Ù쟦LÚ¶B¿,~ÃU9¯N£KÔé†I¦s?/z]IÛV¸· \hÏë¹fÍŒctKãï—BC­ç÷í+Ý~•Ÿ/­X!½ô’Ѱqc)>^zâ ÇGèvëæ|aaeï|XÕ%¸~½õÜÀ�RT”sû„…ë­,_^üãœé·ßÌ×Ö­k9íŒþý�[PLý¾áKÍœÐQû6/±\®kF¼ª�ÍUXÔn¬ÎýŠ µié;šýTW‡GþÖ¬ßL7>¹LWy\¾~þn¬*§zMÛ«ý ñ¦s?~ù‚;øÌ´í5J�/éc?QT¤ï¦�RVºƒö5T"¿ÿîxþý÷¥ðpçö 6ŽÛµ’™)%$Ø�ÛlRÆFÇÁ{ï•^}Uúúk#°õÍ7Žï™”$=÷œtÝuÖkâãíÇ­×ßz«ã{JÆqÄ3fáÃo”Ú¶5~ÿeQXX¶ë*£M›Œî‹f¢¢¤gžqnŸÉ“¥ ,^¾8}ZúáûñŸ~²ÞÏ™û6iâÜ×@E!(&;#Eß¼9\ßME׿?�8ºW_<ßW?|ú¤ Îäš®ññõÓ×ýS7O\©è†N¾ Iº¼ßŠkmv`QQ¡¾}{¤²3RL®ò=ˆÚ íÆOgghÑ”vGPíÙ㸠`Ë–ÒÒ¥R‹Ž÷¹è"£ëZ»vÖk¾úÊ|<&Æ8ŠxùriêTéÁ¥k¯•.¼PêÛ×<Àw>G�7˜¼ïà³Ï¬×?þ¸éø~“&I·Ý&=û¬±×¦MRv¶tè�Ô¹sÉõþ•ÍVºõ•ݬYÖs÷Þk<¹÷^iìXëù3Ì;*Z}ýIÒ AŽC€~~Òë¯K>¼ ܈o=ÀÃŽîÛ¬/_ ÷ïo®>Ÿ¤¼œ“«å·ÿÎÕÌÇKîú×í¯U›®¿.y[³Ÿêª£{±\w¶ë_‡A�ÑõÊÀf³©÷¨i �ªk7—�™¢ÅSGªÈ‹[Þ‡©ïØòõ²›KÙ·Ië¾xºBï—•ž¬eŒÓ»ãšjÖWé·çUèþXùè#Çó:HÛ·KóæἡC¥=ŒcxÇ�“>ùDÚ±CêØÑñ>sæ˜�=j=g³I JŽ÷v3;vvéRiíZóõF=µj™Ï�o#ÍäæJëÖ9®µº³ú\K’¯¯ýê+ãXÞ³áH›MjÞÜ[N�j¬3“›+=ù¤ùÜüùÒ�Ö÷~òI顇ìÇkÕ’V¯–úõ³¾Àü<]Twÿ�7Y‡~3žUØ´ämíýu±nž´RAan«!;#E˧ߧ¤m+®‹mÑU=î˜R僒”ž¼GKß»G)‰[,×øøúéò~èòkÿIðÊ)0$RýÆÎÐÜçûÚuÌKNØ  ^R‡A�y¨º’E7l¥.Þ×÷3þi7·yé;ªQGó£‚KéÀÎÕZòŸ»Îuí?}ê„–¾w¯ê_Ô©Zü¼ð¬·Þ’F�–êÕ³^c³Iƒ�²Ø¸ÑÝYyõUi¸ÅÁ4­[K»wK/¿,­Xa„¸òò¤ ¤‹/6BˆV]÷ ¥4Ÿ{è!óԧ�´k—QWR’täˆñg0z´4dˆõïc„êu¤oYlÛ&½ô’ôè£Ök4§NŸ‡fͤ0'^^ùÇ?¤‹&Ó……ÒÃKŸ~j}ýË/K÷ßo|½&%I—]&µo/–|o€ŠF<(ëøaعºØXFÊ>­ûüi]sÛËn©a׺ϴvÎã:��a¹& 8\WÝô¬Zv¹Å-5yRaa�6-y[?ÎI…ùy–ëjǶR�;Þâ¸_¨@u]¢N7LÒÚOŸ°›ûé›×Ô Yg5h~•*sN«®Ãupçj%ü´Ànné{£5ì™Õ¦G;£°°@¾zQ?/~C***>YT¤;W©y§›Ë´7ÎÊÌ”n¿]Z²Ä5ÇÑæåI·ÜbÿOÝ_mÞl„³^¶x ½n]#ŒWZ/¼ �´8 gãFéã��£|ÍDG×;k÷nÇG ã&L�®ºJêÔÉñºÐPéòË�ÛsâÄ’ÿü?ûLºñFÇAÖ Œ‡•C‡¤úõ�«  <8<èhâ&Óñí«>Òáß-ÞjXA²Ò�hák7kùc†ÿb[tÕ-“×W‹ð_zò}1¹·ÖÏ}Ö2üçãë¯vÑMO-#ü.ж×(óNyEEúö?w(+=ÙýE•B÷‘o*ªî…vãgr³´è­*È?Sê=OeÕ—/ö×Ï‹^·LD‡×.õ¾”ÅÒ¥Ò°aR~~ÉkKãÌ#pµgOÉk_yEš<¹âî=ožõq°gÝu—´reùïuè�tíµåß§º(,”úö•fͪ˜ý&N”žyƹµwß-m2§DŸ}&}ðAÙ®(-€àA)û6[Î-}o´òór\rß]?ÌÑÌǯtxäo@p¸ºýãu |hn•?B¨° _?}óšfOìêðÈßÚ±­tó¤•j?àaùøÒD\¥ç�SM;ååf×¢)#ìŽö&þ�!ºö¾Oäb7—v`»VÏ_ªýý¶^sžºZÉ{6:\_ª}(�O?5Ž]=|¸böËÌ4ŽÒ]`ßD×Ò“OAÀò¿úªä®ƒ’Ñ�°é‹/Ê~¯;Œ.uüQö=ª£ÌLéÖ[�#•33˶GNŽñyv6ü'IÇŽGF/_^º{Íœi}L5€+JIÚj9wòØ­ŸW�oa”Ñõoþ+×kùôût&7Ër]uêúwìÐn}öLOýøåó»þµ8^7=µLµê7ss…Pý‡©ïØòõ²›KÙ·Ië¾xÚU9¯F�Æê1òMÓ¹«?VÂÆ’Ó E……Ú¸ðÿôÕ¿)çdZ‰ë#ë4*u�”Ç¢EÒßþ&=òˆôÛoeÛ#7×ñÅÅI+¬ß¯néᇥ† ¥I“¤#GJwío¿�ø–NŸvîšS§Œ.…:HkÖ8¯½{¥Ñ£¥K/-}�øŸ/¿”Z¶4Ž[v6|ZP ½ÿ¾Ô¨‘4{véïyê”Ô«—ô¯!PGvì�ºw7ÂgJßô Ìh_tä�ŸÎoYþž.j?Du_Zî{íX3Kk?}Âað/ 8B�‡>«W +÷ý¼]Aþý²ø ýôõ«*,°þI¼vl+õºû?ÿÀÍ¢¶R—aÏéûÿ²›Û¼ôÕ¿¨£ùQÁ^¢i»:¸{­¶¯ša7·|ú}ŠŽk­u›^››•®%ïÜ¥;W;u¯ðZ±òññ-W½”En®ôòËÆ#:ZêØQºâ )6VjÐÀø56Öa¥§K'NH©©ÒÆ�ÒªUFˆ.;»|5$'KO?-=÷œÔµ«Ôª•Ô¬™Ô¼¹ñˆ‰1ÖI ƽ.”æÎ-¹ëŸ• Œ{5i"Ýv›Ô£‡ñû¯][ ’’’¤}ûŒÇºuÒœ9ÆQ¶Îºí6)4Ô~¼¬õ–ÅêÕÒ5טÏ�:å¾:Îwð 4a‚ôÄRÏžRïÞÆç¡iS#Hºw¯´e‹´y³ôË/ÒÏ?—½kàYEEÒ«¯AÂÎ�¥«¯–:u2ˆ[¶_Ë_~iÜó¯>üPúþ{ûýr\sø¨Æ€‡d¦íW^N ?ué»wïÑ-“�¯_@™îsòø!­˜~‰/ĶèªwL©òÇýJRêþíZþÁ8¥Øn¹ÆÇ/@íú?¤ËúŒã¸_ð�V]oÓÁ�k”ð“}Ǽ¥ï�Ö°gV›ì-º {AGþøÅîçÏü¼l}óæpÝôÔ2ù?*8yÏF}ûŸ;u*=ÙéûDÆÄWD¹”Kjªq„oiŽñ­HùùFÁ²t,«={¤§ž2é§Ÿ*v¿²HK3‚mÞª°Púî;ãá.™™FçËE‹œ[Ÿ˜h<\�#€ÀCR·8µ.#eŸ6Ì©L÷ؾúcÍz¼“Ãð_@p„º�|Cš[åÃùg´aþKúüÙžÃ1ñmtóĺâÚ ÿ€‡uù¦"cì�·=“›¥Eo�PA¾÷ž¯æëç¯~ãfÈ?(Ìn.=ùw­˜~_±±_—¼­y/ö· ÿùúšŽ›ýù z Õb´Ùìúøÿúí5m7PÑ [;µ÷Éㇴìý1:´{�ÃuÕ­ëßÒ÷îÕñC»-×øø¨}ÿ‡uYßûdó!#ÞÀ?0D×Þ÷‰>{¦—ò󊟘v`»ÖÌ~L×ÜöЇª+YDí†êu×T-zë6»¹„Ÿ¨A‹.jzÅ@}7ín%m³nYQ;N}Ç|¨ùÿwƒr³Ž›£ À.»Lºî:OW�²øàéÀOWw!’’¸Ùn,¾M/EFÇiËò÷Š�jé»÷jèÓ«v¤+**ÒöU3´îóI:sú”åºÀ�Hu¾ùY5¿jhÙ•DA~ž6.|E¿~û– ò-×ÅÄ·Q¯»ÞQTÝ&n¬àŒšõ.R�‘ojÉ;wÚÍm_5C šuVÓvjº_fÚ~-Ÿ~_‰]ÿâZwW�‘o*$2¦ìÅW)‰[´ôÝ{”~d�å_¿@µð°.ë3Ž®ÀíNÝ«,‹c�UÒ÷ÞäÐîu:XÎzƒÃjªfýf²ÙlT€Ê¢i»:°k�v¬þØnnùôû×Z5ê4ö@eÎétÃDNØ “ç¬øøú«ã Oé’^÷H’R’¶š®ã`€ê‹ x@Fj¢òr2íÆcâÛÈ/ X½îšªy/ÚŸ­ðó¢×Õ´Ý@Õ¬wѹ±¢¢"m[9]ë¾xZùy9–÷ ‰Tç¡“Õ¼ÓÍó›ðbgNk—õë·o©¨¨Ðr]ÿ€§äŸÉÕ¢7oÓþß{º·***ÔWÿXî}¢.h¢ëüT‘ÑqP€Ê¤Ë°çttï¯J;°½Øx~^¶¾ys¸nzj™üC¾~ê7v†f?ÙY§³3J\UWýÆ|¤:�/=7–‘²Ït-?×T_´:HIÜb:^§Ñ%’¤zvP««GØÍäë»i÷¨°°@’ÑõoÞ‹×iõ¬ñÃq­»ëÖçÖW‹ðß‘½¿hÎÄ«õËâ7,þþAêxÃSºñ‰¥¼HK׿?åŸÉÕ†¯^Ò¦ï¦:ìúW§ñeêyÇ‚À£’6¸t_Ïÿ¸ïêÎÿ>@õQ»¡zÝ5U‹ÞºÍn.á§jТ«Zuî�Êœ׺».ï÷€i�Ùæã«ƒÆë²¾÷›už™šh7Vƒã.òî»Æ€wóü+P ¥$n¶‹‰o[ì〠0õ¼ómÍeˆÝÚ¿z¡Ä{ĵî®#ßTHdLÙ ­$ŽìýEKß½×ò($Éèú×aࣺ¤÷hÙ|h€ Ïúù›×µuåÕ*¸p`Ç*½52ºä……ÕTÓ+¨Ó�åZA•€gĶè¢ä=]¶dt¼Ëöv¾×Ï{Áß®péþ¼[ãKú¨mÏQÚ¼lšÝÜšÙT§Ñ%ŠnØÊ•9§ÃÀñJNØ C¿­?7£¾c?TÝ&í,¯;aòsodL¼+J@%A<À¬`L|»±Ø]Ô¼ÓÐRíZC=þ~ZåÃùy9Zû铚û\_‡á¿:�/Ó°gVëÒ>c ÿÁã¶®ø@ÿýò¹jþ«(¹Yǵíûõó¢7<] ”[»�¨™‹º4׎m¥Kzßë’½K£e×ÛTïÂ+]²wüÅ=uùµ¸do•G§')¦Ñ%vãgrµxÊåådy *çØ||tíý³׺»C"Õ¼ÓP }f•ÃðŸd~p„„¾à9t7;qt¯òr2íÆÏïxVç¡“•¸m¹r2SKÜ»:uý;œ°AË?ç0øç¬ƒÆ«mÏ{þÁkü¾áK—îovL˜»¹º†´ýÛ]º?¸ƒÍfS�ÛßPQA¾~ûq®åºkïŸUª®§!ѪYïŠ(±Ü‚Â4düBe¦í×ÉcUTTäÔuùy9úúuë7Á4hv•úŽýH>>¾U*€JÊÇ×OýÆÎÐì';ëtvF±¹Ì´ýZöþhõ÷±‡ª+Y@P˜ú?ø©Óë ”uü�Ý8GToÀÍ̺ÿIæ%)0$B=nC_¿1ÌrÏÀÐê2ô95ëxc…ÔèÍΜÎÖçMÖ–ïK^D®Óø2õºkªjÔiìÆê€’EDǹôÈÇиlogG”ï¨ß’„׎uéþà.6õ¼ómI² þôõ«øÐ\…¹³´ Q»¡"j7tjm~^Žæ¿r½å|ÃVÝtí}ŸÈ×/ ¢ÊPÉ…EÕUïQÓ´ðõ¡v?#îÝô­6/{Wm{Þí¡ê*Ö‰£{MÇ9 z£¸YJ’}0,ªžBfâÛôTÓvƒLçâZw×­“×U‹ðßá„ šýdgmYþžeøÏ/ XWÝü¬n˜°˜ð¼R×[^PíØ–.ÙÛ?0T-»Üê’½K£y§›ZÃ%{GÆ4R‡�ã]²7xÂÙàEÌCoG÷þ¢ù¯\¯¼\ï=Ʋ¢œ ÿYå ÿ°׺».ïg~,øºÏ'êè¾Mn®È5¬:à¨Þèn–’¸Ùn̪ûß_]}ëKJMÚrîÿÕ©ë_^n–ÖÏ�¬mßOwØõ¯nÓöê1òM‚ðj�!‘ôðWúò¥:vh—隈Úqê~ûëR)�Ò�ªÛD¡‘u*¢Ìr©Q§±†?ÿ£ŽÚ]êk×~ú„å¿áµhÈc_+(,ª¼%€W9,ÈÏÓžŸÚÍŸ VöN€ŽþP^Ž×¡ßÖ+9aC±ñ‚|-š2B·<»V�!‘ª®bd¤$Ú�ùú)8¼¶û‹€× nvtï¯vc1ñmK¼.(,J×OX¤„Ÿ*/ç¤Zv¹UÁáµ\Q¢W9¸{�–½?FYÇY®ñ Ñ•CW›wÉVÊÀà AaQüè}ùï�:vp§Ý|fZ’vÿ÷su¿ý�Jû5^K šu*Õ5kçX‡ÿ"ciÈc_{EÀ\Áæã£Þ÷¼+½#‡!ÀA)ÿÀTè:„ÿT›��úŽž®9¯QvfJ±¹SéÉúnÚ(]÷ÀœJûýµdÞ°fݦ¨Þ„#€À�Ò�ü¡ü¼»ñ踋�º>8¼¶.î6R—÷»¿Ê‡ÿòr²ôýÇé«tþ«Û´½n™¼Vm{Þ]©_ÈAõ¥Á�ÌW­-Lçwý0G+>¼_Eº^V%kç<¡Í˦™Î…׊%ü ZðññUï{ÞU“Ëû›ÎÝû‹¼z£ÎœÎvse®Cø@E ‰ŒQŸ1Óe³Ù?å™´m…~Yô†ªª8©‰vc‘1�Ü_¼ @p#³ã%©n“vn®Ä»عZ³ž¼JÛWͰ\ã¢.Þ×�ñ_+¢vC7VTœ³!À(‹®Õ%XRøïúǾ!ü Ú()˜œ°¡Ê„ ÿp…zM۫àÇLç~üê>ïˆàÊĬ`dL¼û €W!nd ¯Õ@�!¨ÆûäåœÔÊ�ÔüW®wªëGþ¢* ‹Ò�ñ «mЙð_XÍzn® <«:„ ÿp¥Ëúݯ¸ÖÝíÆ‹Š õíÛ#•�‘br•÷ËHI´£ €¥$n±‹Žkã�J¼Ï��«5óñŽÚ±f¦åÿÀPu½åEºþ¡Ê ¯]-C€„ÿÀÚÙ`£¶7�?Ì?“ëæÊÊ�ðW³Ùlê=jšB£êÚÍeg¦hñÔ‘**,ô@ee—™v@E…vã‘Ññî/^… ¸‘YÀ:ñm=P‰÷8��©åÓïÓüW®×©G,×ÕoÖIÞ]£‹»ßA×?TIÕ-HøJæã㫾c>tüúõa•*Hø€»†DªßØòñõ³›KNØ ç¿è�ªÊ.#5Ñtœ#€@Üäxr‚òórìÆ£ã/ö@5Þ!qërÍœp¥vý0Çr�P¨®þo ~d>]ÿPåU— á?pž�¯ŸÃàÁ]k+M�ðw«Óèuºa’éÜÏ‹^WÒ¶î-¨2RöÙ�Ù||^«�ª€7!nbÖýO’.h|¹›+ñ¼ÜS'´ìý1úúõ¡ÊÎL±\W¿Y'Ý2y�Z_s»«<«ª‡ ÿ@éU… á?žÒ¶×(5¾¤�ýDQ‘¾›6JYéÉî/ª 2RíÆjÔiìþBàuìÏÀ¨önZ¢´ÛUTTèéRTbþ!Šmyµ¢¶ª�ýÌ€áµbQ!ûW{7-Ñ÷3þå0øçªN7LRëkþá¾Â/r68ïÅþJON°›?Û5³ûíoTª#± ÿ@Ù� .~ûvíÛ¼Änþl°ÿsäëè� ­þài=9»*3m±ñÓÙZ4e„n˜°Øô¨`obŒŒŽw{ð>ÞýÌV|þloÝ÷«§ËPU|ñ´º {^mzÜUî­R·Ø�ÅÄ·-÷¾•ENÖq­™=A¿ÿ8ÏáºúÍ:©ç�o+¼f}7Ux§ª$üåçLpÁk7iÀƒŸyM�ðo¦¾cgè‹çú¨à¼n©)û6iÝç“ÔyèdU県Tû#€#ë4ò@%ð6UêàÿÿHø@…Û²ü½rïQTX¨Ô¤­vã1ñ—{ïÊ`ï¦sŽ— IDAT%š9¡£ÃðŸP˜®ñüÈ|ÂÀŸªÊqÀ„ÿ âœ 6lÕÍtþÐîuZðÚM*8sÚÍ•Ù#üÀ›D7l¥.Þ7�Û¼lšönúÖÍ•Nzò»1:@ªbÀìÌTO—  :uâH¹÷8žü»òórìÆ«zÀœ“Ç´ä�»´è­áÊÍ:f¹.¶EWÝ2ùµêz›«*‡Ê$üÏÇ×O×Þ÷I‰!@³ï?Ý…ðoÔªëp5½b€éÜÒ÷FÛì-²3Sí:JRd PÅ€EE…ž.@TXXPî=ÌŽÿ•¤:�.-÷ÞÞ*aãÍ|¼“6η\®nÿxMšK×?À�Ê$ü®ãëPbpþ+×{$Hø€7ë>òMEÕ½ÐnüLn–½5Bù&A;OËHI4'©ŠÀ[¥$n¶‹¨§À�TãZ9'Óô͛õä�;�èú·^-»ÜêÆê€Ê«²… ÿ€ë•LÞ³Ñí!@¼�`ˆ®½ïù„ØÍ¥Ø®5³÷@UŽe¤&šŽGÆÄ»µx§j,âÁƒ'ŸÈÌ:ÆÄ·qɽ<é÷ _j愎ڷy‰åš€àu¿ý |h®Â¢.pcu@åWYB€„ÿÀ}œ æåf¹¼Â*‹u«ÇÈ7Mçv¬þXüò�›+r,#eŸÝXx­Xùøøz x›jÏ)*,TÚ�ívãU)˜�‘¢oÞ®ï¦�Rî©tËuF׿ujÑy˜«ªoþ÷;lм³é|òž�úêåÁ. þPÙ4m7@²ÙLçÖÏ›ìæj3;˜ãp@p±c‡w›»VU€»ÿû…f>îD׿‘tý*Š·† ÿ€çøúèºf+¶åÕ¦ó)û6¹,XRø¯Aó΄ÿx•3§OéÛ©wHß/g?ìæŠ3Æ»½x'€àb©&ÇÿJRLü%n®¤beg¤hák7kÙ{£u:;Ãr]\ëîF׿«èúT$o þÏóóÒu÷»7èLøïºfþà5ÒîÔ§“ºiÏÏ -×\Ò{´+*YFj¢Ý@œåçé ª;jŒŒi¤À�TS1vý0Gk?}Òað/0$R�‡NVóN7»±2 z9üâ¹¾ÊHÙg7¿ë‡9’¤î·¿!›Åñf�ðx_?]wÿl-ž2B‰[—ÙÍŸ zhž‚ÃËu/gÃ~þAåºT”í«?ÑšY�© ÿ´é¼Íæ£+ú?¤övseÖòÏä*'3Õn¼G@µb“Ùó:‰’V¹·•˜ý÷À淀ʈ ¸XJâf»±˜¸‹=PIùe¥ÑòÆêÀÎÕ×ŵî®#ßTHdŒ›*ª¯àðÚòØ×š÷Âu þïãëç¯~ã>Ö¢·n³ Î{©¿†<º°Ì!@Â*“3§OiåŒé÷çY® ŽˆVßÑÓUïÂn¬¬déÉ ¦ãÑñî-àQE2;áaúŸ(ó¿[@eÄÀàBE……JMÚj7ßÖՔώ5³4óñ+†ÿCk¨ç�o«ÿƒŸþÜ(4²Ž†<öµ"-º€¸ê8`Âà½||ýÔoÜÇŠ¿¸§é|Úþíš÷Rååœ,õÞ„ÿT&g�üuþ«Û´½nyv­×…ÿ$)#%Ñt<ªn÷¯E\(íàNœ±�Žoã�jÊæäñCšÿÊõZùÑ:“›e¹.®uwÝ:y�šu¼Ñ�Õ8ËÝ!@ÂàýΆ_ÚÏtþl0÷Ô §÷$ü 2Ù±f–>¦—NÝk:oóñUû�ã5äÑ… ¯åæêœ“‘šh7Íß³PÍäf9ÿ=;8+/;ÓÓ%€ B\(mÿ6Óñ˜¸ÊÜõÃÍzâ*‡]ÿ‚Âj©÷¨itý¼@hdÝðø·ŠºÀ¼È®æhùãÊ\=ë1Ὼ~Â"Âà%||ýÔgôŽC€/^çT°¤ð_lË«Õÿ�9„Rx\Á™ÓúîÝ{´ò£T�ÚtMpxm zøKµëÿ/Ù|¼÷)R³€µº¿€GæçyºUPiÞ¼›÷>»UÀÑÄ-vc‘1�á�jœ—�‘¢ù¯\¯åÓïsØõ¯étës?èÂöƒÝXG‚ÃkiÈcßX†w¯ÿ¬\!ÀÕ³ÓÖï›Îá¿Å ‹ª[¦½®áãã«>£?PÓvƒLç�Ú]bЙðßu÷Ï–¯`…Ô e•‘š¤ÏžíåøÈß&í4ô™UªQG7VV6)ûìÆ"câÝ_À£CkxºUPD4o, ª .”šdŒñòãûï\Í|¼£Ã®!1ê7îýýÞ÷^Û�Õp†«B€„ÿ òòññUïQÓÊÌËÍr.üçç_¡5@i%n]®9¯Ö±ƒ;ÍØlº´Ï8 ¿P¡‘uÜ[\™uŒŒŽw{Ïòõðt ¼˜Ÿ§ €ªª¨°P)&câÛz š’åœLÓ²÷Ç*iÛ ‡ëšu¼Q]†=¯À�H7U ,Άç½p­Ò�챛߽þ3IR�;Þ’Íf+q?ÂPùÙl6õeáž°ñ+»ù³!À!ã¿VПFòr³ôÕ˃•²o“éž„ÿx‹Ÿ¾~U?~õ‚Ã5}îý@M.¿ÎM•_aa�N;`7N@¨~l2{îæI]Ü] €Jë Iù @UE\$íàNœ±÷Æ`ÂÆZõÉÃÊ=•n¹&´Æêö�×q7V <œ äç©÷¨iC€+?ú§v¬ùÄt.":^CÆ/$ü•„³!ÀÁ�Ì—¯ Ãð_üÅ=Õwì £?���¯;K§Ù||w±bâ.¶›ËÏËQFjÒ¹``fj’2RöýùßûM~¯HùyÙ:vh—ŽÚeR·¯ÂkÖ7:þ4Žn¤ÔýÛìÖGÆÄ»´VT>ÀÌŽÿ•¤ÔýÛäªZ š{Mç”ÎC'+qÛråd¦ßóÓBýÑ~±þvi_UÀUJ š‰º ‰?º€ðTQŽB€„ÿTv~ÁªU¿™jÕof7WTX¨“Çý%˜¨ŒÔ}Ư)û”—sÒ¥µ(3m¿2Óöë }>Ð@œÏ;Ò'PŤX×Ìž Iòõ T­ÍßFÑqmßFµê7—¯Ÿ¿;Ë”$†D¨Çíoèë7†ÙÍ­üðÕ¿ðJ…E¹½.®u6øÕ˃L�,ÿ«¨ šhÈcß(8¼–›ªxÂÙ`DtCm\ð²$©m¯{ÔéÆI„ÿTY6EÔŽUDíX©yg»ùœ¬ãÊ<{¤ðÙÎ�~|êÄ©¨È­õr0ÎG\àÄÑ?ÎäŸVJâæbAA¿ÕnÐü\ 0&®�j5h._¿W—«ø6=Õ´Ý %lüªØxî©t­øðõ7Ãå5p¿ ÐòèBÍ{©¿e�ðT/6›Mí<¢VW�PÁ™ÓЍÝÐÓ%€G‡ÕTpXMÕi|©Ý\þ™\e¦î7Â�)‰Êüó׳aÁÂü¼ ¯‡€8@p�º»B‡v¯+Õ5…ùyJIÜ¢”Ä-Ú±Úóñ P­úÍóg(0:®�jǶpI(ðê[_Ò�«”{*½ØøÞM‹•ðÓ5½b@…߀ç‡[† ÿ@õYÇÓ%€×óóRÍzªf½ íæŠŠŠ”•~øÏ`àŸ�ÿ ž8ºWy9™¥¾_HDŒÂ fà<ÀÚô¼[)I[µûÊríS˜Ÿ§Ô¤­JMÚªk>‘$ùøú¡À¿\;¶e¹C�AaQºzøËZòÎ�vs«>~X±Í»p0PE� .|}¨’6H’bâÛ¨ÿƒŸþÊÀf³)¼f}…׬/5ëd7Ÿ{êĹn�Å:¦$*+ý°éÑ­»ÝΑì°C\ $"Zþù™ýö_%ïÙ¨Ô¤­JIܢ̴¤rï]XpF©û·)uÿ6I3%¡Àšõ/:×)0&®�j7lUêP`Óv´ký§JÚº¼Ø8GU_@p¸?2_{~^¨‚ü<]Øn�|ý=]P%…ÖPP£¶ªÓ¨­Ý\A~Þ¹£…3S•—“¥zvPÝ&í¾~º°ý`O—Tk¾~ŠªÛDQu›xºTÀ�‚¢Û¢«b[t=7–{ê„Ñ!0i‹R·(%i«2Rö•û^…ùJ;°]i¶KkgK2ÖŽm)?ÿ s×…DD«ë-/hÙûcìö\õÉÊmÁQÀÞ€ xXPh Å¶è¢Ø]Î��ÎÎPJÒÖ?�[”’¸ÅÅ¡À‹wñ¹#„›\Ñ_»Ö}¦ƒ»Ö»ž£€¼@ðB�!‘ŠmÞY±Í;Ÿ;��y®S`Jâ¥&mщ”}RQQ¹îe„w(íÀíúaŽ$Éæã«ÀàÓõ{7-ÖïçëÂvËu_”@¨$C"Ô ùUjÐüªsc§³3•º›Rÿ ¦$mщ£{Ë ,*,Pî©tËù¥ïÞ£†-ººä(à]ë>Ó¦%oëØ¡]¾7À½üBÔ°eWuö¼Âk5ðt9@•C*±À�5hÖI šu:7–—sR©û·� ¦&nQúÑ?Ê ü«¢Â­œñOõóa…í)I)I[µüƒ±º'Àsòó²µwÓ·ÊË9©A�|åérP�¥'ïÑÖ•o0¨Àò¯Õ@Í:Þ¤Ø]<] pNÂO ´ç§…Ê9™æéRð þ�¡ŠkÝ]w¿ÃÓ¥€%€PŇ«þEUÿ¢ŽçÆòr²ŒPàŸ�À”¤-J?²§\/€ÿñË7:œ°Aõš¶¯ˆ²%I)û6UØ^ïq4‘¿ßá9§2ŽêÓ§»+?/ÛÓ¥vv¯ÿ\ƒ™_ì =€§ì^ÿ¹–½?ÆÓeàu·.SFj’:ßüŒ§KS Sý‹®Tý‹®<7–—›¥´ýÛÏu LIÜ¢ô# ¥ fÝ[¡À‚3¶À{œÉót ¨Æí^Gø^-iër€ð IÛVxº¼VÒ¶åx-€PM…©Þ…TïÂçÆÎ…“¶*õl(09AEE…v׆ÖPÃÖÝÜY2@©�ÎÎðt €C9YÇ<] I:�“ééðZ9'�{º°DÐ …‡K]»JqqRÆƯQQRjª”’"%&J›6I›7K'OzºÚª©eK):Ú¹µÙÙÒÁƒRrr¹NS-&:Ú¨ÁLQ‘´fMÙîuÅRh¨ùÜï¿K‡—~ÏÚµ¥Áƒ¥¦M¥š5�¯Õˆ)#C:~\:vLÚºUZ¸PÊÊ*ýþp/³Pà™Ó§”º»R“¶*%q‹îZ«Z š«Ó YÇ UEIúÒ ÷TŒ’&¡Ã+ðÿìÝwxUÛð{¶ozB¤@èéMTT°P,€Š¨ŸŠTDE^ÄŽŠ],ï ‚Šņˆ"M±‚4é½ÒËfË|<Æ´™Ù’Mrÿ®k/Íž™3'»KvfÎsž‡ˆˆˆ¨z0ð$Ò¡pë­À¨QúAZey½ÀüùÀ‹/+VTÿøN'S§JP[0Ün  Û±øä`î\ ‚ EÿþÀè·� ¼þzðýΙ´j¥Ývë­ÀŒ�õc±ÈFŒzôÅÿ>.°x±|^- |ÌTû¬öH¤4ïÖR¿AŽÀ9µtl"" Þ�JϘÌÖZQ ½“Õ³ktDb=€òÙc”@.¨ˆj€¢ù÷²€Ëjz(DDDµìw Ê=Ãs6""""":™1ð$|ôpî¹Áíg6ÆÉã“O€ë¯gFÀÚdµJ¶Æôt à{î9àÓO�W^~ù%¼ÇzòIyÏ32ÂÛo ^xhÚ4¸ýìvࢋä1kp×]ü¼QMÐJ�]ÀÒ\`a¹gÔp¥’'ª"UóïeSjx$DDDµí5T ä9�ÌLµ=€Ó]‹ÀªUÁÿU4|8°nвexÆEUçtJ6Ç•+%£ )ŒÿÚââ$À°¦=ÿ<ðå—ÁÿU4f °y3ШQX†EDDDDDDDDDDDDDDDDtZb`-êÓøí7 I“ðô׸1°d РAxú£ðPàá‡�~êÖ _¿×^ ôê¾þüyòIàî»Ã×_j*ðÝw’“ˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆ‚ÇÀZR¿>°hÞ~““�Å‹¥-�\Î>[Þs›-|}ΜY3ïuÿþÀĉáï·Y3`Þ¼ð÷KDDDDDDDDDDDDDDDDt:°ÔöNWÏ='%b�8üø£<öîZ·Úµ �@?=Í›ãÇO?Þ1“X»øüóÒŸ�N =hßhÓÆxߎ¥Œîm·…g,-[ãÆÓ¦…§?=O>iܾe ðÒKRîøÀ ;[‚\6ÆŽFŒ�LˆZúõúöV¬ÿ¸‰ˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆþÍX zõFŽÔo/.– ®×^+ÿü_Èívàúë�Ç´ûxàà…—+‹%€k�Q6µ#G€=*ÿ•år3f£Gëo ú)4{÷“&gž :¤¿ÝìÙ@£Fá9¦Ó ¼øbxúÒbüWX(Ùý*ÿU´l0a‚~ûEfshã#"""""""""""""""":]1` «__Ê�ê™8Q2Ì⫯€yóôýn¼˜;7¸ñuï.¥l›7—ò²f3pð °?°z5ðÓORÞ5P‘‘@×®Úm;v”f­³Z�k®zö4Ž/–@¹@¤¦}ú-ZÈØ“’$˜òàA`ýzàçŸ�]»wUmÛœw°f `³Un�Žî¾[á0dpá…À7ß„§¿²ôÞ?øýw ¨(°~>üPÊk1›åó¶iSðã#"""""""""""""""":]1°†  (ŠvÛÁƒÀœ9Áõ7c†~`¿~R.Ø_à¸8àÚk¥4mË–ÆÛª*ðé§À#�H`�?�K–h·M� üç?2ÎÙ³%ð¯¬èhã@E ÆŽ.½Ô¹+€ë®vîô?îpظQÊ4O�ªÝ~íµRúÖíÏñÞxC‚Ã]öY¯l/ ïQ òòôK#·nÍ@""""""""""""""""¢`°p >\¿mÞ<Àç ®¿Í›�Û[·6nïÛؾ]JÈú þ$ènØ0`Ý:)u[ññ·xqåà?À80.2R²Ý}÷�UR>¶o_ 03&ô1ë•W¯W»->4(|ÇjÐxøáðõWbÛ6ý¶N�€víï+:Z>CZ�yóª>V""""""""""""""""¢Ó kXÏžúmË–ßßÁƒÀ·ßʾZ�¸8ý}ïºK²óÕ©üqxôQ)1l ñSÔ«ðæ›úõ›6•rÄL»˜9˜0!ø}C‘™ ,\¨ß~ÝuÁ÷éõJ&F-&Mšß§‘íÛ�Û¿ùFJ[Ñ¿×Úµ2?¡õ92´>ßzK¿Ï^ïø)8Æé¿7Z�Èζl‘¹¼¥K¥²ØoHu±6mjû·ªYÚ¯Õ®]µ=2"""ú·a à 8úí7†Öï¿Ï˜1á¹p18|?>ø};w6n÷x*?#A‹ZƒñôÓR ø“OªÖO –/×Ïôׯ_ðýï½Ü|så6«øï�þýƒïWÏòår±–šªÝž–¬YLœ¼óŽ~p"ý;™Í2�£¿ÍäÉ’Øä±Ç€¬¹±ýÛ1` ò´và@Í�ãå—Ã×߸qR†7Ü´2¾ôRÕƒÿJÌž¾¾Œ¬Y£ß#匃5q"�‘¡ÝÖ¯Ÿf†KQ‘ÿrÏÉÉòz®^-™%™�ˆˆˆˆˆˆˆˆˆˆˆˆ*8P2^uUm�„ˆˆˆè߃€5(-M¿MU�Üܚǻï�-\\~¹d|kÐ>øâ ã>Ÿ}VVö„SÅÀ .F�Öß~Ã`ÀwDЪ•'ioŒ¾ñêٳǸ]/³ž‘¬,à¾ûôÛ§O¢£ƒïWÏÛoï¿ï»N�$³äÁƒR‚úÖ[�ÄÄð�ƒˆˆˆˆˆˆˆˆˆˆˆˆNmf30w.ƒ‰ˆˆˆÂ…€5È(Ûܱc53†€³ÎÒoŸ1CÊÕ~ò‰qíßÌ›\vðÜsúû5n \rIhcòù$Xì�$ð°_?yLŸ^~»{ïÕïã›o€Ž�~�q[¶H0Zß¾€×«½ßM7–j.„�—gÜJ Ay+Wj·Õ¯<þxhýê¹æ૯ÛVQäsöê«R"zÁ`È�ð‰ý›)&Ö(/l±Xœ¾ÚQP¬Q>Ä·*@âùp&×öpˆè$£(À{ïÍšÕöHˆˆˆˆN} ¬AF™ÐôÔÂͨ4ì¦M’±Í§1¿¬ª€÷Ãúû‡²Jgóf Ü;çà©§$ðpéRylÛVº]|<п¿v.póÍú¯áªUÀóÏk·Õ©ôîü¸ƒQP`Üžœzß×_¯ÿ{ß~;о}è}WäõJߤIÚå™õ˜ÍÀ…Ÿ~ ìÝ Œ#uDDD¤Ã¤"*µ)=sѰÒÏÍFƒ~Ù¨Û±¶XOm�ŽˆˆˆˆˆˆH—Ùž d¡Í¨£h|^6ž�ƒV—Ÿ@ó¡ÇÛ´ÖH/À{ÄDÀd¦L©íQ�úXƒN† §Q£ôÛ^zÉÿþÏ>«ßvñÅ€ÓøXrr€sÏÖ¯÷¿íÈ‘ú¯ß‚À¾}Æû•0îÚÕÿñ«B+ ²¬ªd ,Ér¨EQ€Y³Âû¹óx$³`§NÀo¿¿J 0s&°b…d�$""¢2 2¹�/ÈB£ó³�Ô1±éňN)F|Ó"¤ôÈAÓA™¨ß-&«ZÛ£%""""""ú‡%‹øæ…H;+-.;�Ä6…0ÛJ¯]“ŠèÔb4˜…ôó²�Ø.öx‰NQý%óO%³ˆ�•ªËÈTQ IDATW-[]ºHrˆ^23�û1‚Y‰ˆˆˆªŠ€5È(kZM&'iiÚm99À;ïøïcÑ"ýŒsN§œÐjß>)׈ž=õÛ~úÉÿþ7ê·µnØBå/À¯¨¨jý?ü°”ÙÕÒ¹³”9·��îÝ��%˜/X½{ëÖ\þ±�j3àLt£ñ'Ð|È Ä7-‚-Ê ¥Â™ºÙªÂYǃ”îyhÃÔëœK³&Qí1Û}¨Ó¶�f!íì$´,‚Ù¦¿*ÞdVÓ ©½sÑè¼,Ôï’'‰è”æóÉ\ãÁƒÀÖ­ÀêÕÀÂ…À¸qR lÓ&ý}M&àÊ+kn¬DDDDÿFUÈ=FÁÊÎÖo &s^¨RRôÛÖ®õ_ª�à¿íÛeõŽ–† C›?z�‹€d£ó—ÜlÖoKJ iHkÐÀ¸}ÿþªõ_XÜy'ðÑGÚíO=Ì›ddTí8Z-’GûöÀµ×Ê#Ð×3:ZJ>·m ìÙþ±�쬑>DÔ+F\ó"$4+¬ðgÄlU‘Ò3uZàøæäîµ£(ÓŸ‡Ñ€DDDDDDTýLñ- QïÌ|Øb¼PLjP‰ÌVInD$º‘Ô1Ç6DâØŸðäÜÌ'¢SÒÞ½R¡lÍý„(M›Ö예ˆˆˆþmXƒ²²ôÛ¢¢ªÿø©©úm¹¹�÷³u«~`ýúÁ�)PFc7*kˆêôW궪€ðñÇÀ’%@¿~•Ûââ¤tóu×Uý8z֯ÿ~Éêwà À%—øÏ~ ¼÷з/ ²’!�&,^Ä6r!¶I¢’Ý0Û}!eƒVÀïEJÏ\¸Z"gŸ Y;œÈ?l…êe …—bRa‰ð!*Å…¤ŽùˆHòT©º‘¢0³Šú�ó�Т"�µÃ�â<3T.r£ µi# ÒÓe¾*9¨S8zTæböï~ûMþ п¿ÌϤ¦Êq³³¥rÓÎ�À§Ÿ†–¡kW™C©h×®Òþbc�+®�ŠMiirÌ]»€·ß>ù/¬]+/¼P»=ÔÀ”©:Õ´©<6”ùØ#G€;€/¾�×$\€>}ä5oШWO޵};ðá‡À–-á;Q0XƒŒÍf >È̬¾ã''ë·åäÞÏöíúmVkàýÃ({aUÅÅU_߀ÿÀ@Ë ûsã�’BÝn¯Ü6z4ðæ›á9ŽŸX°@‰‰8nœ\ééÝ?xî¹êQm2Û}HhU€„V…pÄza²—A�¢Žìq^Ä5-Bþaެ‰DÁ[Õ;'""""""àLt#º¡ ñM‹QÏ–ëÙ²°Çx‘Ú+‰m �¹Ý�œ=v±1Û=ù5x00i’eÂç¾ýøßÿ$@Ìíþ˜ rÌ뮓ù==Ó§ü<òðùç�÷?gЪUåçÿó`êT Kù*o3y²÷¾û?^Mذ!<€V+pñÅÀõ×K&ƒª/¼lÞ,‰2Þ~[ÞûPX­ÀƒÊ{®—üâ‘G€î½øõ×ÐŽCDDDª �QUmÛfÜÞ¤IõßëÕo &ûšV€Yu3*á[Uá¾QQ‘Ñûzð àñ„ç8;wO?­ß>sfõ¾ŽedÈxÒÓ�‰�·½ûîšQ�ST˜¬*Z ÅåÇ‘Ö7‘I˜íá þ+w(“ [”ñÍŠÐòòãh|a&œIn(f¦Ù%"""""¢Ð8긑vV6ÒÏËFr·¼j þ«ÈëE½NùH��ý²•Z\½¤S–¢ÈÜÇ—_üHÀØ…Ÿ|"Ù�ø´Üt“d7.°};uæÏ—€½pT¥jÕ X¶L;ø�߯¨¨êÇ 7£@Ë@Œ´l)}óæƒÿ•hÝZ‚=7lzôì8eÕ­ üü30eŠÿÊW}ú¿ü"Á†þ¶%""" 'žzÔ ]»$íwl¬v{§NÀêÕÁõiµJÊl½À®�“R8qB¿Ÿ`2ìm{üxàýãÄ ã †'+«2D¿}ÅŠðï‰'€«¯Ö:Ô+Û\Ý\. ´Ûeõ“–´4)ƒ�—W³c#""ªN¶X/¢R\¨{F>"“Âñ Eâ›!º� ™Û8¾9®,3¼E\ÿCDDDDDDþY"½Hîš‹¸f.Xì>(5|9©˜$ÐSˆø¦EÈ=há_£Qp¤šÊÑ)iòd`̘ªõѱ£ÌÕœsŽ$6ðgút ü ÅùçK)ÜAƒ$+`(,à£�€ˆãíÞ~;´þ«SÇŽúm�T˺þzàÕW‡#´ã·n-ïõHFÀ@¤¥IV¿ôôàŽ5z´Ìk HDDD ¬a?þ('öZÎ>øïƒë¯C ýö²%…�Ê ‡+0�‹£PddèŽ'L¡*(}_n¹E.ôÌœÞã¹\R ø‡ÂÓß{ï#Gj·}õ•¤XÔÌ™ú€€¬X[µ*¸ñ�tÀ‘àFLz1âš"¢®&Kíeà³ØUÔmWˆøf.dï¶#{§¹ûmðºx÷‘ˆˆˆˆˆˆÊ3YUØb$´,DLC OXq|“YÛP½Õ\·‰ˆˆˆˆˆˆNzŠEETª ±éňkZ[T.@ÿ¦ª@j3Fž�ä3Þ[’�ÕÛ«V>Øl•kÛØ&.dï²!{—¹ûíð0ðt4e 4?O>ŸTÆúö[`ï^™‹©WO’Œ4n¬ÝßW? lÛ¦ÝÞ¾=0mšñ˜vï–Ò¼>pÞyú "bc�Y³ôç �ø þ$¹Ãɤysàë¯�·Y¹R¿íŒ3$@ÓŸü|)ܪ•þ\T‰‡’9©ùóõ·¹ã W/ã~Ž‘ÏÛîÝÀ™g]»N§ÿ±…¯ŠjØÜ¹@Q‘v[ýúÀu×Þ—ÍÜv›~ûòår‘Qâøq`ûvím##%ÑŸ«¯–R®Z23%P¯:,[¦ßf´b¨¶( ðâ‹@B‚þ6ÿý¯Ü©·ÝV½£ÀF�ü_@•åt§¤/.¼/""¢“‰ÙáCjŸl´q õ:åÃY'?,Á€\ƒvinÃe½"pÎNŒ>7ªJÁe™­>Ä7/Bƒ³²ÑèüL$¶+€Éæó¿#ýk˜Ll¥åÒK�>}€GfÏ-ÞyG¾š6ÕÏ"§(ÆUŒyDæå´ìÞ \p�^w�”ªmÐ@‚ ÖÞ碋€³ÎÒ?^ 22€ €Áƒ%3àÒ¥2ïôÎ;Uë7¢¢$rút`ýzy=ô¨ªDj‰ˆ¾øBn� ¾ví€èh À‹‰‘¬Žsç�ñí·e~T‹Å"Ÿ£1Ož,s»C†HfȳϖŸ�æ4‰ˆˆˆª kX~>ðÁúíÓ§Ë b yhÝZ¿ýÝw+?·b…þö�>êÿ˜7Ü ßV�YøŒN–»tÆŽ ¬³YV> žqi©[˜3Çøµ:|XÞëêrø°qöÁ@-\hœ‘òõ×µWØix8P2¾iiܸì2í¶ü|©Öõí·•Û>þXæü¼:qµ7ݤ?V6l�9Âgž‘ìzo¼ôë'Aw¡”V«Vòê=rs%ørÜ8ãà=@æ¢ôæˆFŽÔ/Áëó·Þ*x7–&ÝPU`Ó&`Ô(y�}:ñÁ±±@©åê«�¤$ý1®=¯š“ Ì›§¿/Qu``-xôQÀíÖn‹Ž–²°—_®¿�:À›o÷߯¿Í¡CÀûïW~~Îý}zô^{M;HKQ€'ž�•3zª3¥øæÍÀO?é·¿öšÔ¥Õ®[WJ0�)'Þ眾ñÕ­+©ãß}WRÊ_}µþ¶>Ÿ¼¿YYá;¾–矶l©ZGŽ~¨ß>j”¬¼Ò»ø*Ñ­›d<ÔST¬^Ú‰ˆˆj’ɪ"ºaR{ç ñ™¨ß%ÖˆêÉ2àv«(,–;—Çs½@5Ìa(& :­M.ÈB£ó²�Ô1Žxƒè"""""":e™¬*¢¸Ðôâh~é D§ÃlUþà �œã¹>äÊÅì®#îj©ˆ£(€É¬ÂçEƒ³²ÑbXZÂâdFÀ3£lrï½'‰#ôø|2?+¥i¯¼xê) V;~\{Ÿ«®ÒO†ðÜsÆw[·êÏ� .ã–ªJ@bFFå¶Å‹ƒï¯6åçKP¦£d³g3f÷ÿÖ[Àÿþ§ß~ë­ÚïíСúû,^ |ú©~»× Ü{¯~à!Qu°ÔöNG;wӦ駎¶ZeÅÑ‘#À_I׉d–”ôîm\Z&N *?¿t)°r%Ы—ö~cÇÍšI Üþýr’š–&©Ë/½Tÿx›6Ÿì†ÃÝw¿ÿ®ß>nœœ�Ϙ!c?|XÆ%å�¯¾Z‚'IÓþõ×ò:¬[Ü8.¼°|¶Ãºu�6mßÿ‰'€ p»%ͼQàd ž}Výô ,+ÊÞ|S.d�“‹äÄD aCIcï/«åGé—Æ&"":YX£=H˜†Å°Fy«e‚¤¬|—Š£Y^D9MØ°Û @uR1‘ÉÅpÖu#¡U!Žý‰Œ Õt4""""""ªi&«ŠºíóP¯s>,ŽêÏ’§(@fž¹…>ÄFš°ëpõ_G+ ‘èAú€,dnwààÊhçpìßèÐ!ý¶Ë.“ÇÆ�2ôÝwReªlbŽ={‚;žQ©Þ�?ö¿ÿœ9ÀÍ7W~Þn—¬}óç7žÅ‹�;‚ÛçdäóÉ<ÖÞ½Úí-ZHò-EEÀÃvœI“$9ˆV¹ßÄDI~òÛoåŸïÙS¿¿ôÌÝ»¥±QÂ"""¢pâ•O-yôQàÚk�W)Õ«'�@K—˜?ß8ÓßÍ7K¶5›M»ý¼óä¨ÂBÉ~W«÷ÊZµJ²Ú�§¿Mzº¬Ô DD„\$µm+Á–�ª__¡xþyà?ÿ mßP¬\ ¼ópÍ5¡÷±v­Œù‘Gô·±ÛõSãûSX¨ KDDt²PÌ*R{ä"¡UÍE¬«8‘çC;{jd¢ÄlUá¬ãAÃ~ÙðùTœØ¤qg”ˆˆˆˆˆˆN9‘õ‹‘Ô© F‚ÿJ¸T¸Üe2Û×Eâš¡8׌C¿DCõVóõiD¯º Ÿ!¯*<:E Ö®23�øxý}Û¶•Ç„ R–õ›o¤Lï7ßH‰@™L@Ÿ>úíÛ¶ùïãÏ?õÛÚ´ >𫯂ÛþdTT$I=¾ùF›óÏ×oûé'àÀ�ÀŽuô¨Ì^r‰vûÅ—LO—À@-•ƒõ|ý5‰ˆˆ¨æ0°–¸\’Uï»ï€””ðõûË/’®ÜȆ ÀøñÀ+¯Týx^¯—]¼„Ó}÷�;¯¶ Æ—_ü*�¸îºê-“¬güx`ÈÉ„ª©S%ëä]w…o\%îºK26Õ–¨( 7W»-?¿jÿvjÛœ9úÀ£G‹QyQ©ÅˆkQ³éj½>n�L”äÕ|Í�z� �·ÏŽâ\^2�êZÔjYÜê^ÔVéx& ¦� ™[œ(̰ÖìÁÿÅŒ*ùXB¼}`´Ÿ^ Û ¼ý¶qˆ²bbdî¬dþlÓ&)ù»`�ÌÓIJÒ¿G\T<ð@`c(*ŽÊÏ·nØþeýõWðûœ,TUªBMœ(YòŒ4n¬ßìkð×_ú€�:•ÿ¹Q#ý~öí ü˜ÁlKDDDTUœÍ«E›6ɪ¡Å‹�ObµhpÕU@q±ÿm_}U.4¦M“ÕK¡ÈÊ’“å+BÛ?^¯””�;WÿD=Póæ7ÜžqÉÌ”2¹+WVÿ±´dd÷ß/ïyUÜ}·daœ>]ʇÃwo½ž¾ˆˆˆªSb›ü�Ï™B•mBr‚pf3>^QwÍ%L€5‹Ȕboá%�:n»MÿzåÍ7�ƒkvX£¼ £ê´ÛõÛô©\4bDh›Ú´‘ÇÝwK&¹›o–s-ÑÑúý8U¯údT)LOM$¶§âbÉ”¸p!ðÚkÀÎ��íg4wºeKpc0Ú>.®üÏFïy0 -ôJUÎæÕ²]»€3Ï{ ;6´`¼ü|`ÊàÙgƒÛï¹ç€uë€Y³€´´àö]°¸ývMËÏ.½T‚Ç}ˆ� nÿcǀɓeòÇW� W¯fΔ¬ÙÙÕwœ@̘Ür о}Õúy÷]I-ÿôÓÀÿý_è7hŽÆŒ1NíNDDtÒP|ˆnÀ ‹*RUÀfRê˜Ñ´¾}ÚÙÑà>m¸¼o6ïsc×a2óÔjŸ¸1ÛT8â î´�„n¿hÕJ»í«¯Ht²iÛVÒü“ONíÀ ôKǽú*OÇ÷Ü#÷ä²³e�ðøñÌD5Ïé�=®zW”¥%šÑ¤¾i‰¤Ô1#µŽ-R-°ZäâµYŠ“®ŠÃþ žðbïQvñ`ß1oµ-v³8|°ÇxET–‡ÂBý¶ê4*9œ›+Õ¢æÍ«ÚÜGïÞRåjÚ4íl~11¡÷­¬€þœ8þqkï^©2cDUålçNIð,£×>�ÒËemݪßV1Ðè3©WMHËþý2YӋЉˆˆèôÄÀ“@V–LR¼ù&pç�ÀÀ�þò\.¹ yçIsÌ gYß4o<ü°ˆ%$óûïeu΂¡/œ^~Y‚ë¦N•€@¯Ùo¿IæÀY³€œœð�Ãå’“ø}ûä±s§\p®_¾cT•ª×_/¯AUƒ²²d5ÜOÈêºk¯ ÎôaË~7®)Äï[‹ÿ9~¸( à¬ã�ɬÂça`8e4š_2¢W^ð?÷µmй3pã�`ݬYhc0™¤$íÎ�•«åå…Ög œÎà÷ uN0œ €¥K«÷‡ë·}n´eõ«¸0Ãèõ­S'ðc: þ#""¢šÃÀ“ÈŸÊE ´l)*‰‰ò°Z%sÝÑ£ÀîÝR>8”Õ2ZŠŠ€‡’ À^½€sÎ)]©•Ÿ/'Øû÷¿þüêä ª7�ÿ‰ãíuÜP,˜à>,ŒJφRŠ’“õÛ23ýïïvK¤3€N�€Ë/—ä�?–—^’l­eËÍ-ååI5¨ª¥Ll~~ÕŽyª0ÊànTXKÓ¦úm?×F ,ô2<{L"""¢pcàIjËyÔ$ŸøñGyœŠŽ/®íQœž6n,ALDDôoYß ÞÌßlVà�+cб± ÷¸ñҹذǭ¹"6BÁÀÎN êæDË4+¬æÐWKÄFš0¤W$ttâû? 1ÿçBüµß ¯FRÀ(§‚«ÎŠÄå}#aÂë_çâíïó kØ¢½°Døàbæ^""""¢€EDOúwèPsc!RL*¢ø¿®MI°àÜŽÄD˜1yd"ì >[YW…À¹(‡‚î­l¸ëÒ¤ÖÑžbòúT«°Y”Jû|*\n‹‹I‚ÀdRà°)èÙÚ�f)VÌþ>߬*DfžZîzÕl’à¿û†Å ¥ŽÅn=[Ù±y¯ÇðºÖ‘à…Ùî…·ˆ ÛÂaçNý¶Pÿ¶¥¤è·jùãy<ø pæ™À�!@—.@·n�e(t8€n�@ípè�v b^ž$Õ¨iÅÅ5ÌÚpè�~Û©˜žø¶DDDDUÅ+"""""f‡ÎDÿiLŠ‚FI8í&tnnÇä1hÓ°òDHó &�ŒÅíG£]ºM3øÏUìÃÆ=Å8t¢üqwvãp¦>_å¬}1&\Ò#�\‹‹»95Ë& ë�Qý"‘c†Í¢ -Ñì÷÷²F¨pÄyTo d"ª+VHY7­Gß¾µ=:""¢�‚Àe�píØ±š ‘³ŽÖ�Ubdåû°ý >ŸÞ]~.éá„ÓVzÝš–hÆ­ƒ£ñÄèøJÁ¯Š=G=X²®ïþ��·æb÷‘ÒëÚ|—Šù?`Ö¢<,\]„mÜp¹Ë_kÖ�5ãîËbpÿð´L+ßÏÖvÜ:(É ò|FŽ[h/¼+ËbWYÏ$Æ(𬳂ÊêÒŸ¤ê¾}ÁõWÖš5Rùê åééÀèÑÀ÷ßï—šZù¹]»´·­_?øR´UåóÿÏù_ã—_ôÛ†•€Í@X­ ªç�?Êÿ¼s§þ÷xÆ�gö»è¢À¶#""" é°Çz`qø~syTÌ]’W±L”4M±bÒˆX4O)�°hÓÀ‚ÇGÇáœ3œˆt”? ÷úTü¾Õ…‰³2qîCGqísÇñç®òs—æc𔣸üÉcxû»Ÿ~Qupüv8Ó‹ç?ËÁÂU…ðúT$D›pãÑ= �’ÌhX׌».�Æe=#`©°˜mÏQ7¦–ƒIs²ðø‡9xù‹\,\]„Ü¢ÒH%�WÅêíÅxã›<<õQ6&¿›…§>ÊÆº�®r Ý,fç�éÄÄËcÑ¥¹ i‰f\Ñ׉û†Å YŠªªâçÍExìƒlü¾5°4hQ)§Iº´`¨(À3ÏÀf²î¾[¿Íã1®”e³­Z—\ÜsðÆð§gï^`Îà¼ó€ÛnÓßN+ q÷nýíG�Òo+Ñ©0f Ч�”ä{#Z‹>ÿ­~ùE? `½zÀ¸q�õs÷ÝúÙøT˜7¯üs°l™ööŠÜu—ÿcÖ­ Üxc`ã#""" –&""""ÒáHpÃdó¿´Úç>\Q€ÝG=Õ/šØÐ2ՆǮ‰Ã7« ±ëˆw^�Fõ¬¥û¨*2²}øm« sçaÇ¡ò}{ùc8í TØ}Ä‹—¿ÌŬïò0¸›ƒº:Ѳ�f“ÜaW×�…Økv£o[;Î?3^ŸŠ}Ç\ž�¹K �•Ìe­ÉØ,¥Ûš6«üœW¤bëvòàÇ�E¸¨«·ކÝ*ÿXEAûFV1N"&dæy1óÛ<|³ºYy¾€sÕG&30\6m’r©õêi·Z2âV IDAT¼úªH¹ bO­VàÙg�ƒç¾ÿ^»ÔmýúÀÊ•Ðeª°`±¨˜>ÈÏ7þ=æÏ—qjùóÏÊÏ}ò 0r¤öö<üï4¦gêT`ðàÒŸ³³�mÛ€­[�çž“l…�ªø;ÿ›©*ðÙgÀ­·j·Oœ|ýµö{V¢}{ãÀÐÏ?—ïçŠ>þ8ÿ|í}ÆŽ.,Ðï÷ž{$H•ˆˆˆ¨¦œF§‰DDDDDAP{œfk`S ^°rs1&ÍÉÂë_çb†ÍR­¸ã’<=&¾|ðŸOÅêmÅxêãl<þAv¥à?åÊ,iýœW¤âƒå˜4' ïý��¹åû¸´g¦ŒŠÃùgF–­/ÂÔ¹YxsaàÁàHð@±œFËˉˆˆˆˆÂ °P‚£¢€®]�-¤¬äüùµ=2:�˜¬>8â*_oêQ!ךË7ãæWN`õvìV‰±f¤Ö±” þÛŸáÁÔ¹Ùxõ«xûŽyñÉŠdåUÞßëSñÆ‚\|»¦^�îM&À^ºf¥üÏ­ßãÆóóspสF�Ó/+Ä/[BË䧘€¨WHûReO? äåo“œ ¼ô’d¶;xP²=*™Úþû_ aCãýwí24œ>]¿íÊ+�/¾�{wÕ«'ÙøfÌÐßÉ’ÊÏ©*ðàƒúû<ô�d,ìÑC~wE‘·ß|õ•~Ö¾'ŸôŸ­ðt÷ÃÚïI ‡CÞÏ#G$à3Ï_~)?¿õ–´ëyôQ௿´Û €Y³ô÷µÙ€o¿~þ˜<¸ôRà‘G$ Ñè³BDDDT]HDD¢«¯–›?z�'€F�J·çým¯¹Æÿñ\.ýýC ¤KJ’2?ý$7›þøذÈÊ’ÿÞ{/Zß%Ú´‘› ?ý$å-Ž~ùEú?~ÈÌ”’ ÷Þ[;eÆ�×]““e›¤$à…¤,GV–¼NkÖÈ�˃åÆg“&�ïî»õ�×£‡l/}ffÊ1ýØ¿_nú“œ,e1-’} d¼«VÈäÓï¿Ë�Ò6mó²eúc^µÊxß„yßõöŸ8QJ ý[êÞÝÿ‡ 3î£C‡À~ײ,N¶hoH�—^ðëÖíª<9áö¨X²®èïI ý>¢åOÕ#ú§îÅ`Íöbl?äÖœ(yöÓË mÒGQ€¨Tƒ:6DDDDDDtRrÄy`q„žÑ=·È§»h­o;Ú4´ê®™3›§½ô:ÖlVà´›t¯ƒëřпƒ1Ú=É4¾†ö'º�A=Z Ê�Õàtýõr/TÏ×_;wê·,÷îNœÖ­“{a‡Éãá‡eÁ¬–Y³ä~¥–Ï?—~ô  Á`JÀ·× ¼ü²þ±Ž^|Q¿?ª \~¹|îŒ$%I¦Å{ï•÷?)Éxû¯¾þóãm&O–÷S�É$÷syD²DNž,YËÒ*cMDDDT,µ=""¢SQïÞÀÌ™úí.—”pؽ»Æ†´ .Þ}¨SG»½m[Y1ùàƒR á�7‚ë¿m[àý÷¥´‡‘¸8`à@yÜt0fŒ ž êÕ“÷ú¿ÿÕÏŠ˜œ L˜ �}/¿,7 C;^Iù�/¾( >,Ëmp¯ºn] 2=ÿ|ãL�V«£K`Ü8)£1v¬3ê;V6µúíÜ2DÊ^h™2EÊqhÙ»WP vÔ 6}¤\`‹òwþÈ™|X¿^&–¾øBr �¿�]º”þl”ecÌ™°*±s'0gŽÿ±Z­À9çÈwA—.@ýúòvâ„LÐlØ,_,X`õäçËß§"\ÈñãrM¸r¥”ß­ª%K$S¤¿sˆ'äõ”öP£F’�Pϸq¥²Ÿ|¢ßÿàÁX©GQŒgÏÖoÓ§Âã ¹T’Í\Ú#IñÚ5—-fÃûF¢yªï/ÍDzõ.”ý¸+�€¿²¢œ¦Jáw êš1´—ÃûDfìÓÖ�sÚ;°pMQH!|Î,x ê5Q•%&Ê߯›n’ÿ¯¨dÒ¿Gù›™‘!èï½§ÝßàÁþ'°JŒSþç~0ŒŒ”¾'L�€ùŠ’’äÑ©“d:öxä»büx l „Å"Çxä‘Ê š7—ÇÕWË÷ÐUWÉw!�Zµ’Àb½…&0|xù4&è/~zåãÀÆ�õ3Äüö[h€g�|øaåsø´4yôî-P¯¿.Ùd :+ Üq‡œ�7hP¹=5U]»£GËâ¯I“¤\cm]‡¥¥IYÆÑ£µK%Úí²hª];ùù–[$KúÿýŸ`±ÛõßÃÈH¹~Ÿ:¸ÿ~À\á>=]ýúI¦öéÓ�'žð_²ñê«eá�–]»ü ßqzÁk-[ʣăJ ÄiÓ‚l×N®gGŒ�ת¢’ïÝ~ýd» äÜÁ_Fø3ÏÔÝK2s½ý¶Ô”Õ´©üÛ8tH—KÎUŒ2„ò¾j•äý6’’"ç.7Ü øÑ¨‘f}—‡¬|õŸ¿!V3à°–tÚ”r¿S´SÁ¥=œ;([ù�¸|0›Øÿî#½®ý:8ðÑò„ògÊêPa�ñÁ•ÍÀpPU¹nÉÊ’Œk¡TOÐ2uªÿ¬l%¶n•{b Ê«bÿ~ ô2Z| H@tÿþ–šÚ±²²$0õêÐö?]ýþ»|'¾ñF`ÕBôÌ™#& däûªgO¹FÖZ°­gçNYÐ`to”ˆˆˆ(œx¥CDD„˜àÛo�WŽ>ô0o^Í�)�ÿ•u÷Ý�• íÜY&øƒ þ+a6ËD׳φ¶8]qEð70û÷þ÷¿ÐŽ÷ä“ÆåœµnB6j$«VC þ+‘œ ¬Xaü¹xè! 7W»­E ™©è¹ç*Ož•X¾\²–xÿ}ýcwìh|SµkWí@™sçê·éQL@D]wÈ7°›%[Ч­ýŸ`;)û[ˆŒìÒ»‹V³‚ÎÍl¸ÿòXŒ�ØÈÒƒÙ,€­BÖ™d)ý¹s3&�ˆÅUgGU þ[µÍ…ÕÛKgÂEÁÅÝ�•‚ ¥˜€Èú,LT�Ú¶•@ì4þ›VVb¢d­y÷]ý¿·Õ¡^=™¬zî9íà?-‹�¯]+ÙjýQàã�%(G/`§Dd¤œ{<öXø&‰èäU¯ždl3 þ›4éä¾&{ôQÉläïÞln»MþvjñéIK“ ©O>ø~QQÀ /‹I¶³š6t(°m›•iÿééÖM¾?§On¿²š6•à‘ôÿ}êpÈv«V_»U…¢È‚ºï¿×þÓ!Áy{öT¨32t¨ü>×]§ü§¥];ùŒ]}àÇ©¨n]yÝõÆêvK€�^ð«Ý®Ÿ°D\œ~ð`|Ú£‡üÛ»çžÀ³>%'Ë‚„×^ ýœ$>^‚[&LÐîÃ_pRY‡Ž¸Ð¯ãú�á@R\i‰‡<˜þYþØQ¾ž¥Å¬`T¿(L»>½ZÛà´ÉÀ¢M0™Êþ " ìwÙ.ÝŠû/�ÁØA1•‚ÿöuãÅù9X¼¶¾¿Sæ;í&ôle×ÌHÅâƒ3‘e€Ãm C Ì¯Šµkåßt Á%22äßëWøÏ¨Åí–ï¿Ö­ÏX¾e‹Ü ›<Ù0xY^¯ÿwëÆà¿P­['ï÷È‘Á-¾÷ù$“ïÙgËBƒ@ƒÿJüõ—ÜŸüòKÿۺݲ` m[ÉÜJDDDTS˜�ˆˆ(@f³Ü(Ð+á³fÉ$Ë¿ÕO| 7×´8r#+“ïãÇË�»@n¬œlFŽ”öË—·ŸM»zë?*Þè·X¤tTttpÇÑ)Á­;jßœ:vLVa?óŒöþS§Ê ڒ̇={ÊD’U•ìe-]*Y*’’´÷4xóMí6£ì«VI à`)&Tib`ÌùQpÚK'%ez0iNÎiïÀ„Ëc)mŠ¢ )ÎŒçD¢SS¦¾Ÿ�­Ëþ,¶ƒn\Ô5¢Üý!Eº4·ãš‘€s;:Ñ4ÙRîÚWUU¬ÝYŒW¿ÊÅÚ�nÍö¢Ks;’âÌP ]#+׳àXvù Ä@˜,€£ŽØÁëÚp[¿^îÛ4i\r‰”þîÛ×8¨Úã‘ ¸¥Kå»}ñâÐ�ïñÈâ¡�?–̨W_-�Ê­ZÍšiÿ[Þ¿¿tÑ¡CÁ³ @ú_|Qþf�­”\XìÞ-åÓ{,ðlè€,†ª[·òó5™©wÓ&ÉÈ®åØ±šGEï¿/�-$€ýüó%ˆ3"¢t›ƒ%X}Á)Ñ^Õñ=*Ÿï�å|éì³%Ó­Ù,›ùE;Ï�[>ï’%ÚïYffÕÆCDDDT‰ˆˆôúë2Y­gÙ2ý›Ò'«#G¤|ÁÂ…r#¢wo`Ø0ýÌCÑÑRžW/à3ÏHö=ß/¥^÷ì‘ə֭e¢¦ìÍ™²ž|òäÌÊ’›5ß}'Ùzõ’I"£lӦɊÔpªx£ÿ©§$`OÏ�´úË/òþvï.Á!�io_¿¾L6ieó䦿wHÙ¡ŠêÕ“Ì%“­¯¼¢?®·Þ’ˆe©ªÜ¸»ë.í}Œ Ò?–QF#&«ÎÄÐ&J¢LèÓ¦töÒ§ªxõË\¹�…kŠPP¬bÜeÑhP×òÏd‰¢(hÝІ—Ç&`ûA7:4© Ú<Å‚WoM€Ë­¢eZåö—_ÿ^ˆ7äÁ§[xðó_E8«�LÊÄG›Ð®‘+7»à áW‹¬ïP™^‹(œºw—‰§ªÏ_t‘”K×›œ —�?=ø¯„Ý.ßïM›ÙÙ•Û»t‘L"DDe™Lr-Ѿ½þ6Ë–É$ð¿Q£Fr}tÓMÆÛ|ûmèå%ºvfÏ®ZZ ™”¯ê˜àÚkåüáª÷ˆöíåûêÑGÃ×çÈ‘¡ä•åtJÀCçÎú�-÷Ýžc=ù¤da\´(¸ýŒ‚ÿ€Òëß�>Ò¿×2p ñ9ÃÀ�úm~¨ýüyçÉⶪºòJ)9mZpûù+)L 5ÊKDh«Cº6·£^\é‚3·GÅ—¿§J&Àÿ¼›�»/óᲞÿ\ך©u,¸¼o$Ü{åÜ´D3®?? ðÏbµªªbÕ6ž™—‹‡$sáÚ�nì<ìFÝXEA\¤ íY±z{1¼AþjŠI…#Þ Åìƒêeq¬ê°s§dÓ{á ŠŠŽ–Œ½±±²¨°P‚ž²²ä¿Õ±xi˹.*aµÊuG½zrÍåó›7‡/x-'G‚¡ÿ÷?¹ÎIL”‡Ã!÷?½ïW_ Ï«bóf¹|²ÚºU2ó>ø ü\¿>�ž.Ÿƒ¬¬ê9æ·ßÊ�ïÛÖ­��õ,]ZvJ"""¢`1�ˆˆ(·ßÜx£~ûæÍ²0ØòµiáBÉ8TvÌï¼#7§—/׿émÛJ°ÝÊ•�ýNÕaåJ™4ÈË+}îÃ%ÐmÉ Míýºw—¶Š�n�:|X޽c‡Ü@LI)?q“”$Yõ””X,{Có½÷ä&è_g�¥½ßu×Ég`Ë–Êmn7pç�T¨å�€3€d¬–Ü\ýI&£ÀsÏ• ‰Åù'&êKUåw…3ѳ-´%ÕÝ[ÙÊMdÍôbÅÆÒ»€ËÖ»�•ïÃG£c“ò™þcÌHŒÑ^"o2)hTÏªÙæö¨ø`i>Þ_^€Ì<ùGv"ׇu»ÜèÑÊ»0›´H±".Ò„Œœàï²[£¼°FyáÎå%Q¸X,òÝküW\,G™™€mT.ròdàë¯%û) “!Ë–•¶wì(“oZÖ®-Œ§•1èÎ;õ¿?J¸\’$)Iåõ~·:ud’æþû+·½þºñ1y]6n”ïÚ@ËÑ©mÆ ãl^%×dÁÇœ TUþn6h Ù\�Üx#ðò˲½–Ù³�é<`ï^¹FHK“k ½¿ÓÇKFïO? ì÷Õwè‚©ªL°/Xlß.ß�%¥ûôLž\õÀ’ï˜Ö­ýg%œ8Q8U%À£¬ÇÓo[¼xöYùŽÎË“ñÝy§dºÒ’œ,Ù&µ75’ |Fòò$˜Çç7Ö?‡PÉv”šÞlˆž¿+×.Y" ñ´J.Ÿq†œs”Í´TÖè÷¯u­ètJe#EE’Í+7W^G­ì\%ž|R®Ÿ·n5î3ž *úFÖó„¼ÈäœörÙý~ÞìÂñÜÒkä¼"/}ž‹b�ŠK{D”+ákµ(°Z´¬( ì—µ>ŸŠÕÛ]xüƒìË(½Q•�¯âÏ]ntin‡Å,û·kd…ÅŒàÀåƒ5Ò‡âV7¯W°ª++Pn·”oýë¯ê?–Ë%‹q¨þc‘¶Ã‡Ã÷�ˆÂB ö&""":pöŽˆˆÈ�~ýd媞Ç%Ð*'§æÆTU¿ý&ì´wî”›äz“JqqRÒâ»ïÊ??r¤þñV¯–‰ ­r;wJyœ ´÷>¼öW­’À³ÂÂÊmG�JÄÞ½ú G�Öl0²gpë­À7ß—ô¸ê*ýɺ'ä=*´X";[~§uëd¨"“I9ï¸C»ïÏ?—Q­�ÈH™°ºðBýqO™¢_ââ×_¥“Vfň ,üæ›òÏ•ëZ±B»œq bk¼éêܬ|$ÊÊÍ.¸ÊLD+ ðç.7¦}’ƒ;.ŽFÏÖöJå~ƒQàòaÚÇÙøa� ù®Ò�×üµÏ�Ì<êÇKPaãúÄE…h¶©pÖñ0�(Œîº hÞ\¿ýÛo%3o~~és�:I ºÖ~&“üý. Œ˜>]%V¬úôÑ>Ö�wJ»§Ó8»àþýÀ˜1pX|Ó´©”íëÐA{Ÿ›o–À‰²ßwgŸ-ÙŠôdeÉwàÒ¥2Áf·Ëïtç�øCDÿNãÇg¾ËÈ8õ®É6n”¬ï¿—ów@@½ôп¿ö>Š"× cÇVn>Ü8H{î\9Ï/{.Þ¼¹Auíª½Ïm·U ^ð ï{ÅkñY³dÙìÙÚûôì)…?–… åõ_ºT®-É’?w®~�bD„”‹}æ™à�WQl¬ÚiùóO¹N/üõûïrì}ûd1–½ïÔ—_–VZrs%;ào”þê«%ULLå}êÔ‘ïg½÷%99(gµJðbI0¡×+ˆõJg( **jß^‚µ¬\©}­8i’þbH�GË=òHù…ig�%µ5šL2î{îÑî3rߤ¨H^­ûz¢RC�ÈìÖ¢üuí¢?*8§PÅë_ç!¯HÅUgE"ÒZP]¡Ë‡¥ë‹ðüg¹8ž[þZUQ€µ;‹áñ–¿×ʵmhƒÕ¬Àå~Ñž=Ú[ŒÅ9¼® Tr²”Õ¥SÏš5§Ö¹U ¯rˆˆˆ 4l|ö™”­ÐRX(7›÷ï¯ÙqUÕ«¯VÎàWÖ† ²Ê^¯äqÏž•GŒÐïoÜ8ã`¶o¾‘Õ±Z7Ú{õªüÜ 7—ßÕ’“S>"+Vß\?~\&ÌôÊ Üñòò$s` AkF¯÷k¯iÿ•p»�çŸ×/©;t¨~ Ž6h jMF–ؾ]&šŒ¼óNiÙŽŠ ªXå ¦aè%Mê—ÿƒñçîbÍí¶ôà‘÷³ñØ5±èÖÒOj™y^<öA6–þYy¼ŠìÏð"§ 40%ÁŒ„¨Ð&eÌ6œuÜÈÙÚX‰¨2£2•_-eÛ+~þñ‡|7nÛ&Aù]q…‡”  ‡oÔ> Ùj»w—ïÅŠÏ÷ê%ÿ““+ï+í?ýTúÜõ×ë�áøq™d/›]×å’ŒHË–IÀ¤^Ð �º.ºH²žé),”(§Ò5ÙÞ½r­Pñ¼ãÆÒò££Fiï{Í5r}UñznÌýã}ü±vÛ¶É¡M›´Ë»÷ï4k&Ç«ƒÓ ´k§ÝVX(ÁxZæÌ‘€ª3ÎÐnï×/øLà_ \vYù;�G¾_zö”華4í}¯».<€]ºè·Í�«Ÿùí‰'ôµ²¥ÇÇ/ÚºòÊÊ×]ðî»rÝþÃÚûÝrKð€>ðâ‹ÀÛoK�£ž�> >ШüïGU~NQä^ƒžÉ“%£_EË—Ë¿£-[´3pÞx£\ã›ñý÷%óé�?ßOÑ£X|pÖ ­LE¤HN(½®õ©*Öl×þr UÌú.™¹>Ü;¬|šHUUqð¸÷ºáñ©H‰7£C[¹Ì‚ª |õ[!f,ÈEv¾ö/ºý n¯ d¿øhêĘ�Wüïg‰ðÁu •ï8 \|qå€`:5ôî]»UUˆˆˆˆ¨f1�ˆˆH‡Ù |õ•~™ŸO&Ù�nRŸÊfÌÐìÑ£üÏ;ÊÄ�–ü|¹aí϶mÚ€gž)7ÑËâÝpƒLÂãÀ�àñâ‹ú€FY�´Ì™XðŸÅRù=(áóI¹å@ŽõÔSÚe”RRä½Ð+Y²i“”g4 öÓ2nœÿ’lsçêR¾Ì´Í&¤Z¼^É� K„öØà3ä@\¤‚˜ˆÒ×µ* IDAT»b�Šíõk4ÏñaêÜl|õHå º5Û]øte\nñ‘&Ü|Q4ê”)¬ªÀ‚ß ±r“þLÒ‘,/2󼤯’ɤ )6´@Å Øb|PÌ*Toè ‰H4k¦ôàrÉßX½ÉÞŒ ɨª•¡Øá� ïpglºê*ý¶W^©üW¢ xè!`æLíöÿgï¾ã£(ó?€f{v7 BBG@ª " *ÅŠzÓžký¦Ù,ÂN±:xP¤ê“$틦jjÄc¡eÝ:í`NNlsóx‡ÿêÛ·O¿^yE}|ðàø«Ö§vlV«í±êjÔjWl2E>–S¦h_äøõ×êá¿Z?ý$ZÚª½_Ÿt’ø7ÔV´4bâDà»ï¢/§×Xë˜ð¬³ÔïW`ÆŒÆ÷�£ýÜÙµK?ˆœ—'B ?Üx,-MT+ž?_{ý†î½7ñP©«s&kÉAÙfXÌu/@åÕa–)€Æk±×¯à›5ÞFÀН}]…E›ý€"¶ûДt×'²üä†Ü€føU)8T)#5EËš$ 9fì-Š=È'™G‡ �k‰ˆˆˆˆ¨Ýa�ˆˆHƒÃ!N8i¹ývl¯êŸŒo¨aë­–Q€8Q?vlôýiìVQíoÇŽèÛh ›7‹êj'[ÒÒÄÍh»�há¸ZZ•'qbÂHˆÐïÕ,´Zè D˜ãÊ+�ÔÔèûDU#/›7‹ê‚j¡˜®]Åý›6‰Ÿ'LÐn¿üÝwÚ­†£quBŠ/#‡t— KÝI„Šš0<~õŠX-ÀQ9�?’, á_ŸUb˾$©vY ·ž— wJÝär2ÌÈJ3!ÿPXõq0•Gž9͈³ $ö´,Î0‚Ug ‰È°«¯Ö›3GœHÖ£®><¹@‡8ñDõ1¿_;ÜWkÑ"í±ú'Ú{õRo+XkÚ4ýýÔÔˆp€DíCzºøü¨VQ«ÖÝw·Íc²hÕ ÷íŸgµB}C†D/¹D;еx1PP ¿?½×éaÃ"v»E+Vo¿-*¡ÕçñDþ;b¡¶Ó Ò©‘eíð_­iÓD KëøcèÐÄ€kÖh�]{­ij=ß§N5¾½PÿGE_ÉíÀþˆ�»h™3ÇXøÇC3gª_„–�-ž§ë××Ýg·k·Ä^²Dý˜Yïqùä“èÇëzŸÍ† 3ܽ[?lhTj�€fx:š4Wä1ciUX5üg³N»„Žif\¦«ÑøO¿xñíj�ˆw†ðñÂôʶ>.•$`ò©NWÊØ] ÃPà (78Œ.,—qTŽõðÏ™ ×::È0YÄß>Q{Á QœŒ„¬Ú²ª*í±†-õN°Œß ¢ú´N²´ÚÕÒÓ��êÙS{¬¤Äøvôrh·vª]÷‘GŒUU”åØª~ü1ðÔSêcç�Wlªö¿®.ñ·ÿµY%Ô+”_@�¬R¹ä¨3Nlǰ¾6 èfm4¾y_[óB‡OØH°jg“+åÃ@IF¶£{VlÛÄê�~ü¼Ý�CUugJ$ ¨öFN Ågº€=]†•@¢¤Ð Ôú¯¿µVQª¯oߨç£çÄEõY5›6EŸÛµK»ªpý°¹^ëò2`Û6ýýQû¢UÕ«Ök¯©WBm/.Ôöêùs¢ï)¥¥ÚÕÕ’ýž+“ ÈÊ:w•k?÷衽N¼¡'=°j•öÅm 'ñÈÍÇ–j]L&àË/EpÆ QõïË/õ«$jѪ&?ü}ýhŸAŒc9vDÛ^­ãʳώ Ž'B€j´*Å·–Ïf‡Å×ò·¡ô^¾è i07øª ãIÒ\ºu4£k ŽéeÅñ}lè×͇­ñqf(,Ö­ý›T@+Pù<®�¯ßnG^q÷°~wûŠdä—„P\F0‚‘ëX8³åÊÂd•!ûyzŒˆˆˆˆˆÚáÅéÍ7Eµ‚XÚÛ´%±;vlÚ¹¸_HÞªTVj· Ò«d/½`q±ñíè=wþŽÕ¼ôpÛmÚíŸk½öšvËF5| <ÿ|àÿÿ?i’ú2Á v ³è¸sâ/ „#Oe˜Lu';ze›qöpΞ‚Þ�‡þêØÝ E‰ÚcFßwŒTxÒ«p­""YÙÛ3½××ÌÌÈŸõÞS¦N�­:\CM}¬×Ð�!¢Òø„ ¢x—.â3uk°oŸöXÃßI¼|P»Õ0 އÎ?_üE…h½r¥¨>·x±êIOUöµ$z¡cS>_.óS{¾ŸuVÝqbíÏjETóS£÷w4ožñyªiî¿#KŠ G‡ø�k½�ÈcÆ´ cÙpüÑ6ôélE÷,3ºv4#E%ôW߀n8l€ÿ·ê‰fЭ£ùp+ßú$ è™mAÏl Α‚’ ù%2ö…°ioY Ž…½•ö�°8𧇬æé1#¾ü²õvå }µÐÑ‘�G8DDDqêÐA|1?eJKϤé4 Õ2™ÄÕôþß ¥5u@OïEk Õn hšÇF«Ú ý„O}zá½S¬b=a——'Nb�ÕxlÌqÒª{wqBPÍ_Äö8ÔgK“aqÅ¢¤ÆÙF(Ãe g¹1¤—=³-0›Œ•#éÖÑŒ¡GY�û[ ¤n†õ±ÂíÐ_ßa“0j £:àõ‡ñËž:¦Fþj|ñŸ(‘L€£CÈU¥ J«AôN2w\bÛŽµõa4zïe±ÏÙ€DT_×®¢%j´äm™^u´X€‰Jö{Š–>}Duñ /lžýÅCï½(YÀW_N9ÅØ÷ ééÀé§‹ø|ââ«§ŸÖ~þ4åshÚç‹¢³f©‡O;-ò; ­à‚Ú!Ç.]’2MUÍõwTËÕ%SÇô%•‘¥%;e˜ñä5™H±K°˜É`™ÍþݬxxJ:ÞšW�ƒe2®;Ã� OrÂå;«YB—tÎ4ãø£m˜x‚›5rŸ¥Uq”¿ü�$înTçë|¹B‡<(nDDDDDÔºµ’ë'‰ˆˆÚ¦Ë.ÓoCÚ–¥¤hÄ¥î‹u¨©iž9Õ=ZÌ-–›^U¡D鵟Jvû_(/×ëÔÉøv´tÑöQëŽ;¢Wÿ€?þ<Øø¼í¾’$þ暪ýoJÇ Ì¶ør’dg˜"NL¸&ün”½;[ ‡ÿĶ$шV¿£8ptW[Äý=;Y`Oà2 gv�"ˆÖ”•`RS“»=›M{,ÞÀu¬ûa�ˆzé%ýϳm]k©Èîv7ݶk�üòKëÿúÇHF*¨uõÕÀý÷GsápwÝìÝ+²jšº]S?_þ÷?õû-–º dv¶¨$©F«ý¯ËÕ´6ÇßQ}Îì áe%ˆÊ|V à´Kè’i­çE~˜4›$¤9M°š%ÕcREÂa!Y‰¨8ï°™pÎ N¼ÿ×,|ûDn<'�2̇·¡( d•õÏM’`6Ip:L°4èK|ßätôɱ 5E‚à Xͱ]|èî0¾0QÀ €DDDTWkaûÎ;À Aí¯°^xàСȟõªS¬_/*²%bÏžÄÖoJn·þ‰‚²²äïSï¹Ö­›ñíè�0Õû�¢ÂÅc�Û�Ù,*QŒk|n3f/¼ B=ÿ|í@guµhO/GfÈpÐjRS$¸SLèœiÆ1½¬¬YiÆÏ:( à „Qå #+ÝÌΰ`ò©f„ÀÕÒø�¨ñ…Qã #Óm‚Õb|Ÿç�˜‚t§„U¿°§0„’Ê0<>eÕa„ üÓS²B�L ™‰!Ç_l´Ùé…ü’YéV/ìŽ¿È µS.ðÁu¡ŸöF/0äõFþÜœï)>Ÿñã€úÖ®U¿äHÑ^Uï˜* DÜç÷õî ôìû<‘�­=Öðw’ˆPH´³�5 ˜6 8õÔØÖw:�wßdžO=9Ö–>¨Y²D¿ ðܹÀ¹çª¯+ËÚÂ@;Ê‚I¦0œ�B†–=ö(+út± Íi‚Û!¡K3vÕëµ(Š‚  T{Ã(­ £ÂFyuÅ•2”00z°=;Y"‚‚N»úñj•WÁ뼨ò*è˜jBÇ4Òœ&dºMHw™à´« _7+Þ¸£¶æ±¿$„²jq\»¿DÆúÜ*<ú·®œ$‹ %”ÄöDDDDDD-ˆ@""¢(–-®¸ظQý$Lv¶¨>qå•Í?·¦Ô·¯öXÃ*„d§ãÀøcè�j‚$IÈpKèže†ÙÝ ¤õòÃS`76Y"""""¢VÎx¯0""¢#L *JÔ¶£{ã qÕ·–wÞÑ&íÚ¥=Ö¿¿þ\¬VõÀP¼²²ôÇ% ¸áíñ†Àµkõ+Ý=÷œñ¹õêÜ|³ñå›’V›Ùúþügí±uë’7—†–/×3R 㡇 ù¥üòåúÁÅ×^Ó~>þô“v Çž=�¿ü%úÜj}òIlÕüÊÊ€~0¾|Cg¶ôè;¬ô„‘[„7F^q?¬÷á¥/*qï;e¸í•Cxð½2,­;Ó I@†Ë„]e„dõÇÎb†÷µÂn�”à ‚¡Æa¼©& ë£^*E’€@(ªÃí0®’ sVxpÇ른é¥CxøÃrLû¡«vP^-£¢FÆžÂüóÔ^IìqFt„jø^ZŸV뺖²u«öX§Nƶ1nœúíè£ë–Ñû¬4lXl•g‰¨}ؾ]„À®¿^»Š�ËLŸ}[zŸo-­ðéaôÇrs#nKï)õýîwÚc|кÂV+0j”öxÃßIS:p˜3¸ývàØc�;´—;6òçÊJý°¬Vx®5Y¶LTŒWsÿý⢸†dYT‹×ÓVÿ޲§`¶Eo¼lKŸ.«ÁÆ=¼?¿“ž,Æí¯•aöR/~ÜàÇKsª±>·®¨$OH�F¡y@N†ÃúÚ_ !YÁ�Òr ‚#�m³ÒÍÙ_=€W»‰¡½DKâÚãÚƒ¥2¦ÿäÁ�üX¼9€§gVbò3ÅøÇ¬J¬ÜæÃüõ^ÌýÙkè¸Ö™ÅãZ"""""j?$""Ò EE‘÷]s�h‹£&;xùeííéµT½ê* Cõ1— ˜7O»-R<x@¿zÁwh·�DÈ«¡7ßÔ^þ²Ë€?ý)ú¼† -‡^¸ä’èË7µÉ“õk<¼öøwß%Nµô*Ý]x!pùåÚãgœ\}µö¸^e„ßÿ^»ê¡,ü£~K°‡6)+Ï}£fÌsˆ—ɆٽRÂþ½_Ž{Þ*ÃßÞ+Ç33+0k‰[ö…p°,Œu»‚˜¹(²äç9'¤`@7í3Ë)v G:#Zyüaüoq œV†û#Ï^H’„sGêŸ|9y  {Ô½pUÈøn�¨BXV­`ŶޞW�'>®À}ï–ãÞwÊ1s‘ôÈ6Wý¯ˆ€~`ù†€Þ½�oKï£ô.48p@;ØÐ½»vEÙZƒ‹Ïj·?ü¡n¹_~Ñ~§¤_¬¿°±8)Q»±{·¨J^X(*ÞéOŒ£a ^Ë´ôìßãíØÎbѯ4Þ°Ú·Þ{Ê)§ˆÀµQ}ûF¿`,YúõÓ[¸°yæ`ÔEé¿ß&:ß.]€ Ôo7Þ¨½Þ–-â÷«uVz:бcä}óçkoï¾û‡Ãø¼õž§MEQ´�‡µ*Õÿ}ô6ÍzG×]ÛëÄÈ‘Éý'Š@1ÐÒÀ“WâšçáÅÏ«°¯¸q5ü/–{à¯Ú;®· '´CkëCzYÑ¿kdUÁ-û‚¸ó�RLùG ¾\éA8\·½´N`‡Ë®¾ÅìtÎ9!.‡8�+X³3€½E¡Ãs•$ ¢FÁ¬%ÜúJîy»;D@€Nâ•¶DDDDDD-Œ@""¢ìØ<û¬öøUWç�§>¦LKÕÏ9§®*[çÎÀ¥—‹©·AMDV–8É~ýõ€ÓYw¿Ëüë_À /h¯»{7°fMãûŸ{ðê\<ýŸÿˆ/éžL’$`Äàÿ~þèÖMÜ7}ºhkÔÒþùOZ6¬.‘žÜ{/ðôÓÚë•”ˆª Må‹/DE5µ�ßCEžìÉÌU"¾ýVûdDI‰¨f©Ænž^{N¯¿.ZS½ü²öóÝé¿k£bié›Hû_Pd²±�Ç[óBX¶5€M{ƒ¨ð(�N”|¹Ò‹Â²º“™n.ë„U#xÎzvŠìݵ3?„w¾«Æ�¿øñ·÷ÊUK8®·ý5B…+põ‚[÷±yo0âDI( (•±zg«v·[ŠFö±MQ¢¾ÿ^{ÌéUjŒT¤ÊÊáù§žŠ¾¬^õ+­ jÍœ©~¿$wÝ¥¿îUWi�íÜY÷ÿÁ ~ëãë¯×ßÏ#�}úè/CDmÇš5‘íJgÎÔí|öYý@²Þñ˜Þñ–Ë<ñ„öx<î¼SüòËÅñ šêjñº_ßÒ¥€_çúŒ�>ÇœÑ (¶õÍ7"xÝÔôÞçôÞ—L&àä““7�ÔTÑúVKV–~Uû+´xF‰°æØ±�o“'ë¯{ð ~…ø†¿K½`ß¾úßyÔ÷ç?‹àã½÷[>™´.ZÓzNi}Ž©Oïqq¹Äñ¦‘Î gž ,^ L›}Ù¦à/w ä7v\+Iu75v±e_]ÀŽi&LãDv†úö7*VKý‹Ú|»Æ‹=…¢þÌEì.¬;N6™$ß׆^9�qŠ\t²Çõ®»º£ÂÆâÍ>TyÕ/ZÓû·¨©>茾QÁ QŒ\„à´hµÞ¼9ò$wCýú‰-%%bÙƒEE³áß³šìlàí·�òrQ5`ÃÑVë®»ô¿0ÕªîV^.ZÃê¹ì2QÁãÀ`åJÑb§ºX½Zœ4¨J³ÛÅãqÔQ±þË’K’€Çí|‹‹Å怜,zˆíÙgck_+En¹E™Çϧ={DûÆÒRÎ3›µ×ù¿ÿí¯ÕÜs�vÕƒÊJ”Ä¿û÷qÝuú-ÍêûôSÀ狾\^°d‰±mjñWZà-²‰Š QD;QRãSðÙ2B²Ø˜É$áÔ!œ=ÜsƒOà6 pÙXWDõ?9¬`Öâ”V‰õs eÌYáA¸Þä:gš0âh[£*€N›„'¯É@×u'QüA3×@Ö ÿ=Q–�â-nc ‘¦‚ñ§åøãÅÉüAƒ´—7N¼sŒhÿ~à úûÌËÓ;ã ýu_š¯�ü£xÿhH’Äkþ}÷©¯ 5>Ù®æ;V|vQ{½ºòJý ´DÔ>\w�8~Pãpètô€>¨~ñѱNJ Ϙ1±ÏUÏ_ÿ*.&Rkm~ÚiúÇU³g7>Î…ô×éÒEsi]`åv‹0׺u¢Rü 'ˆ€•©‰¿9^·N{ìŽ;Ô÷o6‹cîd_$7mš¸ ¯¡”Q•¼W/ýu%ËÚßœq†~¥=·[û{ƒ‚`ÿþÈûfÏÖ¯ˆùç?ï½'. SsôÑâ‚´—^?O�Úüü—/×nÜP0½ý/lÚ¤_Éqôh1®u±A§Nâ{‚yóÄ÷—_.¾KhnUù6xŠ’Sù`©Œï×yQã’&“„Qí¸ô4g£Ï…}»˜1üèÈ Åö…0o�÷ðqè¾bñsíq2tË2ã¸ÞÖFǵã†ÚqÕlõ.jÛ¸;€¥[’S�Þ_eÆ¡- Qûa žÕç÷‹O ¨�gg/¾(–©/ž|R|‘®'3Sû‹ö¦`µê‡ ê[³xÿ}íñ¿ÿ8î8àôÓµ—1™Ä ¨.]¢ï/+KTT|åcókj;6nŸ¤&7W<šÚ‚"ЭݙÞɪúfÏÕAÔté"ZkyòI0¬5gŽ892v¬úòo¼Œ}N>Ÿ8¹té¥úËÍœ©L1*ä1£t{ œ�C°¹è% @?¬÷aô`†e…$IÈt›qÕ7 Je¬þµî¬íIm8*'²$ãš�~üøKdòqÎJF ´£G'ñÞa3aD?;æ­õ®ÜçvH¸b¼ ã†Ö•ùPŸ,©ÁúÜÄ©ŠTî³£r7+%Ã_þüîwÚUYO8ATìýâ Q%wãFÌ4H„Ž=6rùÿþðx´Ct[·jÏå–[DûÜÄç�ž=E{ÞÚ�ɾ}Àܹꕎ-ñ¾wÉ%¢}Þúõ¢ºïäÉúŸ1fÍŠ|ï€Ï?…µ*O]½ø¬±i“5ôë'Â’±´L&¢¶+?_„еŽFޝ­jU«£Ud_¹øî;ñúÒ«—8¦‰V5^’$>[ßy§h‡¾y³xýîÓGšõ.ÌÐz�äàšk´�%ûõï%?þ(^Ó Ä{J¿~ÀI'5~/:ÿ|ñ8F«òšˆÕ«µÇFŽª½û®»û|@�"­R|FFìs1›Åû\n®xïݵ :TTÔ«ž ~ûþÔ¼÷ðÌ3�ï7™ÄûãÃo¾Yíqð`ÄÓjÛ¬VÕÎïG| =—«¯Î=W\d•ŸÔÔˆ‹óŽ=VTЬ¯¶ýÞ½ú¿Ód›>]ü½G3ožñ �·Ý&^´þO=Uµ ÅaáBñ%¿V› k¯ã ¿lÿðCQ•Íh «>¿_\Ež¨PH´êÚ5¶õŠ‹Åìz¼^`âDÑBøOŠ޵þýïÖþ3ªºZT:lÊêõÝ{¯i\xabÛY¼X¿µâsÏE¶‹®oÏõÀ£ÞÉ“O¦L1Ö¶÷ã�£mÿ[«b�¶4ÝÆT%t¢öËøt™½²Ó�îëÛÅ‚{~ŸŽ©³*°ö× ìVàâ“]ëUye<7»²Ñ‰�_†ðÃz/®ï>ÜViXzçXPR€Ó.aò©N\zš+bîëwðּꄒŠxЬ(XåF8˜àƒCDĉòÛn'óµX,"Xg¤²ŽÉ$‚úóç‹÷ú†¶mÓ^×lnº©ñ}õßÏîºKbõmœzª¸õòË�ïózEÝGÑ^oÄq#¢#Ó«¯Šp’ÖÅ$O?-ÂR»vEÞÿùçÀ¿þ¥^u¯¡çœ£^®©¤¤ˆ�Õ¹ç[~íZRTSY)>_Ï�«]¹O’ô/ÖjèÎ;Eï—_Œ¯‹¹sű„VÕ÷Du¹XegÇ7I-põZI74uªÇ%ÃóÏ‹ û÷o<–™)Þ7Ÿ^À—+½Øu°î¸Öb–pÍ.\–ÿwaze[ ývU›/ÆŒE5øfµ7áGX–Pö«¥ÛœPÂ<¦%""""¢öå©8®¥'@DmFaKO€Ú�C‡D%œwÞQïÚUœÐ¿á†Èû¿úJ´Ìyÿ}ºÒSSÜ¿¾ûnræ�—'Nª&ÂYg�¥¿üüù¢òŸV˜@Ë´i"hðÄÀ�7jW¡¨O–Å—ó·ÞûþšBY™2Þuð�h·h€eËD«Äüüæ›_}=$Z ½õ0fŒ±u6lÏÏ5kô—{ýuí±+€ÿýO^—_®^i¥¶­ð£�êï?ûЪP˜¬–[‡)ÀþÅé°§ÉH퀔Àù9 ¼øyºt0ãäAØ,$IBºËŒ/KGyuSÅEÁ¾b_ý¬}bcG~߯õáæ‰â„ˆ$I8k¸ýºZ0¬odšòP¥Œ·æUcÓÞÄËQ†e Å¿8Q¾K£ì%äî»E˜ùÅõßkô„ÃÀßÿüóŸÚËx½¢mü¬Yñí'Ä«ªÄ{ŽV%ÀhÞ}W?0á÷ãÆ‰ê´Gm|»‡‰ÏWMÙ®’ˆZ‡�;ÅqÆO¨��).RiXÅëµ×DèéÄcÛßSO‰Ï­FŽi¢ùâ QÁûøã�¯ ‰J°Ñ>·¢ŠúîÝ¢å¨Ë}y½íh=¾É´h‘8.½ùfãëƒâYëõþøãEPN+$ÚP 8 ]‰PÍÊ•¢Zd(}ÙXä剋ï>ÿ\´¼�×ôé"\©w‘Xíûí+¯4þÞ"�ø^aóæø·¯™3�{îÑÿúëøÂw×]'*'?õTü÷Š"^o¾ú*¾õ“¡ìר3dä_“%±‹ÂVl `êÿ*pÿÒÑ!Õ pÚM8}˜#"˜¬( >_æ‰ø5šWu/Ï©Änëp8è7¼¯Çõ¶Ãf­ æC ¾XáÅÇ kL¼ø<ÅV\™ ÙǺDDDDDÔþ´«`( u²ta³ÎƒˆÚ—pÈà7ÆÔ&Àc�i�Eóî»@§NÚ­Qp»W/Û¿_Tá;ýtओ€N­ì23Åþ[¶?ýÌž]W©gÖ,Ñ*P�Wå-ð³Ï€ÜÜÆ÷oÝ*þ»w/pöÙ@¿~âÄÅØ±âËÿC‡ÄÉŒ¥K� «ÀSTüñ�¢Míˆâßyì±âDFÿþ¢b^I‰ÍÍ™#*u””Ä¿¿¦ò "Ð8apæ™âÖ©“ø]­]+ÂóçëW㨵b…ös.Ñê Û¶§œ"Ú.]t‘¨ѵ+й³hãXX(æ¼x±8ñh¤Ra�bY­ª ³gë¯_Û:ú„ÔÇ}¾ès€Ô~ð�±mÄB IÈ_ž†žã*àÌ&Ô8(�~X�;/ ã¬á)H±‹“ n‡ nG݉‡� ü¸Þ‹}Åúg?]êÁÅcR��.>ʧ»ÌÖ×±LE�Œÿ~[�oV{U«.ÄB %›SP¸Æ�؆ˆH׫¯ŠŠx/¿l<È]káBž¯}�×óÉ'À•WŠý¥¥Å7×O?N>xûm`øpãëmÝ*æ¹ÐÀ!zA�xf̈~Á >óLš$Þ÷$:2L�**ksŒúø£�ŠUý×FY­ÊzH\he‰òÍh0(>»?õ”8®‰Vq͈͛EØjölq Í¡C¢÷¼yÆ÷1gŽ8æzáàw¿‹m~ëÖ‰*­_~Ûz‰¸ývÑÖöᇣ‡Ë÷ìÇ:6ˆÇE­Ú_jª¤ ^ùýÀСâ}툾ü믋÷£Ç2±Ú³G„X|øÛßb»8`õj²7úûóûÅ{ß~+."èÕËø¾dYïŸxB„N[Âÿþ§Ô»XM�¢ˆ×˜… Ep8Ö0æ7߈ßݺuñí?Y”�„¢õN¤t "½·?¡ãZÀ‚�~¤Ø«p˹ntδ@’³)r£eÕaüz „4— � ‚ ¬ˆcRE„)-f V °§(„Ý…!ôé,žàf³s½ÃZ_@Á¼5¼òUj|‰…Ö˜°g^:BsôˆˆˆˆˆˆÚ v,/TI9é¢W‹æÙgã_wþ|q3bîÜØÚö™¸E³s§¸½ü²ñmǪ¢B¸~ü±éöÑÔÊÊÄIºh�·hV¬H^›%-›6‰Û“O&¾­¼¼ÄÿF¾ú*ñª'ªß¿n�¨šÕ¼ÅV®q¡ÇØJX]‰¥è*½ ^ýº%•a\zš î”Æ$ 5Àްä„°¿$„²ª0‚2à°IÈÎ0£g'3úw³ÂnÑ®X°» ˆ?¯ÄÊí�„«$( PžëÀÁŸS¡Èl‘DÔÔÖ­Aîßÿ¸ðBž0ª'kóòDpþ£�D"Ó§‹�ÿË/‹6ï]»6^fï^QUPËúõb~×]œ{®¨¦Õ£Gãåü~ñyä�wD+B#aùZEEâb‰[oA‹†ÕÃaQ ë³ÏDÕe¿_TùÑ ¶Dû="ÒWT¤ý7­šX($^ƒž{N{™oUVë Dð£�DUÔNá›­n™_¯YÏ=WwQÕ÷ß«¿^nÙ¢¾ï¥K�ŒŒÆ÷¯\)B}ãÆ×^ L™"‚€öÈbÎØ¼YÌáé§ã«Ž¾kpÁâ"¦+®ÿÎcŽADÀ¦Vq±JMŸ®Ýž½)ƒ¢Zã‡Ï?/ÞSzö¬{ÿÛ±CTr›;W<_‚¿¸~é%qq–šîÝc›Cuµhaûý÷âý±aÑïÁÊW^1dDûä”õ±Ú ý´Ô†OßxC\PuÕU¢Š¿Úrùùâ½—^Ší;ƒú>ùD„o½U<7GŒÐ~ ׮ϕ�>Šþï8xPûñÚ¶-¾¹Ö·zµ˜·ÚE á°'bùrQQòŠ+€óÎ�ËÑG«6ËÍ�Ɉ笞Êʦ}\ê“}fä/Kƒ-µ ÎN‰•¬”ÃÀ×?{QZ%ãš3Ü8®· VKäƒÑ!ÕŒG®ÌÀžÂö‡p°LFeM!pÙ%tJ7£[G3ŽîjAš³ñ R8¬`_qŸ/÷bF’*ÿªÌÈ[�Ž@e»:FDDDDD¡]ñhW$"""¢¶*5U´"äþ¯‰ßYV–˜—Ù,æTP[¸^�ß¼ø¢¸â}='èÒE¼ß–”ˆ÷õXž›±^È� .hÚí+Ч~ø¡øÙf�K·n¢ bíßQÃÎz¶ooÞÏ+þ2 öÎOGŸ‰å°§'v¬¨X¶5€=…˜|ªWŽw5:>µY$ôïfEÿn1”¯„h¼nW¯Ï­ÂúÜ`Äñp¼B>ŠÖ¹P•g‹¾0QÖ®€f ∈ˆˆÚ›{îÑn6cFï\‘P¼Þ…”ŽAtà…)ÁnA!øé?v,Ƭ³a1Gž(‘$ 3`1@l÷6ï àïʛœ3€�3 ׺à=ÛI"J®ÚÊ>ùùM·�šQ‘*Q�àå6Qqþµk›f»DD¡P˶ê”ejÞ»·é÷s𠸵v�@ò+¡ ‰ yaaËì_‹×+B’yyͳ?�Gb[ª½ok4ïï!Y¼Å6XáF�qU°Ø«pJelÞ€$¹’0»:y%!lÞ—œðŸÊw9Pº=J˜퉈ˆˆˆ¨}kWÀÔŽ*ý†�4ë<ˆ¨-û€�ž©DDÔäÌfÑ‚êÁÕÇ/n¾“.ù‹Ó`v„‘ÑÛ¯Úî)VV‹t8üç „±#?„^Ùf¤9M� ì@Q€¢òB2йƒf“É$!IÅ?–�¢uN”ïÒèYFDDDDDDmJyn R²BÈV“ðÅm€¨ô'Iä°‚¼¢æÿâÃøcÈÉ0ÃbìMR]ËdâX6BaŸ‚Ÿwø‘á2aD?;l V³³I‚%ÆKâ") à-µàÀÊTÈ~V´'""""¢ö¯]îL�‘G›sDÔ¦}ˆ†@“™•�ˆˆšËã�§�&þ¿ÑnJËsÏ5Ïœ@˜Pð³Vg®œ`Â!ÀqCEIÃ’JïϯƒÍ~té`Fß. êaEß.Vtp›à´K0™€�¬ Ê« °LÆŽü¶îboa3pÅx7Æu ƒÛ„£»X°.7˜ð‰’¢ N”lt!i‰B""""""jQJHBñì22ûúÚ–Û!áÒ±.( °h£OΨ@Yµ‚7¿­F÷Žf êiÅQ9dºLpØ$˜$ RPéQp°TƶýAüz „jŸ‡ ¸á,7®;Ó�ýl8¶·+¶šŸ¿Â‚½ßg TÃðÚU�ˆ¨I$£Ô2d0vlôå,¾ü²É§Á[lCáj7zN¨€Õˤž�̸îL7˜·Æ‹O—záñ+Ø[$ãçíXÌý~{û‘P—à +€,+…EPJ*+qÚ;ºt0ãìá)Ø‘‚Çr¯<×�‚ŸÓñý�ˆˆˆˆˆ¨= Ö˜qpE*é2R²‚qoçš3\ÜÓŠjo³—zP^£@’€`Ø](cw¡  î¸µ–Ú׬¾ðþüœwb r2̘|ª¿ìÀã�on�j3ö/N…·„uÑ‘ƒ—?Q›â÷×_ß2û®Øí@á:WÜá8·C¦"ÅnBYµŒµ¿àñ+‡O‚„ ¼¿¸ÕøëþßP”#O¢ì)”±x³&“„³F80²Ÿ-®¹) PSdAÁJ7ÂA†ÿˆˆˆˆˆˆÚ#_©»ç¥#gu¼qCí˜2Γ$aG~{ŠBšËJRäMK¥GÁÂ_ü�$ c90e¬+®¹É …k�¨Úçˆk}"""""¢¶Š@""""j3d˜2ؽ»åæP´Þ…âM)˱­g’€‰'80²¿Š¢ ¯8„íù‰·–$`ÆBEA†ËŒ›ÎqÃG0X-Ú{KY%�ˆˆˆˆˆ¨=ó•Z‘·0 ¡€Ô¨JŸž0eœ )6Š‚�{(®ˆ¿B~-I¾[ëEHV`µH¸éœTtpÇv°–�Ò�)8´Å %ñ)µ) Q›PV\vðÙg-<‘°„‚Un”ýêˆéD‰;EÂñ}ípÙÅ –ù!–%ç¬Äš�,‰Ä=¬Ø=¶Ÿ¢W»Q¹×Q×o˜ˆˆˆˆˆˆÚ­ª}voˆ­Â}ºË—C,_ZÆÆ=Aµ Æ$¿TÆ–}(Š“ ÈÎ0Ç´~Už …«\yÚ‹ˆˆˆˆˆŽ<––žQKZ¾xì1í1j^_|˜ÍÀ A@×®À¦MÀªUÀ¼yâ ¶ô ÙgFáêTØÓe¸;›T ¨ÀãCà (øz•rX¿ ’QA˜½ÔƒÛ— YŠÊc+Oxðg7mv1üGDDDDDt„M(Ùè„=#„ý|†Ö9TÆœ^Ty,ßæÇê_I9¦D pÚ÷5˜82Œƒ¥²nkᆼ‡,È_šŽ@OyÑ‘‰GCDDDtD[¾œA¿Öä½÷Ä­-ð•ZP¸Ú ÛØJØR£î|Aàõ¹Õظ'ˆ­yAlßJÚ‰If,ò`ç� *kÂ8Pj¬² Ê~u àçÔäL„ˆˆˆˆ¨ …€… ÕÇjjšw.D­I°ÆŒü¥©HéBJ‡è�»  |¾Üƒ7øPé ÃHÎEm’�%[üX¿;@�Ïà€�jöÌO‡¯”§»ˆˆˆˆˆèÈÅ#"""""¢8UìqÀšB÷1U0ød]RÆ+¼’w’¤–/ `é–€áå¨Ê·áàJ†ÿˆˆˆˆ¨}óx€qãZzD­S°Ê‚]_e`ÀïKaI G=V „ı-�üãZ9 TÔ+M¯(@8(áÀ²4x ­É�H›ñðo7""""":Ò™ZzDDDDDm–ÚâBá:”6Ö>×_aFáj7ü¼&ˆˆˆˆˆˆèH¨°bÿâ4„¼m甑"K(ÙäDÅn€$'‰ˆˆˆˆˆÚ˜¶s4GDDDDÔ )! …kRQ¶ÃÑÒS‰IÁ*7ªöÛ�6\$"""""¢ä«ØmGÉ&ä@ÛÓUæÙP´¡íÌ7Q’ÄÓyD”||m!""j?ø®NDDDD” pPBÁêTTØZ}%Àp(\çBé6gKO…ˆˆˆˆˆˆZ‰pЄ¢ NTîµ·ôT¢ò•Y�·0ÁjsKO¥Ù¤¤fµôˆ¨r¥ç´ôˆˆˆ(I$""""J_©?»¨j½' ”0P¶Ó‰üe©-=""""""jedŸ y Óá«0·Ê‹ÛzMÈý&ÁV|ìÝŽ=ý†–žµ3iY½Ð{ØÙ-= """JKKO€ˆˆˆˆ¨½¨Ê³ãÀÊTuz$Së:[¢(@ež«Ü@øÈh‘DDDDDDD± yMØõeô=¿Ž ¹¥§!ä5aÿ’4øJ­-=•f×oä…èÔs(v¯Ÿ‡€¯ª¥§CDm\‡®Ð{ØÙ°X-="""J‰ˆˆˆˆ’D å;(Ì ¢ó 5-=��*3 ׺à¯8²ª$QlüeXžŠî§TÁ–Ú:B€rPBÉf'*vÛ�Öu½]³ÉÈéƒãϾµ¥§ADDDDD­€DDDDDI¤„%ü9ÖT™}ý�Ì ¤,¸§(€ì7¡`•Õûí-7""""""j3*v; „%t] Gfˆ堄+RQº%ဩEçBDDDDDÔ1HDDDD”dŠ,aÿ¢4x‹}Hí€%EZ ¨„$ø+Í8´Õ‰êý¶æŸµIŠ,¡"×�ʽv¸»àÈ ¡ùlªM¨Ês hÁ+눈ˆˆˆˆZ9‰ˆˆˆˆš€ì3£h½ ¥Û°8@jîEÂ! Xc†â‰""""""Š�"K¨ÚgGÕ>V”'"""""j­$""""j* ò˜ò´ôDˆˆˆˆˆˆˆˆˆˆˆˆˆ¨=2µôˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆ(v µA µA µA µA µA µA µA µA µA µA µA––žQÓ‘Tî;`\3σ66ºG’Ôž£DDDDDDDDDDDÆ0HDDDDDD혢qÿÂf�‘EÑzŽEÇ`+çt={™™@q1PTTV¶ô¬ˆs¹€Äs5- ¨¨JK�C‡Ÿ¯¥gGDDDDDDDDDDDDDDDDÔþ0ØÊ¤¦·ÝLž ôêde5^¦¬ X·X»xë-`ûöæŸg{÷ØcÀرƖõx€ýû�¼¦(ÀÕW‹}Åê½÷ÄóJÍ¿þÌ™c|[V«˜ç…_ t颽ìÚµÀÿ LŸTWÇ6g""""¢DØ�é-="]WfKO�ˆˆˆˆˆˆˆˆˆˆÚ0[‰Ž�;îî¼STOÓ“™ L˜ ný+ðã�À=÷ˆ�%Ç�!Æ€jvì�º÷ß¼ÞØ×ÏÎÖßÿoçžûvO<8P}læLcÛ�$àÊ+�çžrrŒ­3|8ðúëâ1ùÏ€‡cë%¢kÿ“a¶: Y–šZ§ÞÃÎné)QÆ`+0jðÕWêÕþŒ˜0X¾øË_€W^IîÜ(>ýû‹ÀÛ3ÏÏ?/þ'oû'ŠÊ{_|‘¼mqôÑÀ¬YÀ°añ­ït÷Þ+æ~Í5ÀÊ•É�QCîÌ.¸ì‘°sU3x&2 k¿“ÐmÀè–žµa ¶°I“€�?l¶Ä¶c³‰ÊjþsræF‰ËÌž|8óLÑÖ¹¸8yÛ~ùeàÛo¿?yÛÔsÔQÀO?Ý»'¾­D›äI“bk;LDDDD�]`Ô…÷¶ô4ˆˆˆˆˆˆˆˆˆˆˆˆ’ÎÔÒ8’=ð0{vâá¿ún¿]´W¥ÖeìX`ãFÑ‚7Yzôh¾ßuf&°xqrµÌfñü¿à‚äm“ˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆèHÂ` ¹øbàé§�-[Z ¬Yø|Æ–ì1`ðàøçFM#'G„è HÞ6ï½èÓ'yÛÓò—¿ ÿUT[¶ˆ–Ô»w�€þò 0c�ššœyR{U@â�7Þxã­ÍÜ®5¶nf30uªþ2{÷ŠÖ±K–Û¶‰ûL& woàì³�¿ÿèÒE}]I^{MT�£äûæàÙgë~NIzõ†Î;Oü¿› øä`Ĉèá8#¬Và­·€ ß––ôtà®»´ÇxóMàßÿá¿úÌfàúë�'žH5))ÀŸþýo‚ˆˆˆˆˆˆˆšŽIåÞyÆ5óLˆˆˆZÚ�F÷H&ÖÓ """"¢Ö‹ÀpóÍ@ÿþÚãë×g�GÞxÓ½ IDAT»v¯¾*WÓ§“'«oã´Ó€Ñ£�eË’7o € ÔÇþô'àŒ3D@ðøãÕ—2xî9àÿþ/9ó?øýïE°°)œ}6àri�ßd ²>YÏÕ9s€ ´C€wÝüóŸ@(”ø|©m“L|[""j�LfkKO�ˆˆˆ¢P ¨Ü[øÛ�ˆˆèȦ„Ã-=""""""M¼d©èUS[³3¦qø¯¡`¸õVàÐ!íe.¿<¾ùQb~ø8å`Å íeî¸C„4“åå—E%½¦ ×b¸¤D;üW_a!pÓMÚãÙÙÀ±ÇÆ>7jÒ:õlé)QÈÈéÝÒS """"""""""""j—Xj©™ ôë§=~ç�€Çcl[‡Ó¦wß­>~Î9±Ïí‚ €ÁƒÅ -\öïáÄ%K€yó¿ßØ6³³�ÛnSûá±=@ìëoN>èÑ(*fÎî¹'ú>¬Và¡»þýÅܳ³EèìÀ`ãF`ùrQ…N/0™L�xü·o×®zwÛmÀ¢EÉÙ_çÎÀc�÷Þ›œíÕ§×ÒxíZãÛùé'ýq­Ç‰Ž,½†LÀ 1S°uéÇ-=""J‡»N½ìÉ–žEaw¦·ôˆˆˆZ-‡;£¥§@DDDDD¤‰ÀfvÉ%Úc¿üRˆ3jÉí`ß¾€Ó©(4™Dhìú뵃‰ýû‹Û„ "�WX<õ”hE,ËúóËÎyD}ÌjÁ¼Gá?S½z”=zˆùëÉÊ�É›nûi¨gOq;é$±LI‰X~útýí&KEð—¿hïoÒ$ 3(+KÎþî¼xûm:L&½ù l|;ÕÕÀgŸ:¨�G{.Ñ‘ãŒ^˜KEiþ6(ŠZ *""j+¬v'rzßÒÓ """z =;VÌnéiµJG{fKO�ˆˆˆˆˆH€ÍL/øé§±ooñbýñNЮ2—‘Ìž-‚}±ÈÉ^zIü[.¸¨¬ŒmýZ™™À‹/·ß®> j¯{ÜqÀW_Ý»ß_Vðá‡À”)ÀWˆ€^S›5 xýu 5µñ˜Õ \z©O«xçÑB:™vîÔëÞ˜®U î˜c€¯¿ÖoïÍØ±ÀŠ¢Â^~íµ±qs»�� \~¹x|’eî\ Ï_5|”–óç'oŸDDDDDDDÔüú�¼°¥§@DDDDDDDDD12E_„’¥gOýñ-[âÛîÒ¥À‚ê·ÂÂÆË;�ÀO?%þ«5h0gŽvQ�^øPŽ|òIüá¿Z½{‹íHRbÛ1bÅ í±Q£›-¶íÀÃk�?ÿ¼zÅÁxŠÇJ‹Ýüððã�"\i6'oßDDDDDDDDDDDDDDDDD¤�Àf-ð¶óÌã�€N�´ÇÃa`ófàÍ7�·ß6mE{ù±c�»ïNþo¹%±9-ØOP–�ë¯×ÿóŸ�bß®–uëÄïØˆ¬,ñ;˜?ÈÏaÅ“NJÞ\ˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆH`°éU¬ªjž9\r �’¢>æ÷‹ Öòå�ÇV¬&NToË iiÀÕWÇ7§Ï?ÕãÜn<<ñD Gø«ïÚkµ·ñ À?þÑøþÂBàôÓ�òrõõÎ<3¹írÕøýúãÙÙñmwõjà�wÔÇÌfí±xM�j<X«sgF\¾\„;o¼1ö–ÇDDDDDDDDDDDDDDDDD¤ŽÀf¤|Òk±›LS¦h�MŸlÛ¦=¾hðÑGÚã“&Å>ŸGmx,Я€xôÑ¢¡š¢"ࡇ´×-)yD{|Ü8M@  ?žHåÄ»ïÖ7Ž \sMüÛV3u*pöÙñµ«›‘V«Vp:›~ÿz­f0¾�Ü\í±!CŒo'99Úc}$Z(ëݪ«µ×OOOþ|ëëÝ[<žvº ]w�vé[oÕnŸœ¨ÒRQɯ[7àüó�Y³¢·<®ïþûÙ˜ˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆ(^ 6#½ ÛÝôûÏÌÔËÏ7¾�]»´Çºt1¾�Xè•–ÖtÛ€>}ôÇ“ܸøÏÔÇ$ x÷ÝÄZ G _ üá@çÎÀwˆ9ñÁMÿ; """"""""""""""""j�lFz@@´kmJv»öXaáÿ³wŸanT÷ÛÇïQ—¶¯wíuï›b6lŒÁ4Ó Á”Ð;ä üC Z �)ô–ÐB ½ƒ  ˜jpïë¶U»«ò¼8,Û4ZI+mý~®KXgæÌ‘4š‘vnýNâýlÙbßæv'ÞO2zõÊL¿’ä÷g®o)~À`°õý"Q—]&•–Æn›8Q:õÔôl§5[·J·ß.M˜ Mž,=ñDüåûõ“n»­}Æt'ÛÑ×_Ço1"³Û߾ݾ-''ñ~JJìÛ*+ï'ápfúmñ€o½•¾í”—KçŸoß~ã�ɽÎé°`�tÄÒn»Åß7æÏÏ|èn\=€ždÍiÕ*iàÀØí»ï.½ÿ~r}úýRE…ä°‰rΚ%½ø¢ùÿx•ûú÷O|›ýúÙ·ÙU k«ÒRiРØm~ضàáªU©¯ÛšÜ\éÐCíÛx ½Û{ðAéì³¥=÷lÙ–ŸonÉ8öXi‡b·}þ¹ôøã‰õóá‡ÒÉ'K�8c†ôÇ?&×ß”)öá?Iú꫆ÿÿö[ûåÒܼ9ñ~’/xÛmÒý÷gf»mué¥RAAì¶`Pú÷¿Ó¿Í“O–>û,=Ó1ï½· Ʋpaâ@IzùåøíC‡€Î¤bëzmÛð]›ú¨Ü¶¾Å}–Õ &¤°¬wÕÕTjõWï´©[o OŃvlS� €íìßÿ–Ž9&vÛÌ™RQQrUôöØÃ¾­¶VZ¹²áßK—ši€óòZ.[R"�+}ñEüí  �mßž©×gŸI»î»íàƒ;g°_?颋ìÛŸyÆToL·¯¿–þðéW¿j{_ߏÎ3vlr}mÙ"mÝjˆìÕ+¹þ™óü�§hé‡Og¦óh43ý¶q [×}«'nœÓæ®s‹‡è° RAßmî ZC°�=ñ„ øµlËÊ’þþwéðÃ¥p¸õ¾rr¤³Î²o¯Ÿú·± ¤ˆ½üH§�›çœc_qð‹/¤Õ«ã¯Ÿª—_–N<1vÛ‘GJcÆ4­vÏÎ;›jˆm™6¸5¹¹Ò“OJ^¯ý2ýkæ¶Í5ÒñÇÛW›LT¼`v¶yMþõ¯Äú**²ÿIÒú–E!Òbåç¯é½ÿüV—/N{ß�µŠ•$ýéÔ’6uëtû4`ÌTísÜuÊï3¬M}èZ>øï-™ ÿI¶Ç­v•Á1”mZ®…Oÿ^³NÿKƶõ:ÁÕªž¥®NºçûöÙ³¥^��øý¸\&x5`€ý2ÿ{Ëû{Ì~ùŸýLÚaûöÁƒ¥Ÿÿܾ=“UøâMëñH�>jž“ÖL™"½ñ† bÆ›:¹-=Tz÷]i·Ýì—ùË_ZŸ·-ª«¥sÏm{?¯¾jªFÚ¹í6©wïÄúŠW‘0•>ø ¹±$b˺oõÔÍÇd$ü×Ý…ë‚ZñÙ+zñ¯gvôP´³uß.Èhÿ–ÙÑþCfÿ$V¾9C¿�€fv€o”6n´oŸ9SzûmSÁmèЖíûìc¦Ú=üpû>¾þZz:Æ�õï»ÏLÅ‹×+½÷ž É5·óÎ& UX{ÝêjéŽ;ìÇÓVë×›é“íŒoÆn`,,”®¸BzóMS�oÿýSoI‰4}zÃíÐC¥³Ï6¡¾Õ«ÍÔ¾ãÆÙ¯ÿí·¦Úb¦=õ”ôüóm룢Âì¯vòò¤O?•.»,öÔÒ’yŽž{.þtÈï¾+mÞܦ¡Äô݇Ïd´«3T±RfǰaÙ¢Œö ó8vŸŒöŸß;Æ;ÚYnÑàŒößwÄîíê1pزEš?ß„¢ì첋 ëI&,øý÷Rq±©¶–“Óú6N>9ö4Â55Ò¥—ÚO?›—'½óŽ™NwÁ³üäÉ&`ïÇñW_-•—·>®¶¸øbé°Ã$·;vû¤I&ŒöòË&ˆ·i“Ô¯Ÿ™x·ÝZŽÿÌ3Mï–[’ÇA™[*‚AÜ S[?Y§Ÿnc¼©ˆ[óÇ?J§œ" ³™õ­OéÚk¥+¯4Sù¥´t©4j”4uªÔ«WëÛ¸ûîÔÇOnqf�¼Ë!gr ¹Åí?·xHFûÐùì2ë,••®Ò§¯¤ÿËZAßQšxðyiï7Ycöͪ$]u•©¨fço“Ž=VÚo¿Øí–e*éÅ›¸±�>Š_%.]V¬�Î:ˌߎË%x`â}ÞpƒôÀñ+2¦Ë¦MÒœ9Ò’%™ßV½U«¤k®1½TUT˜*~ï¿o•v\.iôhsKÆ{ïIÿügêãˆgôä#µæëwµä�{3ÒÿN3ž‘~“ÑwÄnê3l¢6|ÿQFúßo~’¿˜Ð-L›w½Âu5Zòæ}1Ûs‹‡èè_?Û)‚Щp¹}šsñcI¯Õé™Û޳ ö±»»ða¹Ü¾6ŽC°]t‘T[+ý2�? ¿çS‰­5óçKo½% Ò¶ímÚ$Í�+E"më'Qwßm‚‰ñ¦“MT4*�xbû„ÿÞ}W:òH3•q{»ñFSÒ®‚_"V­’öÝ×<ŽD*ú%êûïãOe �3N¼IŠFmC,’4~Æ)òç&ܧÛР÷UÑÀqéb›sù úþãTºêsE£‰8_ýå[ZûÍû¶í‡]ôˆì°W:†  š1ÿfIŠyü,Û´\�]wH—&+‘ðßœK—Ëãoß�èÑv°K/5¡°d§¡m.’~óéw¿KlùÕ«¥]w•žxBš6-µm~ô‘4{¶´n]jë§êâ‹ÍT³·Þj?p"Î:Kzè¡ô�+–õë¥?ÿÙTà‹5%s{¨«“N=UzõÕ¶õóÍ7ÒÎ;›ÇsÈ!m×Â…fJç ÚÞ@kö=ñ&…CµúêÝGb¶¯þâ ù«ÿÊŸ“Æ_;´³a»¨a»$^{å’×õáo�Ùæpº5û‚5hÜô4�@WEÐh-ü×ÌTvÁC„ÿ´;GG&È6y²ôâ‹©­ÿæ›Ò^{I×_oªÚ%jëViÆ „Û¾=ñõÊËMÕÂ)SÚ?üWïÎ;¥Ýw—Þy'ùuß~[Ú{odË„º:¬œ=[0ÀLÉÜQá¿z¯½&=üpÛûY½Z:ôPé˜cLõ¾TlÝ*]~¹Ùÿ€öbY–fžr»ÆìylÌö­ë—êßתêòÍí<²Ž±rÉëzæÖã ×µhsº¼„ÿ41cþÍ·Ï 1ÛêC€UÛÛ¡¼~I$ü÷“ !ü CP°“X°@š5K4HÚo?é€Lµµ‘#%§³é²›7KŸ|"-Z$ýóŸÒ_¤¾ÝHDºë.é‘G¤yó¤9sLEÀæÛŒDÌô¯O=%Ýw_âÁ­ÊJé�7b·-[–ú¸%óìµ—tÔQÒO~"Mœ(�#YVËeW­2Õþ|PZ¼¸õ¾?ÿ<ñ©n++Íkðùçæ¶d‰ &÷XšÛ¸Ñþy«ªJ­Ï /”úô‘6±ß5kïë±ÇÌmòd³ßÌ�+Å^¶ºÚ<ç JÿûŸ¹ut ôLõ!@I1+Ö‡»z%ÀÖ´þ;ì¢G4`ÌԀά§VL4üçt{Ûw`ð€�ÌÊ•Ò?þan’ärIÆI……Ò¦M&V^žþínÙ"Ý~»¹¹\&(Ö§� ®_o*ý…BÉ÷»l™4}zÚ‡ÛÄã�››d¦îÝÛŒÝí6ÏYi©TV–\ŸW\‘þq&ãµ×Ì-�Ö¯7Óéý÷ÍíÜs¥ìl© @ÊÏ—rs¥mÛÌþZZš\eJ€Lêé!@ÂÚ¢§… ÿè vr¡�ôÍ7í¿Í5k’«×YÔÕuݱwuæ¶jUG� ¾ž$ü zJ�ð€®Âf2Pè¾êC€cö<6f{}°º|s;�,3ÿH§óoÖ¸}NˆÙV¬Ú¾±�G•>„ÿt%ôH=%Hø@&t×`¸®†ð€.… €«»‡—/~‰ð€Œén!Àp]�žºåXº€z´î\¾ø%={ÇÏÿȨî¬ÿ­ùê�˜í„ÿtVôxÝ-Øþ µh#ü ݺz�ð€®Œ ¨û„ ÿè3æß¬ û�³­3‡ ÿèêÀêC€v•¬:{�ð€Ž4mÞõ]*Hø@w@±,+ît–�5Hø@gÐUB€„ÿt †®$ü 3éì!@º€`£+„ ÿèŒ:k�ð€î† ÄÑ™C€„ÿtf‰„+¶®k·ñþЀVtÆ á?]Ak!ÀÇÛ)Hø@wE�H°½¦³$ü +‰,ß¼*ã!@º3€� ÖB€�]wHÆC€„ÿtE$ü »#Iˆ,Û´<£!@º²öþЀ$uD�ð€î ½B€„ÿô í$ü ;Ét�ð€ž„ ¤¨=B€„ÿtG™ þÐÓ€6Èd�ð€î,Ý!@Âz"€ÐF™þФ+Hø@OEÒ �!@Âz’¶† ÿèÉ@š¤#Hø@O”j°µðßÀqÓ ÿèÖ@µ%/üçòø ÿèÖ’ &þ›}þƒ„ÿtk ÍR ¶þ›sÉã„ÿt{‰†ÿ¹Ü™.t8€�É„ ÿõ±{FÇ �Å´y×k×ωÙV¾y•þ}ýl=yÓQ¶á¿ÁfjÎÅ�þÐ#¸:zÐ]͘³\Ÿ¿ü·me›–ëß¿›­�ö?]oÜÿ˘ë»<váÄÿô8S�¹B¡º >}åîme¥+TVº"æzÇM×!çÜ›éá@§A@È }Ž»Î¶à¶ ßÇ ÿù5ç’ÇÔô”L:­ió®×Μ™ðòƒvœAå?=@ȰóoÖN3žðò.O@?¹èQ*ÿèñöž{µ&ìwj«Ë 7]‡žw;Œ:€ÐâUl¬¾ò_¿Q“ÛaTÐùM›w½v=ðÛöÁfRù@�EÚIk•]ž€»ð*ÿ@3S�¹"f%À�ã¦ë�sîí€@ç@Ú‘]%ÀúÊýGOé€Q@ç7mÞõšräe?þ{ÌžÇPù@�çê褓eY6-ÓÛsº´ -j;` ;›1ÿfy¹úø…?I’<þÍ>ÿA*ÿ@+&r�Æî=OÁÊm*ì;²£‡®[£Ñ¨MËí:Ý‹Ãåéè!€nh¯c®ÔÐ�fiãŠÅ9é0eöëè!@—È-V ·¸£‡�B· Z3H?Ž- Sú�žÂ”¿HY· òëo™�•×§£‡1­ÿîC…êj:zty‡SEƒv”Ç—ÝÑC )Ý*ØoÔdõ²“6._ÜÑCÐ�ì|Àé=hâÛ…Oé忟§PmUG€neÏ££‰�ÛÑà aÝ*(IÇþæe}·è9m^ý…¢ÑHG@æö4pÜ4ßÑCéöj«ËõæC—éûEÏ©¦j{G=œ/«@Ã'ÍÖÞs¯‘ÛèèáÄôê¿."ü@¼ûØÕ3åeå3+ kèv@I¾ëÁ¾ëÁ= @‚lr�¥XŸSè<:^4ãΩ’®lç� çÚ¨æÀ¨b}N óptô@òР "@D€.ˆ ]@º €tAè‚Р ruô@×e9¢²\’¢QEB)ÚÑ# ç ’æðD()»_­|½ê Yª*u«r�[U›ÜRÄêè!ÐíiãôE”;8(wVDÕ¥.•¯ôuô�@šYN)wpP#ƒÊ*©•';,ËaÚ ÂAÕlwªb�[[¿ ¨b=A@2‰ hƒ¨œÞ¨|…u*]£‚QUryæý ns©ôs¿ÊVxU³Í¥(º,ËUÎÀõ™X!QHNOTV³S»Ã•¿0$_AHùCkT¾Æ£ e«z“»c @7G¤Äá‰*wPPyCj”;¸Fî@¤Å2¾ü�úïY®Â1Õھܧ²å^Umô(äYQ9=Qùz…T2©R¹ƒ‚-B1W³$w ¢Â‘A ¯Ñæ¯}Ú´8K5Û\ŠÔñƒÒ… HŠÃUîРz�¯’7?$—?7`9¤@QHþ ެVù¯6}êWõ&Oû $Í�VNÿŒ*wp­,G´õ•b°QíP­ü¡5ھܫmK}ªXçQ8èHóˆèy€„å ªßfÚ?ËJ.`9$o^XÞ¼*õS¥mßù´vA¶j¶2% �‰''¬‚‘ÕÊT£@ﺘSý¦Â勨ptµrÖõ)/ IDAT¨j£GÛ¾÷jûr¯BUζw@Eس¢òdG”Õ·VE;V)»_mZ–C*iª mùƧ­ßúU]ê¢Èé�¨hÇJŽ Ê›’åTZÎû�Y–äΊ(ohPÙýkT4Þ¥ÒÏýÚüE@Š250É"bò„”7¸FyCƒÊ*©“Õڴñ8=ïX¥üaA•­òjû2Ÿ*V{ª&@{°’ÓVÁˆ úL¬�';ÒnÛvz¢Êê]§¬uê3±Bëä¨l¥O¡ E€MxrC*Ú±JyCjäÉ ËáJÏ´ñ¸ŽªVî U—º´å+¿¶|ã—"\ü ,GTþâ�rÖ¨pt•ü…á�//¢Á3ËT¹±J[¾ö«bµWÁ­.)ý¿? [! Kê»G™ŠÇWËåk¿ê??nÞ’ÜþˆÜk•;°V%»Wjí;9Úö�¯ÝÇ@we9¢Êê[«ÂQAeõ«•7/$‡³m}:Òî£<*¯Žè‹•!ER íYލ²Kê(ªSõf·ÊW{µåkŸ‚[ܰA€ÌáŠÊ›RÞÐM¨’'Ðöê?Ù>KY>K¥e…Û�#ôå…4ôÀmªXçVé’€*×¹U[îdJ@Rä/®SŸ‰åÊé_'—?*Ëj{ª.•ŽšÐéçhKyX7=Q®w¿¨iSõ`‡KÊêS'QH…£ªµm™Wë?ÌR¨’K4Ç·ez ËQv¿:å®QÞ�yóCi™æ· Û¡ã÷ÍÒè.=÷aµž]lS¿–#ªœþµÊ*©Såz·¶/óªl…�)H�Õ7/¤Þ»Tª`du›«ý5gYÒ´ñ>åe9”ã·4n�[ï}Y“–¾Ψ<9aõžP¥¢±ÕÚ¸8K›¿ô©¶Ü¥hˆ  gqD•Ý·VEã«”]R'wVX–#}Ý,rêè½Êò94¢Ÿ[Ï}LK¿çAÀ>µ*S­²e>mü, PešS tN_DÙýj•?<¨¼¡A¹¼JÎG¥Ê )ùŠHÁÚ¨ é§9ŸçpEÕg× ŽªÒÖï|ھ̧ª�Ej z6€ô¾Â:õŸZ®ÜA5i ý5ærZòºÍ…øú7âpI�¢�Eê½k…6~’¥�Ÿd+T•¡@”= F½wªRVŸZ¹‘´Tùµ•´lCH’ nÜÎDþO’©6èɉ¨÷NUÊV£òÕmü$KÁÍî l €®� ݘåŒ*«¤V½ÆU«pduÆ‚õ*‚mÚVßB—¾ZU«hT 8œRŸ]+U02¨Í_´õkŸj¶ó§@Ï–Õ·Vƒ¦•É[Êhð¯žeI«7‡%™ê[*28¬ß¦77,Ϙ Ü�ˆV½‘«Ú2>z&~@7V0²ZƒgnSá¨Ì‡ÿ$©ª&ªÒ23 à·k3<¨ôݽ\ƒ÷ß&q]f7@'æðDÕk\U»…ÿêý8pø‡)€Û‰åˆ*wP�r×d¦ä ]?‰ ›r"ê7¹BžœH»m³.ý1°i{¸Ý¶kYRvß:õÝ£\Ëÿ—¯H¿yL·w”ŠŠb·}ö™´ysûŽ'] ¥ b·mÞlºŸ�v’ b·}ò‰´m[ûާ³èÕK?>vÛÖ­ÒâÅí;žXvØAêÓ'vÛÒ¥ÒêÕí;žÎÆ›W§¬Þµíþs8¤Á½Í¥†€×RŸ|‡–¬0S·Ë!å3Õ€£!R€€ž‡ ÝTï�ËäÉi¿ž$É’¬RޏŸÕ§NÙýkT¶Üßþïæ®¿^:ôÐØm‡&=óLûŽ']öØCzî¹Øm/¼ tPûŽíãæ›¥3b·Íœ)½òJûާ³ØsOéé§c·½úª´ß~í;žX.»Lš7/vÛÅ›×¶'s"òäf>ø�JY^Ký‹œVâÒ�Íy· Û¡ƒwó«6$­ØÒº­aÕÖ)ã�Dq�ΈÂ!gf7@'DÐ#Í™#]pAì¶'ž�n»­}Ç“N¯¿ûþhTÚwßv ЭÍ�+�qFì¶çŸ—n¸¡åý'J7Ý{�¥K¥SOMßø@’rg~:ÜhÔTþñ{,eû,MãÕÎÃÜ’¤ãöÍÒ›Ÿ×hãö°*‚Ñv 8=ù Â*[žÙíÐéXQyóÃr¸2W{/Ëgi¯q͘àÓ¸Á^yÜ’×eÉïý!üï°4u¬O»Žðª6Õöʈ-­Õ‹‹ªµè»Ì}.qù¢ò†T¹Ž  ç!è‘ú÷—¦M‹Ý¶dIûŽ%�,ËþqH¯Aƒìßo˖ž¿°Ð~�üüôŒ ê¹!ù{…2º�’‡Æ tkh—úºÔ§À¡Á½]òºÍô»¹§.››§µ[ÂÚ°-¬•Cún]Hß® ©²&3áË)yóC²œQEÃLè9,‡H`ú_·SÊËrȲ¤²ªˆjZÉå¹]R¯‡Ýͯ£÷ÉRQnü��ÛeÉí2ƒ(Êujx_·ŽÞ;Kß­­Ó?_®Ð{_Õh{eT‘V> ¼–r–jë¤íU…ã6´,)g`�*×yãw @7D€n(«¤.¡j{ÑFßYÞ’4´Ä©Ã§´ëH¯ŠsÊ 8ärZ1×7Ø£qƒ¥h4ªêÚ¨¶”G´bCH/}\­> ª.Í3[–äÍ Ëå«®‚?{zË!Šã‡ÿ£Qiϱ^]rd®K¾^¥ÿ¼[¥-员çñ~…Íšèל) (jÛyux?·~3/_Ÿ-«Õ¿ß©ÒŸÕ¨º6v °_¡S§”­™;ûôÝú�®~p»–® Åý¬’3 Vë¶iˆtIü%€n(«¤6¡åN?8KGï•¥§ß¯ÖíÏ”Ç]Öé�Î=,GGN (àu$5˲ðZ xPäÒÔq>�vpH7<º]o¬c¸té1yÚÇ¥ÿ»o›Þü¼&îòžœ°Ü�¨ê*’"]š';,o^ëÕ‡ôq©WŽS—¥ãgdÉë–î}¥RÁ¦a¼=F{tâÌlMê–ßû¼¿½2¬­õ-tÉë6é¼òªˆ6—‡Õ¯—KWÓÄžÛii×^ -qi¯±5úûKún]¸I°¯¤À©3ÉÖ¬‰~9–ú:•ŸÕúçŽ@ï:¹ü!…ª¹ìèYø& €62ÄÜbY¶LZ±¢=G�L ¬’ÖѨtø”€ sœ:qf¶²|–î|¶\eUMY^K“Fytîì -qÇì+‰ª¢:*�[MB•ÁˆÉç¶d5+ÛӯХß�\ gTë‘·*õýú–åÇrë—GçjÇÁIÒa{øõÆg5q+y²#rg‡¤�±Ç @w”Õ¯FŽþâÿægAÍÚÕ¯ÑÜÊñ[úéô,…#Ò_ž7ÉyË’ŽØÓ¯³ÍUn åù{[eXo^£ÿ-ªÖ÷ëB7Ä­KŽÈSï|35ðò�!Ýøx™Ê*#Úe¸Gïæ×ÎÃ<ò¸ú)ÈvjÖ$¿†”¸tÛSåúàóc€¼,Kg’­™»øå°,…ÂQ½½¤Fß­k½²±Ó-ŠëT¶’Ë€ž…oÂh““O–þïÿb·]q…tõÕí;€äÉ«“';’в ¾®ÕA“œr9-µW@¡HTÿz¹R›¶›õ ²-ÍÝ'KGîPA¶³Åúk6‡ôåÊ:}¿>¤U›BúÉ”€&�ôþØþÒ¢j}½&¤AÅ.�àÒ˜neù‚~�CGL hd—îy±Rï|ÑPÝoü·.˜“£qƒLø¯*ÑÛKâ‡ÿ$ÉáŽÊ_RÙŠ¨¢áæ5 È¿B®dÂ}Ë6„õóÛJuÆÁ9:p’_yYýüÀ èåÔóUkX‰K§ÌÊQn á|‰Dµ­2¢>ªÖ}¯Tjãö†Ï#êÔäÜì´¤ŠêˆVokõæj=³°Z; téÜÙ97Ø£,Ÿ :,K; ôè×Çäéö§ËävY:|O¿våS(Õ†m!ýó¥J=ù^•êZþF ¦¬~u*[éOø9 ; @7ãÍËán=hYÒÝ/ThKyDs¦ø•—åÔa{äw[zò½*}³6¤ÓÊÑA“üÊñ7�zoýÖ�þýN•}[«5[ÂÚRQ8"í»“¯Ér+6…õè[Uò{,õ)phX‰KMòkϼòýP)Ðá°4a¨G¿8Ê©œgËõá·µÚm”G'ÌÈÒ¨þnEÕ—+êtß«•zkIëáIòÕÉáŠ*LÐ8¢Êî[›ðâ•5ÒÍO–ëõÏ‚úéô,MãÕÁ»tà$¿"QÉål8V#ZðU�þñR…¾\ղ°Ç%9}Lp»-9›ÍØûåª�ξs«ØÕ§ŸNËÒ˜�n¹˜xPo—®›_ —S²,KÛ*#zõ“jýã¥J­Ý’`òï�Þµ’•¢œÿ=@º_A�œžÄ*®ÞÖ�Ï–ëÅ�«uí ùÒÇ­Ù“š5ѯòêˆzå8ål…£zqQµîz¶\¶™Ð_“m{š^pxÍ¿«k£Z¾!¬åÂzç‹í¹ƒW—ÏÍSþU-ËÒÀ"—.ÿiž‚µQ¼y\RM]T�½U¥û^­Ô–òˆšNNl/PTk€‰åèÒ|y!¹³=KѨôÑÒ:­.-Ó•óòµûh¯K�³{eU=ôz…§Z[Êc¶ð¸šþ<.ÉéhÀ‹Jzéã ¾[Ò)³²uÀ® •úêÀu¡¨^^T­;þ[®òêä�$ys¢rª«äÒ çp´¾è*,gTÞ¼°¬–³õÚ …¥¯V…4÷†R=ñn¥•ü^‡z绚„ÿ¶V„uûÓeºæ¡íZ»¥eøO’üÍ€ž–€š:éµOktìõ¥zýÓjk.ðû=d;åu[ª I¿}x»n{ª\›“ÿI’''*WVrUƒèª%µM¦áMƆm=úV¥M[X¯Vcþ“$¯Û’«QàÏë¶ä´ù‰JK×…ôâ¢jE¢-Ïì¥ea=µ *¥ðŸ$9<y 8ÿz~@7âòGäÍ §…¥_¯Ôø!�ìïnÒ‰Duÿ«ºÿµª¸}ÔWüûñß>û�”–GtÃãeºjžC»�òÈj6èÿ}T¥ç> &ù( Ë!åô ªz£'¥õ;#FH“'KùùÒ‡J,Õ¤±Ò¤Ã! ,�)�%E"ÒgŸIŸ|"•—§o;éâpH%%Ò Aæ6t¨TU%­^mn«VI6˜Jcéàtš×`Ç¥aäモ>ýÔü7]Ûˆ¥óº,-^l^ûíÛÓ×NŽyÍGŽ”† ‘¾ÿÞ¼îß|cö�t4Hš4É<Ž�>’.”‚©f»•Ü܆÷ÜÀ� ûÕÒ¥™Ý¯ÆŽ•öÛϼÆË–IÏ=—z_9Ÿþ·9§C?$öùrd?·®ýY¾n~¢L-­U]³€£QSý·ñ”Á~�£I °ñ²¹K‡îáש³räˆña%ËçÐð—¾\J*øÿãcñFåïRÅjo kÐ5 ËÍ•úõ“ ¤ÒRiýúô_Tt¹¤¢"©wo);ÛlgÓ&iëÖôn'Ý|>3îâbÉëmw:/òIæùéÕËl'/Ï©O¨¬”Ö­3ïãLï{�ßc55f›6˜ç2SÚòsÂòä¦^ù&–‚u16fIûíìתM¦P¬êѨ”ío:Ù@NÀ¡hT1‰~�tô^ îûÏ[+"¶ë&"g`H?Im]¤ÏðáÒ‚æ3��SO•î¹ÇüÿÁKÏ>{¹çŸ7íñüóŸÒ‰'Æn;çéOjuÈ-äåI7Ý$Í™Óòq„Ã&öûßK?œ|ßõ†•Î8Ã<……±—YµJzåéŠ+Ìù¾#¹ÝÒ)§˜±””Ä_víZéw¿“þú×ÔÂ’n·tòÉæ¹?Þœ§› ¥E‹¤;î0¯C:Î �€tå•fêÝ»eû÷ßKÿú—týõ©�Ë�NéÐC¥³Î’öß?ö±®¦Æì_ù‹ÙV8…Ã{ïÞÒ 7H³g·ÜC!郤‹.’Þ?ù¾%s>t»c·y½ñÏ—sæHO<»íå—Íó’).—Ùþ™gJ3fÄ^&4!ß;ï”|0±ÏN«W›Ï*ͽû®4uªùÿ /”.½´é~ šÏQ©p¸Ãò…Z_ÐÆ¸AnÍØÉgÛ>¼¯[¿;©@¿Q©ÿ.¬ÖêÒ¦;¢ßcÉílüo5ù·döïºôÓiYš¹‹_^wì“{ŽßÒÁ»ùõáÒZ­ÝQ²®¨|!YΈ¢a&@ô HÒå—K3gÚ·û­tÚiæ‚“Ã!½újìåÂaóKÿxfÌ�~ó›Ømï¾+ýú׉�¹¹™3¥ùó¥Ýv3ê…B¦âÀÝwKÏ<“ZßõÆŽ•Î;OÚgS¡£ù¡¥KͦþÓ\Äì ¼^éè£ÍE ƒnyñ¥¶ÖTÈxí53îï¿O}[cÇJgŸ-MŸnžO³b «V™çç…¤{ï5¯M"þóŸØŒ-2õ$s¡ñ˜c¤“N2û £Ñ5‘`Ð<®”~ûÛØÛØw_s¡·Þ�!öã9餦Ó"‘¦ÿÎɱßמxBºí6óÿÇoÞ{£G7´ø¡Ù‡[3~¼y®§M3„æûâòåæ¹~öÙÄ/êun·tÄæbøøñ&ØÕXY™Ùw^xÁì³Uñ vI2Õ�?>vÛܹ&4VRb^‹SOmzñ}î\é‘GRý4ùmÔ«?oqDËcó§ŸJO?-Ýx£ ±�gî9õTsþIDkï±`ÐTNzóM³”–¶Þg{½ÇÜÙ!yÛœ:Ϋ±ƒZ&9–¥±ƒ<ú¿Ÿækô€JýëåJUÖ´LØäú›î y�Ø€FôuêêŸåkD_w“ªA�ýtZ–þ»°Z߯Oíñd¨•!)Ÿ?:JI‰ôúëñÃ_ÜþëŒN:IúÛßd;�¥Ó)íº«ôÐC&ä6k–ôõ׉÷ï÷Kÿø‡tì±­/;p 9Οo>C�|rbÇŸt;þxs^ÍÏOlù~ý¤?þÑšÚ6óóÍëùöÛ¦ cs‰~ç‹9΂°\ÞÔ¾ÈøÜÒ^ã¼*)h8È­ØRyUD;6ª ˜ãw蔲5aˆG¼^¡_×*––™ò·ñ÷J—Ó’§QÀ/àµtÈn~µW@ÃûºšTü­ FôÍš: îíRaŽS–eiÜ`�& ñhý–`ÒU-Kòä†äòGUW‘ôÓ@—Ä_ÀHÂñÇK×\cß^Zj.ÆÕW›°,:Š%‘�QïÞöë§R©Ïç3ÝÎ??v»Ë%v˜¹-X`B!‹'·�=ö0ÊöÞ;þr#F˜ÛñÇ›J\Ðq•çœNéÜsM†xà<i¯½ÌíòËM(é”S’÷äɦúÆ>ûÄ_nà@s;úhsQñ‚ ¤ÿ»õþ§N�]�$;ÛüwŸ}ÌE½ÆÁÏÆ|>N¼öZÓױǶÜ×âí—Í Ò4 ؼ‹ÛmßתUfÜ?,rHËöÖª¬L›fö÷É“ãܹÒÕW›àêÿ�ŽdY&LuÞy±_ëz¹¹¦ÊÑ9ç˜jl‡.½õVü¾‡ ³=úô1ûÆ#�4 ÉÕËT;�Ç~LŸnþ{öÙÒ-·Ø|>€›;ׄ~÷;s¿Ëeþ}ùåæÿ› ‚§œb‚ýkâcŸ:Õb]àm¬°ÐÜvÞÙœCN;Í„Êâ:4þk šcñüù±« Y–©¦9`€y|Ga‚å‰ÈÊj¨Z“•e¿œÛÝðþ:è Ƹì²äŽ™;îhÖ«¯–Ë„ ævÊ)&ÜÜ·¯ýs““Óú6}�ù|f\S§šŠ]gžÙz@¯]ÞcVTþ^aY)¼ñ¹¥cöÈÙhÚ¾­aey?^ÈÏ 84ÿl ïëÒíÏ”kÕ¦ð�Õ�–ä÷6Ýx–Ï!‡¥/àgù,í;Á«ÓÊQßBg“@yuä‡éM·C'ÌÈÖµo�Yq°5NWT�∪6$¿.ÚÎï—þ÷?s¬±ó׿šPSgµÏ>Ò�&¾üàÁ&ܳÿþ&DÞšLXܸäÇ6{¶ YuTëçøt:òHé¾ûR[70ç윜øß«$óYæÑGM 2Y¹¹æ³óm·™ÏÑÉúÅ/’Ûn `>³î²Kb•Ï:Ë"íB¥vòòL%ºéÓMÀ1Þ<Ün3¦#ŽH¼ÿiÓLа»»äó�̑乲°Ðœ§<М÷“­fYP`¾ûÚ}6lËçio~Hwje/»´Çh¯Ü.s>…£zmqµž|¯Zçÿ$GûîÔðë ‡ÃÒ¤Q ,ÎÓý¯Uê‘7«ä÷Z*ÊsH�jõY–¥½œZ(© Û¡SgeéÀI~ågµÜéy³RO/¨ÖŇçj¯qY–¥€×¡ývöéµOƒªM!éÉËå «®"É7]5ðHÐÔ©Òßÿnß^]mË—·Û�’¶h‘}ø¯¹=ö0/'NL¼ÿN0¡•ÖÂÍ�x¢©ÊÕÚÔa™àr™Ê·ÜÒzõ�Æ,Ë\LûäSU.'œ`ªj´þknÀéñÇM8-U&öÊ+öá¿æ:ȼžÉ^K—ÂBûðŸ¿BÆùç›ÇÚZø¯¹¡CM%±_þ2¹õÚKn®™úðÚk㓚ëÕËTLåx½)SL02V0Ij[Å’Tšª6wÜÑzU ÉìË×_oƒ–eÞûW^;ü×\NŽ™zïÎ;ÛÎÝwÛWw‰gôhsœ¸óÎÔ§<5ÊôqÒI‰õѧ�y¯Ç ÙÕ?ÞTº½æšøá¿ævøæS%+£G›@K"ã’Lðïå—í+ì%"Õ÷XA�9^]w]êÛN×{ÌrH�Þ©ÏM|Èn~ îÝð† ÖFtÃcezþÃjU×4$ðœKÓ'øuÇ™…š3ůül³³•:š„%S(燪€Ãûºtîì]rdžúõjZhÍæ�þøT™þùr…Âá†äQ�êŸúïsS^©³,Þš0Á~™çž3!šÎ,H~�¢"óØZ[70ǹTÂõz÷6Û1"õ>’1i’ôÀmïçê«Í�ŽìX–©p˜Jø¯±óÏ7¡õd¥²ÝÂÂÄ~(0w®©T›lø¯±cŽ1A²x®¼2¹ð_½T§ í*Î8ÃüH¢-ßqN:É|LVß¾ñ+}¶%è+Ëéi}¹X†öqiÌÀ†sÿÚÍa½º8¨U¥a]rÏ6=þv¥êBQEø5—Óa©_/—þßQyºçüB]??O‡îhò¹Ó²¤‹�ÊÕõóótÏ…š;-»Iø/�*XÑïß®?ý·B«6…õô‚ªÃ~–%MëýñóC²<¹¹³ºHiwÒ€ :Ô\€² ˜D£æ"̇¶ï¸’µÃÉ-Ÿ�mBTͧ=lÎå2U®î½·åT¶‰=ÚLEÙÚLéöàƒ&—ªÁƒMÕ–XÓzÖs»Í4]my~$éÿþOºé¦ÔÖ8Є� :5¶óΉMG— 3gÚ‡ÿ¤Øȼ^¹õÖÔ/ªZ–©wå•©­Ÿ)Ç›oªÂ�Ns¡2Õ*K·Ýÿ‚p¦*Æsøá¦Âa²~ÿ{S sΜä×ýùÏÍûÞŽe™÷ú)§$ßwcgžÙú´ƒvþñ�äÃ$N§ý´ßõÆŒ1ÁÂÖÎ ñK¯¾*�¹¼<éÅŸZ²ž×?PO[ßc’™–±£ßc–#*Qj‰\—CúÙÌì&÷ýwa•^ù$¨;Ÿ-×coUýxñ¿^ßB—Î��«_•§ã¦tÙܼÁÓ’§Î=,Ggœ­«æå鈩åøþ�Fõݺ:ÝòD™ž|¯Z/ÔW«p¯§&�ñ*UÙý:àýáÒ¡‡Ú·/Zd*×%R»+êÛWºâŠøËÜsOÓJÉ©ÊÎ6?I58žŒ�É{D IDATol:=yc¡�©øxË-¦zkkU ï¸Ã¾í’K’ÿÑŒ�뮋_…2�8 ~€|È�ôMw}ÔQö¡÷aÃLC45n\jÁ½XÎ<3õÏvRý<íðDäÉ Ér$_Ðí”&ŽðÈål8€|¿¾N߬iø,qÇ3åºÿµ UT·ìçá^í5Î/�«åÈçvè€]M~X ™óþº-a]ÿèv=üfCË÷¿ªÑ¦íá†õ=MïKú1I’Ó•7?$Y©UE «!@+rsÍ…¬x¯_ü¢sOÚyy&LÏÅ'^Y0žúJwíUqîôÓÍ»m5b„©BfçŠ+L¥‰t¸è"3¥g²ÜîÔq×\Ó1U[ Kƺ@vã�é ,^q…©ÐÒ¸Ý&4•hµÉx.¼Ð\0NV*¯G¦ùR»(¿?õ€žË?Ð1ož¹¥Ã¤VÑ)ÕçeÚ4iß}íÛŸx"þ¹0Qyy­OûxÓMÒ AmßV¢ºÓ{Ì�’''µ‹Ýc¹Õ¿WÃÉ"Žêo/T(•JË"úÓËuóÛiÌ 84sgŸÎ;,W{Œn™ x-ýdJ@'ퟭ1Ý-*®ÛÖu�l×ëŸÕ(•6n ëÝ/ƒ?† =.3¶‚ìÔNFþ^!9¼áÖDÚœt’ùÌbgÅ ¶­®n¿1µUM�9Nüú×&@~íµ&ÄÏyçÙ™O<1þ猷Þ2Õö M»ìÿûÆN;™OdRn®}(oùrn;ð@óÚŸy¦YöàƒÍ´ô± ûJÒUWÙ�£²ÒlcÒ$S�v‡â_ñùÌë–¬PÈ|7¹ì2ô:î83®ÒRûu,˼¶±x<æ\jW²¶ÖTË1ÂŒyð`s>Ù¾Ý~{—^ûþ_ÿ:~uäŠ óƒ�ÓN3�ëÿ�Ö¯·_¾;ðùÌóo÷9©¦Æ»†7Ë j–ñ¦Yþÿ/½cLõó´;‘7/µ4µÓiiìà¦;˯kU×è´YVÕ½¯Têo/”+XÛöÔöŠ�!ÝòD™^\ÔôàP”Þü¼é}{ïèS4Å _VŸ�,G;$£èRŸC€À锞|2~¥¢»îJ½*[G‰D¤�?6GŒ0Ó+Æ usŒ©D«Âaq±ô›ßÄßÞûïKŸ}&mÝj{íe_…cút³½‡Nøá¤dРփ�K—Jï¾+mÞl*_p€}ˆnÞùÄüûóÏ›^”Ýw_û‹Á¯¿n*†5Þvº4¿@6b„™Ú5ž�ÍsýÝw¦ºá{ÄŸžïO2Ó�Æ»ðÚÎ;/~ª¼ÜL}úý÷æ‚åðáÒþûÛï¯þ³9¶¥sÚÞŽÖ‹DÌûgÑ"iíZsÁvÆ šHDe¥©vúÕW¦jÏĉfª[;Ç'�|rËû�Îø�…Å‹ÍÄ J6˜qΛg¦œŽ²u:M˜¬µý:žM›¤gŸ5ûȰa&bW¹I2¡è×^kyÿ±Çšã`,‘ˆÙ§î»Oúâ óžÚygsÞØqÇØë{¬yÜ+V´l›8±õ€fE…©ûñÇ&@²ÓNæ\�jõ«îôËX'+Åj7; ÷4™’÷Óeµ*-kè+‘x­Z5µÒiç¨WŽãÇåË6,nY–œ1^›pÄTþ»âþíM* Õ†¤/W…´¥"¢^9NY–¥ENõÊuhKy$é×Ùá’ü½Âª\Û†ù6‘°ý÷7UVílÝjŽEñBT�ͪUæóëÊ• ÷=õ” „_w�9žÅâó™sFóéã-Kºáûí=òˆ9?„p>ùÄ„Ðþõ/é„b¯wÆÒK/%ö˜RqÐAöǽ_ýJZ³¦åýÏ?o¾+ÜxcìõfÍjùùù‚ ì+¢–•™süG5Ü÷ÕWæ|YYiÂz±u” ×%ª®NúÉOÌø›»õVsþ±«Þ¸çž±ï?æs~´ÛÞŒÒ;ï4Ü·r¥¹}ñ…ùN+L:nœùîðþû ÷y½ñÃ¥Û¶™÷`ãçð¡‡Ì~ù—¿˜jÇÝÑüùößëkjÌwâÆÏÉòåæöùçÒ{ïÅÞ'§N5¯Á’%É�ç»ïL…ö/¿4Ÿ ‹‹SŸ~Ù�–7/µã.‡4¤wÓKŸ.¯mòoË2!ÀÇÞ®Òš-a]>7OÙ©�S×”Öéʶ닕u 7ËZ–ôÞ5:nz×aS�P-–MD O�,GTÑ0!@@÷G€8þüçøÕ�^z)µé';Ò]w™ŠÛ¶5ÜçtšiÚ.¸À~½SO�¼øbûUy¹YïÑG›ÞŸ�mÆa7eÕgd>ø‹_ØW¨¬4ÍšWY™<ÙTéß?öz?û™¹øÙØå—ÇÛÜu—Ù‡Oçõš �]u¬,3=íyçÙ÷kç?ÿ1?7lhzÿ¼yÒý÷Û¯7jTCpÉ’¦¹ûàk¯IW_�ü8c©©‘–-kûâÅMÛó›øUo¼±åzŸÏ<'{�ÂBSÙÃîbr{p»ãW­yë-.X½ºéý»íf.*Æš®¶W/éˆ#Z¾7“±i“ CÕWõI5�ÚVµµÒ~ûIo¿Ýôþ¢"Àš:5þú>hŽ9åå ÷Y–yί½6ö:^¯Ô¯Ÿ 6¶ë®&dˆ &àÜøØ»d‰ÙNe¥ý¶æÌI-¸y³ ;¼ñFÓàíàÁæØfÌ5*öýñª¥^w�™¢¼^Y™™ýÍ7Í…óââØëvXìê©ñÎE’©Ê{Ä-+òLžlÚrsã¯ß\[Þc�?;8ؑﱼ¡©—T3 éŸ>ZZÛbË’žYX­êÚ¨~~Pާög…šº¨Þý2¨[þS®5[šVç³,iå¦�6m «WŽ9°÷ïåRq®CKׯê->‡+ª@ïZU®m¥Ì"Úl‡L…-»óqm­©·tiûŽ«-Ö¬1Ç—æÇ|É|~»ôRsL=ä�ØërHËà>ûH}úÄ^¾´Ôœ—Â1ŠVF£æœ°ÿþRIIËöÙ³Í1-S¡ü½ö²ok~Œl,ÞTÀ³fµüQN¼JºW]Õ4¤ÕØW˜ç`„–mÅÅÒØ±&L—ˆ3ÏŒþ“̹üª«LÕ¼Xúõ‹}¼PÞÍ77 ÿ5öå—f?ûóŸc·~xÓà~û™ï vŽ=6ös�šŠ€‘ˆ©”ÞÝÄ{þ¯½Ö~¿Z¼Ø|ÎùÃb·qDrÀÊJó�÷Ý+Yîì�\þÔÂÿ} Êò5$øëB-]û µ!éõOk”ã/וóš&RC᨞]X¥ÏWÖÉí´4}G¯&�òÊѨ_4*�ù§-Z³Ù>Í·xY­Â‘è�Õ‚³|ç:´~[ò @onDN_X‘:.�º?¦ÀÆ9ç˜ðš�O?5["mŸ§Ý<ö˜¹hØ8€"™ Œ^h.<Ù9òÈØ÷wœý:¿þuìðCE…©ÀðÙg±×›6Í„'2¥  ~u©#Žˆ=ÅÚûïÛOé%™)Ïs:¥ŸþÔ~ù›o6a¼æûPM�©rï½öëžrJëÓE6÷À&ÄÓ<üWßöÀöëÚ…‚Ú믚°@v¶ LŸnn—_Þ°ŒÏgÞ�v®¼2vuž`P:ôPóÞ°söÙ©WK‡Y³ì+ÙmÛfBT±.ºðAü÷g*Ó_WW› Þƒ›Jy“'7¼vïçLŠFÍãhþ“ñ,X`‚»�Ãõýþö·ñS¬ 2vò$³7?öÖ‹WE¶_¿Ø!�xÖ®•¦L18›WÝ\±B:÷\ûuíÞëñÛã�Ǿ¿ªÊT,µ3iRËûrsãï›O?mޱ¦ã{ÿ}iï½Í…õd´å=ïßï1ËQVŸÔÊúÜR&ÔV$Õ7kb§ˆjCÒKuë“e1Û·”‡õÜUzâÝJ½úIõ�SùÖ‹F¥�¾­ÑmO¶ ÿÕÛ¸5¢­‘× x-ç9•ÊáØrEå+I)VFDb²³¥gž±E"&€Ó8¨Ô|öYìð_cwÝeßëXwì±öËß~»ýùB2ç,»ÏˆnwËðÛᇛóA²·X!º¯¿¶W¼°úûï›ÏR±n̈́ѻ·ýtì55ÒÝwÛo'Ž_}2™©å—/�ßþé§öm±€99¦šx,¡�tÍ5ñ·÷·¿ÙïÜm·¦ÿž<Ù¾Ÿµk[¯ùì³ñÛ»¢>}ì°TScªÇc¾”Z>ÿ­ùÕ¯Òþ³R 8”ò÷•þ½š&¶W—†Uk"ŽF%·Ëœ“ …£zéãjÝñÌÿgï¾ãä¨ë?Ž¿gÛõ»$—BBB(&@Ušt¤ ˆÒü!þP,¨(àOŠ€‚4•®ØhRDA -„„Bzï¹\r¹¾{·u~|9®íÌîÞí•M^ÏÇã��Ý™ïíîìÌÞ÷=ŸO£^x¿IO¿Ò½/5héÆÎ+\ê•ßë\¾±YÚ^×þÜ``Iצ0,�T:Ú¡9;. ‰cŽ‘î»ÏyùÖ­&0�iÈ ¯]p�{ Öûï7AÀd“ƒ›6‹7¶ÞvØaæ¶dÖ¬1íS�Äã¦bÛ‹/&_~ì±íC%ååî¡'ï¼c‚7m�~ºs{¥U«¤éÓ�×÷Ʀ}çÁw^¶Ï>íÿ}üñέ•ÃaJsóóŸ›×̗䌭°Ð¬ÿ?ÿq_G[7ÜàX}ûmçŠ+{í•þv²éž{L•ÉTN;͹mrCƒû¤^KõžsÏMþÞ/+3oܪ×ô$·�À­·º‡fÍ2mK�?¾ó2·ê¦ÉÔÕ™–Én“ÿ-¦Ms®„俉'RO¸·µ}» „9Y´ÈT£sªwà É+,µ˜=Û¹ð„ íÛ[K&0áô¼¶ýì쨹ٴøs & jŽ;éúË_¤•+�—·TLö~=ÚT8 ‡Ûßþío›`I2nÕ”V¬p^6thçÛN8Á½jêu×¹Ž}ú© 78µøKÆm»í¶ÔûØŒfÜõä>æ¤`HTž@×BneEžvúÁf[Û\ªíDãÒG+ÃI—=úZ£^œÕšÒ¼éÂ2�|PûrÁ›wÄUáþ“¤Æf[•µ Ù’,™6‹=²<’Ý…‹/òJãòÆ òg�žr÷ÝÒˆÎ˯¼Òù¼/×½þºóçêСæó½mû`§±Rz-|Ý>w'Mj_Él·ÝÌÅ5™JÖnvÎçûŸ¾9¦þâ¦bsW�zªó² ÌqÝÍûïw>>·p;æg*Y»ãƒw¾íÐC��£~˜ú{e"aªÌ%;/éÒw >ñ„û÷Á�Õá‡;_Ð3sfç󞎂Aó¾7®ó2·‹$’Éúç ÇVÁ�Î{ÓURÐ>\WÓ˜èô\ù½Òø>í³»_“Fûuè^íOÖ›zwQXÕ�æmYÒŠÍ1Í]Ö¾cZ¯Z³,éçç—iVlŽjɆˆVné\¸6˜Ðð6ߣ‹ º^àt÷¨v¤Yù€\Æ_¾è`äHéùçM[Ód‚AþË$ŒÑ_ÄRZ¿Þ„ßN:)ùòCmbq M̘‘zr©¥¥l2GÙ9xã�îëKæW¿êLÞkѱE[2}”|�€©îÑRMÌ­ÍÔßÿÞ¹êXG›6IÏ<ãÊ;âˆÌ€©´�˜îÈ©KOª¯7­šÓáö\ÿñ�É«…µµf�©ZtÆÉ—qDßý~éÌ3�—»…U[|òIò`y¹©öæÐjë·¿M?˜tðÁ]Û_gÎÌ,˜ŽM›:‡s[¤j©êÖÎpÏ=;ß¶q£{ÐÏMuµs°¤¤këtbÛæws pO˜`“m9µ%LÅí9Nö{x óýgÍJ¿ucºRíc¯¿žz &öä>æ¤hX´Ë€ –|Þ¶À„¢ñÎò<¿TVèÑ R�N›Ö9Mÿáòfýã½P»s€‡_mÔ¾cýY»`Ë’Û;OgV y+#jh²UJ(Ú&`YR]0nÂ~Ÿ'*.°ºVÐ’üE ù ŠåØÅ¹Ä-ü÷øãÒ#�ôÞXz[,f*,;Ul?¾ýyÖ˜1Îëúò—�ÏÅÛ®ÏI²ðY¶Ì�ë|a�dÎY/¸À|VÏšeƒsçšcJºá;·÷úõ©?¾¹˜«§¹}¯Jö9ìöšûý©/ ’œ/véø¾;Öy|�z;;#·ç¿¨(½çß©úzOîsé°<¶ w½-A¢Ã¡¾åï ~Ÿ´÷n~¶wž¦Nhä ¯J ÍÅV‡7yÀo©¸ÀÓ.mÛRyiç~ðãGø5n˜O¡°­ºPBÕqÍYÖìea­ØS$&©Ã˜¬Ž7d t÷°d%$›FH€�@:8ë,çeñ¸i£åÖò)×½óŽó¤cÇ*pníŽÒ ‹¸}œ;Ù�,¸Ó"�I±ï~×½ÍY‹d-ßZ8U&éèµ×z¯*_S“ó²LÛ gC<ž~‹íl=×NÀ¾ª€¸Ï>Îᯆ†ôZ‚ºígûî›~8)ÒõÂ"}Êí}�Š[5§Ix'ƒ™€ùÈ‘¦ ݨQ¦uu‹LÛüvW¶öw¿ß„~F�2¿Ã°a¦ÚUËäq¦áa·ÐBÇ0w6¤ÚÇ/N½·JW½½��èúJZÚq¶°íÖ q¾¥1C}Ú}¨WGùõ…±~�áWIA甋eYJ$Ú¯+‘¤2Únƒ}ºî¼ÚQ׊ÍQ-\Õê-Q­Ûצª˜š#R,Þ>àõX]8JâÊ+�«i{×�î9ì0SÑ8ÕÅ(¹lÝ:çÏò¶ÇŒ‚‚äÕõZüüçÝÇ�!Ý{¼Û6­Ï—.u=Y–ùìÛw_é[ß2·ƒæ»ÁË/› ¨Ûñµ¬ÌyY:ÀþÊ-€vðÁî(¥bYæy««3ÿv{·mëúvr™ÛóÿÅ/šŸ®8м}UY±phT¾ü®ëÛ|ä Ÿ®9§DÇNÉ×Ð2o§°_2K{ ÷ª¤ÐRc“-�% *õhܰÎ@Iòx,˜Ðà¨rŸš�§+¿l«²6®74kpYû°^°¹ëO®7ÏV~yLÍU}ð…€^D€ ,[fZÀîÌܪÒuœL4Èù¾ù‹ùé*·‰Ñî6ÌyYª¶b™p{~ÜÚ†µUQἬ¯BiýÑÎú\»ý^%%ÝŸhìÉý ¦MÜWH_l‚; Ë’Î9Gºè"Óª1Y›ò®*/w^¶eKö¶Ó"Õ>ÖÝv‘½¹�yóãÊØõ@$&ÅÛ<¼ Ï£ƒ'tÊAÚs¤OÃz5´Ì›² ß~cü*Ê· ·~@ )óhØ€Î�³,ip™WƒË¼:dRžêC m«MhËŽ˜oˆjü_»À_8jwùsÏã·•W“<¶”èbŠ]¶Ï>¦5lWªÃæŠõë�[¯¶ º]ˆ’ nŸkÙPUeÚ•ÿõ¯î­ŒÛ**’N<Ñü\½©¶öðÃÉïëVõ¶«Uvû·Z6 Ôt»H�`Ï¢Pß8¶¸]{ád¼K‹½XìÕÄQ>¹Ÿ)‘éi󰆦D—€–% ‰É㳕ˆì ×_/=óLö[y÷nïͶǂŽçÓÙæíPpkÓ¦ô«!·U[ë¼lÍéÈ#Í÷¢[nɬrìðáÒCIÇg‚䫺¯£Ñô·ÓßôæëÞÜ,&¿_®Vtî®ÞÞïzSÉn.%5;(˜ãtI¡G#yµß¿Î>¢(£íÙ¶lNȲԮpÀïÑ¡“òuÀøÝÏÍlm/zsË“ן^Ð’ +øMå×è!^•yäqŽæÓ§«±ÙVsÄœC„£¶f/ ëÁWRžäŠÉãO(u¯b @.cÚ€ ÒÓOK`&¾v6n-£Ûÿ;t®.‘m7v-P³~}çÛêꜫó àÞ 6nÛ))‘jjR¯cøpçeÁ`ׯµ³ …LÅ©ˆÄ€¹û\çêküâ‹ÒâÅ™?î“O²?–ÞöÈ#îŸUѨ4s¦ùLÛ²¥5týío»¿ûÚ˜1&ØèÎ^·Nš7ÏT›j pŒo‚!éʤ m6äê>Ö‰e+`\êòxûŽñé cPìQAÀRy©Wã†{5n˜ß1`ôkhJ¨ª>¡ê†„ªâÚ^—P}(¡C'åé  �vA¾<¿•t} ÛÖK„´yG\‹=:À«�Å *ñ¨¼Ô£Ò�<žäã1ȧ».¨›£Ú¼#®šÆ„š"¶*ªãš³<¢-Õî €ü�1yóãŠ5èI Îa¸)SL%À_þ²wÇÔÜΡۆ�ªªœï�K'�Ô½öã½îZ¹Ò´v¾ñFiÔ(éì³¥ÓN3ÇÂT!è¯~Õ¼',h½­ºÚùþC‡fgÌ}ÁíuæS±;ÚVÉu»¨eÄiþüîm+¹=ÿOÖ‘/ßV 4ž20²Ü«›/ ÑC|)[òJæõ|ã“&-ÙÕ†m1Õ‡L% †¦„i¿×lB+·Ä4yœs€°­úPB÷¾Ø `Ø–×#X*Î÷¨¤ÐT"*+´´Ç¿¾¸OžöãïT° Ï£){äiÊ­·5Gl=ÿ~P¿Ú¨`³sÒã“ ‡Æ®¡üiO©ª’¾øEé¶Û¤sÎI~Ÿ_üÂ|^ìl­€÷ØÃyYÛÏ·j¦^¯ ÿe뜷·mÞ,=ð€ù).–Î?_ºî:÷çæ‡?”.»¬õß«V9ßwg ŽŸÝ×|íZ¬L¦?Ÿkô$·çìØÜÝçŠwkNyÛ–êƒæøí÷IÛjZ±%ª9ËÚ¿&"¯eé¸ýóuá±E*Ê7Ç\�%m­I¨²&yøO’vìÕÈòÎåz[ÂzÞ6a~¿Wš4Ú§²BKu¡ÎÇi[RemBáhûªÀÁf[·=]«%bÊϳtàø€ß;Oc‡ùT^êQc“­º`ê«2½y åŽ(´�ã?`çEù‹ pýð‡É—ßx£ôüó;_+à1cœ—mÜØþßn)¿ÿ½ôÇ?fgLÙ¶zµ©à˜L6'W®4zÉŒ•Þ:ÜBi;vd>¦�ÕÊ•îÀE‹R¯£?>×nû˜Ç#w\÷ª!».½ÔyÙ½÷J?úQ¯ %«”N>9ù²¦&é�CLõ¿lX³ÆyYºŸ›™ØYö1Q\yeÑ”÷+/öhÜðÖÉoÛ¶µ`mDÓ?nÖÚ­1MåÓwO/UÀ×:ùþáò°þ9»I‰„sµÕÒBK~_êðŸ$•XXâQ(WÂÖg¡Â¸Tݺþy«"=Ä«}Çø?ç'k"zjfP5q±O¾N:0_c‡ùdY¦�áÈrŸò|–‚r¯‚X:¦I5Ë{°�õ.¬²R:úhiùré»ß•Ž?^*+ë|¿–VÀS§:ï_nÕ9�.®èK£FI£G'_ µÿl³mSñÎ) uê©ý3Œ4r¤4qbòeܹê\c£ôØcÒŸþdŸg�•ü±×ùá‡Îc8úhóÙìV…ý´ÓLÅÚG¢¥3 IDATdÎ=×|ë }ä¼ì ƒÌEHÛ·gg[óæ9?ß§œÒ3ßÑ‚ASu;™�݃¯½Áíù?òH©¨(7«ŠÜ+ßIR–þûI³êB åù-­ßÓª-1›íÏ�éáX“¦Œ è�Iy’¤Áe^ó…|-Zu Ö¸g@#µŸZØZ×ßÞlÔ�2�Î<´HŠÍ• –eé€ñ�,÷ª.”¼üÀbK'O-�¿Í*?XÚ¬™ Ê|ö�•›czeN“öÚͧ‘å>Õ4Ƶp]êó�Ç–/'ì=@Ô½ ‰G5AŽë¯w5ø|¦°Ï%Nï69åñ¸?¶¯t�ó²… ÛÿÛ­]ç©§fg<=Ámè‹_LýøN�nº)ùO~~ëýæÌq^lj'¦3RéK_r^–N¨mW±³>×+W:OF™‰pôÇï¼ìOê½qdÛÉ';·Øž93{á?Éý¸rÆÙÛN‹�eóbò¦N*.ZÕCÿiМa=5³Q—Þ³Cß¼·ZϼÒœýí­�f|Üôùý-Kúæ‰Å*ʳ>ÿw2'O-�§ÍÂxÂÖ¦ª˜>]VC¨ýÉ�×ãч$൬b·Á>ºWÞçU€›mýkvHÿý$¬%bzäÕF]t×ýä±½6/¤7>iÒÓo7ªº1u ‚òÔÕ’Ð5ßûž ÿI&ìóã;ßwÊéÚk�—¯^í¼lÂ÷qx<î´djâÄÔ­l/¿ÜyY²J¢ÿü§óý¯¸BÚk¯ôÆ6x°ôÆ=S!µ£ƒ–Þz+ù�SØL2!ÏK.q{Ž×þßk×&¯”+™öµ_þ²û8O8ÁyÙŠî�íIo¾éÞš÷�Ò_×ùçK¿û�ór·êµgŸÝù9ï¨+Ç>·}Ö)8Ú­Bd¶¼öš‰$_æõJ÷Ü“þº¾õ-Så´?ˆGÓ«hWÓ˜Ðëóšõ¯ÙMútmT¡°ÝeG\, «9bŽ£>¯¥/ퟯ½F%ÿƒÅ€"K‡îPq~›cÜÖßÞlÔÓo‡ô§A½µ Y‰Dkxp诎Ú/?ÙêdYÒ¡“òtÀxÿçç¡æ„fÌoþ<ü×r¿`ØÖÇ«£ú÷‡MzoqDñÔ‡~Ù¶”ˆv®VÀ΄ ¼úª™x³mSÙè’Kœï;y²tà ÎËmÛLb9qª×"?ùßǻ̩*C‹Q£Ü€óç·ÿ÷«¯:ß÷¬³¤CMl“'»·Î&·à׿n&�Ü\}µ©ÙñçÚk¥æ6¹‚¹s�×qñÅRi©ûvvÛÍLÒ9yýu÷Ç÷©žËlq{®/¿\*,tüÞ{K'�ä¼¼¯žëpØL¬;¹í¶Ô¡„¶Ž;®ûcBr–åÀ‡;¨s‰[°ÄmßëŠ œ—M›–ý@^¶÷±cŽéö�ºÄ–Õ©ýròûI�¾Ö¨ÿ} Zw>ß Eë£�B}�OoTcSëlúˆA>�{D¡¼=˜8Ê«ióÚݶeG\7?Y«oÝW­G^mP<Þ~pG}!_Ã$_¡×#]pL¡ÊK[ ›¶ÇôÁ²Èçcµ,©)bkæÂ°~þç:]óx­>Z™º�$Ùqþ ÒSš;d+\zççûßt“´Ï>É—mÚdöÏdÊË¥‹.J¾,/Ozé¥ìî‹{ìaÂA‡·Î„ Ò~àüø3:ßöÇ?:‡‘Êʤ—_Ntœ2Eš5Ë\À0}zêóÊîZ¶ÌyÙW¾âþØp¸s‹øÉ‚cÏ=ç¼®Ûow>.íµ—ô�ï8?¶/€ñ¸¹ÈÌÉ×¾&Ý}·û¹³Ï'Ý|³© ùÝï:¿ïÞxÃ9lèñ˜jyyòåÿó?îá]'n­›�*êK&Lw×]™o/SMMîc\q…yn�ösÉœÜy§ôÈ#æBÁ¶­«ûJÝšBÙvzx-Ë9ÈOHï-nÖÆí­IÝÁ¥^}ïŒù}�÷ßQƒ}š:¡5¨oÛ¶®‹è�EaÙ’šl½öq“¶Ö´®ÏcYúòÁò$ÃÃ}ºà˜"•y?_ß'k#Z´ÁùØîöûtkò*X™—úŽä0þò @{ï¼cÚ;ùùÏ�[xIî“!\à¼ìàƒMËÈlºÿ~÷å·Üâ<é±l™T[Ûþ¶3¤õë“ßßë5°éT`™6Mz÷]S™!Û¡ÇdÞ{Ϲ¥ëСҷ¿íüØ)Sœ+‹,YÒþß3f˜6ÒÉä幇G%éW¿r~=¶lqŸTïMNØRÏ´ìLæå—M‹½dJK¥k®q~¬Ç#ýò—ÎËW¬p�ö´Çs^v衦ÝvªÉ¯ü|Óòî¿ÿ5!WdŸ×ënÈË“ r~ìÁKûîÛ3ãÊ·÷—[ëlIºòÊ̶5w®{[ÞßýδItrá…Òž{f¶ÍTûØC¥ÞÇ<zë­¾ÙÇb!Ÿ"õé'Ý&Í×o‹ëÍí“\§Z )ã’¯ÿò“Š•ço¿²ÿÎ7†b éùY!Í[Õþ@1r�W‡Mê<oÛÒY‡è˜ÉíOþóQ“¶×9—øI7 I ›iÿÛ›.¹Äù<¡¥°SàÉíúᇥŸüĄ䊋Mîæ›Íñú´Óº?ºÊ´¦½äóÓr~vî¹æÖ©-±m'}mØ`’NöÜÓT¾öZsî9x°TP`.XøÚפ§ž2¿kKHpï½¥ý+³Àr¦–/—/N¾ì¬³ÜCc·Þê\ù<ÙùìÝw;S÷ÙÇT‹ýÁLéÂBü»ê*óZ8mçÕW�C¥½åöÛ;eÛúÑ�ÌïvòÉæB±¼1ßZ>óî¹'ùû=v»Mžlž«K.1Û7ÎìO|à~Ltã¶¿ž}¶Ù×§M3¯×äɦbèË/›0]&ŸáÝñ«_¹o¹áÓ>ùøãMð7/O>Ü´¾ás1ÇO~ÒzÿGíûJÁõòT»:OvUðRY[׿> µ«Ú7y\ž®?¯T‹Û¿H‡ïÐà6AýPØÖôùͪhø[°&¢ÙËÚït£Ê}:nÿöÇø�Å–®8¹X{�´þ^¡„^�ۤʚîÿbvBªYU ¦ª~Ø~€,"@¾ÿ}çÀ˜Çc&á�äËÝ&C®¹¦}å�ÇLòýìg¦­bªŠ}™ºè"SÉìˆ#ÚßžŸoÚN¹U1xâ‰Î·ÅbÒw8?fèP3Qrå•É'v4“Yï¿oBZ‡nBƒ=]5.v¯Àñûß› ¢¶ÁË2®ÿù�óÄâK/uÞÎÃ;oçÇ?–þð‡Î!?¿_zöYçê6’™�Åœ—÷&·–_çŸ/vXÏ�¡¡ÁTÓqrÓMÉß«ùùfòñÜs�{×]Γнá_ÿržp—Lå”9sÌä2ƒ›ÐkK5É¿þµg»ºX̽zÝ=÷˜‰äŽŽ=ÖTnr môV%M'«¿¶õõ¯KGÕùv¿ßÝÚB&û½¢Q÷}y¿ýLHð¨£Ú?g#FH?ý©yg$Hµ�}ó›fsªÆuà�¦ ×ÕW›÷Å>®óªacžñì¤(ž?¨ÊÚÖƒÌè!>]|\‘†”¶?`í6Ø£c&·Ô›úûÌ�bŸeÂQé�Ó޶Nâå[:hB@ÅíÇ{àx¿®:­TyþÖí¬«Œêù÷ÞІ<Ú±8EIXdÕºuÒÿýŸóò)S̾›Ì³Ï:?® ÀTâZ±Âœ¼ñ† èì·_·†ëê ƒÌùðÊ•¦š›mKÿø‡ h9yê)©¢"ù²ë¯—6ov~l ýú×&ôµ}»¹ÐaÉéé§ÍùUÇóÑ£�v?ïì.Ûvo{z×]æxñ㛊€gžiŒ³fµMu”,¸f�ûwŒòré·¿5!È`Ð\¨ôÀîñë®s^Ö[ªªZ�NöÛÏ„W­2aÁ­[Íw¥[oí|±€Çcö“dÜï¸ÃùâÉœ7>ñ„ÙΚ5fʤz{Gÿø‡ûò¯ÝKƒAs¾tÿý©Û9gÛ† æ»§›ý÷7q­^mžÿŠ ó½ùæÎ­¹½^sátÞ+lK›Þ+UÃæ@V¾¯¼4»Iï.êpÀ!…úßSK4¤Ì#Û– Ò)µ?ö/ßÕ[Ÿ6+Ñ&¯�K{+¨ÚÆöý¿/;¡XùŸ�Ã�äÑOÏ-Ó±SòÛ�¿Íü´Yo/ì~b×¶¥êªü¸HJ³R"¹Š i¨«3m–œì½·™HÆ-XP`‚ fB¤¦ÆLòÝ~»YÖN<Ñ„�jkM•‡™3ͯºÊù1Á s`îñÇ�'6%ÓÖ÷0ëXµÊT›˜9Óü¾UUf2«mˆãÄ»àÈÔí·;‡:%3I¸y³™(š7ϼFO?í\íª±Ñ„ò:ºãiÛ6çí\y¥yìªUf‚tÕ*óï¯~Õù1Ë–™�b±t©ó²¢"ó{­_o^÷ùóÍkÜn¹Å¹â¢dÁ  Ìše&öêë¥SNq~̼yîTzƒm›ßÍÍA™PÀöíæ3dæL3Y¹y³™8ž:µõ¾^¯©xøá=:ì]’[¥ÈK.1--ï½W:ýt˜1ÃTe,+s_¯[õÀÞàÖæ·¨Hzûmósùå&”r×]æ³óüóÝ×ëô{Ýy§ùt2fŒÙ^Cƒ[uµ©ŠzÇ];v¤»�­XÑ~›9³õqÈ!­÷í“}̶´}a¡6f'°rKLÿšÝ¤pÔ¬ÌcYúâ¾ùúö©Å*-4í†-Kúò´yÛôò‹ÅmÝýB�jÛWìY¾9¦ó›?¯*dY–öÐÃ|Ÿ­_ÚgwŸ®>»T%…­ë«ÅuÓßëN¯»¯#Û–ba�*æ+RO ÞvÏ=f¿qâÔ øî»ÝÏÕú»pؽqm­ ÊE»ùþn«'+JÒ3Ϙ 'œì¿¿9¼ð‚i3ûë_»_òòËæ8˜LËEBÙpÛmî!ýÞôÐCîáÖLÅbÉßC悦޲`�ù®ÔßÝuWç‹¶º#5�à¾mð¨bN‰škºÅH°ÙÖmÏÔké†ÖR‰–eéŒC tõY%>È£(Ðè!í�¥Ï¿Ò¶ÚÎÕúÖo‹ë±×Û�›LåÓ´‰MéÓ/¾^¦ãÈow.±dCDx¥AÁp÷Oh7åióû¥Š73Øùñí€4=óŒ k8ùéOM[£Žþþw÷ ƒdZ—M›fªàõ–²2Såáè£S·i½ývç`U$"}㩫јS_ü¢Ùæ´iÎímO9%u[É“¾ó�Ô÷=ÚTw**r¿ßÏ~–üu®«3գܴ<7‡fþëTMR2•Kq›zò­ –nè~:ÊNXª^–¯š…²Têmñ¸9Wt ÉÉ[ƒ©Ã¹NÖ­ëÚã’Y»¶k�ûþ÷M8ÙÍܹæ¢�`°kÛhëµ×¤K/íþzÜ$Ò9ç8‡ö21k–Y—Óû"‘0âÞz«{Ûyþy÷*”}á²ËL•¿îjn6í‚�Â�·ß.=÷\æëݱ#õ÷×d~þó®…á²¹¿¦ã⋳ónh�Ž;Î\ з,·´í“bÅÂÝÿSÿކ„îx®^[ªc²?;hçù=:ij¡üî ]qj±<Ÿ«mÛÖ§k#z}žsoë§ÞiéÆÈçëòX–®>«Tw]>P‡ì•ßn]›ªbúÉc5ªªï^øÏ¶¥æZ¯6P¬XˆéÀ®�oÀdà²Ëœ'CœZWVºWÿp“Í�W³óßä]­\i*%¸yóMé¼ó¤¦¦®m£­PÈTˆsk‰–-Ï>kª v׃š*‡N^yÅTýê®úzHs«*ÙÂᾯ’×âÉ'MUÊ5-<{ã}˜Û–.¸ÀTÓɆéÓMµ6d×Â…=Ób°¯€’ ²¬Y“Ýuàx~è¡Þ­$ÔûX_„lÃ5~mxk€ÂõÝOZoÞ×ïþÝ Í;ZSÐËÒÉS ôç—é;§—´«TJè©·ƒŠw.$Iš¿:ª–E”h x,�t`�¾uR±®;¯Lûïø<‹ÛzkA³^˜RÌa}™hÜâWå¼bÅ› ÿõ•Å‹ÝÏ'§L1ááŽ|й µ“gžqo9›©‹.2çºé²mSåõ‘GÒ»ÿK/I`Ž!]Q[+ýàÒgôN%²HÄ\¬sã�]¯^øÌ3&¸æš—Ì…4'œ`Þ;™þn±˜ �~ýë]cO …¤SO•~ñ‹®ß›5Ë\X3k–ó}âqS�÷¡‡Ò_oK¨måÊÌÇ´f� ¡64¤ÿ˜uëÌb½©¾Þ|߼單_èóÎ;f¿í/•%%©zY�ªf'è¾x}Tw?_¯u•ퟠ1Cý1°õØß¶uëSµJ×ûÛ›ÁÏ« KÒ˜a~í6¸u=ñ„­å›¢ºùﵪLRI0S±f�¶~T¢Ð¶.‹ @?B€ lÞl*½9?Þ´ºê衇¤¿ý-³mµTzË–ûï7U§2±j•©ê”NxðÅM›Ñ®VI‘LûÌý÷wo7™m—\Òõê2‰„ô›ß¸·Onñ£™6Ò]�˜]¾ÜT"ÌFµŠžpõÕ©«Üô–Ë/7ÕÃ]œ;Z°À¼³Õv.[b1Ó*ðÚk»þ>ŠÅL;¸ÓOï• wF÷Þ+½þzf�©¨0r'ý¡]s0(]x¡96eâ¯5ýœ8µ†l ä=öXfÛ›>½ëÁÝlïc©‚-=%TéÓ–Jw?°rKLWÜ·C··¦|,ËÒÆúuÒ�*)h­Úóî¢fÍ_íüK7El=ývPÍ‘Öçq#|ºìÄb�âû¼òŸ$}´2¬ûþU¯ Ýoÿ®÷jÝô�Š{¨ü,Òvà n¹EÚsÏö·E"&L{ÔQ©CÈo½%�u– |ÕÔt{¸Ÿ[µÊÞÒ kmÝ*sŒôÛßf¶�•+M˜èÿ×ý3³­šé÷¿—öÚËœçg³•p*±˜ôË_š1ÿéO¦ s*¶m*­î»¯ ¥¥‹ÇÍÅT“'KÿùOêãP,fZ rˆyÏõæó’©[o•öÞ;³*}sæ˜�ÝG˜ï©ÄãÒ•WšãÛÆ�î÷}ë-s¼`�´~}úcjëo3ïÉW^q¿ßÚµ&ô;eŠ9ngÌÛ6ï�}ö‘þýïô7k–©hzôÑÒêÕ=7¾®°ã–*ç©zy~»–»]‘°¥w‡uçóõZ°6츾XBúò´�:-_Œ÷kô`¯[*/µ4f¨WÓ&túÁ:x¯€ã’4{YXw½P¯k³Põ×–ªªfeždüì:ºß€]̃š¶A‡’|ùÕWK/¼Ð9S)]³f™ðNßïc–êÖäkûਆN ÉãëÞ�ukmB×ÿ¹NלSª}v÷ËçµdY–¼mæÔ›£¶*ªã*+òÈﳎ؊ÆmÙ¶ä±$¿ßR�ßR\ѺÊZ]z|±Î<¬Pyþö�ºÒB�¾q\±‚Ͷš#¶ÂQ[±¸-Ë’|^Ky~Kù~K…ù–¼žÎa¼H4¡'gõô;!UÕ%RVLÇŽ¥ªü¸HvŒc?`×B°Kš3GºùfçenlÛ„ù.¼Ðù>ãÇ'¯öÊ+fRì´ÓÌDÈÔ©f2$4“!¯¿n&ýÚVgø¿ÿK>y�¬âƒm;ÿ^3gšª%×\#=ñ„tî¹fv�=ÌÄbe¥™Xš;׌ãµ×\ž¡�Ã#�˜ÌÔ©Ò¾`&.‡ “ü~3‰RUe&›ž~Úl«¯«‘Íše&O?ÝÙ:ÈLþ n‚ŒÛ·›ÉĹsM¥“L‚m-[fÚ\�t’tÎ9¦ÇàÁfYK@ëo>ýÔüô´D¢õùùË_º·®î´o�Å2{�¥RUe¾ƒeZE8‰„9žÎ˜‘ú¾Ë—§WaÐÍ–-æ'� {n­Œ“YºÔùÜ¢+¶m3çͯ¾š�õ}ðAvÖÓ±�W³K”WZ§¼²˜¬nÁ«¬Mèîë 'tÉñÅòtX¡×c©´ÐRišÿµ°m[7þ½VÓ?îbìNë³ÜêÓ¦wJ•ˆþìz,Ûî^��ûî»O?üáÛÝ6|øp-Y²¤Ó}�;î8Íï0zàÉWéˆónìÎ9î™_ž më:Îp]#é7}1�£&Nt,Äã’o».o`L{œR£‚òì¤ìËK=:zß<]ûµ²¤•|ºª²&¦;Ÿ¯×‡Ë#Y ÿ%b–¶Z¨Š¹%JD2çw$=Øî–Q“ŽÐÙ?ýg·Ç”mM�Õzìû{%Yò†¤/õöpý‰% šÒ¨#ä/È $¥ƒ€Oºêô]x¬¹Ò¬>”P(œÐàR¯|ÞÔÇYÛ–¢1[Ûëã*/ñ(?`z×ý©ZÓçw?hÛRsµ_Þ,Upk’R’)UIÒéÖ³®yA£÷>²Ûãîýþ$57¶oCtç�wêþç>ÿ÷ìÙ³uê©§vzìæÍ›5ÒéÊ_v1»Øô WLšdÚs§[¹ïÒK�—eÒpg®ñiÍ+5ᜠu?°£>¡÷—6Ëc•eat­›m}´2;á?IjÜPå¼â Ãì$l©fe�%q�88(ËêÞñµ´Ð£Ý›i„�U1=1£Q[kâÚs„Oc‡ù´ÇpŸ†ðª¸À£€Ïò"1©±)¡­5q­Ù3?1í9ʧo[¬á½Úol@¯Ï«»GëX³G[ç*DÕ_À.Œ  ßÉÏ7­Ð �.¸@úïÝï¿×^ÒO~â¼<�–‡;£p�O›Þ)Óî_ª“7�èv+ÀÒ�,ËR,nkãö˜žy7¨c'çkÜ0Ÿòåù-y=’Ç’d™@"!Åâ¶Â1©9bkѺˆêB ó…| *ñÈçµT�g©¾ÉîVÀ¶¥H£W°%L­ÀIDATëß,S¬™ö€]—³´m~±%q Þ§©[ë:pÏ€¦M ȶ¥;Ÿ«ÓìeÅâÒœåäY*Ê·”ï·äõXòx$ÙR–b [Í[Áfóß„-}¼:"¯eé‡g•èÌC ôÒì&­®è^¥âí ŠT»ª@v‚à?`×EÐïÜwŸ4a‚ùÿéÓ¥_ÿZºáÓÊ·£ã�—þügÉïPøÅ¶¥{ïí¹±öwõëó´í“B ; $o ë•‹ò,ýøœ2Ù¶´h}D¿ùG½–oŽéù÷š4l€GFù5v˜OŠ<ÊXòXR6Û–j×äkëÜ"©ÛuÈmýÊW¾"]qEë¿-Kºþzé{ß“–,1?Û¶IÇKcÇJGí¾¾ÿüGZ³¦G‡Ü¯%¢–ª*@\ƒöêz /\ ©{‰ÚzgaX«>«Ø“°¥Šš„*jÂzgQXv‡@²ÀA4.ýw~³Î?ºP“vó딃 ôáò°–mêZ h“G[ç+¸5Хǰ3JÄ,m~¿X»)®‚òXF!@¯Gºá‚2�æ—mÛzcAS·+ KÒöº¸­‹hä ¯Æ�ðëÒŠõð«�Šgp�‚mK Úðf™ÿ ÑÐo”–šj~É””H‡"]v™ô³ŸI—\’:ü·i“té¥YfΉ…¼Úô^‰šk»ög€Écý:ïÈBy<–ªâút]ıZ_Ke –'M[/Ïi’eYÚc„O[¤@.SLÄ¥K T½2_² ÐVh»_•óŠkÊì`T¹WÇí_ Ijh²5oeÊô%Q²µx}TᨹbàÐIyR–þØl[jªòiËìRÅ›9î ô#õõÒ¯~•�uƒÒ‰'JUUÙY_®‹…¼ZõÒ …=�ªô¹ñ{¥c&çiÌP“ÎÛ²#¦¥¢Ý®dYÒ+†ÔMÈë±tâ�Ú}Hfí{m[jØ”§ÊyŲcü‰€N–j×hû¢Œ�Ù²%Ù¶­k#ÚXå�üÏt8 iÞªˆ*ªÍúbq)Ë �p³GÛ>)VÓv¿¨þ€Á_ÇýÊí·›v¿��]_ÇoH -]š½qí "õ~m~·TÑ`úA»€ßRi¡G–eBï.«);E€Tß$½ýi³lÛ–Ç’—e UùµéíRÅÃüy'vÌÒÖ9Ū]Hû15 ]þÛzà_ ºýÙzm«Í G¯ Ë’–mŠéšÇkôÈ« ºéﵪnH?Xµ´@ÕË dgg8ìºÐ\€žõ»ßIO>)ýâ¦åoYYêÇÄbÒ›oJ=$½øbÏ�1WÕ¯ËWÕ€¸†Mm”7�z½)lkÆüfæy´yGL¯Ìiêvõ¿–%ýqzPõ![Í[K6DÓ~ls­Wß*S¸Ž?m�Žõo ”7P­âQéUò]´>ªEëͱ9[Çþk+ãzøÕô¯ö°–jVç©bvqvÀN€¿’ú¥êjéê«¥k¯•N;Mºà©¼Ü,K$¤º:sŸêjiÉé…Ìmp—ˆYÚ¶°Pùå šN}[š»"¢E룊Æl…£Ù ¬®ˆé·/5ȶͺÓk²´åÃ…*ù³éŠ7{´åÃR�>ºN屬‡úzŠmK ›Úün©ì8U舿”úµpXzþyóƒìH„=Úôn™ ‡ìPÞ€xÊ@–‚ͦZ`¶Ã¶¤æHú­ÿ1KU‹ U·&_RŽ$è'B[Úöq±v;²^¾‚Üè£Û¼Ã¯Š9ÅŠ½}=ú%.—` yµæÕ�j®É­këÖåiÛ‚"Ù1ÂdÊNHÕË Tµ´°¯‡’–XØRå'… Vúz(ô[ØE5ïð«bv±"�¹QQ'´Í¯-³J åÆx诶|P¬êù²ûq@;!mÿ´HÕËr#¬@_!À.¬n]¾¶Z¨x´WÔ ×{µvú…ër«b!ýRÂÒ¦wËT·>O¶Ý׃é̶¥ª¥ªü¸Hê‡ã ?!À.ÌŽ[Ú¾°Hµkòûm ÖìÑ–Y% ×Pù€l‰…<Ú:·X¡J_¥“ºuyªø T‰S¤Â·gvq‰ˆ¥-³JÜèë¡t’ˆYÚ¶ Huëò$õï*…äšPe@s‹iì?!ûP•O³Kkbú€tÐ7(ÚèÕú7Ê4îÄZ�öõp>W»:_U •ˆ 'Ô¯Ë×Ú×¼>­^�b[_¢Fa)³ªò©ò£"5W3u@ºø $IáŸÖý·L£ŽhPéèˆ,OßõNÄ,UÎ/RåÇE´ÿ ‡+üZóò å ˆË›gKêýs€X“Gáz¯” â/™ >׼ïÕ/TÁà˜Š†Dû¤ën¬ÙR°" h°ÿ´#`gg',*ï�ƒø6ÚKXjÚæWÓ6_�¸ ‡9ˆ 9ˆ 9ˆ 9ˆ 9ˆ 9ˆ 9ˆ 9ˆ 9ˆ 9ˆ 9ˆ 9ˆ 9ˆ 9ˆ 9ˆ 9ˆ 9ˆ 9ˆ 9ˆ 9È××@ú,ËézÎâZO2Q—ôVKV/�€®#�Cl;á°äG½:vV¶ì¾i#è§îüìÉÐ ‡x½þ¾;5޵€\BÐç,�·¯‡tbYýó<5PP¢¼¢}= vZeCÇõõH@@Ÿ+()ïë!�• íë!8:öâ»ä öõ0ØéþÕT4`X_€´ùúz|áØË´nÁô¾ÐÎ~Ç\Ò×Cp4aÚ™š0í̾ �ô¹±“�×ÅwÌÕÚO¦+ªíëá`—_4P{xªJ�êë¡àŠ  _(2VûŸpE_ gxúz sÈAÈAÈAÈAÈAÈAÈAÈAÈAÈAÈAÈAÈAÈAÈAÈAÈAÈAÈAÈAÈAÈAÈAÈAÈAÈAÈAÈAÈAÈAÈAÈAÈA¾ÞܘeY�n«X5G¾ô›ÞèC±HS_€�B¯mÛît[Ū9ªX5§7‡@Σ09¨W€………½¹9�#È�¹^ î·ß~½¹9�#8à€¾9Ç×›»îºë µvíÚÞÜ,èÇ.½ôRMš4©¯‡@ÎéÕ`ii©î¿ÿþÞÜ$;¥^m ²ƒ 9ˆ 9ˆ 9ˆ 9ˆ 9ˆ 9ˆ 9È×+ݺu« Ô«¢ 9©Û@¯×›�q¤äñPë€Ý>*2$ãpåõzÉ)ÐF·€§žzªöÜsÏlŒÀÑ÷¾÷=:ІeÛ¶ÝÝ•477köìÙÙ@'EEEš6mZ_€~%+@лºÝô¾ÿo×HýÝŽ@w(À�C €0$À�C €0$À�C €0$À�C €0$À�C €0$À�C €0$À�C €0$À�C €0$À�C €0ý�~`68MIEND®B`‚kubernetes-sigs-kind-49aeee6/site/content/docs/user/000077500000000000000000000000001524365506300226105ustar00rootroot00000000000000kubernetes-sigs-kind-49aeee6/site/content/docs/user/auditing.md000066400000000000000000000101041524365506300247320ustar00rootroot00000000000000--- title: "Auditing" menu: main: parent: "user" identifier: "user-auditing" weight: 4 description: |- This guide covers how to enable Kubernetes API [auditing] on a kind cluster. [auditing]: https://kubernetes.io/docs/tasks/debug-application-cluster/audit/ --- ## Overview Kubernetes auditing provides a security-relevant, chronological set of records documenting the sequence of actions in a cluster. Auditing requires a file to define the [audit policy] and a backend configuration to store the logged events. Auditing supports two types of backends: log (file) & webhook. The following exercise uses the log backend. Steps: - Create the local audit-policy file - Mount the local audit-policy file into the kind control plane - Expose the control plane mounts to the API server - Enable the auditing API flags - Create a cluster ## Setup ### Create an `audit-policy.yaml` file The [audit policy] defines the level of granularity outputted by the Kubernetes API server. The example below logs all requests at the "Metadata" level. See the [audit policy] docs for more examples. {{< codeFromInline lang="bash" >}} cat < audit-policy.yaml apiVersion: audit.k8s.io/v1 kind: Policy rules: - level: Metadata EOF {{< /codeFromInline >}} ### Create a `kind-config.yaml` file. To enable audit logging, use kind's [configuration file] to pass additional setup instructions. Kind uses `kubeadm` to provision the cluster and the configuration file has the ability to pass `kubeadmConfigPatches` for further customization. {{< codeFromInline lang="bash" >}} cat < kind-config.yaml kind: Cluster apiVersion: kind.x-k8s.io/v1alpha4 nodes: - role: control-plane kubeadmConfigPatches: - | kind: ClusterConfiguration apiServer: # enable auditing flags on the API server extraArgs: audit-log-path: /var/log/kubernetes/kube-apiserver-audit.log audit-policy-file: /etc/kubernetes/policies/audit-policy.yaml # mount new files / directories on the control plane extraVolumes: - name: audit-policies hostPath: /etc/kubernetes/policies mountPath: /etc/kubernetes/policies readOnly: true pathType: "DirectoryOrCreate" - name: "audit-logs" hostPath: "/var/log/kubernetes" mountPath: "/var/log/kubernetes" readOnly: false pathType: DirectoryOrCreate # mount the local file on the control plane extraMounts: - hostPath: ./audit-policy.yaml containerPath: /etc/kubernetes/policies/audit-policy.yaml readOnly: true EOF {{< /codeFromInline >}} ## Launch a new cluster {{< codeFromInline lang="bash" >}} kind create cluster --config kind-config.yaml {{< /codeFromInline >}} ## View audit logs Once the cluster is running, view the log files on the control plane in `/var/log/kubernetes/kube-apiserver-audit.log`. {{< codeFromInline lang="bash" >}} docker exec kind-control-plane cat /var/log/kubernetes/kube-apiserver-audit.log {{< /codeFromInline >}} ## Troubleshooting If logs are not present, let's ensure a few things are in place. ### Is the local audit-policy file mounted in the control-plane? {{< codeFromInline lang="bash" >}} docker exec kind-control-plane ls /etc/kubernetes/policies {{< /codeFromInline >}} Expected output: ```bash audit-policy.yaml ``` ### Does the API server contain the mounts and arguments? {{< codeFromInline lang="bash" >}} docker exec kind-control-plane cat /etc/kubernetes/manifests/kube-apiserver.yaml | grep audit {{< /codeFromInline >}} Expected output: ```bash - --audit-log-path=/var/log/kubernetes/kube-apiserver-audit.log - --audit-policy-file=/etc/kubernetes/policies/audit-policy.yaml name: audit-logs name: audit-policies name: audit-logs name: audit-policies ``` If the control plane requires further debugging use `docker exec -it kind-control-plane bash` to start an interactive terminal session with the container. [audit policy]: https://kubernetes.io/docs/tasks/debug-application-cluster/audit/#audit-policy [configuration file]: /docs/user/configuration kubernetes-sigs-kind-49aeee6/site/content/docs/user/configuration.md000066400000000000000000000410611524365506300260030ustar00rootroot00000000000000--- title: "Configuration" menu: main: parent: "user" identifier: "user-configuration" weight: 3 toc: true description: |- This guide covers how to configure KIND cluster creation. We know this is currently a bit lacking and will expand it over time - PRs welcome! --- ## Getting Started To configure kind cluster creation, you will need to create a [YAML] config file. This file follows Kubernetes conventions for versioning etc. A minimal valid config is: ```yaml kind: Cluster apiVersion: kind.x-k8s.io/v1alpha4 ``` This config merely specifies that we are configuring a KIND cluster (`kind: Cluster`) and that the version of KIND's config we are using is `v1alpha4` (`apiVersion: kind.x-k8s.io/v1alpha4`). Any given version of kind may support different versions which will have different options and behavior. This is why we must always specify the version. This mechanism is inspired by Kubernetes resources and component config. To use this config, place the contents in a file `config.yaml` and then run `kind create cluster --config=config.yaml` from the same directory. You can also include a full file path like `kind create cluster --config=/foo/bar/config.yaml`. The structure of the `Cluster` type is defined by a Go struct, which is described [here](https://pkg.go.dev/sigs.k8s.io/kind/pkg/apis/config/v1alpha4#Cluster). ### A Note On CLI Parameters and Configuration Files Unless otherwise noted, parameters passed to the CLI take precedence over their equivalents in a config file. For example, if you invoke: {{< codeFromInline lang="bash" >}} kind create cluster --name my-cluster {{< /codeFromInline >}} The name `my-cluster` will be used regardless of the presence of that value in your config file. ## Cluster-Wide Options The following high level options are available. NOTE: not all options are documented yet! We will fix this with time, PRs welcome! ### Name Your Cluster You can give your cluster a name by specifying it in your config: {{< codeFromInline lang="yaml" >}} kind: Cluster apiVersion: kind.x-k8s.io/v1alpha4 name: app-1-cluster {{< /codeFromInline >}} ### Feature Gates Kubernetes [feature gates] can be enabled cluster-wide across all Kubernetes components with the following config: {{< codeFromInline lang="yaml" >}} kind: Cluster apiVersion: kind.x-k8s.io/v1alpha4 featureGates: # any feature gate can be enabled here with "Name": true # or disabled here with "Name": false # not all feature gates are tested, however "CSIMigration": true {{< /codeFromInline >}} ### Runtime Config Kubernetes API server runtime-config can be toggled using the `runtimeConfig` key, which maps to the `--runtime-config` [kube-apiserver flag](https://kubernetes.io/docs/reference/command-line-tools-reference/kube-apiserver/). This may be used to e.g. disable beta / alpha APIs, or even enable deprecated APIs. {{< codeFromInline lang="yaml" >}} kind: Cluster apiVersion: kind.x-k8s.io/v1alpha4 runtimeConfig: "api/alpha": "false" "apps/v1beta2": "true" {{< /codeFromInline >}} ### Networking Multiple details of the cluster's networking can be customized under the `networking` field. #### IP Family KIND has support for IPv4, IPv6 and dual-stack clusters, with the default being `ipv4`. You can change this by setting `ipFamily` under `networking` to `ipv6` or `dual`, see below for more requirements. ##### IPv6 clusters You can run IPv6 single-stack clusters using `kind`, if the host that runs the docker containers support IPv6. Most operating systems / distros have IPv6 enabled by default, but you can check on Linux with the following command: ```sh sudo sysctl net.ipv6.conf.all.disable_ipv6 ``` You should see: ```sh net.ipv6.conf.all.disable_ipv6 = 0 ``` If you are using Docker on Windows or Mac, you will need to use an IPv4 port forward for the API Server from the host because IPv6 port forwards don't work on these platforms, you can do this with the following config: {{< codeFromInline lang="yaml" >}} kind: Cluster apiVersion: kind.x-k8s.io/v1alpha4 networking: ipFamily: ipv6 apiServerAddress: 127.0.0.1 {{< /codeFromInline >}} On Linux all you need is: {{< codeFromInline lang="yaml" >}} kind: Cluster apiVersion: kind.x-k8s.io/v1alpha4 networking: ipFamily: ipv6 {{< /codeFromInline >}} ##### Dual Stack clusters You can run dual stack clusters using `kind` 0.11+, on kubernetes versions 1.20+. {{< codeFromInline lang="yaml" >}} kind: Cluster apiVersion: kind.x-k8s.io/v1alpha4 networking: ipFamily: dual {{< /codeFromInline >}} #### API Server The API Server listen address and port can be customized with: {{< codeFromInline lang="yaml" >}} kind: Cluster apiVersion: kind.x-k8s.io/v1alpha4 networking: # WARNING: It is _strongly_ recommended that you keep this the default # (127.0.0.1) for security reasons. However it is possible to change this. apiServerAddress: "127.0.0.1" # By default the API server listens on a random open port. # You may choose a specific port but probably don't need to in most cases. # Using a random port makes it easier to spin up multiple clusters. apiServerPort: 6443 {{< /codeFromInline >}} {{< securitygoose >}}**NOTE**: You should really think thrice before exposing your kind cluster publicly! kind does not ship with state of the art security or any update strategy (other than disposing your cluster and creating a new one)! We strongly discourage exposing kind to anything other than loopback.{{}} #### Pod Subnet You can configure the subnet used for pod IPs by setting {{< codeFromInline lang="yaml" >}} kind: Cluster apiVersion: kind.x-k8s.io/v1alpha4 networking: podSubnet: "10.244.0.0/16" {{< /codeFromInline >}} By default, kind uses ```10.244.0.0/16``` pod subnet for IPv4 and ```fd00:10:244::/56``` pod subnet for IPv6. #### Service Subnet You can configure the Kubernetes service subnet used for service IPs by setting {{< codeFromInline lang="yaml" >}} kind: Cluster apiVersion: kind.x-k8s.io/v1alpha4 networking: serviceSubnet: "10.96.0.0/12" {{< /codeFromInline >}} By default, kind uses ```10.96.0.0/16``` service subnet for IPv4 and ```fd00:10:96::/112``` service subnet for IPv6. #### Disable Default CNI KIND ships with a simple networking implementation ("kindnetd") based around standard CNI plugins (`ptp`, `host-local`, ...) and simple netlink routes. This CNI also handles IP masquerade. You may disable the default to install a different CNI. This is a power user feature with limited support, but many common CNI manifests are known to work, e.g. Calico. {{< codeFromInline lang="yaml" >}} kind: Cluster apiVersion: kind.x-k8s.io/v1alpha4 networking: # the default CNI will not be installed disableDefaultCNI: true {{< /codeFromInline >}} #### kube-proxy mode You can configure the kube-proxy mode that will be used, between iptables, nftables (Kubernetes v1.31+), and ipvs. By default iptables is used {{< codeFromInline lang="yaml" >}} kind: Cluster apiVersion: kind.x-k8s.io/v1alpha4 networking: kubeProxyMode: "nftables" {{< /codeFromInline >}} To disable kube-proxy, set the mode to `"none"`. ### Nodes The `kind: Cluster` object has a `nodes` field containing a list of `node` objects. If unset this defaults to: ```yaml nodes: # one node hosting a control plane - role: control-plane ``` You can create a multi node cluster with the following config: {{< codeFromInline lang="yaml" >}} kind: Cluster apiVersion: kind.x-k8s.io/v1alpha4 # One control plane node and three "workers". # # While these will not add more real compute capacity and # have limited isolation, this can be useful for testing # rolling updates etc. # # The API-server and other control plane components will be # on the control-plane node. # # You probably don't need this unless you are testing Kubernetes itself. nodes: - role: control-plane - role: worker - role: worker - role: worker {{< /codeFromInline >}} Multiple `control-plane` nodes may be specified in order to test a "high availability" control plane. ## Per-Node Options The following options are available for setting on each entry in `nodes`. NOTE: not all options are documented yet! We will fix this with time, PRs welcome! ### Kubernetes Version You can set a specific Kubernetes version by setting the `node`'s container image. You can find available image tags on the [releases page](https://github.com/kubernetes-sigs/kind/releases). Please include the `@sha256:` [image digest](https://docs.docker.com/engine/reference/commandline/pull/#pull-an-image-by-digest-immutable-identifier) from the image in the release notes, as seen in this example: {{< codeFromInline lang="yaml" >}} kind: Cluster apiVersion: kind.x-k8s.io/v1alpha4 nodes: - role: control-plane image: kindest/node:v1.16.4@sha256:b91a2c2317a000f3a783489dfb755064177dbc3a0b2f4147d50f04825d016f55 - role: worker image: kindest/node:v1.16.4@sha256:b91a2c2317a000f3a783489dfb755064177dbc3a0b2f4147d50f04825d016f55 {{< /codeFromInline >}} [Reference](https://kind.sigs.k8s.io/docs/user/quick-start/#creating-a-cluster) **Note**: Kubernetes versions are expressed as x.y.z, where x is the major version, y is the minor version, and z is the patch version, following [Semantic Versioning](https://semver.org/) terminology. For more information, see [Kubernetes Release Versioning.](https://github.com/kubernetes/sig-release/blob/master/release-engineering/versioning.md#kubernetes-release-versioning) ### Extra Mounts Extra mounts can be used to pass through storage on the host to a kind node for persisting data, mounting through code etc. {{< codeFromFile file="static/examples/config-with-mounts.yaml" lang="yaml" >}} **NOTE**: If you are using Docker for Mac or Windows check that the hostPath is included in the Preferences -> Resources -> File Sharing. For more information see the [Docker file sharing guide.](https://docs.docker.com/docker-for-mac/#file-sharing) ### Extra Port Mappings Extra port mappings can be used to port forward to the kind nodes. This is a cross-platform option to get traffic into your kind cluster. If you are running Docker without the Docker Desktop Application on Linux, you can simply send traffic to the node IPs from the host without extra port mappings. With the installation of the Docker Desktop Application, whether it is on macOs, Windows or Linux, you'll want to use these. You may also want to see the [Ingress Guide]. > **NOTE**: If you're running Kind on a remote host and need to send traffic to Kind node > IPs from a different host than where kind is running, you need to configure port-mapping. {{< codeFromFile file="static/examples/config-with-port-mapping.yaml" lang="yaml" >}} An example http pod mapping host ports to a container port. {{< codeFromInline lang="yaml">}} kind: Pod apiVersion: v1 metadata: name: foo spec: containers: - name: foo image: hashicorp/http-echo:0.2.3 args: - "-text=foo" ports: - containerPort: 5678 hostPort: 80 {{< /codeFromInline >}} #### NodePort with Port Mappings To use port mappings with `NodePort`, the kind node `containerPort` and the service `nodePort` needs to be equal. {{< codeFromInline lang="yaml" >}} kind: Cluster apiVersion: kind.x-k8s.io/v1alpha4 nodes: - role: control-plane extraPortMappings: - containerPort: 30950 hostPort: 80 {{< /codeFromInline >}} And then set `nodePort` to be 30950. {{< codeFromInline lang="yaml">}} kind: Pod apiVersion: v1 metadata: name: foo labels: app: foo spec: containers: - name: foo image: hashicorp/http-echo:0.2.3 args: - "-text=foo" ports: - containerPort: 5678 --- apiVersion: v1 kind: Service metadata: name: foo spec: type: NodePort ports: - name: http nodePort: 30950 port: 5678 selector: app: foo {{< /codeFromInline >}} [Ingress Guide]: /docs/user/ingress ### Extra Labels Extra labels might be useful for working with [nodeSelectors](https://kubernetes.io/docs/concepts/scheduling-eviction/assign-pod-node/). An example label for specifying a `tier` label: {{< codeFromInline lang="yaml">}} kind: Cluster apiVersion: kind.x-k8s.io/v1alpha4 nodes: - role: control-plane - role: worker extraPortMappings: - containerPort: 30950 hostPort: 80 labels: tier: frontend - role: worker labels: tier: backend {{< /codeFromInline >}} ### Kubeadm Config Patches KIND uses [`kubeadm`](/docs/design/principles/#leverage-existing-tooling) to configure cluster nodes. Formally KIND runs `kubeadm init` on the first control-plane node, we can customize the flags by using the kubeadm [InitConfiguration](https://kubernetes.io/docs/reference/setup-tools/kubeadm/kubeadm-init/#config-file) ([spec](https://godoc.org/k8s.io/kubernetes/cmd/kubeadm/app/apis/kubeadm/v1beta3#InitConfiguration)) {{< codeFromInline lang="yaml" >}} kind: Cluster apiVersion: kind.x-k8s.io/v1alpha4 nodes: - role: control-plane kubeadmConfigPatches: - | kind: InitConfiguration nodeRegistration: kubeletExtraArgs: node-labels: "my-label=true" {{< /codeFromInline >}} If you want to do more customization, there are four configuration types available during `kubeadm init`: `InitConfiguration`, `ClusterConfiguration`, `KubeProxyConfiguration`, `KubeletConfiguration`. For example, we could override the apiserver flags by using the kubeadm [ClusterConfiguration](https://kubernetes.io/docs/setup/production-environment/tools/kubeadm/control-plane-flags/) ([spec](https://pkg.go.dev/k8s.io/kubernetes/cmd/kubeadm/app/apis/kubeadm/v1beta3#ClusterConfiguration)): {{< codeFromInline lang="yaml" >}} kind: Cluster apiVersion: kind.x-k8s.io/v1alpha4 nodes: - role: control-plane kubeadmConfigPatches: - | kind: ClusterConfiguration apiServer: extraArgs: enable-admission-plugins: NodeRestriction,MutatingAdmissionWebhook,ValidatingAdmissionWebhook {{< /codeFromInline >}} > **NOTE**: When using `KubeletConfiguration`, kubeadm only reads the kubelet configuration from the **first** node, which will apply to all nodes. > This is a current [limitation](https://github.com/kubernetes-sigs/kind/issues/3849). As a result, if you want to change the kubelet's configuration for any additional node, such as applying a taint, you must use `JoinConfiguration`: {{< codeFromInline lang="yaml" >}} kind: Cluster apiVersion: kind.x-k8s.io/v1alpha4 name: test nodes: - role: control-plane - role: worker kubeadmConfigPatches: - | kind: JoinConfiguration nodeRegistration: kubeletExtraArgs: register-with-taints: "my-taint=presence:NoSchedule" {{< /codeFromInline >}} On every additional node configured in the KIND cluster, worker or control-plane (in HA mode), KIND runs `kubeadm join` which can be configured using the [JoinConfiguration](https://kubernetes.io/docs/reference/setup-tools/kubeadm/kubeadm-join/#config-file) ([spec](https://godoc.org/k8s.io/kubernetes/cmd/kubeadm/app/apis/kubeadm/v1beta3#JoinConfiguration)) {{< codeFromInline lang="yaml" >}} kind: Cluster apiVersion: kind.x-k8s.io/v1alpha4 nodes: - role: control-plane - role: worker - role: worker kubeadmConfigPatches: - | kind: JoinConfiguration nodeRegistration: kubeletExtraArgs: node-labels: "my-label2=true" - role: control-plane kubeadmConfigPatches: - | kind: JoinConfiguration nodeRegistration: kubeletExtraArgs: node-labels: "my-label3=true" {{< /codeFromInline >}} If you need more control over patching, strategic merge and JSON6092 patches can be used as well. These are specified using files in a directory, for example `./patches/kube-controller-manager.yaml` could be the following. {{< codeFromInline lang="yaml" >}} apiVersion: v1 kind: Pod metadata: name: kube-controller-manager namespace: kube-system spec: containers: - name: kube-controller-manager env: - name: KUBE_CACHE_MUTATION_DETECTOR value: "true" {{< /codeFromInline >}} Then in your kind YAML configuration use the following. {{< codeFromInline lang="yaml" >}} nodes: - role: control-plane extraMounts: - hostPath: ./patches containerPath: /patches kubeadmConfigPatches: - | kind: InitConfiguration patches: directory: /patches {{< /codeFromInline >}} Note the `extraMounts` stanza. The node is a container created by `kind`. `kubeadm` is run inside this node container, and the local directory that contains the patches has to be accessible to `kubeadm`. `extraMounts` plumbs a local directory through to this node container. This example was for changing the manager in the control plane. To use a patch for a worker node, use a `JoinConfiguration` patch and an `extraMounts` stanza for the `worker` role. [YAML]: https://yaml.org/ [feature gates]: https://kubernetes.io/docs/reference/command-line-tools-reference/feature-gates/ kubernetes-sigs-kind-49aeee6/site/content/docs/user/images/000077500000000000000000000000001524365506300240555ustar00rootroot00000000000000kubernetes-sigs-kind-49aeee6/site/content/docs/user/images/docker-pref-1-win.png000066400000000000000000000135741524365506300277270ustar00rootroot00000000000000‰PNG  IHDRÿ?õ‚�sRGB®ÎégAMA±� üa pHYsÃÃÇo¨dIDATx^í�»Ž-E²† ‡ÀâÀgK=ÂĘ'‰æpo�°°ÚGãâŽpÚ@aá!¡1ÐHXX` Ã9œ G:‘™‘—Z—êÕ•µ:þOÅÞQ‘qɪüWõZ›ZÕ7/_¾ü?âAÊgõÿþûïÿ[øŸÂþ«ðÛo¿ý§ð¯¿þúoá—_~ù—�«p @ý .P?ˆ Ôâõƒ¸@ý .ÓÔÿpwss÷�wrÜÞŸw.7Qί¾zJ«û>ÅI‹LRÿ÷÷··ww·~¥¹ðÃtïEV¯·£¬žÒê¾}ÇÕsÇ™£~ÿý÷éÏìzì2Ók'õ;Oþ«§´ºoßqõÀq¦¨¿È¾’¿,ó ¥~·ÀÒÉyA$›þ,T2k¤ãd8(K˜Wœš.õS\"1ôS¬n|Jßa¹¦ã]{\®ý$¥?oàf¨Ÿ–0¯’Yy½Ó¯±‰ÀéF�>«w*�“K‘õeÍ*¤tÍRO6ÅâRuq o�NŽRZH Ùî§ÍÎlöG2Aý´FºDn�ý2ó»½ ÔYEª]¥gé<,[;N¿õ‚⇟Û×Aéâq¡]G_ªž! ÈNÕ«8ÁIl¯~Z †´^~Ë:_oµ½S©�ZmX¶v 4"bT÷8fe_…Ýù,t}©:�JŠöZhØ\ýµ0܂ɧ[Dvæå4§[cKjë ÞéJ-—­KätW…‡15ÞÉ)¾oMPoñçD—¿PʦíjºNakõûÅL”%ãùøh?N¸<^q�?föU«¯qDÝvXÖÅKž’ŒJ´33eÚUe放’Þ4uÌ!i|0mNœ7p›_ûÁ…Ñ 8¨ÿÚ�ú×õ_;Pÿz ~¨Äêq�úA\ ~¨Äêq�úA\ ~¨Äe{õç{öÿèùîÅ)ÿÇ~a>§²úFƒªï÷f®9Ç'YŽ}XyÚ‚žÁõëI‘“;ù®ÜGÎǧŸÅ‰‰«ë_„ÃÝûѹ³=›¹êOWˆ¹òä|V¯÷‰‰sõt¸{?:w¶g3[ý&7õ³'QdØyÌ‘<µf+ñÀªç/ø„¦¨¦“QâÖô%ÄsŸßkȘÔL¯,éíúv·UzGAS%XæšFSýYà2.×êk­vûS?ý]-Ôg‡"Jˆº¬b–‚b– ¦áÂ?Ÿ®Ëx2äÐ,õdS¬¥¾JJ�™jiª³•%=íØ4›€’Tæ*¿˜ÅJHÍL;3nb]£q–†õĺ’[³õ×'Î�T†wëSS{(MvÊßd¤d©cð`Ó:±0Ÿa—~2’~‰ç>Þ£¶s©\¤™è(@êXè ¬RÕd(¸j’vzÃÙ\ߊ’wqb›3[ývj*Z¨Ï3>›ì¦üôgÞoÇgya>Ã.ãš—xîã=j;ç‘ÊÞÖÐ¥‰X:ÃF•ÂP°9t´7œ]×'ïá‰mÉ\õ“­'¦=å<óÉ«Ï�Ëòg–è-®žhëkã�®ò¸Ëp2ìpU8qSÓ;½GíÆÙä,ŒÚ„›€*›Oï÷e•6%۹ȣæã½³?“ÃÈ­™¢~Ås96žÏØÀ%'^ðÄ«I„…%ÿð,/Íg©K3­)ÑÎÌœÔ7 û0³s\:®C•Ù–¸e°8Ûš¹"Q¢Ú²Š…õ„h·ùÔ뛹 Τ­ìMÙ^ýà‰˜¦¡ëê6@ýgõ? þ³�úA\ ~¨Äêq�úA\ ~¨Äe#õ ÀÎ YâÚâõƒ¸˜úoþòOlØâl­úþùolØ"lP?¶¸Ô�-îõc‹»AýØânóÔÿÉ»ùKž7ïþµ:¼}þñ›7/Þÿ¼ócÃvæ6Iý¬à"úÏ?~ÿ“z4oÿ“©ÜÛØ°]f›¤~ºðÿáã¿5Îvƒú±=í6Iý¬æ›7?üGåäú^ˆ2~×Ùw¯1>Ìï ¬Z©ó懗ȼÿqÝÜüiüs[Äm–úiËŠ,rtW÷OÞ);ÏØ&#½Ò§ˆôVŠ�©æß>|q“"i4…aÃæ¶‰ê—M®Ó,V»ð Õ5ž¶%õwNªc臭³ÿQƒ-ü6[ýé MZg�6ÿø3T¼·GΡúeW~à�6Û&©ÿ“�‹(ùýOyŸÓ\žGâ®ì%g÷Î'd~`ÓmÖµŸ5šÑwäþÍ�8ÿúç¡}Xýé3cŸzWÿ¿lÏz›¥þM¶Á»)lØl{ÎêçÇÿ¯¶¸ÛóS¿ýÓ>Þç`;¼=çk?6l‡7¨[Ü êÇw¨¶8[¥þü<<Ñ„êq�úA\ ~¨Äêq™¥~÷ÛÁó¯Ù\ý 7&Ò µ8‘¦àé[}`3Ô/Ê·_ˆÿýý=Û«¥s ‘†êß¼MÁÓ'vx&ëŽð´l®þ%ñ'}<ä7D¦{‹¤Y�K…E†¿ÔË®�«YžFqîÝ]õ£ÈLøú‡fx{¯‰Ö› Û^îÓÔà ÁÌP¿—–!Q™eˆàRôÃ�X,”º@Ša'—쬫>‹Ð]Îf]ÁI¸)æsuÈÙé ÈÕÏ`g×þF"(ƒòé|Û¾$®f�Xôæ›*�Sw+®@e+_Ù!3ÓåŽÊ•[±¹úGú¼¶ŠÝDzYh,ÿAÑFsA²ã›*꜖胋·Š-–¢Ã‹3QØ­?�À&l¯~Q‚_æÁ¿ù¨Í¡êX$µ'ûüBS³45ý�’ê®.͹« ÙùʸVµÉª+Ù¶ã¡ð¡<3ÔOˆR2yÁ}ÛG:&Ä¡Á&¿‚¯éK�U¸®6ÎÁò™És!ÊtܧޒÎá9?G¹J†<¥‚¯ 6`’ú¯’¥— ¸V þÓ�úŸPÿé@ýÏ ¨Äêq�úA\ ~¨Äêq�úA\ ~¨ÄêqÙ^ývC#awðm�×xAûÞ�Ö\}oÅêÄXLQ¿.Œåºïêíuöxåi…Õ¥?‡ÌUºä_µü{�=^yZau©ÇÏ!³Õoò7?Y}]è×Eì$O{Ù_*º/Ž”lseOçPºÖGºøç8ì@Œ¾ã²§=Æî)Ý$‰¦œÎAb- TìQý…j Ó Ê"wëjãfI¨D’/»´_åçDôh <ÐÅÍG‘”‚„i56ÅzúšR*™z8†éÇÒûSM0dêO»Î/‹.ˆGCòX¯v½ÜäåvZhÚ5u4­—ºX9�è<}Ç¡gP³*E;y²ded”«õ‡±ôœ `ÌV¿­\ñ›§(â¸2ú\†¼ºÃ#IêuL… iË….ê«�§ï8ô júR%ÇrKN_�—žsŒ¹êçE* Tü:΋š, cŸ9}�6²×D Çhf…–©Zkì ‹›�âS_»ÆžÑ1–0=-o“4«�ƒ4Ö¥õF\¦¨_ñg_CVŸí�šÔ~"ÌéÎ.ÙVÜ–ƒÅ˜Oè[/t)5ÏÿÔ[i<“<ƒš\ª{ŠD?I¢$ç0�ƒ³©žÞˆËö꼚•`XÍ•©Ÿ/qÑ/Xàb\…úûw \€+»öpA ~¨Äêq�úA\ ~¨Äêq�úA\ ~—êç›uÇn[à[N¹­ç2·+R7¡ºf;u>Äe¦´gÔscsõû›4óok<…Ãbz̨#I÷paK³½æ©ß–�þ¦˜.,dß=$‡Œ¦¤9FËf,æÒ@S(Í…™ý<zûßu´i×ÎAÇ:™ý,À³`ê—]¯g â�Ú)pú­#Ç88¼i‘è�êñCC'ï4óÏ€ÙêW}Ÿ¡~‘¿º^!Ö"Ó;Õ㇆ÎA𠘫~²UUÎ6±±¥ÑBNwU8qSÓ;ÕãÄmÅ\Yˆÿ™2EýJ-GYï·x`%Yof8Hc<½Óy´ÉÝ]qò¨|t7´ÿÙ^ýì¨Äêq�úA\ ~¨Äêq�úA\ ~¨Äe#õçG'°H–¸öƒ¸@ý .P?ˆ Ôâõƒ¸@ý .P?ˆ Ôâ²½úõ+´LÿõÛ뀿I|­sÊõ«nä•°£oŒû¹õ×Ç\õïía!P,f«ßËß=˜Ä½ Ì+NŸ®¶å™›¦9Ö©)“Rîó»0 #O¡tÊðn3*é©ö`Ú}q°Gö£~–WVûRŒYŸ®6çö¦+é²Ü³>m°3ÔéG½³Ÿ6;»â`wìAý²«¯�‚x§v >]í¡ÓÙ\ÇÁ%�Ö‘½L?Zìá´‡‘`ÌV¿ªçÉÕfK!«]¨L^ÙE‚ý1Wýd«vœ])¯ÑŽ“g¤Á¦fo[ha)¬8Õ´),¥ôÓF‚Ý1EýJ- VOï·x'ú´_=ss¤6g[ñThFV ( ü0Ï~tXyP°¶Á¾Ø^ýì¨Äêq�úA\ ~¨Äêq�úA\ ~¨Äêq�úA\ ~—íÕïïy”Û#ïÒ7ŸþFÈmº€ëa¦úG÷þ^ü~`Ü` ™¦~¾çö=P?ØŽIê¿o4™4JÒ Ã¾8’ö%ì೬g4S—Ø–™¢þ^sªK/Pgû1h ŠžíFÚ늘�O€™tíçë·—ßH¬vuÚ‹÷‚Mf¦+¨6WÆLüÔË2U ªF�Xu£CÛRÈê Â@hæ©?‰0›êlÄj;B3ÚÙê³ÒÃ×f¦úӎ왓=„^Áe�a�ÏÚ%á胊›ÀO�°l¯~öÔâõƒ¸@ý .P?ˆ Ôâõƒ¸@ý .P?ˆ Ôⲑú¿`g�,qíq�úA\ ~¨Äêq�úA\ ~¨Äå$õöÙg¯¿þú«¯¾úâÅ‹ŸþêσãêÿñÇó׿…wÞyêσãêÿꫯ²ð…W^y%IŸ€úÁÞ ‰f뎫ÿ»ï¾KºO¼õÖ[¸öƒÝ’TšwŽq\ýÄ|�оöÚkß~û-ÔvK*‘÷r’úÓ?ø�Üño>`çdí ÙµÌqõ“îøá‡¯¿þš>|óÍ7?ýôÔvKþE®ý}ôÑo¼‘ë ô©÷í·ßþâ‹/ ~°C’JóÎ1©ÿö¶z„xçŸ~ õƒ½AÊÌÖ R?]æ“ЇÐkêWÍ!õÿ±@Bïyï½÷ ~pÕRúÔK¤ó!ðo>à9õƒ¸@ý .P?ˆ Ôâõƒ¸@ý .P?ˆ Ôâõƒ¸@ý .Û«ß~I:qùߓο­]!ûɬËWÎõ�ñ áòú/¸FŒ˜ªþ§(ÔzC‘­˜}íW}ò{�Dúi cÙi*¶0ý©Ñd¦¢ôg!Å 9òîŽÜäpSigÒîƒ=“V*ïcŠú ¦&'¾‡;±$,ùX~ÉbgNR'ù*Uj)Ws˜(Î1ÊJ3!T=$eyÿ ó®ý¬Â"+»¼ ìv*”öù”ÊéB-ÑU&úµû™´õÁ®É 'd×2óÔ/J3Ë©SðÒ,ÃuX1#M»šè*Œ}‹bf¸ú`׈왼�™êw6æœÇÉÎ,ÁN¦ä�x_SK›Í2¯§Ô»ætésÕ/RL{lXœ&I‹#aa¥Ë5Ñj:�$wŸXÍÄÙÍLÚú`×Ð:eë¶Wÿ‰xið$@ý .P?ˆËnÕÀ“õƒ¸@ý .P?ˆ Ôâõƒ¸@ý .©ÿKvÉ×~¨Äêq�úA\ ~¨Äêq�úA\¶W¿}O–ÀWeÁD¦¨¿|i‹_'êÿô¯záKaàT¦ªÿI4 õƒS™}íW¡ÚsDÚ'�Ü=P\Am?ÿäàBúø“ ÞT�cLQÁê^ã§gºC�\Óò‘ ˜wíç‹{¸€Anñ8ךfµ'’Ó�BýàTæ©_4oÖè�JzQÈ€Ó´k¨¬a¦ú�MÆX³Eà.KM~hºfíÞ`²ú�€Ù*Е�¢2ùgBvð^ åºM»Hõ÷ÔÀ^€úA\ ~¨Äêq�úA\ ~¨Äêq�úA\ ~¨Äêq™£~Cg¹‰s» tH¾¡3qþÝ›«où\Ý7™îˆ êé›äYG‡_™¡n¼SyR)eµW÷í;®žx,›«Ÿµß(…\§,ÿP%µsPü0«•·ºoßqõÀcÙ\ý´Ö�NÊú{¨� ú³P¥ûÂÉ�ÍŒË0¯8}—ׄHŒ<0•9©ï°\Óñ®=. ×~’ò�ý¾+x$[«ßÉÄ §,ª—”WIcx§–'éþcV!¥ûI¹‚ééRªÎ"ô­ÓÉQo XèÈv?mvf³?ðvqí§5•%mt kßžÆY*yuIïÔN�Óo½ 8ÆÁáçöuPºx\h×Ñ—ªgH²Sõ*Np6W½ÀB‘NµÌj÷†§vjñ¡Œ­iDĨîqÌʾ »óE½ëèKÕé4PR´×B°ŠÍÕŸ×_•#ÂÈëé–Ö‚tí½ï䜢 g[U¶ê9ÝUáÄaL�wrŠïÛGÔ[ü9Ñå/”²i»šî �Ç3Aý/¢¡kŸZà�ƒÉoâȃÕêkáêÖÃû-^Êhq‰vf†ƒlŽSúJzÓpÔ1‡¤ñÁ´9EŸÓ˜¢ÀE˜£þŠ¼Þ½Â@B_0àÂì@ýàPÿSõï¨ÿ©€úA\ ~¨ÄêqÉêÏ{D"«€ˆ¼|ùÿ­’xp )zAIEND®B`‚kubernetes-sigs-kind-49aeee6/site/content/docs/user/images/docker-pref-1.png000066400000000000000000001040231524365506300271220ustar00rootroot00000000000000‰PNG  IHDRÈ›'BÔÇ iCCPiccH‰•WXSÉž[’��Ð�z¥H—ZèR! $”‚Š]TpEQ± ¢Èªˆ‚kDlØË¢ØûCe]Ôņʛ$€®~ï½ï�ï›{ÿ{æÌ9ÿ9wf¾Ôc8bq6ª@Ž(OÀœ�œÂ$=T  H@xq¸R±LL€2ôþ§¼» ùûš½Ü×ÏýÿU4y|)$â4ž”›ñpW®X’¡êͦç‰!&B–@[ Bl.ÇJì.ÇiJ¡°‰�eAœ € •Ñd &çÅÌçf@?jË vñ„"ˆ[ öá 8<ˆ?C<*'gÄêÖ[§}ç'ã>Ó†}r8ÃX™‹BT…Rq6gæÿYŽÿ-9Ù²¡f°Q’ÐXyÎòºeM —c*ÄçDiQÑkA|]ÈSØËñS�,4aÐþWÊ‚5 P*�±Ħ¢ì¨ˆA½Oº0˜ 1¬=/ÌcÇ+Ç¢<É´ØAÿè ¾4(ns$ŠXr›bYV‚ÿ ÏÍ>{Ègs� >Iɽ’/LŒ‚X âûÒ¬¸ðA›VÔ��D+ç ÿ9Ò%Á±JÌT9›Âå(¸éBœÉ—NˆâÉã)ó ù¢„AþX™8/ vоZœ3h�µð³CäzSˆÛ¤ùqCc{óàdSæ‹q^L¼’®�É ‹QrÀmA`�@À2ØÒÀ4� „m=�=ðKÙ 8@2Øj†F$)zDð ÀŸñ�tx\€¢—ò¡þ˰Vù´éŠÞ|ň,ðâ²á·L1J4-<�áOѹ�k6lò¾ŸtLõ!1ˆH %mp}Ü÷Â#àÓ6'Ü÷âõÍžð”ÐNxL¸Aè Ü™*,”üÀœ "Aä<˜]Ú÷Ùá–Ы €{CÿÐ7ÎÀõ�=>FòÇ}al¨ýž«l8ãoµôEv £äd?²õ� ÔlÕ\†½È+õ}-”¼Ò†«Åîù1ÖwõãÁwø�–Øl?v;��ÇZ°FÀÄŽaMØ%ìˆÏ�'й1-VÁ' úþ�3S^5©C­C·ÃçÁ>�ÇŸ‘'_,¬iâ™a† �éwk>“-âŽÅtrp„»¨|ïWn-oŠ=a\ø¦[˜ €wåÀÀÀáoºuÀµCéü¦³J„ËêÏ•re’|¥—?€ÔáJÑFpﲆ9Wàü@Ñ $ƒ)°Î8O%`:˜ €"PV€5`¨ÛÀN°ì� œgÀEpÜ÷à\é/A/xú!!4„Žè!ƈb‡8!D ±H2’Šd "D†ÌF"%H²ÙŠÔ ¿#‡�Èy¤¹ƒE½@½\}¿úeõ ²†¥Kƒ£1W£Bã�Æ-�>Mº¦£f´fŽæ2Í]šç5Ÿk‘´,µ‚´xZ‹´¶i�Ôê¤ct3:‹Î¥/¤WÓOÓ»´‰ÚVÚlíLíí=ÚmÚ½:Z:cuufèTèÑé`` K›‘Í(eìcÜd|a8ÂÄÒu#®Žx¯;R×O—¯[¬[¯{C÷“S/H/Ko¥^£Þ}\ßV¼þtýÍú§õ{Fj�ôÉY©>[|:|M|9¾U¾�ýÌüx~ÛýžùÛøgúïöà 8ðžåÉšÃ:ˆ†¶i%mzlœ\Üâ2+äx(!4w&øÌɳþg��ó>×rÞóü¡ î/º^l¸äréà.lsmk¸ìv¹éŠÇ•æöqíG¯ú^=q-ðÚ™ëìëoDÝh¿™póö­I·:nón?¿“}çõÝü»ý÷æß'Ü/~ ñ ü¡ÁêÙü«¾ÃµãÈ£ÀG—Ç=¾×Éí|ùDúäs×¢§´§åÏŒŸÕ{¹�?ìÕ98`¢LQ¹ªÀ÷n¬é˜fé¹išüðG?ä·O>Ž¢ë´k–®ßÌ ·ßÍ–-—#ÄL½uú,æý÷ß'—Ë¡i>Ÿ†a 4McÅŠ,\¸pVõ)ŠB<gÏž==z”@ ÀÚµkY½z5>Ÿ)g?劢püøqž}öYE¡££UU!‹qå•Wrá…Îe Ý1‹E„¨ª €®ëhšÆÐÐ�<ò÷Þ{/ÍÍÍSöWQ’É$o¿ý6o¿ý6###˜¦‰¢(˜¦I `ñâÅ\qŬX±EQf»(žu“¦‰„P‰”EQLÃy'ì¼ÒS� ™L’L&g=ßµµµÔÔÔ”å׿<³g˜4B>�!!äôf®IA*™äí=»‰nYNý¾CüçÅ*}'[裥µ�•+V`z1jŠz2™ ‡&—ËÑÚÚÊÂ… ‡C úúú8}ú4ÇŽ£¶¶–ÆÆÆi'\UUúúúø�ÿøÞyçr¹Bjkk¹ñÆùÔ§>E8žÕ¢ !èëëãù矧³³“cÇŽñûßÿÃ0èììdýúõ¼ýöÛ(ŠÂ¦M›f¬Ó$!###<óÌ3Ü|óÍ´··°wï^ÆÇǹꪫX¹r%o½õûØÇ¦¬ï½÷ÞãÙgŸEÓ46oÞ̲e˨­­EQ …‚»é<üðÃ,Z´ˆ[o½•¦¦¦iú)Èg’œîD7LÕGgw7Ñ Ÿ‘áLá§¥©žÞc‡‰gt–-_FЯ11:Z�†: ¸…ŒŽŽòøã�#„@Q”I-UöAJ‰a|⟠­­Í}^D7`E»Â'6ûˆg$¨ |*˜&¨šÓÙÙÕ'í�åÇSÔ›šÃ ¦TèŽ sòÄ Ö¬^=#‚ �ÇilldíÚµ$“INœ8Amm-+V¬ ··—¾¾>êëë«R&!º®sìØ1xà¶oß@0Ä0 b±�>ú(555Üu×]³_±Xäå—_¦­­�W^y…B¡ÀE]„¦i8p€'Ÿ|’Ûn»�íÛ·³páÂi‘×0 R©RJÆÆÆøÙÏ~Ɖ'¸þúëÙ·o­­­twwóÚk¯±|ùr6oÞÌC=D,£¾¾¾¬^!o¾ù&Ï>û,7Üp—^z)}}}ìß¿Ÿb±H4¥««‹»ï¾›±±1ž~úiî¿ÿ~¾ò•¯LI•Eáø�wxð±?ÐÙÑŽŒrëÇoåÀÎÝüê7�±|ó�ÜqÝj~ýð£$|ä&¶¬íæ7¿úWÝz�õ5HiÕÓÛÛK8FQúúú\$1M“Ë/¿œ-[¶”Á†¢(<ñÄ?~œ®®.ŠÅ"pDU`i›B$(èŸ0Iç-v-•—„‚å õaACDð‡½ºµÓÔ'¥¤®®ŽOÝq7ÿë_þ™Þl†ÜåcÐôC¦ÀÒ?ŸgllŒ\.ÇßýÝßñÆopòäIþæoþ†ûî»�7ß|“ .¸€ƒrùå—O x»wïæG?úº®“Íf§©© UUgß¾}Ü}÷Ý,[¶Œ}ûöqà 7PSSÃÀÀ “êmiiá«_ý*===ìܹ“W^y…b±H]]>Ÿ�L&C"‘ »»››nº‰Ï~ö³ìÝ»ŸÏ7åZ±Ñ1º—¬âÚË7QßÔBcÔÇ®‘ëÖ®&[È“I&‘jˆözãcüðÜ­eõÒîI›¡ªª¼þúë8pÀe# ๹™�|ä#“òƒA‰»wïfÕªUhšv~D>n¿ÐG"+iŒ ’Y‰P„ü‚HzÇ$7mÐXÜ¢ðÒ>�£C&S‰Bò…cÃýÜÐ^ä’Æ?=h_¿åðIšû^å¡<Èé{¿ËM7Ý4uߤtyñp8L2™$ŸÏ£(Ó4‰Åb. ‹E Ã@Q0RJž~úižzê)÷yss3_ÿú׹ꪫÈårîÕ××Çûoÿ�ë®»ŽO~ò“„B¡ª@í°Aáp˜={öpÙe—±xñbžy憆†¨¯¯çúë¯ç¾ûîÃï÷3<<< àY,lj'B”}¤”¬]»–½{÷’N§éììäý÷ß ¾¾žX,6‰bJ)Yºt)Bžþy¶oßÎõ×_φ ‡ÃaÍÝÈȯ¼ò ?ùÉOøÒ—¾Ä¦M›0MsË$™H°ÿÝw)&‹gøì¿Ê'î¼›í/<ÉŽ#:¯bÃÊ“Œ§têD†ý#y>qûJÆÇ'h¨¯›´©ªªŠ¦ielÖT²©³Ñmݺ•ï~÷»,^¼øü ˆ6.T)èŸ Ù‚µ[ S°äÝ€µ] ù¢Åb¥ó3óY[Ÿޱ—Χ—¨t† †uƒèµrøÕ7ølûOÿúßèììbãÆ Ó²[® WøÓM¨ó.�N³}ûvW@èììDÓ4LÓD×uêëëilldpp���zè!ÚÚڸᆦ§¿¦i¢i“—JÓ4·ìleš™³UlHi Ì+V¬à /¤®®Ž={ö°ÿ~r¹ÍÍÍ\tÑEÜu×];vŒh4:r€iJ–®¿�omø«–-à×?¹��ïdͲ¶.ñ‡¢ÜrÛ]Œ�äç>ÄÊU«yü¡_P45î¸÷ó¬\Ø>«þO—œ�΋%%¬ëV¹zõôÍå‹ðÏÏçÙ~Ô@À´Ôctlœ=/<Ê=ÝÛú%KêT–×ÀÎt–ÂDŠãy ¿f²9<ƳO?ÅÚukË´#S%UUñù|a�Cš§K¦iR(Êž½ûA.»ì2âñ8�>ú(ããã.�æóy<Èõ×_?ÅœIš››Ù»w/ ,`ÇŽÜtÓMD£QjkkÉf³¼úê«455¡ë:­­­ÓöÑQ0†A±X$“ɸs¹ÿ~ˆD".K�ÇY¸pá´@½xñbLÓä±ÇãСClܸ‘h4J__?ÿùϹçž{XmË‚3*€ãGö3”�Ð\`|"΂Åaw>L[KUÌ¥xæÉ§Xºa MZœPcÑÔ(}ƒã¬ZÔ1im ÃpÛö~¯6ç‘H„»ï¾›®®.kcšqõÏB’À¡“ë×Y²Hµd˜ðìž"ïœ0¦T÷:IQŽ;FC¦�YƒçN¹k¹Ÿá¢†Ù;Hl_+¢F2 ÇŽŸ 611ƒÅš ¶¶6êêjÝß~¿ZÊ#¥$ ²xñbŽ;Vö.•J±ÿ~ÆÆÆÐuÝÕ°€˜Ñht»æ]Ø®®.„¬X±‚£G�ò?ÿçÿ䢋.bíÚµÜwß}¼ûî»ÜvÛmLLLpíµ×N+ oÚ´‰ÿþßÿ;RJFFFøÅ/~áªekjj¸ú꫉Åb>|˜�üãÄb1‰3ìúÖÜ\rÉ%\ýõ„ÃaŠÅ"W\qƒƒƒD"‘Y!‡'‚µë.àÀãOñÓŸ½G}Ëb>²y¦aPßÒÆ=�FOákèäÚ+/%;ÚËî½OQ Ô³jI¦)Q”7°~ýzjjjÊ„ôE‹MÒn9J–ÆÆF®¼òJtÝ’ƒÏ‹µë„Á[G .[®NB€±”ä÷ïé<ûN‘¢15åðflt˜}#9R�²“�•×r馋¹¹¡½Xät_/§O÷±¶³öí'•JM©=±v'ÓEK�”.@g2™iØï÷sÇwÐÛÛË‘#Gܼà¿þ×ÿŠišär¹²:/^Ì•W^9í8ƒÁ ùÈGغu+·Ür »wïæÙgŸÅ4Mš››¹ýöÛ‰Çã¬]»–ÖÖÖû¸`Á-ZDkk««]¿~={öìaùòåtuuñÒK/ÑÞÞ^U@¯–zzz(‹üò—¿d×®]|ùË_æÂ /œ5r8ëбp9ßúöwÉå‹„Âa4UÁ0 –o¼„e$Ò4hé^Æ]ÝËQA¤s1_ýÆ_ >›å4M“öövÞ|óMjjjX¹reY;§OŸæ¿øÅ¤¶c±7n,ÛÏ‚Hå$÷¿Ràà€Êšn•°’Y8>j²ç¤ÁÉQSÎŒNÊç œÔëùÒç?ÏêÕ«ikkçСC¬[·Žƒ²tùJnûÄ�¤Ói<„ßïŸr¡jkkB¸y¬|%Þ^Q—í¨¦y2M“eË–ñ·û·¼ñÆ N ���\qÅ.{2Urê5 ƒW_}•eË–¹À\(gýúõ\z饳Bo[===|ík_Ãçó¹üöÊ•+Y»v-ÃÃÃ9r„;ï¼sÖklš&ªª²aà Ã`áÂ…sB'I)Ñ|~jüÏZ”ËOÞ�_J‰¦ùÜïÎߎŽ>õ©O¹ÊjíT¦††š››Ï?‚X„xFòô;:¿O·,¡ÒÎ1³•ÞI†a°qãF®¹öZZ[[Ù¸q#ÃÃ#(Šâ.¶“†‡‡ñù|S¢¸;ÌTìN `ãÆ�“§r»»»ùÔ§>5©ÕÚt4=3%)%«V­¢««‹#GŽ000à²_Ë–-›ÖÒ=S½•KKö„B!n»í¶yÕ½qãF6lØ0;«ù ý;ÓÔÜÜLKK˜ڬlWŒ&sgÕÕD0”€ÿñ”1¥«‰Õ›YTf'U�ïߨ°®Û’UE‹Å) ö$è –R’J¥H§Ó3 ±Õ;øáI^Õ¬“æ³C϶-8;@z^Ó4ÝÖÀæ>¯¼½OZxÔ›v…Γi«• ñª%é¬É±D3ºÔfM¦í¤€‹—Zk-ªSz.€9ÍBZy¦œy·žq¬SMÀ_Ò¤¹Î¸œû+!ÈfsŒŽ�£ªš�'løqòL®D õö�Z*M·«[»”HÂE믓ö_)1¥i H¦^äÆ-„ÃaΙr~>[óIs[²¿ È™¥³ˆ S$EQˆ'R>~Š@(„",EAÁ†m¡€�ž&,ž_óù*Åae”�°ÔóÎâÙlAVšHSb¦BE(êY#Ó3©~Ïf:ó¦þ‚4³Os™m9¯²BUEQTEEQ!Bµð�´�\AØpH‰¦(ª§q&o7,¤q»'K*PILS …´«6˜ùNŸC×ÎÐÍ·%QåÛ‡··ç?UŸ•Ù £ó‡*oí[ŽEµ@^€�Âu«·3£)ªâuIî0íŽpS�3®:ͦ"¦ag—g• *ʳ€@PhÂWQªù } ÉÃÓž¿>œkd<“í¢Rš=ó6æ;Zá�_�‚",Š¢á¨P¥C J›¼VÍ•B¢Ø;·‰‹%¦óζHK.Rb"Q�HéåÅæŸ$&C…ó§É™Y‚ˆZCwp!õZcy^i’NeÐߟ�P(4+·oJÄc¨šŸh$<‹þM^´b±H6›u)k $ðÏX—7¥’ Ljk¢c”³ö‘ªÖÛá¡!„ê§¥¹qžuÌ”Êû&„ �J26££³MUÏ+M­> ¸‡«„"PaQa}wÃu´Y³T¢%¹C",›„ýݾ@ª®xnýoJ‹b€¢ ¥ií ó^ÈR* p,{C.‹5¡�‘ÍdX^K½ÖàR’b¡À±cGÑ|4M%—Í©­cAw7š¦NiÛð.&R›ÇŠR�XZ©÷Ô£TÔ)„ §·¯ŸhM †®S,iïèr�R8TØSÖùîÌY"£ˆJ]m�³œdÓ)†FFéêîAS·o�•ß«´”Y=¿³t¥çU*ôfš¢ÂùØUñ¨�«­GÕ5:›å�{Ç [Q”’ÐŽÅvyÇ¢)ŠVš<¼¼¾@8V<‹*L¤íÌ'1ÁS*(¦i ?ó]ÁÌÓŸ?U†voÈ™Y }ÔjµÊ v]ÝÔÕDȤS;zŒ‘`ˆŽöV&ÆÇˆÅãE¥¹©™h4B.›adt”bQ§¦¶–æÆwA Cgdd„P8JÀ§2<2‚®›Ô74ÐP_G2#�ÍQ(hlj¦&jQÓ4ñB,^¼Øòäôé>"ÑMedd˜l.O8¥¥¹ Ó0!›+‡ini¶Q`𣣣¨ª�t2ÎèèªÏO{k éT’‰X ¡¨455Ç”&ÙLÍ µµŸëý+üÕ�¡ëV›Ù¡P˜ææ&4Í9'¡366nù …h8„DPW_G>›%‘LS_WC,C7 r¹<ÑšššIÆcäòÛ­_¥µ­MÓƒ˜¦ÁÐÐ(†a¹ÛDkjinjÄ4t†‡‡ÉŠÅW›šP§0Äž<”�ÂÖ„m¸–Ä^‚;Šª©¨ªŠªj(ª†ê~TTÍþ®¨¨ªMõ¡¨Îw U±Ê(Šê~„��%~oöAAæÈ›¹2ä𦴑²‘LjóWQª¢PSSKSc=©TŠDl‚ÞÞSøýA0tNœ8A&�¦÷äI²ÙáP�¡þ~&âIC×é;uЉXUœÍÈè8þ@¿ß‡ªªÒÉ'OöâóÁ48qü8ÙlŽÁÁFFÇ …BÄÇÇ8Ý?X6g±ñqÉãc#ŒŒŽ�FI$b$’i(†aÐú4‰dšP(d!bM:“#ðsº¯�d*Cl|Œ�Á!‚Á ©dœþ�arÙ,Ã## »LÖ.sŠD*Íà@?£ã1Bá0c£ô÷b8žçŠ ŠªXp«((ŠÞ}(ªfÁµªZp®h– âÒ )e²ᱡY²R+BZò<E*HE±¬Ø¹¢Ä¦Ír3ÎŽ(C)O’¥š¦!³:‰xœHM]]]Åd||‚|Agéò%DBAêêêQT�T|œáÁA4¿Ÿ•+V`s¤3Yš"56É5H¦R446ÓÕÙ9­Û´Cº‹Å‰x‚@8êºÏ'’ j#!L]§P,ÒÒÖFM$B6cldEÕX¾|95ÑÂÔñOÄi¨¯g¸¿�P´†îÎN £ÈÁHg2¨ŠJ[G'-M ø}*§F0 Í–/ÂÚ=Ó0(Š4·´R[-Sz¨>]ÝÝÔÕFȦ¦Y¶ƒI>¿ŸŽ®N"Á‰D‚|!Š ±¹™ŽÎT!‹§�„0@Ó|ttv H¦’d2R©m´·6 øè=Õn‘ËûB(Ž ¢Xrˆªºì —ú2ˆ´A¹$Ÿ”ÔoezÛZ.¥eÁvÇ£J0 I&—œ1I$A%DX��ÐãU©HT«E6û J«ç�HC×I&Óøa@·(Ž«F‰vØ@Çÿ ª¦! ƒL&‹_³êWUUUimk'ZSCl,‹¢ˆ)GåÔ�Ëf(è:¿‰uÎDQñùƒÔD#ø’‰$§FGéìî�}þD’Ngl…�ôÌŽDñ°J…\Tú+'O»´[U}$“IúN�ÒÖÑI[[‹Gv°(±ãa:rF•ñ9çŸ}ŽA(%EIîqx|Y’GDEçfÞÏ, «ŠP\nÃYK“«¸à$„âŠX;6¹VÀ²Éq�'0M[ö°ÑJèH©`**ŠjIµ\òŠ�mò ?]�d̓ÍòCH5Jg Ç w$¦4ˆÅ&(ä3$â1ÒùKÑ„†ÆzÒ©ýÔ×F¢µ½„¤¥­ �S§NÒÓÓC0àG7M">‰ä8‘šÊ,2|d¡�gtlÓ°xýp´–ººZ1댄?à'61�P}Œ���+Ô76�J'Ý  ÍÍD>N�î# àSŠÅ"±x‚p$ÂX_?ÃÃÃè…C ‡5u‡‘RgdhˆP8‚ª•ÖUÚÿ&ÆFHe 46Ô“N')èŲù•”UÓHŽ�2::ÊĘ%C «œ¸t •ð˜Òcé¶ïí‹¢¨ÔÖÖ248€¡ˆ��a˜æ9Öt 9lQ@Õlã¡fQgã¢lcV¿ò�ÿü÷ŠRÂ,!„¢Z¥(î_UQ, tvkG5€Ã‘ÙVuÓD× tw¶ã÷ûæ5”°%¬F0¤uhůøiô5³8¼œ¨ZK9ÒYgÊ KHT}~zzº‰F‚ATE�Ç1L“ŽŽjkk‡-;�É­­³„FÓ$ ÑØh �…æ¦FR‰éL†p$JC}=Ò4ñ„CÁÒÔÛ<¼Õ�<ùb‘ºúº:;ðù|„Ãa²¹ ‰DÕç§¹©¿ßG2™ •J‰ÖÒÚÒb¹nû455"�Š:uµµHÓ —/ÐÔÜLÀ§‹ÇÑMÓb[ÂAÆÆÆñûýd³Yü� ��ø4ÕE\ÃÐñCD"aRé$ÉTŠP$B[k+š½óK$†aRS[ƒ¦©øý~Š…©T @4±ŽÍJIMM ªª ‹„Â4U!  1LEQ‰D ÑHÓ”ÔÔFQU½¨ G¨©‰Ú°¢ã÷(Š457Ÿ!]A&�adl‚@0ŒªihùZ±¹Åù.J‰øãû}Ò¡ÈeîZžŽÑëô'¥‰iJ¤´Ž4Å"E½H±P —Nrñ…ˆDÂó6‰ºÔ]$ñ)>ÔYYÔ+U˜Ò¶rZ,I ±µkõTîwæ°sY”j±—ª5gàÎ;›Ò‹ÚÚ;¦4ž�Ù)Õc,PËIцSËåDµ9ŠGY`•Ñ–ÚËb«$`ïØÂÑlXnÀ¢DN\%‰P*B)ÅKuúsF‘³•ÎÖý©!Ge¿§îÿY—÷סŠ»¡ƒeÞpT½ÒUùj²ÌE@ñz$–QáAKOlº~ó¢Œ.rýù¦ ýç2¯â ËŸ¿t®g³\ÙXR2•X*7\×À¡yýS¡t�u„[Øu饌 •»I:u}psý'“æ7G³eïÄŸŸÍ47$<_°â €‹,%v§dÛ%r’Všó’.[€�6[e«uˆM �ÊOU9Õš&d2Ù?YÒ?ßtîûL(ȇs-Ä<Þ̹ !Èeó–ôì©Ö9 +¥÷èm¹(¡!=Áµ¨—4F¶VËÁ�õŸs,Ñc°s‡eÇ&:WA>léO�bÎ}MÎßÏ~KŠpÌŽ5 e'dir=í;îî“ý¥lqÜ9!%÷»ÄÒf9�˜.ѱšrðFQ"‘ápè¼Më™Î/‚|pΟ*’!Èär%iÙ=sîhfÅ$ÖÊI¶LínôЍp3ñZ¬Ì%�—ýÌ ´&KçyžïÏ�‚œjq¶çoþÒÏ|{ýá °¢êOï9ç·—1Ò,¡ÜÎ ú�Ëh¹‚yI)³¸»|�tÊþé ćcáþüÆîrß“~Ðã-SQá%B𨧥Êúª!„EA„ißùFɶsJz W�©˜ ¡|fãÏ*�׋?¹ŸÃŽÙº×;A¸dÄ =êªw{G)(CùqüB¥óJ‚�p¹­¹�™b,Î/ö%ŽP:êz&èçÑÍ•µå ):_噲”NHRpœ?åœë›iަó<›íüÍ*}÷È2*âtR”Cƒ£ v´¶š{¤Øz[68÷”€³hN% v[8÷¸A{åœù¢‰‚d|œ¾Á–,YJÀ§QÌgxõ­í¬Û¸™¦ºè<ãÑšŠ:>Ÿßà &F†8ÑÛ‡nš(ªJGWžs³éo&9Á[»ßåâK¶ øæ Rš;r„±‰¸u¥B(Ââ%‹­£¯³ê‡@ϧycûÖoº˜Æšˆ[N/A(îñÚê¥+ÏhLÕÑ9OûìÓ¹"=ž³&BHïÏRQùÓz xùEÛnRÞ[¯&מ¡ÒßòÀTiz^ã°í¥çøÿý÷ÿ‡Ã'P½�ã�7^'žÎâXù½Ñ¾WïýÞ¾)ŠB|¤Ÿ_<øñL®¬ìûÛ_å‡÷ÿ„·wíâÅ­Ïñ�ÿðÿðò¶·ÝúÜà žÞ¢8ÒýžMÇy}Û62ù¢ëvãæs5)¥¾•~˜zŽßüêç<öä3ìÚµ“ßüêçüÓ?ßGßà˜‡Â•×ã¥zŠ¢PÌgx}ÛkÄSYëà’m)~å÷OðêŽÝ(ªêÆL)Ýã¶NŸT[ÎTœCfžsLÎïs–Î_æœUñ4ëÚ ¡‚cr|±l€+i§\fË­Uzb•âãzã@y<“ñ A.çÝ÷ÑÚXÏ®�ï°nùB[wm°í�/²56A}K'7Þx=µA•m¯ÿ‘w÷&®ášë>ÊÂŽ&Þxý5–¯¿ˆöæ:v¼± -ÔÈé;xýµ×QC |âã·ÒPc©¡u]gᲕ|õëß@1Šüñ÷¿ã‰G~˪•+ˆˆ[·¾Ààè�=KøèG¯¡6dïî·yý­˜Bãâ-W² %hGîÚÿ.ï>Íu×^Å©Cï±mû.„âÊk®cqg|å&b D¨žÛn½‘ _ º©pÕG?ÆÍ×\Dll˜ÿû¿ñÄ3[ùöWîåÐ{»yõ�혊ÊW^ÃÚ•KÙ÷îN¶½µ•‹·\Áòž&ë�ªpêøaÞzçKº;xéåWÐÃû¨­­cyW#xa+ýÃã´w/â†ë¯ƒlœ7ßÞE>ŸãtÿKV¬åš«.ǯ©JViÞ e×óà Jèž2µ3ºZ\�â TùÁ0;³ÇQÅ\ÎU�I³Tq¥¡ežI '� -CÜ{÷'8ºÿ=Æ„¢�˜çØÉÖ­[Ë�ÝÛxê¹Ù½ý5ýÝVV¬]�¯˜à'?ý9c±8;ßz“±XEÀ»;ßæàÑ>:º:¨­­eá¢6P–S@E|þ —_} Ñ€àÄÉ>{èAžaÓ¦ xû+<ùÜKœ>y˜ŸüìAê[{èj­åñGch,Žªî}‡Ÿ>øáú&&ú�òào~K÷Ò4„üâA††ùý³¿ãÔHœåË— *Š7ŽŒ¥  -\wÕ• õåÄу<ðàohêZLgc„ñ Ž?Îo~˜Hs' ;yó�7ÉŠEpêø!þãg¿Àô…éî±�¶ŽNZ£<ñðƒì;>À…^ÀÁ]¯ñØ3/�ˆ�òÈÃ1˳zÅ~ÿ»Gضóý)¯z˜$Îösæ 3¯®9ÇÄœT|Ã~jQ�Rá’Ê×"Á¥CC޳¢éÒ'ÇùÝt—Öc…qÉØ\…?)uvnߊŠBll€ý‡Žqñš.‚‘zn»ý.½`a‘ãé×Þ¡0$ØxÙ•ÜxýuÄ7¬àþáéCÕ´2vHõùY´´‡Æ¦FÖ­]K8à›Þ鹪jh>ñ±Nô òɯ|�‹V/%hfxæÕ=¼ÊSÓ¶„;>ñ14 6_:Œ©g<Í�~ø#n¼ã3Üzí^zòW$r™d]Bllˆ�¡qêšš¹ýÎO²jQºnT™$k§òûý(;v˜±X=—B/š¤F‡§¶&ʱǨY·šnØL(à'çÇ?ø—]{+wÞz>º;ÛQÚ—ÒVâØÉÓÜñ¥ïpɺDE�Çþ°�ÌšnZ»ð‰OÜNWs ý'9xp?×\¶i~x.óŸa*·ê9^½TØý„«ÉÑ*M:%g.ì`pà1Å{ „Bº·�:ëZ6ð9^Ar|ˆ÷¥¦µ‡w÷î§6äí]»¸`U‡¥%óÆƒ¨œeQ§iêMúTÇ´¢.šÒtÏgW¸x"a‡?ôž8J<™¡µµÁ¶ïˆRÝ^/›L+Š‚ h tqäÀ^ÆW�€P8Lk[šhážî¥t´Ô[‡tT¥t�Žg®UAÕ4Šù{÷í%TßFÐ¯á „hmmů >ùé.–-^̲®/rèðaöìÚÉ[;Þá[ßø<ŠPX° ‡Þc‡� §µSš(xÏ�{’˜Œ Z=홥IJáÆ õòG® ÇYÑc w�–Ú>ñ^GE<Á©mÕ°Û¸¬N-æ2×B(ìïd¨…¿úÎw¨�„8¶o'ÿç'¿¥ø r© žzì1²c³õ™XrÁ•¬é ñËG·ò\s-ýGÞÇ4ÑÓÕŽ&øý ŒŸZÀ®w÷qÍÂMh>éxŒí;vñÑ+/#ä/E¶ï?y’¶þžlb‚mo¼ÁÚ /gíê¼ÓÝÎ�>J|h/<÷K/¸’õk–òâ äñ'G˜,oí>Ì=wŒº¦V>÷ÙÏñèÏ~ÌÏù7^¾ÕÜA"�#`¤8|r„%‹:-5r•H†YàÝ=;…N>À»Žñ…o|‡µ‚ÿ‹Œ'R4áýC§èéêä…çŸe麋X¶d§·¿�nè„jj¹ëSŸç•'~ÃÏ~öK¾ÿí¯á÷ùyoÏ;l^»’%‹ºyê±GI�^Ì‹¿�Ek¶ ùì;ÉoyŒÕ [xmç>n»÷Ë(¢ü>–y-ê‡)I‡×qd�2¦Ç³Á–p@ýú÷þËß{N:¹¥¼÷’»{E¸÷À‹i°6MtÃ@/äéjoÃïó—ZžÕG200È‚e«X¹t!ˆÔÔa 4¶¶ÓÐPOsc-G�£{é>~Ë ,\´˜š `ÿþ(�îüä�tw´ÑÚÒ©Lj§ ¬Y³šeË–³`Aš� ŽN°xé2ÂA«ºn�J¥‰Åb¤sE¶\ùQn¹ñBÁ ‹—,!>:ÀÑã½,]½‘[nº†––6ºÚ›9t`?±tžën¼‰e ;1LXµf«V,cpà4+Ö^Àòmì}ÿ}âé_v9‹ºÛÐ “%K–ÊÖ/ŸË’JÆ™˜˜ ­ç“wÝúKˆÖÖÓÑÞÄ�ýû�%Ù´ùÖ¬ZŽŠÎ¾}ûHæ n¸ùc,én§X4Xº|ëÖ®fld�†–v/XÀÈP?ÁÚ®úÈ’cƒ9~’E+ÖqÛ­7PH޲÷ðQº;Ûè;=ÀE[®âª-›«Ç7þ"ÇŒ�%éL†±ñ�`USÝ Ž†°tNÄ‘±íoñðGï™×±QâÊ#Nô°‚6˜†‰aèn<Úb1O&góë'Ý�7«Áz eÞgÒVK aòœ0õÎ%›Ö³Ò�SŽkŒô¨T�¼•¸Ê«Í¬öM7XƒS§bÇ ö¶ ”µïjD„gl“ ñC–fÓ%!##£8r‚šºü>?šÏŠlâ„ ¶›‰êÊ#®%Ýr2vÄ�rƒ¡×¾ÜˆX:/R22yÍ;MuM³õ×t¹:é¹RÍYL¯Y–2– ãÕ~:‹µ·NoÙjß½GH'—‘˜æôGL§ë‡S��iØn?Ò‰%U*罯4ß½u ASçB>u×=„ýV”My®C€~@I¸ü”ÇSĦ.Að Hë<Ȥ8�Òʞʉ<èTàì@N£Ò~¯Ø|µ…�Îi șҿãClL�’`¤–•+êfuëî¹Lç=nî”þ/#¢$”hÂSXxtð`“­ù‘öÇËŠyµBœ1ùÓMgs…«Lâ9 {W5½7$U:«ý %9ÍsY™ÉV49^èå1,ðwÃ�Lr1qO\•¨ˆëNâHû²da·æ¹‚ ûK²Óì¡MÈ*.sªá,të<#Ç9ßTCó Ø•.R/)o^¬Ó€–ÍO–—w͇!*ób± …^+º@üCª¤³  �íîüù79mgÄß­?Ôk.8{X&Kµ«” K®pc¿•^vΣ‘qɵI:“ùÀyÚÙ¥ЖéäÏKcÀøÎQšnÚaÝqâöC:Ê ûÈŸë5‚«°r�FsoÒrGP’S i�ÂÅÁ!›¦xÏ„8ŽŽžFðhtþ’*SùœˆªOÏkÎyú é§ëåü¶7váª^�>вÅ�4a3¼®ànS ée±Üóž#R¢¤:t\PÍ«¢7hÃ_ðcªTI>lsu–·üŠÅB�ÍæJí;J¦2¾ª¢Ý¹@ š£Õ’vEŽ;‰çŽrÊAD¹|b£Dú‹<2«äÝ >,ILñæ�È‚8²¸' »W”¦L€(û_+U"JŽy¶§®«ÞõTQ¦!sðú·H Òy0•³{oúŸZš-ë4Ç›þ$Ó)  2…’ˆPæÕêí ƒ9¶Ks�‚.rØ:)û¬Rx°¬"pC™ë»ƒ©’x~ü²‰©”ì%ÿoMް?W`?[f•ùÖ#„LÉE-¶½Ã«µ¢œª”®ê³…tç¬Ç¤@ ÂKpl¶ËeŰÝÜñœ@´wEÁ0# (Îs2Ë”_ÂòןM= :¡½>ìéO ‹UÓ¹¦^.Åt”HT “ Ÿ]}µ È–ÊA¸:[ë‘GîvЧ?!m4ŽqÐVìQVC“™†’9±äó踴ÌÕáD‘€`}�JÐg=‰”3@“”PÜr�QÐùÝ;iý/�´?È4¯Ý^BMDpóF�†€ä¥÷‹\µFcU›àÝãEÞÖ�»°ª[å’’Ã&yÃê¢säë´P«gWò©”kä°êõR"é´§”?«,_íYÕ±Îk†þ´’¬ò™)™6-UYÝ"ÉIÁMk�M ×®„Ѥä–M* !s^‚¬øåhfKU”!8¡GÝ‡ŽŠ×6«{΢ÛUNbª½b»(»zm~IÈf {+ω¸ÊÇ.ñséR…‰¢`M§BMHáµ÷òý×­ÖP1yó@‘£qÁuk4BIgƒàTBpýF]u00¦óônƒpTåúÕ‚HPåX_�Si…ëVkøUxûp�×�Âe«5Ö šk†nòÌ®"'b‚KWj\¾DAš’7Ù~–u©Ü¸N% Âžc^9$YÒ¥ñÑÕ* ö�,ðòAIѬp¥Ÿ÷ìüù'drà÷ j‚‚åM>n ê‚’¦ZÈLtsŽ<–§îR11DÈz¹$+B@eQáè®DYÅ൉8¿¼INÚ«:M÷qË|š Ô„ h@W³Â¥‹ûO)úU>s™ÊÉ�ïÂ'/óÑ48:lK�›7ûXTkðÒ~�ž[ QÁU«4FÇu†s ŸÙ¢18Zd÷)“Û/ö±²ÅdE·ÊÝ’·ëÃ*7­,ëTùÔf…ƒ§Š�›/ÐXÞŸ¹\c|¢ÈŽ“&7]ègS�ä¶ÍÅl‘7Ž™,ïTi•kòþߎr†�P`Ïq�Çß1ÉéÓ„BÑ’KÇLxÝ$žŸëìO ÄJbƒ´£®—‡ÿ±l!šcä³´º‚r¿ªÒ� Nr<~�s²¼¥3ßóI6uŠFT¾xM…°Ïä·ÛLÚÚ4Þï-òüû’K×úh C}�J�ß/¨ @ï˜ÉâZƒÓqɲ6A.!XÒb] ßÓ¢°oN�ê<õŽÎâ?ÍAMXÅTP5…žKù°ûH�W ´�Ê–.…•‚¡Ñ"Ï¿gb*Evt4«tÔ@H¥Û'PTAW½`(.YÙ®‘1$ÛŒg•r^÷/iæ$-aÜÙŒ;œaÊêG€g“¦Ä¨Ò…Q®gº´’•ª \w’²û==�µX*é>+C"æG�v²9“Þ-0˜Vˆ§Mâ‚ÛÛÁp¸HÈ%'GLRE˜�,î*i#LF&G‡qI6+10<‘닺¤wÔ$^� Å­¼� ¬ÅQ„pQÝ4m™ÄŽmðYU É©Q“ѬÂ`Ìàä0¤{‹jRXÕ¥ò…�øø·çó›PP„U¯OÝ–05Å¢ŽI¥dš°a¹Æ)‰ªBÀ'P„¤«EeCüëï ‹ŠÌQ•5Ù•¶tÄJ¨J†q�âÕ>¹FÊIBk¥*LzŠ”î|³Tú¾Ì% ¬mLJ ö÷› %ܾ¢ØŸÃ&‰‚¢&A[ƒà¢…UZÔNU ›—¼ZÒӢІ )´G¬ÝÇòûÇMF²‚Å-ÐZ+¸d1¨¢ÔŽÓM�Cýuõ~î½TãÞËý|ój…TÒ` )XÜ"h®…‹—jpûfË›%£IkfUî¾ÂÏíë >"øÎM~Ö·Z¬Ü÷¯×h ÎOàüsMˆ¡P0‰e$GNyr·N<'Š™„M‘ÔDî¸ÈbaM/w?—†<-Q*qNýæ÷ÿöï'`* �Â#¼x¬íÒV¶™¦Ô¦i`ñTžÞT ¦ðÍy‚„ä‹’c#P0…ÛiEÆ“’þ˜ “—œš€î&•¨Þ>¢sxÄêg2#99'G$>ŸJw£ÂиÁëGL²º —“œ•drprLÒÙ¤Rì>ª³Ð’±'$Ã)�ªXõ½wÊäT zšUTiòÂ{á䨤£Q¥!$Øs\gOŸd"'ènR© ÀË{‹ì4D‰”IRÐôŽ˜äLAØG†$yó/êh' `"-iªU©H¶î589BSYÔ¤ðú�ƒÃ°´KãÆU°í�AΨ>ÞÍ= 2,mH‡ìè“j)hƒý±ÌÎñ[› l?4âºS9r…#ÄH�_»£6vâ`9Á ÃÄ0 ½H±XD/èˆóêàtf>¤Ä”¥]ÜIŽç½óÜ”å¤ÑQÉ:y¼ßMGÅ+Jâ–SΙ S–«uEµ:JоIy�òæ uV«ç/©<9¬ŽÃ–:Þæª†aÍá•ë5V×éÜÿº´µ®ÓÔ‡ VåÆE'inj@óùÑ4>͇PTE±rÅ#"HËYÑýíú½W€µu�ˆ%sGl{'LJÙúÂVÒù¢5—¦Á¶WþÀÞC'‰aš yR©tiPÈgIg2ÄÆF8vü¤;wéTŠt&kÕeyâáßðÒ«»Ü°¥†®“H$(ꆎÉÐu’‰¤ûlú%˜r{šwšSéé øl`Dµ‡1À«ý”e ]…㟥y«’°-ÜÿÜÒkq÷¨j\ÿ,嘯V_‚“G°ïØý_þ–•‹Ú)ä.§á‰Ç‰%Ea÷›äø{o“ÊæùØíwsÑúå¼ñÒïyiÛ Ö_t9¿éNz�ÇŸx†œ®ÓÐÒŽ÷Þm«ó4&Fúùíÿeõæ+¹ì¢ (ÞÙù6;÷ì'ÐçàñS„�Äxöù—Ð¥IGÏrî¹ûúïáÙ_C/ê\yýÍ\¾y£;¯®[›ËbY×)~o'x}ÅB�‰‰k/¼ŒÛo½žûßáÑ'Ÿ-H1Ç_×�^ÈòìïçýCÇ‘.¹ò£,lò±}ç.ü{éh«giG=¿ýío‰% ×4sϽŸ",²<üÛG™H¤ „ëøäÝw³¨«u öîƒW+LÏh�…þUVárIökI¹¶¤q*qG6N)e;¾ðÐáÁþÉOqé†UèÅ"EéçλïeEW/üáEN�<ÂãÏlåòënâö[®ãµ?<Ë;ïïã·¿yˆ–…«ùâ>‡ZL²÷À„}!Ï?ý F ‘õ«W °bæ.[¹†Õ˳éâËXÐä7=Âê‹.ç Ÿ½—S‡wóâ¶ÄÆF8|ä×Ýü1Ö¯\ZŠa;ÍxâãÃìÜõ>—|ä£Üñ±xýϱ{Ïû<öØc´,ZËgî½›€Ã$—I‘Ó·ò®ºt#xa+5Í=¬\²„ .ÚÂÚ‹xö©GIæóŸÿa™ä©ç^`ÏŽmôƸçÓŸfÅÂvÆ&bqhÏ•˜ \Îjƒ?ßÉÃy9¨2ÿX¥Z!i…Óu(€•Û 3juLðüsí %Dñü•e=š3-QÕºúÙË/:Hª¨lºøRV,_ÊÖ!ežþS½LÄ㼿{'oìx„àäñãÄò ×^{‹/åëßú+®Ø¼)u^Üú${{cÜþ‰Û¨‰ÝÉŠFk¨‰F¨olÄȧÐ}u\uÅe,[±ŠË.Úȉ£½&,YºŽ‹6®§&)¶#©9³æÝ(VnØÀæMëÙxÑ%¬ZØÊÁ{Içt®¹æ*–.[ÁÕWl! X׿Մ|¼ò‡­lßõ.ÙlŸ?DM$B}}!¿BŒ��°uëV&RqÚ{–à“Y~è!2¦Ê‚®6Ï}ß”E�óTpœ‹t^‘¥$¨•U0DÎCÇÊ ¹Ž'ïdŸô½¥¤el›tJÚöG�<×¥�RÒÚÞIlà‡�ŸBÕ4ŒbŽ'þÛß=€ª*ø}Ö™ ¡ÁÑš>rõµÜrË-|úÞO±~ÕRd1ÏD,HN=©þa$‚ ]FG�ʳϿHÑ(!·sxFJŸÏ�™Í�H¥1 ƒ‰ñqB¡ «ª�Î=êvqUó‘J$‹¡ª*ÙL’щ8µ5aâ12ù<…\†‰xŠh´¤ÉÄDL“ññ¦{7/¾ò&[®¼†-o§*XF,Óº%JÑ„B,]¹†›o¹™Ûo¿ƒ�Ýx5mÝ ùòW¿Î­7^˾]Ûxö…mz‘x"�)!“N“Jg�R’HÄ)xd¯:�7 ã^V‚cYã^€ËMiŽ›¯#'¹?ê mÏ^/ÞptºîO[…&(=Ÿk2M“îÅ+¹tÓJ~ú£û¸äÒÍŒœ:ÎÉÁ ¾}Ùµœªœ\iÒ½dÝÍ/ó /ÐV ·œ/}í+l^»„ß<øSÞ[¾ˆ=ïîãÎÏ~PX¶r#[Öwð/ÿú^ìl熫.Á{Õ�4MZ;°¼§�ŸÝÿct4òþþ^¾ðõ�‘:µwÒ¸¤)ilïfÅÂNîÿá}\²ùŽÜK^«gÝÊ%œxçǽÏýÿq?j1ÉDÑÇ%—^Fqâ4¿ùÅÏ8°f;ßÞNë‚5Ã0uö¾ûƒ½GÈu õu¶ýñV.ïäÒ-[xbëëDž“²~˵$†�óüËÛÙ´i*MM ìßõ¿}î�|ÿ?ý5/=öKƨãswÞÈ}ÿëqé�wrÍe›Ê"_zöÕ³Œg–AÎ�cºŠiJU*�ÊÔç6›$…-wØ©_ÿþßþ½ë¢å‘X\ƒ‰]‘¥Ù’.ŰvRlWwËFaÖßb¡@W{+>ßÜ�Ucåê54ÕEH$S´tôð‰;ïdqW;¡H”ÎŽNj£4€ööNô,dÍšUH½@ RÇ5×]Ç®–®\Em$ˆ�ÊG®ý(®_E8¥½³ƒE‹³xA7ª/@[k³«�Ö5ÐÝÝCCC+W­& )¨þ0×ßx kW,& ÓÙÝMkKCÙB¨šŸUkÖPò‘L¥é\°”;îøí- ôÙORj\²i=‘ÚF>öñ�ÓÝÙÆ’eË© Ða®ºæÖ¬\Á²•+éîl£ ë¬»à"6_°‘ÎŽv.ZH4¤±¹…õ7ÒÞ\O6—gõ† ÙrÉ…tõtS["›+°ió¶\|þ€Ÿ†æVzº»‡#´wvÓÖÚL8RÂ… ©�†«×ùdzæ‹̈€“=Йt†±‰8þ@о‹Rµï³·ì芫á*±É‰xëàˆ´V {ŠL7ƒ« xØKF±n˜2 ÓÔÑ‹:º®S(äȦ\´qݼn˜r¦(¥ÁIÓôÜð$)Ý Tº±É1þ™v¿Õ1JiåS¾PÇÍïÙEËê§T§[ÞÓfå‚VòùNþ�¯meçѾþÅÏ¡ÚÆOGmì^³ì>3M{ÑpG½ãó΃sƒ–uß¡s�˜U—á–†i·cåUTµÄ"žÐþð%˰<2:ÊÁ£'©©mÀç÷ãÓ|hšåÕ« Å2*“oøÒ\‰(É %5\éº5GÀ(Ý`$³tC�[ñÙp/)ÝÆäM^ÀôÞÆdy“„-Ã(?�$MÓÍS-°¶ûÌVZL*?ÓMT²œˆ )Y½i KÖ`žw²Jÿ÷FÞʺݼLc2‚š†N¹*1lËôÔig~Bk®¨õÁ"TùÉ×tJ÷·¥˜l¦°O–E#©�åͦ#wH÷ÎôRÒ ýÙy�†™ŸÌ¡ð¼ x•x„"CÌ —ÍÐ��~óȦ™Ú+�âOu¼Ü�ÇdQ¦‘Å•G\gE×á°Ú dù-û¡—‚”Œ‡ÂÓ…Iª³³4@çŸÊ]ü|#ÇT†® ·ýPVíßTyή?3gòÖ_f'å5ˆYTY—`ö-¡ÆŒ‚µ˜)פsLUõ³–Ä‘¯È,�ÈŠ5—×íÄs¶£Äx)vfÙ¡" … %gÌdÙýQUÕe_’‰8ECÒP__¶s†òyc¯œ~¿–ÕËØ[ê­”d2ü� šª”•«¼}w2�•72ÕÉåÄú¡•㌰)Žͤ*WfÍpi‡r„{ááüÐC…‰áÓ<ñÄ“d @Jjš¹æÚkéiobÛËÏsrÜà«_ü š�´2`„RŠìæô¯ì¾³”Ý‚ë<+]°R2´y#lx'¦B¦”¿,‹ë j ŒùL‚Ÿ?ð ®¹ñÖ,é@Ùdœ'{”±TUU�¨\uÍ ¬]µÐv‹åcå×[;˨Ó(òÄ/Î’ÍWÊ�²·7É§ï½ !ÍR_ÊÆå1Ì:Ê[‘phßNvâ3Ÿ¼ƒÒ”ŸV®*ž>wU®gò‹r‡±OX[[宦´ÇyH€‚ÔeËlÚ!=@æÚGÜÕwm¥Îo…¤&FÙõÎ;Üz×g¨ª¼ñê+üë¿îçÿúOÍ›·°4'QA6“bt|‚@(LScŠó9FFG „¢>{ÕÑ ƒt*…)Uš››ÐTÓÐ%¯›´´´ðû�¦ÉøØ(™|‘¦¦&‚A? ‰MŒ“L¥ihj&•Ev1ô£££˜(´´´ © ™t )%ñxœ`8JC}-BrÙ cãhŠÉÈðù|g– ¹4»ÞÞÁEל¥]­˜Zšj‘R216J2“£©¹…p0@.“ftlœ`8JSCƒe¥�gdt¿ÏÇØÈmÙ,"›b||‚ñ±ar¹"Í-Íø}š5ÖñQ2Ù¼5.›Â¤’q&b jjëil¨'›M36!ÈgÓd EjkjªG¯²¢ó‚ƒ¹¤©ä›I8\b�\›¡ëù ¼4Ú£ìÒ¹þÀCÆ=tNÚlVu泌È3±¶±h´†M^HWS=ׯåÿá°ý�}4’ /&hˆ(üô'?#k r™,×ü“\ºa)þügï# ’JçøÄ=ŸGŽæ©?¼N4e|<Æ×Ý­ݳ�?Âöwö£ùê[zøÒ>ÍÁݯóÜKÛðiþh3_ýêè?ô�<õŠª¡øjøÂ—¾@OG3Ò½�áá_ý‚ýC`ê,\uŸ¹ófÿõÏ8Ü7‚ß§‘Hçùì¿Ê¢Ö÷ß?c‰ŸBßà(Âõc°fË °vÃ6,]`Q5Ódûë/óÔs/¡i ¡º&¾øÅ/á×Süìç¿ žÉ¡ëEnüø]\¼n ¿þùO8Ü7B$äÔñ^Ö]§¢¨‚ïoçG±S$“I,[Ë>{»^�ß¿ò~ŸŠnà«_ý2éáã<øëßb Å¢Î�÷~¡Xg¶cãCüòÒµb·ßxUUùKT[OV¦Xﲂ“¥„éÓÌòMe{eÇU<ò˜· ¥ÈPõßÿÛ¿÷²!e>E“.®Ìt,æiJ[¿oZnä…�í­øçh(BbÇîw¹øŠ+‰ý‚AzOf"«0’ô�X½¼S qã�7b&Gxï@/!5ÇËo¾Ï·¿û=Ö/ëæ•—^fÙÚ É��äèP†ï|çÛ4M^}ã]ºÚjyäÉçùÌ—¿Î W^Ê_|]‹rèíW ·/çSwÝŽ¦B}m„ßþæ—,^w~üföï~ƒ�„ɦu+(rŒÇR\qõu,ínâ…—_cãÆ ÙõÆKÔ/XÇ×¾ôYúïe`¢@fô$ïå»ßÿ.=ÍQÞÞõ.oùí͵H ŸMòÒ [éæÀ¾÷Ùð$�õQ~ùÀƒl¸ü£|ü¦kØùÚËdd�þÃ{8:˜å+_ù=ÉK¯¾MMPòò›ïñ�o‡�+±ã­¬Ú¸™@1Á»‡{ùÊ7þŠK6¬äÙß=Ms÷ŠÉ²ÕøÈ¥òæ¶W¨iìä­—ž!Ò±’o|åsdޱd�¨_²ïÐöíÞ�¯®‹;n½� _=#-ÌÚçÜ‚‚L&Ëx,N ´�„vTÅbUË/Ø)iµ´ê È2žÔë½â4ËÖ)x¾éS%:{m Î= &Ùtm!² ¨ëÚ÷.ï½÷.ñáÂM=ŒŒŽÒ¾`9‹ºÛA¯gÉ’öN X´t1m­-dzzðÃÃD»Xµl1‘€ÂªåKœà²«¯åÉg_àÇ÷aåºM¬,æ#`/ã§O�5ŠÓ´ïm4 FO±s÷;Y$›+`˜&>¿Ÿ«–ÓØÐĢΎÇR ŒdXºj=�mÍ4†×ÒÙÙŠéÜYg金êcÑ’e,îhÆç�`2ŒLÄ8øÞNŽïÅP4òô 31:ÈS�?J>›¡¶6Lï)ºZŠÙŠ…]–�SÂ’ekX¼° Åh¦»µ‰Ñá1ꕯn…`0Àèxœl:El"Áu×o¢¾¶Žën¹ì~ë%Þß¹Åáÿþ»{¨‹†,ƒ£R2†:ðà5´Î´êb† U6ú9$Y¥p95s¼�+_»&Aû‡VY©#o-’®FËÛn),�÷@âœðcªáIIQ/R(äÙÿîNö8Á®¹�±C;v¼ù*£Y�¿úê§Ùöü“ÈÐXßÈȶ×9=0Ù1z{û¹@û’jËzî¨5Ñ2à ��Ó^ç§ÿt?]ë–PÓØÎ¿òuRãƒüèþ_ÒÞÜBm}=6_ÎU¯£÷Ø1µ¶kŠ¢Ðwt?Ûwíåëßý>…‰Süôág]§6iÊ’ /u‘'ŽŸ �Í1>ØÏøØDÙÙ¤DÓ|l¸`“ËbÅFOS‰réWsấœ8vŒú–v¶�œ¤kÁRîý̧HÇFKd)Lô±óÀ.&bIT=AßЫíÊú{�'ñ“Œ&⬤ÀïŸÛÊe·ÞÃú¥mÜ÷ï?@õù ‡ƒ;z‚‹Ö,åà{»™È+ø “µ]JOC�G~ók:ÿú{D4“±X’ÎŽbcCŠ�æ†:úúNQÛØLMdæ»)'‹Í3ç�a‘'=–®¤L‹f@¯ –°­ŠåZcÇ;¥¤^“Îy*…ñªŠç:ŠR[ªª‘ŽMpÿ¿ß‡¦˜LÄ\yý­lZ³Œ�îFóituõðÇ·Þç·?Dÿ‰ã4t.gíÆÍì}ï=îûßÿL$$U°,ƪª¢©6} ªª²`é*Ö,~‹ÿû¿ ©¤� wo^϶­O²÷ø-uD¼t)Jö žþóô|‡Áþ!n¿÷óv¬+“º¦¢•g÷$ùt ¤å² ù|nœ%¡ZrÀE—]Ì[;ïãŸÿ×ÿB³ �*<*^!ðùý¶«ˆ�išÔÔ·põG6³õ™ÇÙ¿§�Áá îýü—¹âÊ«yÿÇ?å� cÉÚ‹ùøµóÚ¶·øßÿòÏDƒ ±\MUQ5ññ!þãG?¤�š ÐØÅ¦ Öpâ½7xóµ—9°ÛÏxùÉ�ñãÿó¯üöñ§Ù¸ Žg^ÞÁþ¿ÿÏ=úRÁ6>û‰ëù�ûþ�«?ñ®¹ìë|þœ¡xæ\ó=Œ'˜—^Œqd Ò_ Šh/K)p\éEÉòa«Òd‰…²5rÌŒ ÓÔ2ëîÍr@gœf¿"s¨qÆn{,é³6½I�\ì½ÈÓQRy¼C^;ˆ(ûjQ•Ša{ŒBå{™(S÷:r„a.VN⼫=ôpf¢‚Š•–@2år”ùu{Ì@e¾Þ�:óQÁ[W�s·¸,•¢¬.YQ‰”¥‚eGÜ Dù W¶_ÉÉɬänzê+›ïòNV×™§I»ùŒF Yöznݘ‰ÄXIQ¬ ®<å¡$ŠS¶Ö-ÙRx}±ªôÛëúŽƒ_¥»B¼¡¥ãMÓ$�JaèzYuÓÌÏ,^Ìr Ë଑ä ùgèÃ4»{î0uÎÊW³Ï,&¬jŽÉÆ[9XÏ=�™U:# 4MaËÕ$ƒ”¦9Ô´4HPJG¸q¶ýÒ YÍãÜ[.�Sb±Ÿ,á9r[9©.JËå:  …�Ó‡“fD’90l3r?ÓˆÚ³aŦ@1Ë:ªÃû t–ù§gyä¬�QªF•ÄÌEÎER„ ›Í:zV@º¼rH÷¯G#ØgÒ½�sݽQÊqYήL"Ýî_ËŽàóùðûý“ÎiÏ-Í¢”+'Q¶9Î(ÊΑ¦Ì;“z«’ÕšåøæJ…¦Ì~.HÃôuž Ÿm­²j)!4Mó°ínhrÜ`ë—’X5Yï5Ë)ÑfžÖ‘Zé1.Q:DUÞ‡J•Xy7=÷êLâܘ„™³È™¸ò‰G˜‘¦ü9{5­œâT<ª{¶�àìÔ3G¢qNûæ]3SJÛNSn×A*¶ ¤ä>å*t%h^7÷röJ–Ü…çÙ$a™²(ƒ®öa¦Íõ &À{tr2àN£ûšП3ĘÔÎ\´jó˜ÙhÞÎ4MF�ù4U]m{†=3Mòù<ÅbEQ1UEµüå,ÏŒÉì€V’=<<üY¹Òã"<Ž*®þl¹õV©FN~4uæi3žŠáÑó Ç c†~̲­Ù>­fœiUÎȽ|N-MSªJÑùãŒåRd˜&ÙlÓ�‹E‚Áþ(Š%iEÁ±8”D+k\xwaÊnšr˲Ã)L¼¸«‘–àÃ�v’¦ÖJ™žÀfšªÙ·ÃÎ#lÎlX¯9"†;CŠÆgYì«Wæø&†ÎÐàijꉆCSS‹YÊ“hä4ì֙њê<ý•æ¿ÝJ7  ”¢htÝ@ÊÏÓ[ßdÍÚ•DÃARÉ8}}}dó:ÑH„l|‚öc&ŠK.¤£³“žžÂ?±±QúN÷£› ‡1ŠâÉ$éd‚þ�!4¿Ÿ`À_A抳e5ÏôΨôùÀ!©TŠãÇO`&ªªºíú}¬ãÿ:ªªâóû�&ds9Š…¢}O:öè*_güÒyï‘ÏmNÍîe”eÞ£¶ëG"¬^³†®¦ZV¯\Î?ýÃÿ`Ç;ûð¯íâþŸü ]ñ“M¥ØrÝMÜxõ¥<õð/Ù½ÿ~M©oç󟽛gý WÜüIV.nç¹'#Ú±ŠVŒ‡žü�� Äb1ê[Z�z‘ÑÑ1n»ç \¸¢“Ÿüä§L¤òó.¾êF.]¿ˆû× Ej�ù4Z¤™ÏÝû Þy÷=NžàµmoréÆüâ�_"|’É$½õ“´¨Y=É`F¡»½…]¯¾ÊU7‚‘Þƒüâ×�Š„I¦²Üv×§YÑYÃ?ÿïG‹Ô@>�i⯾õ šjçÛxf„˜J«8s}sÓAÎuɧêÓY“•œM똄nèë¶< ³ˆ@!Ÿ+`è&BUðiÛDáDg.WßzÉ£ðP¼=%*S:SPºRzÖ³c¼]�X*9Ã0FjX°¨›‘¡þøÒïÑ»ùÿüÍßpÏí7ðÊ [ÙýöÞÜ}€Ï~ùëüõw¿MWK-±xœd"AQ×R‰™LŽl&�¿¦‰o|ç{lZÑC*'ù«ï~ŸK×-gï»ï³ã�×8=šå³_ø7^}/?ÿƒ#ã$âin¹í.¾ÿ�o‘�8ÍHÊàªË/cùŠ |ìæðûý\vå5|þ _`ÓšE¼µs'Ë7nbÝêe\{ÃMlZµ˜‰‘1Ò©Ï=ó Ë7^ÆßüÍßpõ%kxîùçI¤3$b)nµÛÈMôs¬w`ÊÛ|¥³dÒ™8Yu.+?åuÌôÏ[ÖûäÜ¥éú;›üS•wήdsy©$¹l†|!G&“¡·÷ét MÓ0MA!W$—Ë“Éd0MÃ6z˜]‰çü¹«¹òŠm²äòŽ,¿9T8¾.Óàö´;[Å2Øb¦)üm>ÆN�±ú‚k¨‹FY¶b µþ­œG!�°UÁÂ=åô²½»ƒ¦Æzêkëè�4Ô×ÓÜPÏè`†‘ñ ±‰QžûÝèÅmíͺN¤¦‰žÎvêkUêêÉçuš%Èù|~r©»Þz��;ß&66H°yB±BìkšUU@ôB–‰ŒÎkÖ�DX³v/m?B&“'ZÑF._(ùÄ9³S…Õš½â¢ŠD3GxŸIÝ2¿t6�nê�ÛÆ¡* ¡PÃ�ŒŒNX±ÔÃ4˜˜ˆ±hÑB|~?ÉDÃ>˜Íäð܇ìȲ¢Ï¿Ë¨ƒ³³TÜ(åU`M»-T{i�dËåòd3i¶¿ñGÞ=tŠ ëVÒP_Ç‘CGIgsôžy'W~ä#ÔׄÝëLYŠÂ(MI!Ÿ£¨Ùùú)h5|ñK_bêe¶Ê¢‚Ù\ô4~ª/@­OáÈá#är9Ž:ˆ?´v¹²œ#¤»\«'¢ã\öÕÊGUHËŒuÌ´§{éËäü³ûw6Òôt¤te†¤®¶†ºº:{:ŠÐe` ŸB>K èCS­S•š¦ÚîîÏ Rµ"zM省¬›×+Ez£fOBªªªüfýR5ùT‚ûÿýÿ *&™L�?v'W-£5¨óãŸ<À?ýÓÿ$11Áæ+>ÊE_ÂñÃøÉÿÑ�†!"\rÅU,[º˜ßýö—ìz­™SC#¬øQUËýÀðã/XZ'ÍçCóI.¼ôrv¿³—ûücôB†®¥ëéîØH tç! * ­ím$FŸâ±'žaÉ’e¼¹o+üüçŒ д` BÕèèìæ¥çž¦¹6L8"ŠrÃ�×ñàÃOpòÐ.ÆÆÆ¹õÎÏP ÝÃ;�@ÀŽÙ; ¤8«a@gªKžQé™Ê�+�Ýa±ôBÂ5Ñ ujP(E%_,24<Ž®Kjj"„Ãa4ÕR‹í‡¤ÃF•‘r)@¸bxÉvîÊ–ÖÊ0MLÃ@7tôb‘B>G&•ä kì3éåS1Ó$ó9úìëÇõ �´45b©RcÃô ŒÖÒÓÝ…OS)ä³ôžè%o˜tw÷PW!ŸËròäI¤â£®&B EC'[4hnj$§`@SS#ÉØ¹¢IKsÉø8§úN£Âôôô  “á‘ ZZ›ÑÁðÈ0‘šzÂA§O£K•ÎŽVNŸ"™-ÐÔØ€*-ÍMä³iN÷÷S×ÐŒYÈ©k ô34pš‘±õ�Ítu´¡óŒŒNÐÒÚ‚¦ÀðÈ‘šz¢v@‡©!p6†ÃÒ¯ÉXyàl¦ù×)&}©¨²Úóé¼y…¾S}ü~님|>+LlSS ‘hEQÈf  P( ¥¤¶®Æ:s¿ãàpÉ�°Òåj§gà1}:¿×¶Í³�Š`xh˜·vì"K211A{{�]�„Ã!¡ †a ¨¦)ÉåóøT U–«‰e¸ªÄ�Éâ’”âÑž”e)g�&kNª¤I‚§¤òò§rHb˜rÒ[£ÊyÓ�Uk©äéˆ!ey (;Æ+MOÓ›§œåtþUÀ¼�ªµá"ŠÛRõ4‰Q=§°:=µú ­ì3uÝ4M‚K–,P,Œ „à Ã@óiHi280bYÒ¥ðìVN$wÇß½è½vé™î¥:xSÕ}°ŠFf¦ANõ`zΣ1¦(1íN]^¶Jù™´KS´[¶!ÉÉmOOmÏÎ>&ÍÀå|(’”’|.ÃéÓýè†ánD�@~ü~õõ „Ca ºaGVô¸´»ì†sjЭ|²¹¨´ÁJîù‘J�•YòÎîD{o_š-0LüÓ·÷‘°{•¹±Ø+_îÑ\½½é�¢òv,Y‘gÆN‡ÜsJçŽÌ̯æ©K�-„³bŸ RÔ â±8ª¦¡i*B¨HTLS‹%ñû}H©R(訪bE5)3J�Ò׈ã£ä²ë;Ø~Lî}!LfÃf1M¦i’Ïå ‚8—À‚EMnÔA¦¤î“Y!F ;òÙ Ç�'R×Lwg«‹(ùlÝŽ!å÷[äØ )$gE)FG†Pýaêk£UíUgc&ÖÞŠ™ Ì"�_y£*ûæ þ7Ûdke³Ùé^-XTÃ,+?‡)¬@$! �Ïp`ß´—°qÍrüšÂÀÉlÝú«/½� “ŒqðÐ! ¦`Ù²å4Õ×0К\.ÏD,ÎòU«(¤ã>rŒ`¤Ž•+–ôkeÁMFOsôÄI‚‘ZV,_N61ƮݻèZ²’¥K»] jó  qóg¾ÊÊîVÞݵ�‡~ñ3¡([6­ftx�#G�¡"¬X±œh8ˆ¡9~ø(C£´wv³xA'z±hGy19qì�H=-�59xˆ‘ñÝ ÓÓÙÆØÈÉt†ññ=‹–ÒÜX[I¦fó˜æÑÜÀqê·gIfßQ!GŽåþûïçÊ+¯äÆo`É’%¶›ˆ9c �€ŸH(@4bÅKPU UUÉf³U…\®ÀD,N4¡X,‰„íó e´lòXrA¹ÝÊÙõÊœ‘LíXefg 0��-ô;ĉÓìZÔÎÛÛß©#ô“IŽóÓÞÇX^VMžûý |ë›_㩇~Éž£ýlظ¿O>úÁ†â#Ã,^³™ÏÝs;ªbíì½G÷óÃÿŒ†–ãô/^Ç¥384†_ïåÔÀmMõ®:WÓ4Z[Ûèê馳³“‘�Slß¹‡ÅÍA~ðƒ¬o%ãÕŽÅ|ýËŸcûËÏòôÖ7Y¸°ƒ“§ç“öMMɶW^àwx‹Ï}ñ ì}ë¼øÖÚ[[xâÉgøò׿ÁñÝ/òÄ o±rÍ:>ÞÔNKc-Þˆ1çÏ]M3—œ>:�[‰xœgž~š·Þ|“«®ºŠo¼‘îîîIwC–×+ȤÓäóZ[[­Tºn©ö•¢®#%ÔÖÖ‰„1t]7P\Ö¤ÌA±ÔÓ)‡ä¡,ÂV;u”ml.oæµiLíú&M“¦ÖNV,lá­í»ˆ�óξ#\vÙÅø4…ãßçÔx–o}û»|ÿ{ß%PHðöž½ :—]u#ßüú—9uè]’2ÈÍ7ÝÌU[6óööm M$í 4yëõW©ï\Î÷þúû|ý+Ÿãð¾]Dš{Ø´~%[®¼†‹×¯(#Ý‹•3 „B{gÉx‚�o½ŠRßÉ÷¾ÿ}¾õͯÒdïíÝÇ+|‹›î¸‡ï}ÿû|îž;jÖî²ýÕyüÙ—¹ûÓŸaQs˜—^ÝÆúÍ—sóÍ7Ñ…WßÜI¡PdÕó�o“e=mêãÙàTŸ^Ÿµ�œæ3sy9M÷ÝÍنٱ±1yäþáþ�½{÷N‹ ª¦­‰¢ª–G¯)-›‡066A¡P@SUÛ~fR ÛjÞ²9ö4RvP]–T9®Ñ¬G=—�”ôÆÓ#šwq퉊ÊÅ—^Ê3[_ãe_­¦••KzxïèÉxŒú†&j£Uèjo$™L€â£µ¹M$cqÒ‰¯ÿñ�˜¦ÎÚ5kÑÇ?Ã$žÊÐÞ¹– _£¹µ�H @*™öv¼Œà9¸¯Ø7ÂŽ�­©'Ÿ £³‹pÀ�ÖÔJsm�‰‰1òhôtw¡* \|)˜&ûv½ÌÁýûhîXHsS…\ŠL:MïÑÃ$GN©ocA[+ÙÁš[› ú}˜†1ý|Íô´"ËìY£ó+ŒÏ'™¦‰¦i¬^½š[n¹™E‹yXÑjr›Äï÷¡* º®c „Baþ…bÑŠz"ŠE�ìØ8Š4I$b(“À×=(å¨'qY g�¶¶ÊÛøäð>rÒPu¼õÚ? Ã`ÑòÕÔû üê‘ßqÑe— ø0 “æö†ûOsàðqN�<Êþc´µ¶�}W‰@ÐÖÙI´¶‘›n»�뮺‚Å zˆFB–áFQèliæÐû»éfß»»Iç 47ÕašFÙ•ÐÒºÎøØƒCƒ¼ò‡çxõí}l¾p#]Ý]Ú»�ÞÓÜÿ.ã9zºR½scãc<ùð¯Ùúò[UåŽOžMKZùùO /5š››Y¼b-wßu'ëW.§»» °¯X˜´áVqGŸi÷�jº§[“sŠÓ‘‡™rYÿ›ÒË–/ã›ßú&÷ÿý;>zýõDk¢åsSQ»a¤R)‰8‰dÃ0ЋºëµÐÒÜD(è'—Ï‘Ig�àÔ©A[Í ”û­ãŒ²PùC ‰<ݹô°ÄZMin›r ôÒü›š†køÈ[H\¸nCGÞ¡¶&Ê‚ek¹êÒuüæ�ûQX¸j›7¬æôÞwG‚ÒdÓ–«Ù´—ÿû}`èlØ|>Í>f+[®¾Žc'à¾ýô¢Îµ7Œ®Öjê¬3ãõ´¢ùˆFÂ<ùð¯ ø¤Ð¸í®Osñ†UäÓmì;|œÞ÷o†Î–kodå²%(Ÿ¸�ß<ú$ÿüþN¤âç3Ÿ»‚\¼—Ú¶N.¼b3?øÁ�ØñÞa>þñ�ñÛ'žáà;o Ñøôç×RSW¾hI�<ƒ¼6UïToϾfj®H6;U›)%� �|îsŸã£×}”Ö¶V�%— )k·ƒ�þtÃ`áÂ…EEQ4”Bž\.G±X´¯êÎ ‡H&¨> ±ãÀ€¬”?Ê—”%ÛÐ%¤ën&¦i ë:Åb‘|>O6•à‚õ« ;‘§¸¬øfê:™lžHÄ:îš/ …BèÅÝ´ê4uÆÇÆ1$466¢i ™TÕgYB-mXŽññ 4_€ûq§� �Ï2>Góil¨CÙL¡úø}n�¤i’J&(ê–{H0"‰Xa,í»ÙÇ&&P5?�v;B’‰8©t†hm5áÙL¡j~2™4ECR��ŒÇHgsÔÖÕ ‡ÈeÓH‚�ÀäÔ¡�ÎvšŒ\óhwE ðŽÌz�É3T®( üö‘Ç£³³�…‹ÓÚÚ†ª¨€èp|| Uœîï'‘LQÈ�¸X¢tØ©L‰U¡Ñ²e‘2s‡ýÌåÓ¼Déíê43cUT�šŸe#P5ÂaŸí’îÇçÃL•æ–«˜Íþ…£wç—|¾íí®áÇ»K$>ˆ¶ö�õÛ¾R.ŽL²t !¨­«÷tSbJõû¨>?mmín_œújjꨩ©Ã¹@4㇅#„l¶´¶¾žÚz«-iš‚a„œ…e}ZÈ:jß“Rꋪª8 Ÿ¹¤b¡H*•BQÆÆÇ‰ÔÔPW[g×'È �Œ362N*“FQ,í¥{ÃTZ,A±û:jÞ¸a¬ñ¶.cÅd©ÞÉÓ==I-»ÕÈã8X&ß”iËÊãMU+[ÞºýܬÖnÄöÕ8žI�ó B–ñÔ!�ï²¢nÏXªÏŠç빦³¯û\ö¢d¢>óó…±X Eó!�|®H6“ŰŽä²�Ý=Œ �124@Q³�Ü ›u’Î…êÞÎ ÜÛÐ!\u®DÁòÇòAñÞñ6þ$½Ñløî*yÊÐh*䛲?’)7¥ dŸ¢3Õ—p†±Ì4+Õ«™K}òÈóÇù)YY�Äç÷³f­%ã…Ã!4EÁ§*mmV]k¹\ž@ÐG8èG±dÍ:M(K¢D.&¥ò}Ëh)¼H$+سéGYt³¤é|˜äLíMärROÊ”SW6¹š*õN;žj¿äd¾~~€R¹RD:K ~†ì¡”à÷ûhn®E( á †Q4lÊoùuåò2™<ºÀ(èéi£GÕ¬#·R¸Ñ¥ý·,$å,”ö�örM¸ìÆtK"ç´NÏoÊéaqÚݪÐÛLMM¦£eg©yš‰Í<;sÊ}fé<Ë%gIn0Mú©­­E1 $*µuuS’ÍÑSij"QB¡E=G$BÕ|¶»{…«gåá©É}ðh™E©ŒƒŠ…U™…3o9™Möê_.\W/;5E˜{U¥Þ©¢!θfÅŸžå4 �ïtv§( ‰d’#GŽ ¨©­aÅòU¨ª  ¡j~ò¹,B@0 qøPáp€¶¶6;ôh…Ì7Yh·‰´ÇYÑúƒW&q®ü4MI6›­â@Ve¿žÅN=ÛhéU©Á”HWz1�a*ÖkúQ1¤˜ÅfþÜÒü ž9‚œelöV'ª=´_ …|¡HKk7Å|_0‚TTúO£“h]3ñXÓ,ÐÚÖÅøx�ñ± §‡lwwY ÊàÈŽ-¤ôÜF /Kæ‰ëí ¢"‘ˆuÃÔTž¨�fÒÜœ"M§6�†ÍšId%nN³ˆgŽÔãü«�!hjl`ÕÊ…LŒÇIf’45Öðæ¶}är)–.[†ÏçGEôb†+¯¼Œ¡¡q܇æA�J‰Ã½Ä³òš\ks,©>]ßFQr$STUU*T ÓMÑlX­ÉP9Ý/g([þÕ£†�²Ù)Qi¦JQyj­Ø\@hº�ig;�϶¦mAVëËÔýPlÿ«ãG�Q(šè::p�\>G.[`ld ]×)è:Ù\‘¶–fZ[ÂŒ�7y®`•¤Ý?Ñ>+ìh"Ö�nVÞ2ÑÃ-/]}¿÷¨î´Lͧ”ýœi·/:BMG ät0TØì”Ëv)¥ïØ4ÅÕbIëô Y¾¥XN“�Eͬí†N6›# £* …|Žl®FžƒG޳nýFÂ!™ÇíTO%”Q.Ï;çºkC/²ç�wijï¡»£µ,þUµÅ˜Qü˜ó‚Vä™'IÎëuvÆ9Ÿºfçy!„å‹‹'§£½ ?�Ý É岌Ž&H&‹ø|~Âá0¾ˆ�ú†ZŠzELšDé¡"%Âò»2Ë�ÞVí:Ôù‡ºÕÄþãÀ²û‘íÿÁÈ©cüø‡?`<™#ŸŠóóþ€ß=û c#ƒ¼¾íMÒù<ï¾½�½‡ŽYž˜ÒÚíUUAQlÖNXÈ­( ª°‚'(ŠêF?DZ÷D¨ö3+¸B‘—^x‘SƒH³ÈηÞädß QVêWŽkÒBNñ™Ã »™aëŒ ŸE =×}¨6gå04mRt©RߨFM]ííMlX·ŠÅ‹¡ëhljaá¢EAói¤³9²ù¼í¬(KHâÞ"åh°\$-]¹æHÎ;P'e-wPÞIœ<­Þ/BZ±yÉf’lýÝCô'ò|ë3W Àõ½3çù§ŸB4-¢¶¦†Ž¦ZöíßËÀÈ=‹–±|Ébc£ �Ž“Œ�£ ?‹trâØQt|¬[·ŽšH€ÞãG8zâ$¡hk×®a|ð$O>ñ8›F’|ìæ«¸âê�ÒØÒ�iê;|�§hligõªø}êtª®éá謦™+\a<ç§iš:XÝìk›Zì®ÌSmg*Á¢¦©„ÂaüÁ ¹|!,y7 �Î&é;uã¸AmM¤ P,�ÍåìS¶ÊCÊRxÅv+)™Gœû+Ø&Gh¯Œhâþ˜Þ˜P)rIi­kâË_ø¯<ý=ö;¾ú¹»K}pÅÅBž\&ÃP;² jš»X¸x¦'Žâ÷i¨š�º†|ª†?¡ÐwìO=ñ$mÝ Èć‘f­àÍRy[C²&0S4hïhG°pÉ º–BcVZáùïŠó×BͶvo³È3÷j'›ά—å5Ï¡�UUˆDH�`Ãp®é.00pšÑ±qûš¶ªPÉçóÎF(Jé,‡·RÇxèâÖÇk±rô Ȧ %¹T–Ê´\ÊcJ‚¡ ËV®æ³Ÿýï¿ùxu»'";HL†‡ÐQimm£µs!·Þz3‹»:hni´‚Ù"9w˜X'û,9éø¡ý¨ázî¼ãtµ5c 0ôCCƒäò¤i jº›êxûÍ×9=0ÈóO>Âoy£ñK;ØYNg+ÄÏØä4™*•&Ó(Ä”íNÒÂÌyVÊóT¿±ª¬†9�_P(H%â uê¢44FY´°UÕŒO¤2&‰¤N2£OHetÔïþõßü}eOKWú9÷û•ö ¡<î¾6À[µ›¦A!Ÿ£±©ŸÏ75®ËÉ_…€l*Noÿ6]HwwÍä­·ßaá‚&bI.ØtªÔycÛë:¹tÓ¶ýñ%vìÜÅàHŒM]„(f™HëlÚ´†‰ÑARÁÆu«ˆ�Ïš\rÑö¿÷»ö¼G:W¤¥­“‹6m Ÿá�·Þ¦³géxŒ®%+¸pãjÞÛµƒ×ß|“¾áq.¿ê*ºÚš¦ÿ9áÆô»ù¼vàònSW4G>+çÏ«usº:çÝD© ¢‰$‡GêŠ"ðù4²Ù¡Úv¢uMƒ5ôt/¤¨Kü�ZPTÄþ#½å‡ì„pçµähYÌËnXó"…nÝH[,( $q–/_F0ª*�O7fÓ4(ä‹„b_â™Éâ÷û1 ÓzŽ$�N£j~BÁ™tŠL.G$RC0èG/)&Á€õÝ0%¿]/¢&Á`€L:M®P$!¥–Ò4 Òé �`Ð2,i>|šF>Ÿ%•J …íüUøÃ3\Äê 3u³ªçl¦sÕÆÙšË©ûª(‚þþAÞÚ¾½`ÐÐЀê×(ò45ÖáDH¦“„!bI†'0#cÃh^_BK¨*¹œ8 Ý’‡¯eg�•aO*Ö³\8›)ªÈ(ŠP†‚¥+„B4b…ÁñùJíF¢QQMB‘¡HÄ-c…¶w„3ëЋÄz®jr‡Ã¬8 ÒuãŠJMm��–NJ¿?HSSÐfÙ¦cÎÍO•ãü òg86·³òàÙÌÒŸªÅbžh4ŠÏ¯R(‰Çâ$'&¨«¯g,§µ¥ ¬^ÙŠÆøxÔ¹¤ô¿S£À:£^Jžð¤ÒÉ/ËDQf7�Ê` Ó‹]UFd#PÕÛP½yª¸ÔObIeõå8êéoE¹¹FѨ–ûÃ¥™šm¯Ï¤žrVüœ÷iJ‚,Ðu½h…¦J$Òº¤PÐ ƒ¤²y|¾…‚n;âsy"!š÷[d&»èÚ¬—MS„ÇÂ¼\÷Vòø�v 3‡dµ'•7ôL%éL¡bžZ–�K?tél#Æ qúâ%JÕk(ßà„°ŽÝæ³PLB¡¡pEhäòyÂ�zÁ¤hè$“)LY¤¹¾ÑЬ(„,»Z­j‡Ýð ^ÖJPËA"çA þç«û–U±JN[H2·×óC 7Ïl‡æ ¥Ê~2×tvmŽ,ÏBóé‹ R“ø„JY™©À¦a�JÆ©­k@Q}$ ¢ÑZ‘õj ÒÔP•z®HzOœB©F-J±°„Çb"„÷p”Wr±i�{wˆWE5³Ê³ªrЫnœj*'©÷¾% ŸŠ’TÔ \qtD‰ â.àÂTöa™Ëâê� ‰ uETPo4£ˆBEôŠ,â€@VY¼lÂu©¯ŸêîÓUÕÕ}zfÎÌ9ÓçÿÿýgNwum}îø>¼ÕÕ#+ßüfófWûî`¶Üäyf¥~n¹ƒÙ7?–ÿŽB!„JZù¼MÌ–;ìëÛw‡-½cág4øÚi§�¢Ç]í·ß~öçªU«:ÒuÛl³M©,ê¿FvØ÷Í íX´É&ÏË>´k€ö]‰€öc �þ í`€`hÀÀа tÿý÷›k~1k®¸âæÎ;ï4üã³3ƒÇœ ÐE—üÔ|dÍwÍ[¿ô=³××`¶ùÐæao:ÎüÕa§™ýŽþ¢ùÃþ`þô§?e¥�¹ûî»Í¥k¯Í>ô�9 ~îfïß³ó¯ŒyM¢gŸ|…™ø¢ùøUfâÄÿ4ç|ó óÖOüÔ\réÕæ»ßÿ™9ü„+Í+ýVv5@ÿ˜³úÄ©ß1¯:íJóÒ“b^qêZó¬wÿ‡yõGÍÈþ_6Ûòi³÷êÿ0‡Ÿñ yÝ;Ï7+ÿõ‡æØË�Yùž‹²«š322b.½ôÒìS�S™¦ÌÙ�ºæ|óš™ÛÌöçÝe^yùïÍ3NºÊŒø%3òîo™‘ñäçágšÇìõsÄ™Æy®1o:ö&sê\’]áœýl‡SígÎÉÏ‹kŽ5[�lm޽&û Ëœ?ÿ‹GDMPݹ* uëÖ™/~íRóŽcÏ3{~ü2³ÛG~lV{©Ùî]瘿Ý÷óæïŠù³]>aFþ²yäKßgö<úfßã®5§Ÿñì†Ö°8¦'ù|l­:Çìçœð3´�˜Ñ™�ù� пŸð}ó�cþõÛÆüËt¦5Ƽ'ùùž¯søçï2Ÿ¼ÞìùÑY³Ç1W›‰ÏÞeÞÿÉïgWW ìÏÖÇšæþ0Œ¸†g¾æG46@ûu±yOb~Þzz¢¯ó¶DoýZRÁï3o;éFsð—~oÞy¦1ï<ØÕg'?Ï2fâ}ÿ™]]… ̈Ù:æ`lvÈ]—–í,—Ûo¿à³RG®!Ê~?¶XbçµãÔ¿õ±Ç:×]cŽÝº¨×V }'7>ó5?¢±Úãý—˜w+5>ÒÛósèWôÞãÍ Ç}ÀLžö sPòÙžSFhژמ8¡®†£0Afçœý2ó¯ý¬ß“zóJí³Fùr»ô\~êšc·NÎeש®`àè�Ú·™zõÛÏ4ïü¦1ï83щÑùcöùìæÍï=Á~ȸyßç/7‡œž Ã¤ìОïL\PS²ŒŒõ^ö'“=1WTqNõ{Kï‚sI{Ѭô…Üüè§ûû\yó¾;43@ûò!sÐGÎ7»}àæ GýÈìñ¯ß1‡OýÀ¼åK÷š·Ÿ|‹9è‹ÙÌ� Ðá‰9Úÿ¤‡Ì‘“s0@ ×(#£cMHlG¸:Ã#ÜÏ5çê P†íKb„Hô—˜á‰kÂÊçmÒÌ�|ê7ÌU7?dξàZsÖ÷¯5—þâ.sñuƼåk‰éY“.‰Ë³?‡ŸaÌö‡Ì˜Ÿ^öóìê Î9Ö1éR¸b©[, Scj,îçnç*–À9è8™ €þQgtêÎU±å– 3@¿úկ̿ŸøŸæîä÷«cÌ7ó£_ýɼ31?‡|%5@‡'¿k‰Ü®ÿ~ƒùàq§§Ö’™[F¸ .;wÎ~uŸ› }t7Gp6ApŽ/ø½D° —×�S™¦l¹CÃg€Ä7ÿó{渓gÌu÷sÃýÆÜxorìêl×·o¤›"¼ô­çš}¬‰ù *—Ü@›X™xŸÆH\yå•fêį›�}á[æÄ¯_b¾tÎÏÌ‘Ÿ:ßì¶ú,óŽ�n~øÃ¹­ÁliNï#€åˆ¼Ïœ PÎ=÷Üc®¸âŠÄðüØ\}õÕæþûïÏÎ,üwý°Ô `8˜·Xn`€`hÀÀЀ€¡C†  «V­ÂÀpÐÉéŦ¡¸ `€j h ´äºýîå§~ÿ'4Ä€ö€BK®˜ÁtÅ‚b4<€ö€BK®˜ÁtÅ‚b4<€ö€BK®˜ÁtÅ‚b4<€ö€BK®˜ÁtÅ‚b4<€ö€BK®˜ÁtÅ‚b4<€ö€BK®˜ÁXJÝrÓuæÆÛÝcwš¯»ÑÜt‡sìö›Íu7Ýin¿ã6s}rn݃ñÀ¸Zš»o¿k×5Ðêßí™î1÷ÆÊ¸zð~sçbõeHí„–\…ñè“rs“¶&ç:sý-¿í»õ–½Ï± ¸^‹d€¬™qLOòyÝÎy´(€ö€BK®ÜTôM2<7ÜfnÍ>ËìÜxKr¬cŠ~knºÁÏÅ‚âz-’Röç®ûÍ}±shÑí„–\¹©èŸ\ƒ“ÿ®ep7›[ìùð÷| \fjîMŽgKÐî¼÷÷E l³3ùñû}䜓îβ6÷®+~/™&]³îÁìœ[&h·s¼ªon½Ùï¸} ëB¡ =`€Ð’+nJ–VÅs@‰ÁɲA·Ü”™"o‰\h€Ó�›û,N¾-=—›™ûî½+9çšÇèX3”�SN}wÞuWÇ�¨Ž¸9ù½Yw—o¤º÷ÍïK'‹äöÅ–E1@{À¡%WhFú¢Üä8f'îÇþ'’ê˜糌„·4-8lVÐÉü8×Ý».)¯ÌŒý,“ÓŘØzsTÓ·ÊßSùY(´ ZryF¤_ÊžºEÏÿØLPvì¦Û‚çÙuŒNR¾c|’²¥úâ²™&›õ©é[åïRšMÂÕ Ú-¹<#Ò7éÙŸëÌu×…fGÇòçòc �ý½0Ý—À†È.u –¾Ý½îžøò·î/™—´\·¾ù}éÔ1g¨,h ´äò�Hÿ¤¥n×9»ÁIz6ÈÛ"»±JdŸ»É7¨ÛÁ­#?– Êt”˜¼�Î3?µ}+ÿ~÷:´´²?Ýí„–\…¹X>ŠÅËS¡QBMí„–\1ƒ1èŠÅËS ùÚ-¹bcÐ Š—§0@ó´ ÐÚI3:2j&×FΡEQÌ` ºbA1@{è�š6ã##f$ÐèäÚHÙhÉ3ƒ®XPŒ†GÐd€ÖNŽZ³3>œ“©Ÿö� ª0@K®˜ÁtÅ‚b4<€ö04=ž˜Ÿq3;·œ„ZrÅ Æ +£á´‡y µfrtnËÜòlQ./k”›)kF*ÊHÁù/Ë”÷iÚþt¯Ÿw®qŽub€P½ÚÌŸþô'ó‡?üÁê÷¿ÿ½Y¿~½ùÝï~gî¿ÿ~sï½÷šxÀüñ�ÌJ/oæg€æh¬ù�4kóc™‘ék€sâ”I ““a*µ™žÂeŸÃ~%×�»FͶå”Á¡h+267Üpƒùþ÷¿o¾ñ�o˜¯|å+æ„N0Gy¤Ùk¯½Ì+^ñ ó®w½Ë\}õÕÖ -w`€ÂåoÁf3£ãeƒa³2¹y M‰UZŸ›Å)eœ¼ex¡!ª’_/5@[¹ï¾ûÌ¿ýÛ¿™'>ñ‰æÿüŸÿc6Úh#ó¿ÿ÷ÿ6ó7cþ×ÿú_æ/ÿò/Íÿý¿ÿ×{ì±æî»ïήZ¾,JÈËøØ²Ž1rå ¸¡J�JžÝ‰É7@Ñey‘>`€Ð\ÐVëÈÈðÈül²É&æq�{œù»¿û;+™Ÿ 6ØÀzè¡æ–[nÉ®Z¾ÌÏ…Y”@eš›@ PU{©â(}þÇ58d€ÐܰÜÐs=>ø }žG¿W¡ç{Þóž÷˜Í6ÛÌ<õ©O5Ûl³�Õ‹^ô"³ãŽ;š'?ùÉæü�ÿaöÙgóë_ÿ:»jù2Oy®§ò\½Y²êj€‚%sQÅ P¬m 𻆓Y35–eM'f²c°øÌ˜ Íy¢±©ÙìÀÜÐs=7ß|³9ýôÓís=¿ùÍo*71ÐfZ÷„'<Á<ûÙÏ6/ùËís?¯|å+íïOyÊSìR8=tûí·gWÅ©3ZƒÂ¼ P±,­œÝ ÍQš…ñË­�/LG”– ÌLb^Š b¨|,í ÍMà ¨?`€`áhSeu”½yÒ“ždŽ9æsë­·F Š2DŸüä'Í–[niFGGÍK_úRó’—¼ÄþÜ~ûíÍ#ùH³ñÆ›Ï~ö³•q‘6G�ɺñÆÍC=”L`€2eÆÄWÙP䯣#7›ÓÄuʹõ¸×Ä—À¥§¸f|š š»“ÌIÛçßííÍI7d‡{¨?`€`ahIÛg>ókh´™�–¯)‹sòÉ'{q�Ì�ÌÏ]wÝe¦¦¦ÌV[me6ÝtS»ÂßþíßZ=þñ�·×«ž�}ìcÖàhY�k¤dx.¿ür³ß~û™vØÁî&7È&há¡!Ð@ò³cÌY ,mqÌϲ½Ô0@0ôŸ .¸À.aÓf+V¬0ÿ÷o38:ö�ï|Ç.y“‰Ñó<ç�wžyç;ßižþô§ÛàþüÏÿÜn„ð?ÿçÿ´zÄ#aþð‡›‡=ìaÖ���›3Î8Ã!™'Õ£:Ÿóœç˜¿þë¿6ñaž÷¼çYC4¨[fc€j Aä'ܼc~¬6^m.ÌÎõ PÀÀü�á¸âŠ+ì»{ó˜Ç،Ύ;îh^ð‚ØÝÜ´ËÛÞ{ïÝyß�65�©ÉÍΣýhóØÇ>Ö–Ý|óÍí†Ú N»ÀÉÉ É ©ÌÁl.¹äsî¹çÚ d²žûÜçÚ�TöÀ4·ÝvÛ@>„B¨�Žõç›Ã6NƒämvßÝlnæ�Íaç¯Ï ô PÀÀüÐÕ‡v˜]ƦÌ�žáÉ73³Ïi“ƒí¶ÛÎnx emÊ iyœžõÙu×]Íž{îiöÝw_»œMÙ}Þyç�í³A2K2CÊôhSÕùOÿôOöø‹_übÛζÛnk�–Ê}á _°qÔ ™ B 4h¬;cw³¡ ’·0Çü¤0Cî~†Y—•Y8 þ€€¹#“qñÅÛ]ÛôìÎ?ÿó?[ó“K›Èè(Ëóÿþßÿ³™š­·ÞÚ¼æ5¯±fgÕªUfbb¢#epÜÏ*ó¦7½ÉfyT‡–ËéÙ Õõ¬g=Ëfšr³%³$ƒôÿðfzzÚ.“$0@5Ð`±Îœ±û†©1›JlŠ1®Þ8ý<²«YÓ3„ê ˜W]u•Ùc�=Ì£õ(ûLOž’)RæGfE™=¯óÆ7¾ÑpÀ³ÓD¹zík_kÍ”L�ŒŽ–¿i™]¾}¶~jùœ ’žºì²Ë*·àî „h ¸á$³} oŸoýælˆÐ9Ö•õæÖËN3G¼b+ó˜�2£³áÆf³m0']|kr6f€Ö›óËÌÖ†f¦ËŠ»NÚ>+»»9Ã3fjû,3õ¶W˜­6Û8Ëf�˜ 7ÞÌl»ÛÑæÌkÈÊ…}ÊÍÁמé�a£Ç˜­^q„9û¿,\�¹úÛSæmîõ‰6zÌæfÛ¦Ì7fåøõæ$õý1e×lh6Þl[sÀÔ·Me×;<`®MÚ<`ÛÍÌÆú}NÇ�€ù¡Ýß´S›žáÑò6=$$ã­¬e€^øÂÚ%ns1>¡”-Úi§�ìsFzÞGKâ´[œ–ÖÉü( $#¤evZ'ÓôÛßþ6ëeÿyó›Wb€ê¦Abvj, ºÝlÏÏÌ1[dÁôÇ$Ÿº°þ¿Íš}7ë�²62Û}úls\,ô“fÏmhv÷]M@aV6>ìüÄòäÜbNß%7Úp3sèÌYy×]eþ{ÍîfÓðÚ\nc¦®ª6Aëÿ{�Ùw³,“V¡râk½¹ê”]Ìf¹q‰iÓÝÍš*óuÇ�Ì1ÛՌݎû4 Ì eY.¼ðB›¡QvF†GËдœ �žÏY¨ùÉ¥ì‘Ì•êU¦'_òö²—½¬³NÏå+üøÇ?˜,¡ £>ïÓɶ蹠Zt‡™™Ø4+»¡YqèiæÒ_Þilâbý=æ¶+Ï4oU�¾¡Ù0ô='PÝ�NVjc³ÚÛž.31�ڌɕ·Ý“š£¤íë/ø Ù&osÓÕæÂ’�( ÐVããf,ïÿõiëï¹Þ\0µsaŠ*Ìàú«>m¶ëd½V˜½Õ�;³Ô�æà——šÓŽx©yÿ¹é¡œ¾¼³ÙÈÖí·k¸Ó\ùícÌΛfuŽgJÞkýUfj›Üpmjv>Æ{rý//˜2»È�m˜Ì»-ƒ€¹#“ñƒüÀ.q“9ÑÎm2CÏxÆ3챘™ %s#Åι’‘RÖç¯þꯒ˜aC»¡‚ž=Ò»€^ô¢ÙÌ“Ž)#5333@ˆ%puÕ °þüÃÌÆY>®?»å³c8ûŸõ®Î †f›©«âåÖßjÎÏŸ+J¤Bª—¶üì˜-Ò2%2k¾|Ìi•KÅîX³kfBã$ $�ëÿzsÕqy–,^ǧs#R—­ ¹!™_kΪçmýu'uʄٱNÙ1צɽ‹e·¸Üü»;> ̽ H™ ecdL´á�6;ˆ™˜\ûï¿¿Ý"[h7¸7¼á v8í+ŸK%í.'£¥­´Ÿô¤'Ù�á´Z6§l޶¶Ö.nÚ4!ßIn÷Ýw·)v½²@ÚB[›+(Ó¤åvùöÚ[n¹¥ùÀ>`_¸:H[ac€j �`Ýf÷lyØæüIvЧØ»êùœsÍ¡Y;žrKv¬ Çl”†qŒÔާ˜°¦N_“!ª¦n€¢O¬Oóø‰ùàæñ::;æu3€W™ã¶ªê“Oç­­ŽK®Ê¸îÓf‹f¤BØÆý÷ßoŽ=öX»;›^dúêW¿:j^d~”éÑrµg>ó™æÿñ­”ÁÉ—´“Ûë^÷º¨‰’RHïÒs@zHírÈ!æÛßþ¶Ý˜aÐÀ!Ô@ƒÀ-§ì˜ÖuÏø8/HÙþ$SʽÌN™±Æ�x�rÍÖöÆOò™ªº¥xÚ íÎ_^j¾ó�ÓÌÔ{ßjÞ:þ ³Õæ›{»±Õ zsPU®8¾q÷ p(LIsM$WeÌLdÇv4]}'æ�2,y–åW¿ú•Íê(#c£¥l1ã¢ånÚ¾ZÏÉôTI&H!-£‹e‚:è k¢Ôž–½m³Í6æ¿øÅ@m}í‚B¨�úÏ æ¤íÝຉÆLÙ?ä(r®D½rÍ–·Ì­“©ª2Y˜Ë¿r€uŒN•ÓÍÍ\ôÊ9Ç*Á@sþð‡?˜Ûo¿ÝŽÙÙYû¬Ígœa—¯iIš¶½Ž™Ó3B2H1ÓJ&H/A•i 7HÈÍ”^Àú—ù—ö™ K/½ÔömÁ!Ô@}ÇyÏÏ\´E˜*ê ­Ìq�õYUt1@ ?ùàæéy'ÛÔÉ Ew`[o®šÚ¦³LoãçîfÞ;ušùÆw.5¿¼é&sÛ=ÊÕ€Þ ­ºO€CÑ§Š©¨§c€ÆÍÙ];Â@sn¾ùfóÉO~Ò.e“ 9øàƒís;zG†DÛQ»f%7,Úè@†&fvª¤LÑ«^õ*û^Ÿ°N*m€ ÷iÙÝ7¿ùM³~}ógm— B Ôo:Fcä5æä_ÞdnJÌBµ.7ŸÌ³EáFÎæñÍ \Š� ª PaÌòŒÒ:³f×ôšèæ�ö74¯øÜW,�[LTôÏߤ Å3Es3N®Î66ØÜT<¾UàÜ# Àp LÉ}÷ÝgcŽ|0;Ú  =££¥gzGY™mJ°bÅ ³Ûn»YÃãšepôÂRmv3:uÒ†zæÇ­/¯SHËàôòÓSO=Õ¬[·Î<ôÐC·„Põg©Yí{wŠç…66‡y¨ä7L @ÅfÌw7²Jä,ͳ٦|w¸ªÍ:™÷%®Îs½7@ª>_RøìRÎînM^4âìl·Eâ€êþ{XÑ? @[‘!�áQöæÚk¯µïí9å”S̉'žh¾ûÝïš»ï¾;+Y ç{d”ÂÝÔtÝ[la³=2z¦çùϾ­GÙ §?ýéöå§¡RG›ÌÇ)Û´×^{yõIjCLÙ'-¿Ó{€´œv‡“ÙzßûÞg~þóŸD6ˆ B Ô?œÀ¹î½7%œw…™ŽuçšC;æfS³ó1ß6WÞ™…óÜi®üö1f—Í’6·ØÕìšmý\g€ C±£ÙqGý¬Ùaî–/›�só±âPsæ•wfFâsç•gš#¶MÌÏ[tžwZ”pGbÄÒ—Á&ýØlsÌ·¯Ìž?JX�¹íÊ ÍçŽx©y¿çb\s¶¡Ùl—cÌ·¯¼Íä—=pç/Í¥§a^ª¹‹mv0ûéÂÜl¸ÂzÚ¥æúìâõ÷\Ÿ\û6»1Ć»îj^“õ °c€–2?wÞy§9묳¬ÂålúüÑ�~Ô=7#£ò”§<ÅfNûØÇšC=ÔÜqGºJCõ]vÙeÖÈhY[.m4 í¦•Éyüão �^dª%j2Tª_Y%m] I/>ÕKOcF§NÊVÅÞ¤L–Æ¡÷©mõO†I¦MÏ鏯xë­·Úqõ B Ô/:/Õlòð|‰Ÿ™c¶È‚ë˜)yàZsæÑ»™m7۸ؕm³mÍSß6×Ú´La"ê P⠜煢›x¬7·^|’9`ÛÍÌÆy6hãÍ̶œd.¾Uo17AðYëeæ4omô³ù¶»™£O»Ôü:ºÎíóë N2o{ÅVÞ;‹6zÌæfÛÝŽ6§]vk­Q]ëÅæ¤·½Âlõ˜�²k72�ÙêæˆÓ.3vøì°l‘Y‘qѳ< öøík_3¿ûÝï²éKJ¿üå/›G?úÑæïþîïìŽm+W®´†DB¦HÏíhÉ›P�zFhç�w¶ÛKË´è§LŽŒ�̆2,Z~¦ ´NËÏ´�LˆêÍŠ ‘–±)›3—ep23êk¸­¶êÓR;µ»á†I<±ñÆf«­¶²mk×8e›4.™;-ßë7 „ Úõìä“O¶Ffƒ 6°Ë¿vÚi'›ÁÉÑÒ¸sÏ=×.“Aцz‘¨ ÄSŸúT»lLÙž_þò—¶¼ з¾õ-»eõÖ[om³/¯ýëÍK^ò³ùæ››¿ø‹¿0õWe¯U6H¦FÙ -�“QV(¶mµLË.»ìÒh+ler´\NF&¶üM› ¨?29ê�žAR½Êin-ÍÓ9™­ßüæ7v\ý„PÔ¡,�Œ�²>ÊÊ(#3£,ÏñÇo7,Ú@/ Õ Jµä-FGY=Ë •WIæAGe%md l�Êk le„ôYf#�ú LÌî»ï^2-’Œ‘ šŒU]&HczéK_Ýü@R_”ñR_ԮƬñÉ)¤úµîÕ¯~5Ï!´\CmlpþùçÛÌŒ}e@”1‘)PvFïÈÑsAyùÙÙY›ñÑ28-mSE™ ™-‡Ë �v€Ó;udPdVTV¦C¦F™™Üé:¨vØÁ.‡S»y_”…QBã")£¤ö”)RÖæÙÏ~¶5÷9»DNY'™®<3“› í§÷U-ikªÜü¨ê³ú¯±k©ß)§œb¦¦¦ì’>™!•ÑØßúÖ·Ú]ò B PÅC=d¾÷½ïÙå`ʈhùZ¾DLKÕ”}‘yØÃfÍH¾TLKàdŽ´Á�2;Ê i;iIu)kòÄ'>Ñ™]'ã$áߵ͵žÑ9ï¼óÌoû[s×]w™ÉÉI»9‚2DªS×ÊDI2D2AÊJiY�žýɳUݤr2vzNH&O㔱ɳTÚÖûcû˜}’ž‹úÕ¯~eŸ{:ꨣÌ[Þòó³ŸýÌšÅA„P-áŠ-ãÒ³@§�všÍ¾ÈÔè™m† gr”}‘ñ‘qQH™’|Cƒw¿ûÝæÃþ°9î¸ãìR6½Dõ3ŸùŒùÔ§>e�ÿË¿ü‹Í¸hC…§=íi�ÝÖrã!%Sòÿñæ»ßý®]‚·Å[ØL�6>�RFIæK×hÙ�Ì‹L’6;P™ã£—¶.0@5 7wÞy§]N¦€_F"Ï–¼÷½ïµ™¡xÀ™=ë£gl”õ‘¹ Í� Ñç?ÿyû¬�žÿùÈG>bŽ9滉�>ë¸Î«\n|ÜëõùK_ú’ÝR[»­©M-q“‰QfHË×d~”ýÑò; ¦/~ñ‹æÐCµNfI†F×ê:etr#$¤Ïz¾GãÕsC*§ŸzHãT¦K1Èéù¥ûï¿?›­Á„PÀð¢åo?ýéO;ä»´iY™LÐAd7@Ðs82 Ê�èeŒBã"3tòÉ'›£�>Únpð¶·½Íne­:dPôSŸu\Ïü¨œ¶·VfÈ­'×W¿úUóŽw¼Ã¬X±ÂepÔG=ƒ¤g{d^t\™"•U–ê‚ .0¯{ÝëìÎm2BZê¦%pú™oÃ-¥ózþG;Íí°Ã¶ŒêÑæ/ùË­ÉÒœhÌzÇÐM7Ý4P›T�B¨�`xÑËNß÷¾÷Ùç^dz´�vF“)ÐŽk2AZZ¦ì�2"ÚúZKÔ\ó£ek2IÚ*zõêÕÖìè¹ ü9�*É©¼®ûÊW¾â™Ÿ\Êêh«i™õC&L’ùyÜãgÍ”¶¦–™“’AÓnt2r29Ê"iéž–»éç>ð»Qƒž=ºä’KÌ'>ñ »»�Æ©¬’Ì�¤]æ”%Ò¹AÚêº B ÃIn”éв°g>ó™s"£í¬•-ÑÒ1eN´,L™פÈLäïÄq NSéE¢º^ϹõæÒqm—­ dzd‚òåzZ&wÕUWÙgtô,Ó 'œ`w’“Ò2½\Ú¬AcЮn—_~¹ùýïßÉè\tÑE6ˤ±Ê4)Û¥g‹ô�–ÒéÜW\1ähí¤5“k#çú¤µ“£fdtÒ¬�œë•l#ãf:r-_Àp¢�Ý” ‘Á‘±�Ò;~d6´Óš–‡)¤Ì‹Ì†2E®1É3?Ú0AÙœ˜¹iªƒ>Øš ªL�²D2&212?Z §L�v¦Ó8d€~ýë_[&#£í²só£l޶ÐV–Kcºæšk¼ål7Þx£]ú¦ ‘–Êi«o=[¤,“²bê›¶oý¸4Øqäžei€¦Í¸7žÈ¸ºÔNÀp¢,ˆŒ…Ì„ž�Q°¯eoZ6¦¥n/xÁ ¬áÐ&z®F;¹¹¦DŸõÞ=×ÓdÉ[7ɼ¨¾Ø®r§Ÿ~º5YZò&$æ>~ç;ß±ï/’{×»ÞÕYê¦eo2?*#éù�Eæîºë®Ëf åÁ´Ëà´ÌNe´ œÞ¤²ÿú¯ÿj~ô£Y“µ˜·šOŒA`&ÖNŽ·Â�OǧÇS#4>íGC#N”ÑÐr0e}òÓd†ô¬Oþ® mXà.}“áÐNnzONÌÌÌWªOËì\ó#É}ò“ŸììD'“óä'?Ùš-ÕÓó:ÚÅM»¼iûkeqtLåµ]·Æ£±ieŠB´ÉÁ¾ð›åÒ3Nçž{®ÝïöÛo_6æGÌÓÉ(t17m2@’OÅ9ÔzÀð¢çfÎ;ï<›íг@Z§l�vEË3-Êiiš›•Q–æÃþpÔÄ,DZz÷þ÷¿ß.­ �v‹Ó 2:2i2mÊØä»¼)Ë£Ÿ2@2IÊ\éœÊk9›–µiëî;î¸#}�Ì ¶º¾ë®»ì¶ßZR·–¼…,À�˜Ñɵ‘s™:È_V^.£óÏç†$¯Ã1T™!é\[Êά5“£ÎùÄøL/Ä%²Y¯N;ñ¾¹&«ÊpùõdŸó~–Lc^.–×õC0Ü(ðW¶C™-ýÊ ƒ^"ª]Ðd:\3’g´yA/–¾…ÒÖ×ê‹Û¦töÙgÛç„ô<�Œ�žéQ¦G[bk«j=ߣÍt\™ m` þë9&e€”éÒ¦ZòÖVæi€u[Ö1(NÀn¯qü$¸w¯/eYòà?ú;æ*?–™�N]áçDy`€|Cï›W¦ÔÏò±Ð ùs”ŽÃ5…Óã ~@ÙŽßþö·æ¿þë¿ì20-{“’yPFÆ]þ¦÷ý|üã�š—^Hñ»^˜:==]2@zVGËÚ´k�–´)ã£÷öè:e�^õªWÙc2H2D*¯—ª*{ôÃþо+h9fvš2dåd'B#T23R9 ÷žOëËË4”ê°Æ!3î22…ê �­70@a?ü6Êã-¤°Ÿî5]úƒ–L9ÚAÛBoºé¦6‹¢çl—žjùÛ?øÁEÉþHz��ž9 7]PN:é$ó²—½Ì.ÍÓR7-qÓîpûï¿¿Ý$aï½÷¶"m– ç‰´ã›»åuÛY Ê•!'˜�e?¢(¿¶Pq>fÒ:Üò…Òö­É Y~|È¿>^¶Ô†gšÒ¾w®±F-6Žbl}:VÛo´ØÈÑÿÊ´(»¢¥dz9¨^Fê íÈvÄG,šR&GÛs«·]ý®� ´ÜMÏÿÈi3„§>õ©Öi×·wÜÑ>Ë$c¤ÌÐ¥—^:4æGôÈI�¹i`€òà¾0¡Aª6@U&E²õ.‚ò3O �-—ÍC˜ññÌQ½:Ï a„ú¢�evÊŒ%ß‹‰™ìó<™�K¾_f�Õ¤ÌLô®.fÌDò=›šM?ÚïݘÉ?v'½¾Û÷tf"ù·Ð/ó²eÖL�9sÜ ‚ï À2%_ö¦—|^rÉ%öù˜óÏ?ß.�“¹ÐFz¾F/:u�ˆ6Dø—ù—¨yé•´ýtØ®$3öêW¿Ú´|)œ �²V’–¿ieŠ´…5hžòžgéj€B³ž×ç¸É(=7(5Vå%pöºù Ò²º¦¨0N%c�£͵<ê™ú‰5'cSIxKÂp ÛŸ¤ß¡' _:”þ{Ç5—ûÙ ,d ®¼òJûeNô"Ðç?ÿùöÝ?ʨh78m„°í¶Û–vdÓç÷¼ç=‹š’ S;1ôªW½Êîð¦,�–Á=üá·Ï+©Ïú¼ÁØÍd¢n¸á Pw%Áh@lpî‚®¨ldRãÒÝåKǼãI{ãÁužÙÈ—›ÍÃÙ~–ÆÒÜÙ¹7ã£ñù(¦ÜhóŒê›úI­Z,š˜hß0@íg€ P/MT¼®t,½ÿŽ/±Zê¿)Ë”ûî»Ïš eRô¬�²(ú]»¦il™ e�žóœç”Œˆ–¦É\,¦Ò3F_ýêW½võûÉ'ŸlvØaÛ_eydÒžö´§Yó¦epÛm·�Ùm·ÝìsK¿øÅ/ì6ßÃÄü �ý?WA`ÞÀ…õŒNN7ÊY•žŸ 3>A#5'žbãJ¯­*ÛÈUïœÓ^Õü”MZ*õ  Cm€DjVzÕN `¹ùæ›ínjÊ–Èøh©›–Œ)¤�”Q‘Ò3@§žzªgD´9Á1Çc7ˆ˜…êàƒ6“““v·¹¼MI;Ñ�p ÖäèEÊö( ´ûî»Û­¹µËÛ~ðsÕUWÙ¥}üã³Ñó4@ —úIm°¢¹ù°?eše×Úz‚c9n6èËËYÅÌLºåò:ó>dËóòó¥X18ß-˜Ìû8“�£S>ìKÐß°�ØØÝóA?4¥ 40yÕ}ëR¿{Ÿ…í„÷¢vŠ‚ºÂù)Ö¾) ûé— LÄ5½ÞSp/b†ÃŸƒ:Ó•gf¹u…ó´#ÖŸÁwÀÒ¨�°Ÿù˜Ê÷){Ñ…úïzÝ÷Ð%/W5þÎyo<‘¹Æ;1|Oœûné|oü9¨únvênp¯‹_ÿú×öÅ¡2Ú4`Ÿ}ö±†FÒq™ =_£ß?÷¹ÏyHÛS+âÝÚbf¡Òû…>ùÉOZSã sÎ9Ç/íò¦þÉ É~øávúãÍî§w�cß›`NJõ×$”ÚXBn½õVó¾Ðnð¤'=ɾìTæCËÚžýìgÛeqZb¦szç�k€$mP �cÜ»ßýn»Û›Ûž¤>zè¡æ±�}¬}ÞGMÙ«7¾ñ�öœL�¶¼f0@5P?© VÂ@´TçÁLä˜Sg©�H=1¢}‹©~P£€¦¤ui36{Minœ¶Âùq©:oÒ×hßêÚNz¬`Ñ ò„;Ÿ6è ÌïúR_ÊÁ´Ox>ÈV�Mį/µ™k¿Ïá÷¡[¿cóV¨SªŽÔß]Ÿ÷½YõõcK¿OÁüvû®'D¿‡ÒrI_\9uwÿ>W݇p‚϶ŽpžüºlÛáuý¾,Šd&ýèGÛ%ozŽž½‘´ N;¬ig5½UÏû„HY eiôî�˜‰™�d¦òåozq©Ûž–¿éùŸü@2@Ê^ɤ=æ1�1Ïzֳ̞{îiŸºýöÛ‡6 ôæ}wÀ!ÔMýÄ¥À'# "&"v}x¬T¦‹ɉö-z­¥O)³ªn³rÑzŠ Ë�:UÑ€R¤ýs¯/zÁ+ç!Z¿Hç#ì³U~M,–Íd‘yuÆì�ÃÖ¿GîõŸc�lد9\ßÁ?î;Ç~}¹J÷ád2¢cM‰Þ[‡R].î4jÃÿ^•ÉŒÀ˜¾Óå{Þä»ýFèV.zÞ»çºo±ïexŸƒÏÑïM6îì �sgl…bí,>Ê”|éK_²[]+£"cñ¦7½Én1­�ß´‚6Ðye‡d@\C"i;ì#�<2jfæ#-©S}á3G’ —vžÛb‹-¬éQÿ´‚Ì�~W&K}ÕF2AëÖ­ËF:\bׇÇJe"õĈö-z­u ãTŽ£QEŽ9ÈËW¿Ñ 9cå×oRüïJ·{°Ô(C¢wäh ™ „2A›m¶™}�Σõ(»9‚²,2Útàk_ûZÔ”|ö³Ÿ5ïxÇ;z²!»Þõ.sâ‰'–žýQ»:® n²É&�g´cÝ–[ni·ðÖr>e²ÿøÇ›·¼å-æÚk¯ÍF:\l™Ìψ&*ô!„Rõ“Ú`% (l ìb±ëÃc¥2‘zbDû½¶&ÐmHó¶jpËGƒ±„àx¬¯¶/N»Ñ¾UÕo B7êËÇúX>–­a «;ð�˜³Ï>Û3&’vjÓ†‡vXÔÔ4‘–Ýéú©©©ÒÒ7IèCú�yæ3ŸiÍšL›6nÐ Ú{ß}÷5ãããÖ©¯ÚÐAï8F¶Üäyd€ê¦~R„E$HŠ]+•i|Æ‚²h B±/is¢¦Áø<¤õúAePå„u}³©××4óê³×8saçÆ¿®ê•ëOú›Õm¯ ç8i+oz&ù?ºâºÐPø”ÚÏæ7 ¶Un,©w,èk˜§}«10Á÷£éõþxË÷ί'»¥¾ºóR¦4 iü¹¶mEî™K8.K6·á½hÔFöÝq¯­Ú!o§h¾Ëw]Ÿ"c�Ñ­\ô|pÏËãÍîW¤ÏÅ-�ý] Æ™#[O§’´Îpþ“õë×[S£Ì‰²>O|â­!REÆDËÊ´ÌìoÿöoÍK^òûþŸ0 $É}æ3Ÿ±KÔ´Œ­éÆ*§òï}ï{íõÚ^;¬[Kï”eÚe—]l–JËß”ùyÞóžg—ííºë®Ö@½á o°¦H}Õ;„dç)„B¨^ý$ 4ÒÀ•�€ÂM~€ fÂc±26x³mÕœEÐÓ¹>Ò‡g:÷=û©#9XwZÎí[ù»Öý{Ð[î½÷^3“ü “Ñ8ï¼óÌÚµkÍõ×_oþó?ÿÓ<îq�³ËÍô,�2+«W¯Ž I&HÏî|ô£5oûÛ­¹©2Bù9•Ó†_üâírº°NµuÊ)§Ø]Þ´Ñ�Ì� ™ÌšLÛŽ;îh3?ªóÅ/~±5HÚÁN¦îÁÌF8\° B Ý @{г@=ô�•6FÐËCuLíÈ&Ã¡í¦µ#œžÒ‹Hc"äRçóŸÿ¼9öØcÍ¿ýÛ¿™w¾ó�ÖèèÝ>o{ÛÛìgí*§ó*ËúH2?zîH×é¹-Ç“Ô-Ï“´!Âk^óû"T½°UKã´aÃ/~ñ‹áÝ.ñ> „ººÍþ´¢o~ó›v³�ü¹ m� Ã!cRg‚´‰�žå9í´ÓlVHY™½ÛGŸu\çÃÍr©n•9ä�CÌSžòkÀþìÏþÌöãoþæol¶GÙ#-{Ó³AÊ i7»O}êSC»œ°ˆMªhù›—éÉ–­±4 †e€î¼óNsÁØ÷êhÓ™m’ åp2Út êy *ÉìTWªSÛsk‰Üßÿýß[ó£�ô<’Ì�²>Z6÷ãÿØüû¿ÿ»µ™e†ôþ¢þð‡v à  „JÏða~`8Ð’±»ï¾Û|ùË_¶ïú§ú'»å´²,z¶Æ5AÚ.[Ïå(³Ûn>’ñÑsDZ§ ôÖü™™0e¢”�ÒrºÙÙY»�Ã�7Þh7OxÎsžc�’6oбaÆ ½á6ô!„RèùŸï}ï{6â,�6Ðò²×½îuvg8e`”‰‘dFTF/LÕ¦2/sÉ…ÒµZ§ç}ògyÔŽ —ÚÕò6ÓÊ® /¼ÐöU(Ó#Ó&#¦]à”•zà�ì¹a„PÈTèÙe\”åÙ|óÍíæZж÷Þ{›ç>÷¹6¤w)##Éœh×5=«sÜqÇu–Å©)7EîOIY#�×Îoz.èÝï~·}‡�2NªWm(㤠�ÚP”áQ¦GËãÂg|~ûÛßÚ�ëôsX7?ȱH7$ô!„R(›ò“ŸüÄ.o“ùØxã�möGïéÉß³³å–[vvc“I‘1Ñîpz�–Ìm¿ýövš^hª¬Œ ŽkzôS›}ôÑæ ƒ²m` ånªKõ*ó“/·“S¶IÙ(™#mÇ=66f¾ò•¯”2=Ãn|rRtðÁÑ !” @Üu×]vëë|™ÛÓŸþtûž�׿þõv76ËM‰ �24ÊÌȘHÊÖÈÌ({¤÷ôèe¥ÏþóíºvØÁîÞ&=á O°ÆIÙ™ž‡?üáÖô踖×霖½ÉX½öµ¯µ"�Sû»í¶›ùéOŠé‰` ÐÁ úB©Äþðû"Ô—¾ô¥Öh<ò‘�´ËΔá‘Ñ‘ñyÚÓžfw�Óq7k“/[ÓÏüùýÌ72�9’¡Ñû{ò,’Ω•“TNÒ3?ÿø�ÿh^ö²—u–áí³Ï>ö™#-ÃÓÆ 'žxâÐ?ïàƒZeƒ¼Ï_r#B(\|ðAó­o}Ën9-s"ã¢wÉ È”|ö³Ÿ57Üpƒ9çœsì6ÙÚ™Mçefd€dldrt�L�>ç&GŸócÊðÈèhi›Êêz]§ånÊéÙ¢½öÚËxà�VZ†§ÝéžúÔ§Z“´zõjó›ßü&ë5ä¤h¡*a€ÀEËÊn»í6³ß~ûÙlŽÌ�27ÊuÔQv™œÊ(ûòýïßüó?ÿ³]Ò&ã’gpdx”=’É‘ñ‘áÑO-cË “>K*«åvjósŸûœÙÿýí;€^ò’—Øì�Ì�Ì�–Ôɘ©=±ûï¿?ë5äX´jÕ¡ a€ D;Âýà?èÊF)»´ÝvÛÙ¦Þwß}¶,øX4qà „*„€*dHd4zè¡ìHŠÌÑw¾ó›ýÑŽozO� �~* $£¢-³õ’T=§óÍo~Ó¾GH›ìºë®v‰›žçQYe‡FGGí–Ù¹ÁR{Ú2{ë­·îl‰­vd¦´ûÛï~÷;ÏŒA�5@¸?¡ a€`®ÜrË-æ­o}«]¾¦÷øè9el”ÉQ–GËÔtük_ûš]Nwî¹çÚ÷÷Èi k™%m¯­ç‡´LN×h‰�v¡Ë‘ÉQ¦ç�o|£9üðÃÍ…^h_€ê–�2©:„P•0@0òçƒòLÏ“žô$³råJ»Mõ+_ùJkŠôŒ�Œ‹–Éɰü×ý—ÝÂZ£]vÙÅ ™&½HKèt�wm°à¢L“ž ÒfŸfXtÀþûa€ªæ‚L‰vÓ‹Qµ „*„€ù¢ìŽžÑ¹üòËÍG>òkrN<ñDsë­·f%R~õ«_™ƒ>ØnŽ esz'�Ì’ž zò“ŸlŸ:õÔSíò:XÖ�c€ªв<Ú!¶e¶ÐKSÏ?ÿ|»1‚6OxÁ ^`w�{ï{ßkN?ýtsÓM7Ùëaá¤hß½1@UK�vqSÜ¡ì�v{ÓÎn2KìîÖ[¬ÚwŸ½0@UÐ2´'¡ a€Úƒ5@ûì�B¨J €ö� ½öÀ!T! @{°hï½vÇ!T! @{°h§�vÂ!T! @{°Hÿ³´è|³ûÓFÌ??rn9©-ã@u´‡ž Ã^;bFFö0‡EÎÅ…BËG €ö°pôõ˜'Œ<Ã* Z>´‡ £†yí©éϧ}À)S-a€Úà PjÒÌÏ©f»‘g˜Ý¿–Id³DZ&—ê ‡Ÿê]Ée™¥¼¾t™]!¯|§lZWÑNÙ˜„õ¸e¬‰sÎÅûä^ëŽ#(‹Z# @{XµjÕ ÐÇ÷HŒ@ñì�5¯=Õ/“™×Lä&$7±ë¼cIÛ¹&ö똭Ž1qžC ËdfÍËR9õ–2Xa¿ŒµS €ö°  Pɸ†(ZÆ*X:Vº®"+Tu>bNº·á*ž½rûÞh¨•´‡ ˜i�‹»DÎUh‚r2+áóD�,O!ß…}ñÛÈŸU*Î;ŠÔÝ‘½¦é8P…hó6@áó2ž:楹qp в-î9›}ñ N,´PT•’0@Ã, @{˜§ª ü½goÒreã‘ïúŽ 3KaV)r¬�ê¾.fprÍa¨u´‡ù ¨áÈ3¾¹H3:eã ãÛ½6)ï�²ÙʯŸ“ÊMLÅ&i�¾A:úð=Š:ç0Ô.a€Úü � üÃgt¥Ëã3‘™‡\Û}¼ljÜr¥LŒ58îõóÈ9Çòzüeu…¡é(Ìø4j•0@ía~ „†H €ö€B¨‹0@í„Pa€Ú¡.´ B]„h „ºÐ0@u =`€ê" @{À!ÔE €ö€B¨‹0@í„Pa€Ú¡.´ B]„h „ºÐ0@u =`€ê" @{À!ÔE €öà „P\ÐV­Z…B¨› �B¨� `€j h „Ú¡€v€B¨� `€j h „Ú¡€v€B¨�‹312bF÷Óé  B Ôwæ`¬r—¬¹&Ä2”}VñòUDÚÀÀ€B¨�úO�M©!ºÎc.('ßÅ­¡²™£Â€•Ôd ‹¡¬±ÑfÙç*º šººdiì6Ü ú…   \ÓãfddÜLÇΡ¡×`�/G+?“Sÿ ÖŒ„Ùœ¬~÷Ú™ /ëä &› ¸`€`˜·Z;9j—²ŒN®�œ_k&G«Î ¨0@¨FƒDú2T!GŽKid€,Ų¶\¥åmáR67ûƒ€eÈ‚ ÐÈȨ™\žŸ�š6ãI}ãÓ±sK ª´ƒ… ÑI39ž˜ äçZï<µKÐl€ÖfÆÅ7;qTd�RuÌŽ5Åñô\¬ŽH[k'ͨg\Ò2E]a†*7Zy¹ì|h€l½Éù’¹CÃ(h=0@Égk\£Q6/^y)3EÆ'7&ùçÈ5¹QrŽye²:=ƒ”]¶SÊöx(-84¼€vДhÚ[  Šò³Böšñi§Œo€ÂìŽÊ�Ž�—�eíøõеS27”¤H=hxí gÈ7�Ê—“ÅTg€¼cªS&*­;=¦ó¹±r�’¹éô5ÖNV&©k4©óƒB@;è¡J”™ˆÜ¤ø(XrVRܘt²7ª#k϶­cž±é¡ Ç…†^Ðzk€YÃ’×îpÅ2³ Óá©Æ˜$õM'íy†*<–h.KàâH&-5R˜ ä ÚAÏ Pn0´¼­dN‚,ÐÚÉñÚ�Råõ¹ÏmxF&[jçÕ‘evÂk« �>c‚�¯ABß{€å Å.‹`€Y3Q63© rfk²ë$× äY%·­˜¡²*=o–ib€¤˜ñBêABßk€¶Ã÷†¾ë0 Ú÷üõ{8?„Ð0i�àÿ,aà{Ãßu0@-C üŸ% |ÏaXà»ÃÀ }ÏWîy¡n€v°r B]í`—=öÇ!ÔMÐ0@54çò[ï3ãk®1ÿð‘K­ÞpÚÕæ¢ë×egûË.»c€ê*hÎøšÙŽùÉ¥cƒÀëvß„P7@sBó“kxÝ›0@u4'f~¤Aൠ„º š3?Ò ðÚ7�c€ê&hNÌüHƒÀkÞˆB¨« 91ó#  „š3?Ò ðê7ì‹B¨›úEìB!„ÐrÕ €B¨�úEìB!„ÐrÕ €B¨�úEìB!„ÐrÕ °ónû`€ê¦~ûÃ�B!´\5ì¼+¡®€æÄÌ�4ì„B¨» 91ó# ;íº7¡n€æÄÌ�4¼êõ „º š3?Ò €B¨� 9ãkfKæGÇ�W®Ü „P7@s.º~�Ùñä+:æç…'üÌœ}õ�ÙÙþ‚B¨� `€j hò> „ºÚ¡€v€B¨� `€j h „Ú¡€v€B¨� `€j h „Ú¡€v€B¨� ,K´vrÔŒŒŒ›éÈ9„CÐæm€R2âktÒ¬�”íµ0@h©í`aÈ3:¹6+—e‹œåsù5�ë‚%nöXÖ^´íéq¯¾¢-çzç¼ÛBÝí`Q3@¹éðÍFj’dŒüëÊ©óÙš›Â•ÚÎçmä×ÇÊc€Ð\4ÌN�ÙOcS³Ù‘3fBÿ¾Æ¦L]©6�ÏGª1S=-³fjlÄLÌd]f&œ:"s;;eÆœóõí¤Ìû>•Ú’&’’ÐKzh€ÊÆÆÍÚT_Wq¼cjü¬R¹lj–BCã–±ýp BsÔ `ë±13Vgnò€¾å(5…9?§d&#SÉÙ¹r Mf@Ür3~�ñv|æ}Ÿlû¾Áš™hÿ½Xjf€œàBŠ.; Œ‡Ž…å¬l(²ìMuuø(3^1åe² ÓÏ'¡yjèÖÉw9šÍHÂd›éH‚övÍé8ý Kjv|ó’ü›·Êçâuäs\7w±º|æ}Ÿ"(=F —ô0TÖB PÇdu5@ �Mç9!Œš›�<8ŸÑÏXd�ËÊ.„A|–ÝèüÇïú<¨w3&Y î][þ•ó�zÅ�ÆL§ÜÄT$Ð6+¢`?«³ÒeÄÌK�1©6@¥ò] GS4�ûd�óÒ™èKn€ª®+ï¢fKࢦ*ª¹–Gh° Ь ÂËBk ºÖ¡ÁÈ�OhÛìIì˜g¬²ëÜ ?3L…9ÉÚŠ´f_ŠŒMØ¿ÖuÚ¹©4 Õ(ìCXo‰†¤w÷)ÖoX(Kn€ê6A(LNZ&7)¶-';¶�ž²:ÎFÓãnf „æ®A ¬� ºƒ‚å,0ërÙ/��Ú™‘) L‡gˆRüãf& þmjŒG ;†¤n«:S7©i*ŽJT2wqæ{Ÿòú‹1%ŠÌ/,Œ> )|nÇ5/©Añëö�ÅÚNM�S§sÞöÃ9‡ùAsÕ à ,A¿=—Gø^`�g`bêf€#‹+áõ­"ÓbÛtê/¢zÔv,󚜔¸© ræ#˜×œ¼\¼~Ÿùݧ„`~-ÖäU2˜ó6@ “/°N� Hci™Œ*3‘�úÀ½È¿¾KS‘ÎOAµ*1bÖlEÚ«b~÷)!6çöšŠy€y±jÕ* BÝ4”|Ìú¬@Ú�îƒÀÚðµÑÿü P•áð�×ðyÿmûÍ †ߢ r_íÜEë¬f¾÷É–Ã,:d€j A à§…17« ÂÀÚ†²Á™è\4?”_W¿­.€Oû?5ƒìšjÓ9Ÿµo§ÂÍLyã+›]’îÌû>ÅæÜÞ»¹÷ªÁ!Ô@ƒ@4ÃÑ¢ê˜ÌJGne¾Hd&¨£ð|�ÊÆTqMµY§íê,I• æ$,�™*¯L®p~æ}Ÿ¢íÍ!3�À!Ô@°8DÍÀ"‚B¨�`1¨Ï, „»�%^°´`€j è%ùsC<ÜK¡€v€B¨� `€j h „Ú¡ê/xÁ ÌGa×OI/ÈÌw�ó;¿ó;¿ó;¿ó;¿âïyì"Üãý„Põ‹Øýi eS(ÛÞq ʦP6…²)ý.ÛÖq ʦ,´l?M¡$ÚðG¯ ʦ,FÙ¶ŽKP6…²)”MéwÙ¶ŽKP6e¡e1@ ¸ú j(›Ò´l[Ç%(›BÙʦô»l[Ç%(›²Xe— B Ô/ú½F`1 „Ѐ z¡W¿ Ð[0@5P¿À@›¸üÖûÌøškÌ?|äR«7œvµ¹èúuÙY&È!4à€…3¾f¶c~ré  „\ý‚ ´‰ÐüäXJ0@5P¿À@›ˆ™ †2@ ¸`áÄÌ�áW¿ m"f~$€¥„Põ ´‰˜ù‘`øègŒ³jÕ* BÝ 'f~$>X‡Ð€«_lü’ý¢ÁBµIK ¡ê „Ð0訣ŽBµ\!d€põ‹X €BmS,XBµK! „\ý‚ Bh°”`€j ~Á.pÐ&bæG€áƒ B.X81ó#Àð�BhÀÕ/È@›ˆ™ `)Á!Ô@ým"f~$>È!4à€…3¾f¶d~t † B®~AÚÄEׯ3;ž|EÇü¼ð„Ÿ™³¯¾3; °4ÌÛ­�5###e�OGË#´œÕ/0@ÐF–eÈ ÑI³Ö;¾ÖLŽÊ�šÉµîq„–· w´È¥šOLPÅ9„–£ú €Þ²(èžµ“fÔË噡\‘ ‘½Æ)ã-¥›6ãɱñéô§W‡w],ó¶­zÊçG'צÆ-/‡�CŽúÚHë2@…aÉ>O�{¦#}~hÜLçå« SÇ寧¸¦0+Á1¯OÙu®™Ê “ Oz¬0HEÓëŠ2hؽ£…(5~¦ÅQ`xd\Jf#1M…¹ •”™ò±¢Þª>úÇC³+ƒ†]ý‚ @oYš �d MšiI••"SV7,ykb¬:åòºÓöÃr äª_`€ �´/1ÕKÞºd‹¬0@¨¿€ÞÑ2ІF¥þýAó3@U}ô�c€Pwõ‹#�<ÒŠßù�ßù�ßù�ßù½m¿÷‹Þ k@B3š—<#䘗ly\hpÆ;¦d~(¿.¶ BØ ª´ƒ… ™ O�!Éå=ÿ“”™Ž˜—Ò3BÎ’¹y )3A…ç1@¨» ÌÛ!4L€v€B¨� `€j h „Ú¡€v€B¨� `€j h „hP˜�sÞi%�™©Ùìä 33aFƦL¬»þ¸Êcš™pÇœhb&;cÖL�%e*Úê þ4­kdÂ¥f̄۫et† B 4Xõ³Sx{æ&bJÒó…Á?'Ì„7ÈÔ€ŒU <76M ÐØ˜óÌM@Òö˜í{Ù¹¾©ÔgX0@5PÿQн ³ Ö@¤ý¶&¡dJÊf")i³.•'!^—Hçib¢ê¼ƒ5J‰ªiK¦slb"0I±>/Óû0„`€j þ“ÝõY?ËJØ€>¯£“݈gglÆIQ~žQ±òƒüXVªŠ¨i‰ô[tÚ® Êåã«6HyÛú-›™šÍSä=l0@5Ð@�‘¨1ƒòüÙ÷˜_ff ê³òNÝÖ„í¥¦ªôj€ªŒJ½�‰gˆÜkê¯Ï蘯´>g˜[‡ZsSg€ºg¬`pÀ!Ô@ƒC|ÇŒPžý°dAûDäXçwMCÜÜÌ?Ø�™’*£Rg`RcŒ#È$Õ]ßÁ¹Æ–÷æSãÌŒ^…J3b¹ªç B 4xäAxEЯà^½~fÇÊA¾N�¼cì¹ ¼¨:Þ�˜)©2*ñãÙ˜Ãã‘ågUõzx¦Iu;u8ó–Ö_6@¾_R™r  B 4˜ÙÇȤ¤ÁxØ˼²€Ý52¡iX ä›�‚RYc™'[Vc©PeWƒ¶Õ¿¼þbþš „ùÎ ,- „hPñƒîÜä(@/ö4˜÷�ÅÌH3þ›5@Ži+ˆ›µ¹´m+¤d¾²9R{îµ €V�B¨�úOt‡ÁuÄØÀ?9æâ�cnPÿY]%”s³.é±â:û¹›ÑȨ2%aa9ûyŽÆ¢ª-�HöI}óÍM¹0˜`€j þ“Ýù²®Taæ$!ˆgÇÂåc¹Á±JÌÂL`ìù¤"¯\Ä0t5u¦$ì‹[ÆoßW•ᘯJçªÛ±†÷ B 4Œä M`€j am„P # h# „hÁ@Á!Ô@Ð0@5´ B í„P@;À!Ô@ƒ„^¼ °\´Ø„P  …Áü- æoa0ó‡¹[ÌßÂ`þÆ Í¡$ø#¼0˜¿…Áü- æoþ0w ƒù[Ìß´ùÃ!Ô@ƒ„ó·0˜¿…ÁüÍæna0 ƒù[ƒ6 „Ú¡€v€B¨� `€j XÞ\~ë}f|Í5æ>r©ÕN»Ú\týºì,  „–7ãkf;æ'—ŽÀð�B¨�`yšŸ\0|ôßM�›‘‘q3;‡Ð€–71ó#Àð1o´vrÔŒŒNšµîñµ“ftd¤|¼N ´ Ë›˜ù‘`øè¡š6ã2?ãÓ^¹®ZÈ»Q3¹6r …`y3? =2@kÍäè<Ì�„BË@°¼‰™ †�ž éñø²7[&4E¡™è ,ƒ”itr­]n²:e|Ó”÷gZ?uÞ¶›Ö9>\[2jÕuÛz;Ç%×ù}.Í�›s~> „`y3?  6@“æ§S¦‘’Ap Mö,Qa‚Rƒâš¢Ô˜”�Šoœrƒâ´—Õ=>�—é^w<”›«â˜gK×$å1@ËVý"´£Þ †�… k.|P*ÓÈ…æ"»67*S2Y¾)™§L˜M²F%ïWƒºc¨ëØì¸Âþ åª~ ÚQïtÔQG!„Bh 4H,8”.9+˜N™F(bœã©¹IÍV(Ïu32™\ԤuD®)æ¢XV0´üÔ/bA;ê�b B!Ô{  6@2©‰(› {¼W(¬'�ÛŸâxCÔ¥î*ÔÌØ¤}À-oõ‹XÐŽz'>zb€ô9͈øF&jJ¬±én€\“Ri’Í×5©;f€âíUk®åÑ` –71ó#ÀðÑ3T,ùrÌ„5®ɳ!¡J޹ueÇJ×y™š¤½ñâšy uGëÉÆægu’rޱrËc€–·`y3? =4@Rf&ƒcËÙcRbŽª–ÀåF(ShZŠºãeæo€ŠrUuKÅ8œ¾g&¨¸.bìra~–µ`y3? ó6@ “`y3?  „–7ãkfKæGÇ`øÀ!Ô@°¼¹èúufÇ“¯è˜Ÿžð3söÕwfg`˜Xµj¡n€v@¡€v€B¨� `€j h „Ú¡€v€B¨� `€j h „Ú¡€v€B¨� `€j h „Ú¡€v€B¨� `€j h „Ú¡ZnÌN�™‘‘ 3“}®fÖL��˜±©Ùìswš×=˜Øþ�M%#ï33É<Ž™9L=ô B 4¤Æc¤¬‰²ÁUƒn0@5Ð ÜS3ÿ@zîh¹ÓdÍÎò5�m„P u�ûÌDb‚æÔc€– ÀÀ€B¨��ÚÀ}vÊŒ9Y rÙ3á-�˃ñ²²f*)YYg ë¶å“ÂùuRZ_ž�r�9Ø>çcc³muÊ$ã›ñÇ™Œ­‹¹‰Î£5(ÝêðÇ#uæ¨f,î¼¤Êæ>jŠÂûëÄLЗª›%0@5Ð Pk€:�qúÉ/39q”ŽúLEØ�’arÌ„Ìæ‹>ˆ, wùr_rsàÖã�[ØþTÎS¹ÿi;aßÔN¤m¿¡N»ÝÆ¢²¥y �e&Ê3ŠÙ\UEæ »ÎmªÁ!Ô@ƒ@¸û¤AwûeË&¡ 0@1##ì‡5 ^åà´SE£>Ç2]a¡ LH³¹ñ�‡cîF©|TžÇÿxÚ¯p«®€2 „h¨Âëvû99_¾>3&c:ßÝüˆ°î*äéqd¯U¿råõZ˜›Òõ54@Uí$¨î¼¿îïUTŽEt5@éüD=ŒÊuêŠ6Û6  „h¨5@A _U¶¤wÎ¥�÷Hb€š.£ê‰²ýõ¯kdL"¨›1 é¹ê6�0@5Ð Pejòà٠ЫË&x&¹ÖäÝMPX÷| P¬Þ±ÌT”úbûX ÚqVà_7áñºvºŽEt5@ú71þq ÀBÁ!Ô@ƒ@4�dD)ÈwÏW ÑÀ…ý˜�JÛq A>ް^Ï4¤Ál¿­`¼aÿíg·ÎÛ¶7×YÛn½ÉìÇcI�ùmT]ç�Å–q¯Ã, B 4¤�º €« ¨Î( ÊkÊf¥ÓNE@ˆy „ÔàdJê› ê^™…˜‘È GGñ9É û/Js{8�…y™ÛX²ëB$Jc Îg}ÀÌ B BÌÌ B ƒA,{00@5,=3A¦Ç.«>   „–žÒs9˜è „Ú�5@;í´S4è«ÓÚÉÑÒ�7Ó‘²-w@;˜wÈ ÑI³Ö96=¾´&ȶ7>=‡P/í §èž{¦ÍøÈ¨™\ë[ Ô{@;è±J—Ôiy[&ç›ÁqÎÅ7=p˸†Irž3"„Qýä«_? !„B=€5@‡rH4èC¥ê'ü±è ü*ˆÔ|p4èC¥ê'ü±è ü*k€>ø hЇJÕOøc ÐøÿTÖtЪhЇJÕOøc Кþêe—]†–@ýbÕªU‰Jþ'ô!„Rõ @oÀ –ú…Í­Z5 úB©ú  7`€Ký"5@Fƒ>„Pª~‚è  ÁR¿°hâÀ¢AB(U?Áô Ð`©_Xtà�ûGƒ>„Pª~‚è  ÁR¿H Ð „êÔO0@½4XêÖ°ÿ~Ñ !”ªŸ`€zh°Ô/¬ÚÿñhЇJÕO0@‹ÃÌĈ™˜É>U0;eÆFÆÌÔlöyfÂŒ¸Ÿ–%¿7çŒ�˜ ž‚¹6;²´¤í?âÍßÍ>ü¹9ntóüz33¿?gÜŒlð|Ó½ºž“ þøóãÌh£±Í—?šŸ7jFñfÓËYÁ –úEj€öÛ7ô!„Rõ“ê?Ö3fb$ â=M$G}è�UEìa€ïRwnQѸªÛ�� ÆœhlÊ̵›‹i€l+ëž5ScAÿ3uëÔ7ÒûSþ7`±÷²âÜ@ÐÅ”ØÀ< �'&Ìx4èlx½ °ßÕ׿?§bz@dMMäßol>Û©þêû˜Ö92òSW­�ë¤ÿsm»'¨v¾1@à~a Ð~ãûDƒ>„Pª~ûc�š€r 83 ë¿�4@Ùø*Ü€=çžÌPÌÑÍË5¦.POû[2¥¶­¹�£ ”ïi5µærY ú`¹6Ó 0¬6»>;Ð�.Áóüh�*åÍÌF5ó3@i«ÚT�˜±±ø÷%%3i€‡~ ³V¯°síiåñѲâ~a Ð8¡Zõ“Òëº /JpGcÆ5@uÁj4XžG_×¥õÇ3oÈ’fõ*3v-e.¨î»±Ü Pj8bÁ`¤æÿ¥ßž±ÿ*ÞðúÆ`€¢Ä �XHÆbž(k3~]Zçcc]æò¹fâ€:“4wY´bµ9«sìx³2ù›¿bõY^¹aR¿H о{Gƒ>„Pª~âÿ±® žl°W˜žÊ³.À�œ³¦!ÿ¯VNý|çü>¦�ýÄLú³È^åŸsåjõ8ãcÉë×ïqÃ^×1@^¿ƒ¹ç `gs]Ce0^cã³ÇÜ6ÂÁ‰ª~Øãa?Â>„÷GÊÆíÕÌ�%¸‡^ß‹v¼ïN§Lz¾s¼ö\ÞvÍü55@ö÷ÈXœë;÷!˜×òÔ‡ýôÛÏ¿gùø«î{J…Q ƒÄÊ ±áõa°�ŸÿÔ·’Ÿêç#ÌÄDäwÆ”³Å£æ£¼ÛàØ¹ÞïSï �5%N{^Ý‘ñCwû™—‰ÍmAµJLc©¬=_ô³8ÎIf¦C[5§Õs•×9“üŒ�IýÛàùŸ2ߊ˜¨°½pÌ�vg5¿E¹¢žŠûì~+¿Ë"ü>Ÿ¯vï·7vµY®Ï½ƒe€²cCœêÖí»Ï^Ñ !”ªŸx¬«·�,h+‚5©‘ëêê Εó$XìÔ_ <Ó 8 °ý2å@vfÂ9¯:½`:%fü¾¦õ†�jx]' w ¦FÙ�p~ÂqÚÏ~[ÅâýÈ�WÂAi?ËóÞ‹Ê~Ø1¸×‹°åûS–à˜7÷éu~»n™¬¯^™ð»¡.–ï©­Ç©xvj¿AyKx\¼yˆß·Íô»Œ·4ÏåzÒëÊóèÎQ±`6v, \£“Ðìú 0µAhÒÏàº4X2@� Pòy –³ú»Æ±qtû�Ôÿñƒ�¹°ýv‚àŠñÙ6¼ñ¥ýrMGŒZô^Ùàœm¯3OþœØëÜþ†÷³®�õ¹¨ÓŽ5ì³í�êL�…{?lûÞÜd†ÌéS:Á¼Ú~ã¨2Nº¦4'.q¤OE_Ó1eâsáöcÐ Ðñ+“9t P^æxýÔü:çlYËäfŽ*ëöŽ�eV¯1+�w®©¨/ÏNuÎu÷Jý"3@{Fƒ>„Pª~R6@^ˆ•‚î0Àw Î…iA†§ü ¶ôæÇªC�/÷­,§õ}kÒŸl<¥ :hÃùñìxíbÛ, °Ëuî=®º?Þñ9Ô×!¼&r/ìu±cE¢ã‹ô-,Þ‹ò=í6·ñïFz’ö*åÌCÉDùuÚ>Eþ­yÿJu.ãß³Ja98µD�HB£ëý`;½Æ *3 [DÛ ê+²ÝÊ«KYp]¥ØØ;4_Ejò”XP_ z‹ë½²±ùìPô§l>²ù¨³®)bgŒv\å:Çì5Áw¤j‚ãé=*�Çs©Ý†mYÂïMú¹ÖPóŸãöi  Ðñ+“{½Ò–I¾ã¾I�‹oB2ƒ’¤³V›#+Ì곂óî1·LØvrne§ÍôÚÜ(Ie3Õõ k€öÙ„P�úɼ2@1b�p]}á9ûYLÃò™‰©øEì„4ÈtËùÄìÎ5Žü@9 ž£m9íT:ïx8žªÂ=beº÷nÑ[¸cìÒ�Ø}/õ!rbß�à˜�«à^¤ÊËÄÇÞ‹ð³Å΃ê*›ûnø÷' 4Á¼síS‚{Üþ^{ª¼k±ïÙý?úW³…[~³÷›gçJA_$pM ÉM®‚ÿª tA(=æÎÉœ PUÀ냃ß^íøªæµj.¼?$¸Þ/›ðÞ\ä¤sbŸ×‰š¤b>£ó�?ϾIÒ¹¼ŸÁw)z�…_®êùǃºÃ~ÖÎwð].}NYvÈùŽJáó?ißÅŒRù¸ŸÝ±çV¬4+KÇRS2cŽì¹pY^É`õFý"5@{í úB©ú‰ÿÇ:¨6&b bAnNÕ¹N`šŸë€[êûÝ ¤Ã€³´fAg$0-ˆŒ3!¼ni PZ_Ì U Ûϼý (/pÇØ¥‘9,÷!rb÷?8V[H|¬á½¨»§öœý¾cˆ�kNÈï¿~wÇ_Õ'÷¸ýÝ›´2Þ÷©!n@g¯¶«Îu¿ÞŒ“Bñ tžȶ™Ü³Ný¥À5h?‚;†Alpë-[k0¾¨aH¨ ÈSj P¬oó¯ïu8'©ªißö/½ÖŸ¿ÀhX"ó0–õMýìô+¸6z�…_®ê…ÇÝï ~O³Nµó~oÂÏ)~{s¹¾�2@�é3+±2QCb¥LMaJÜåtºFæÊ½Vç ÃU,qs3=y¹ôïn¨– ½÷Ú=ô!„Rõ“ð�µ ¨*‚Å®”ê4ð�±uAirÖ lëú”zd‰Ü a�]ß/ïO8oñÀ4ègØ'/Àn2î„Rà]s]Ø^ÅœøÇ»ô#ZGxßçg€æ{/Âëº×ÿþ„ß ÿþؾçt̶«úýsñ>ã©k/#þ=ëFÄÍF‚Z—x°×ýúH`<Ë‚ò´¾X� Ú�P\[¼=VWƒñy}v°ã‹ÍiAµ*÷¥Î,•÷ôZ{|>}(—xñæï$÷cÌ©ß76ÑùÁñø=ŠÝõCß�sÛM¨jËÖ«;ìGyÌùuƒj€ÂÌÊB P‘R6(;në×± l.{^æ¦0B¾QZ\õ k€vÚi§hЇJÕOÊ¬Ó ,xuÞdƒ½˜áP çµ6ЋºþõÞA ­# ‹ëclrÌ=×ÓÖ=XÎûãôת”sèô˜s]ا0àÍê­ž'‘ÎUQ¦Æ”æ(Ò§ìz/¨®íG¹|yì‘û»á±ì{â�ޝ5cuïa8¯ºn½DZïO‚®«­ÇÁö5vo’ñL%וç÷Ã=žsç$í—­ß÷ù 4PÝà¹æ€ü¿ØW`Ë¡¨¿>¼)éµaPª¹Êë ƒó4 /g;ü Õ'\gx�~9(¶í;ý©_ZÎ5si¿æµ ‚5NîS¼²I™ gÌu�{:gE?þøó�›ƒ�>Eû`ëpû™g;wcfì¹îµéºåÊsã›{$»¯åcñ¹~ÄÁSE*§ç(ë»ó9ìçr4@Í–ÀI™É9>©³SGf†¼ce…Ù£RIý"]·ïB¨Ný¤ê�u'@s•ZY`‹»�…i8ºu�oB4çª à;òLJ,€Í‚ÇŽÊm¦¨\q®ÎØóy?Êåò¹«êkþ=›3u Ï 8Ô^Æ5Ahk\N0œÕ�×uW�vn$RåÛ,}‰æaPëŽÙö¿h/Ýöy®ã“’1~§. Oñ¯q®� Ç–u P1o‰¼ñ•ç$oGó6›ñ¹Jæ'E×ÔÏsÙìÄ�íç ¿Kù=úԷܾUÌ]6ö°�ðÞudÇ7?”�;¯Kåí¶ÙY�ƒf€¬ñpŽÅÍGõ&a¦&_¾æï,is²Hg­^éeƒ\”g…üº“ö¢Y¨…©_X¤ÿ‰}¡Tý¤éëÆT‚ƒŒo –#A =c¡ß�²K©:>xăWR¬¡ˆ›±¾b Ð`ô«ïHFÄU`*ª³/™ r® ŸÝ±²Y¡`©›=æ—/õ%47ÎÒ¸T‘ås=P¿À!Ô@ý¤ç(û¯ëÑ, Ë<,3æ� €zôݨþ·°| Pì¿€ÃðÏ’ô/Ögúi€PYý„Põ“Þ °Ô,™[N` ©Y‚Ø0@ƒ¥~�B¨�ú  ×äÏíTgŽ0@ %ÍFiùÔ -ÑÄ –ú¡ê' €Þ€,õ B ÔO0@½4Xê«V­Â!ÔMýÐ0@ƒ¥~A¡ê' €Þ€,õ B ÔO0@½4Xê „¨Ÿ`€zh°Ô/0@5P?Ñk„BõF „Ú¡€v€B¨� `€j h „Ú¡€v€B¨� `€j h „Ú¡€v€B¨� `€j h „Ú¡€v€B¨� `€j h „h¹1;5fFF&ÌLö¹šY356bƦf³ÏÝi^7Ì�312·{�’~w&øÇ P ¡Rã1RV$ÚÁ-gÃ…ß·Ê zf¢þ|HVÞט)†›~'Ã2ÍêÏ®u íu«'úï¬ñàú�c€f§ÌXþ;x`€j AÀfcSIˆç’‹n9æn€ ýÌL$ß©Òw-FaVºÚyÙ²yÖw»¸>ò�´&¦ûw¼ôo$¼®A=ågË)#d€ìxù�! „hˆ ”æk47ü.ÙïäÄD£eWö;Ú(ûN¦Çê/ËÄ¿ÛÝúûw–޳IßûM¸Žß10@5Ð Pg€’“fÌù/Ûå²i`T,ëÉÿ«p9@²bM@Ö�”ùuRZ_Z·Ì![¢“Ÿ��ͶÕ)“ŒoÆgJ0¶ª9ÊÈû?ãÖ� ÖC9à­šÃû_Úƒ9ë–mÈ®é¨s±Äúsèªh+,Sÿ_üÓ9­*3‡€ÙÞ?ÕÝ‚ïg=±>4mÃWE›å>±óÝLS™t á%¥º»üð¾�±ù ¾C3åyê6^€a„P õ�ŒøøeËåÌD(úçìuMh§y�Ö ºœ Ì?æpEDÚ7È,÷%£_O9à³ý© øÒz�ùp‚Ðð˜[ïìÔDп^ºì¥à<)_LV͵á½,ßÛn÷°þ¼ÚV¿Ò>ä÷±Ê ¦‡ëú›âÏM7bß×X|lnû�‹Œ³êxF©¯]ÊÇIÇvÙ¯;œ·äš‰¢ÝÒ˜ÃC¥Si›Þ¿;1¯þ´ B 4Ô‘~ÀUh¹Á¦½Æ ¨â„ý(§Y 9æµ!�ú{MX¨d.|Âþ‹˜iêt—Ë¢Ïs¿Ö¥ú~•ú©z‚~×]ß•Ž,�«Útuo/zŸì¨­Taýî¹&ßKÍ�÷ýªšãÚ¹Ïúêµ]ÿ½�“Ž!²÷Ý«ûžÚsaÝy¯ú÷¹]þ= # „hˆî~à–íu¥ë³@jLç›IaÝå`?œÅ6{mdzý‹€ A0Wº¾£ê±Äæ±<†ø±Î¦÷ 0_0@5Ð P¸•ÆÚ Ï æœk³ÿêÜ-žëž�ŠõÏ;–Ú¥¾Ø>Á\í8+ˆ]ÓÕÅøÒ±tŒº$V_~ŸÊAle}±~-ˆØ½ë6ϦÉ#^oJxn>}HçÈ¿&Þ¯r9Ÿh;ó4@a;ö>V�Á½—]ÛKÇVGìßÍœûÐ~0@5Ð P˜•ƒãR@íž÷¢ P³AX}0ö£œÇ‚¿X;Nàž�#¬× îÓ Ï[–]ç·Œ7 6�å1ÇJAdÞ—¢^p›õ«²ÉøÝs¥ûå\kÏUšœ¬^CÉ\;Ó‡Ô×—`ïMyŽ+Çô·’ü— †ß—Ø÷'mÃ?æcÇÔ]kø½‹àß‹ïÞ6$Þ¶ÿ™pÇãõ-�ƒr?ŠúÒúÝïdvMx/Œ`ØÀ!Ô@ƒ@ð¤N!7*ðƒ¸ñtó´÷?ÂJ¿ë˜Î©LìZ„–›`xˆëmÐY«W˜‘«ÍY‘sýP¿˜—ºíŽ[ÌW/þ´ÙöãO2=böÑ3’I¿ë˜Î©ŒÊÆê@h9 †‡X°¾˜:~eG�¬4ÇGÎõR ”9 eudlþñØMÌ“…ñ ¥s*£²sÏ­5“£I=#ŽF'ÍÚhÙ¦š6ã#ãf:znšïAŸz§µ“£fd|:z-\ýcÖL�ÿƦ’£ aÆLŒL$ÿ»tÌLŒ˜±©´×ú}Â6®±�™ìp+(ƶ ˜™0#]:ëÞ·Å`vjlQë_T4 þ·ƒJ,X_4�µÚ¬YaV¬1+��œï¡0@)s6@ZÚ¦ìN�ùÉ¥2*«kbuUKhÔL®-ŽÙA¦Ç •úGÙ$(hY��Yzä²øhõ60u´ÍõœÙ)3昆�6@A_ûýï––X°¾X²¦dåñKbN0@)s6@z¾GKÜb†'&•Õ5±ºªU6@’LÐèä\ÍT. š¿úG<˜_Xàˆª´¸`€`™ ÖGg™Õ�ÌÏñfåÈ ³ú¬ Ìñ+MºóÓM*«kbuU+n€îY;iF;Ë΂erÁò¯éñâ\jš\¤ß�kTo^O§LÖ‡Éq{||º¨ÛJKàj¯w•¶=i³XWhÆÂ¾%¿«þ¬ÎNÛY›ÅØŠ:\s˜þ>]Ì�»TÏíkr|2©«46TRÿ¨æ½àLe²{*A­‚òü\lº�œ~w®Q½y=�2Y¦’€99îWï…6;Õ) ëÒs®1hb€l™©´/y€\‡=šößJuÅæ¢j~‚qM¤?S…ýšË8�>uʈ°¯ÙÑÚkdX"×§&bÆcÑO{MR_1wθr¤Ÿ¥@?-—ö-;Z×O·oS鼦xß­´ÞRß½~ø÷­ÓœÛV`¦:Çݾ9óà~‡"í”úêÞ»ìÚ|þDö{Q¿s¼û>‘|ßÓW1è?±`}QÔ17éç¨)±eô·ÂyFÈ.›s�JaŽŠet©™qM�— Ú.ê�˜°ER¿˜³ÒNo1£S']««ZÝ Pj~Ül�L�kÊÏÃä&#½¶ô{¦*QÇØd«TOX.m»ÞD¨m·¿Ý �Ó®ÚÉû—™¢¼­pÌÞø­ÑR9w¼iÝÞØÝϨRý# ÒÃȨc€Òà­æÒ /ÿìê9 È ¥×vN{¦*¡àeb©áö/ý},3n}å@Z¿¹×úØ@Òé‹{½{]@‡T×ëŸÓïÁ¸Ü Ö#¼®zœEð[‰ôw'(ntM N?ÓÀ¿¸Æ»çY€Ý’>çóêÝ_§M§nwÞ+û©±¸}¶mVŒ!øŽù}OïGÚ^Ð'ÛžÚ�§„ßÿû’´�RÕNB©|p�yJÇìÏUÚŸtLEßT‡{®bž ïÄ‚õÅPÉðÄL‰=V6%þr¶Ô•27�¡ñ¯q³OÎùRVhñÔ/–Ÿ²Æ ä]Ó’Ÿë˜£Èµ6øOL‚k~¤ÌTxª­'“c€|Ókpº}®9ç´iô!f†¼Ï¡ÙKÔݼ!©TI Îl´•TaP× Üª,a àƒ 1 â<ÕÖ“Ò >³>ÍLde“úòÀ/ ¤Óß«ëõX• ú•ȞϔH½ÁØ*ÛW9¿²s§è|Ö5Nû©Ò`ºòšÁ×$„sŽƒX°Þ{Å–¼KÙ:Çb¦¨tÖŽðû*ò6l»îüÅæ²˜§]w„øXÂy€þ Ö{ªÚÍsdMLò·¢”r Oj€üg…²cÎ3=1dëZ¹:i³ª?‹§~1g´4/BEK£.&u0¨„&Â# Ìë˜KÙZ\ƒ !€åA,Xï¥lö¦f¹Yº<.ËÜäYœÜeò³=y(7B™‚ ¢(b”–JýbÎHºíŽ[¬±QvGKÜÜg‚ô»ŽéœÊ¨l¬4R6(|– E0¨ôÆ¥Ùˆ^æ6D„Çfƒ0‡Ë�X°Þ7å(v®£ÜÅÎuÓB®]˜úż �¤¬Ž–¶éùmr �Þ$ý®c:GægÐ.- –å¡J * 6@*“ü=¨¬£+UKÈ@t]šI,Xï›Û5ªqÔ/æm€&Àð Öû¦E5@5›1,�ú¡€á!¬÷M‹d€ÒçŒFúòìO®~�B¨�`xˆë¨÷ê „†‡X°Žz¯~�B¨�`xˆë¨÷ê „†‡X°Žz¯~�B¨�`xˆë¨÷ê „Ú¡€v€B¨� `€j h „Ú¡€v€B¨� `€j h „Ú¡€v€B¨� `€j h „Ú¡€v` Ð>ûì úB© X´jÕªhЇJí€ B í€ B í„P@;À!Ô@Ð:HÒ³@:€B!„JµÓN;E�»Úo¿ýìÏ<®–tÝ6ÛlS*‹ú­7›ÿØ ôÎŽ¤OIEND®B`‚kubernetes-sigs-kind-49aeee6/site/content/docs/user/images/docker-pref-build.png000066400000000000000000011132341524365506300300660ustar00rootroot00000000000000‰PNG  IHDRèš[Ù¤m %iCCPICC ProfileH‰•WXSÉž[RIh¡K ½ R¤K -R¥ 6BH(!&;º¨àZPQº*¢èZö²(öþPDEYu±�ò&  «ß{ï{çûæÎŸ3gÎùϹ3“;¨ÅrÄâT€\Q¾$.,ˆ9>%•IêÀ¸3W*Œ��P†úÊû[ÐÊu¹¯ŸÇÿ«hðøR.H,Äé<)7âƒàî\±$B7Ô›OËCL„,�–„ØBŽ3•ØSŽÓ•8Ra“Ç‚8 2�Ñd *çÅ,àfB?ªK!vñ„"ˆ›!öã 8<ˆû!™››±š Ä6éßùÉü‡ÏôaŸNæ0Væ¢r°P*ÎáÌø?Ëñ¿%7G6Ã6š@'ÏY^·ì¼9¦A|^”±&Ä7„<…½?ÈÂí?r¥,X3 Jãq‚# 6„ØL”9¨÷ˆ²!†µG„ùìå\”'É‹ô�NçKCâ‡0G¢ˆ%·)‘e'úÜ(ೇ|6 ’•<Ñ«¤hˆU!~ ÍŽ�´yY(`EÙHdqrÎð�c C§´Á,r¥CyaÞ!;zGæ •s±É\Ž‚›ÄY|éøÈ!ž<~pˆ2/¬ˆ/Jä�•‰óƒâí·‰sbí±f~N˜\oq«´ ~hnO>\lÊ|q Î�MPrõ²8cc•p; X 0� ¶t�²€°µ»¡þRŽ„�€LÀƒš¡ÉŠ|ƃBð'D| ž¤åƒ¨ÿ2¬U>@†b´@1#<ƒ8D€ø[¦˜%Ž–žB�ð§è\È56ùØO:¦Ú�ŽB &†C‰¶¸î‡ûà‘ð› î‰{ ñúfOxFh#F Äýal7¨ýž«l8ãoµôEq¢ ]JÅæGªvªnÃ^ä•ú¾J^éÃÕb �ü˜ë»úñ`ñ£%¶;€�ÃNb°f¬0±ãX#v;*ÇÃkã©bm E‹SðɆ~„?Åã Æ”WMêTëÔåÔ?8òùÓóå›…•'ž!f ò™�ð´æ3Ù"®ãH¦‹“³ò³_y´ô\Qœéˆ¾Æ7Ý|"c²ÓE�à਷¿élÈp;ßàü®LR Ôáòþ£¨Á�¢ŒáÙe3rîÀ€0Ä€�&Ã: à:•€i`˜ŠA)XÖ€ ° l;Á°4€fpœ—ÀUp܇k¥¼=à=èC„„Т�˜ –ˆ=â‚x"~H‰Ä!)H’‰ˆ2 Y€”"eH²©A~G#'‘ HryŒt!o‘Ï(†ÒP-ÔµBG¡žh �& “ÐLt*Zˆ.D—¡ëÐjt7Z�žD/¡7ÑvôÚ‹LÓÁL1Ìca1X*–�I°9X VŽUcuX|Ó×±v¬û„qÎÄàz Çq.>Ÿƒ/Å+ð�x=~¿Ž?Æ{ð¯:Á�`Oð&° ã ™„i„bB9a;áá Ü;�„÷D"Q‡hMô€{/…˜EœI\JÜ@ÜKÉžäKŠ!qHù¤bÒzÒnÒqÒ5R'é#Y…lBv!‡’SÉ"r¹œ¼‹|Œ|�üœÜGQ§XR¼)1ee9e¥‰r…ÒIé£jP­©¾Ôju>uµŽz†ú€úNEEÅLÅKeœŠPežÊ:•}*çU«|¢iÒìh,ÚDšŒ¶Œ¶ƒv‚v—öŽN§[Ñè©ô|ú2z ýýý£*CÕQ•­ÊS�«Z©Z¯zMõµEÍR-Pm²Z¡Z¹Úµ+jÝêu+u–:G}Žz¥úaõÛê½ g��\�¥»4.h¼Ð$iZi†hò4jnÕ<¥ÙÁÀæ ƒËXÀØÆ8ÃèÔ"jYk±µ²´Jµöhµjõhkj�ÖNÒž®]©}T»]Ó±Òaëäè,×Ù¯sKç³®‘n ._w‰n�î5Ýz#ôôøz%z{õnê}Ögê‡ègë¯ÔoÐh€ØŒ3˜f°ÑàŒA÷­>#¸#JFìqÏ5´3Œ3œi¸Õð²a¯‘±Q˜‘Øh½Ñ)£ncãã,ãÕÆÇŒ»L&~&B“Õ&ÇM^2µ™�Ìæ:æif�©¡i¸©Ìt‹i«iŸ™µY¢Y‘Ù^³‡æTsOó óÕæ-æ=&Q³,j-îYR,=-–k-ÏY~°²¶J¶ZdÕ`õÂZÏšm]h]kýÀ†não3Õ¦Úæ†-ÑÖÓ6ÛvƒíU;ÔÎÍN`Wiwŵw·Úo°oIé5R4²zämšC C�C­ÃcGÇHÇ"ÇÇ×£,F¥ŽZ9êܨ¯NnN9NÛœî;k:�u.rnr~ëbçÂu©t¹áJw u�ëÚèúf´ýhþè�£ï¸1ܢܹµ¸}q÷p—¸×¹wyXx¤yTyÜöÔòŒõ\êyÞ‹àä5׫Ùë“·»w¾÷~ï¿||²}vù¼c=†?fÛ˜_3_Žïßv?¦_šßf¿vS޵ÿ“ó^Àö€ç�¶�Y�»_9I‚}`y³f³NcÁaÁ%Á­!š!‰!!�BÍB3CkC{ÂÜÂf†�'„G„¯ ¿Í6bsÙ5ìž±cg�=A‹ˆ�¨ˆxi)‰lŠB£ÆF­Šzm-Šnˆ1ì˜U1c­c§ÆG;®rܳ8ç¸YqçâñSâwÅ¿OJXžp?Ñ&Q–Ø’¤–41©&éCrprYrûøQãg�¿”b�"LiL%¥&¥nOí�2ä́Ήn‹'Þšd=iú¤ “ &çL>:Em gÊ�4BZrÚ®´~N §šÓ›ÎN¯JïᲸk¹¯x¼Õ¼.¾/¿Œÿ<Ã7£,ãE¦oæªÌ.�¿ \Ð-d +„o²Â³6e}ÈŽÉÞ‘=�“œ³7—œ›–{X¤)Ê�Î3Λž×&¶‹Û§zO]3µG!Ù.E¤“¤�ùZð#û²ÌFö‹ìq�_AeÁÇiIÓLט.š~y†ÝŒ%3ž†þ6ŸÉ�Ù2ËtÖüY�gÎÞ2™“>§e®ùÜ…s;ç…ÍÛ9Ÿ:?{þENEeE/H^дÐhá¼…¿„ýR[¬Z,)¾½ÈgÑ¦ÅøbáâÖ%®KÖ/ùZÂ+¹XêTZ^Ú¿”»ôâ¯Î¿®ûu`YƲÖåîË7® ®­¸µÒåÎ2�²Â²ŽUQ«êW3W—¬þ{Í”5ÊG—oZK]+[Û¾.r]ãz‹õ+Ö÷W*nVUî­2¬ZRõaoõ�ë6m*Ýôy³pó�-a[ê«­ªË··l}¶-iÛ¹ß<«Ùn°½tû—¢í;ãvž®ñ¨©Ùe¸ky-Z+«íÚ=q÷Õ=Á{ëê¶ìÕÙ[ºì“í{ù{Úï·öGìo9ày î åÁªCŒC%õHýŒúžAC{cJcÛ᱇[š|šq<²£Ù´¹ò¨öÑåǨÇ8^x¼÷„øD÷ÉÌ“-SZîŸêÆéq§[ÏDœ96ôì©s�玟÷=ß|ÁûÂዞ.¹_ª¿ìvùÐnjuo­¿âq¥ñª×Õ¦¶1mÇ®ù_;y=øúÙì—nFßl»•xëÎ퉷Ûïð›s÷ͽ‚{}÷ç= <(y¨þ°ü‘á£êÙþko»{ûÑÇÁ�/?‰r¿ƒÛñê©ôiçÂgôgåÏMž×¼pyÑÜÚuõå„—�¯Ä¯úº‹ÿÔø³êµÍëƒüu¹g|OçÉ›�·Kßé¿Ûñ÷è¿[zc{½Ï}ß÷¡ä£þÇ�Ÿ Screenshot nÌÞ.@IDATxì½ p�×yß}°ïHl$@à¾Hiî)Š’e¹¶Üص]ÇŽ�±ë¤‰�¤™vò%“I›™f¦ß´Ó4I3i'v긎›|Ž’Úq]/ŠdI¤ÄEâN‘w$@‚؈}ß>üß'ÿœ÷¾¸—H‘¸ÿ‡8÷ìçüî9÷¼ïyÎ’â¦(½ŸÁ¿mÛF ÿ~õWSëño÷î´rü«¬LÝ„YY.ÿRR¦˜¬‚‰€ˆ€ˆ€ˆ€ˆ€ˆ€ˆ€ˆ€ˆ€ˆ€ˆ€ˆ€ˆ€ˆ€ˆÀ½vãÿÆÆFOáßÀÀH#þݼ9ºÿHýÏø÷ßÿ{îßàßÑ£“e’PÑýïþ¥¦þ?mø÷­oeü$ý¯3~ò‰O¤|:õR>]P0ˆO>j÷>ú$" " " " " " " " " " " " " " Ž@J >}ÚGÿ|ä�Fÿ¼«kø³#¿4üÙï?¯ÿ¾ô%óõ1ìÓzÿßáߊîÛø÷W•úþíØ1ˆs4£ É." " " " " " " " " " " " " " ÉD 57¾u2®ïþYü{ç��üûüç ¿�W¯²Ìÿ¨@·ä©©ý¹½oõç:”Úž¾#µ}ÇŽ‘@\¦ˆ€ˆ€ˆ€ˆ€ˆ€ˆ€ˆ€ˆ€ˆ€ˆ€ˆ€ˆ€ˆ€ˆ€ÌNi�87öÙÑ¢±Ï¾óNÖ÷²{³¾÷ÔSÜ‘>®c7éûñï[ß’âœDdŠ€ˆ€ˆ€ˆ€ˆ€ˆ€ˆ€ˆ€ˆ€ˆ€ˆ€ˆ€ˆ€ˆ€Ì%Ü@žòשí)½cGO;þ}ë[¬cjïgðoÛ6׋Ÿø#0€L˜K¨Oý}üûÄ'¨7Oé>†ã;Ï×ãß¿8—*­ºˆ€ˆ€ˆ€ˆ€ˆ€ˆ€ˆ€ˆ€ˆ€ˆ€ˆ€ˆ€ˆ€ˆ€ˆÀdFßÿ¿ø‹Ô”Wðo÷îÉ"È_D@D@D@D@D@D@D@D@D@D@D@D@D@D@æ"êÍSÝbü«¬œ‹•T�D@D@D@D@D@D@D@D@D@D@D@D@D@D@D`Rÿ 7OémÅ¿ÑQ—ƒ))“FT˜KúÜø¿±±ôÙª8ïĹ®@œ£}0ç†ñßXz Îeâ\v Îâí>ÆÜþD^âwoß³øÝ7Å�¤$ðÎSzKÊB† 5ˆs­�xÅ9áT�§â\J >�±@œ Ä+Ø©¥"½8ç²ññgû'ñ»¿oPüî�Ÿb‹€ˆ€ˆ€ˆ€ˆ€ˆ€ˆ€ˆ€ˆ€ˆ€ˆ€ˆ€ˆÀl �ô ô;�8׈s¹�ø�ä‰å‰à' Ï�ë¶ À¹’@œ[H¢Ô’ß]üîï;¿ûã§Ø" " " " "0cc££==Î]¸púô¥KÎõõáH1犊–.]·Î¹åËËËó󧒒ˆÀÃ'ÐÙÙÐpåŠs—.54tv:‡uýh¯k×nذj•s99©©º0ïá/ÊQD@D@D@D@D@î•@ú½F|Ðñ¨0ïĵÎ�æÜQNsªåIž;都3çFñ õ©æ3ÓáÄïþ¾ñ»?~Š-" " " "�<FFœ»råèÑ à»sghȹÔÔáaœC¶nÝ®]Ï<ã\UUQQfæÌ•yllxx`À¹††[㺕¥§';{éR)Ðgî›QÎS!Ð××ÖÖÔä\ccCC[›Å@Âò�•+¡@ÏÌ”}*$FD@D@D@D@D@’ƒ@jr×¢-D{N ÎEç>FüOT”ӌʻ2óa¾¼#œåò1’óËÉr³¬ë9YéŽæTÃ3æËr°\“¥3Óþ,'ËÍz°^Óå1Ýð̇ù²,×LóQþ" " " " ³‹ÀèhK‹s55MMÝÝÎQQ ¥úà ܯ_onN†:¥ï¦ii±eÁçXÙD ù¤¦Nl©h¹Rš'ßw¥‰€ˆ€ˆ€ˆ€ˆ€ˆÀT$��w‘7âï6O =�‰U¢{ÔŒ†ŒúÓž(óe9X.–3o¦í,ËÉr³“Õ—þ4£õ¡{ÔLŽù²,Ë�7Óv–‹åd¹YÖ;ZNºGÍû Ç|Y–‹åŒ¦/»ˆ€ˆ€ˆ€ˆ€Ä#ÐÞ~ëV}½)Ëãù÷ôÔ××Ô8×Ùi;Òã…‘›ˆ€ˆ€ˆ€ˆ€ˆ€ˆ€ˆ€?Ú™ÃñŽt*0‹qŽî ÿ°Mñ»?ââwü[D@D@D@D 9 ŒŒtuAqÞл³%ûÎïÎË/ÌùåäÌ›7¾sÅÅóçççßýûЦÏŽö…öÐÖÖÜŒ«ººØ.pF˜½ÿçå¡Ý.X€|³³ÓÓ§ú}ÆËOn" " " " " " ÉI`S ¦TœóÎg*°©¸f®“Ù…£;M¦O;Ó¥{ÔÎpôg9YîÒ@êá›,ËÅr²,ÑdöDáèN“éÓÎtéµ3ýYN–[ü@ “t�Ä 9èŸlüøýÊH.ÍÍ7nܼ9±L«VmØðÄPȾ÷Þ¡CÎ�;×ÔíðpGGm­swîô÷¯Xá\iiv¶ÝJ>1�x.xªÅŽ÷k×Nž|á‚÷ÍÈ(.^·Î¹çŸß¹sùrç¦ZöÛ·�É7n@!LY±bÛ¶çžsníÚ²²°‚¿»»¹ùúuçNŒË¹sP°Æ.P`üx&%,_þÄ;v8·nÝ’%PÀ&’ÁÁÎκ:ç^{í­·Îžõ¡V­ÚºñGGkjNŸvîêÕÖVpŸL²³‹‹—-çíÛÁ)/ojŠü‘‘Þ^(’�?|øèQçš›ûûÃJì»å‹ú®\iõ]³æîõe:CC==XØqüøÛo£¡vSÉ/%%= û-[víŸòòüüŒ ¦:¹ÙÛÛÚŠïõàÁ·ßo(ѧ"ÕÕ7>õúKFÆtnL%m…˜9ãk¨gVx§3�ªž¬4˜˜á.ƒpØDîá0øœ(\"÷h|–“åŽú?l;ËÁrM–¢z&r�¦—(\"÷h|–“åŽú?l;ËÁrM–¢z&r�¦—(\"÷h|–“åŽúË." " " "ðhÀŽjìD®©¹~½­Í³€‚qÑ"ìÔÍÍÅNíòò¥K+*¼?>AixãÆ­[SQ|3&žc¡À=sæÍ7÷훺âœñGFº»¡è?xpÿþDZ“›>ñÍŒŒùó.t®¤$Öh¨µ;èq—ûT®(7æ7Æ%¬8GªPÄ.\¸`8QîÜÁ]ñû÷9ëtçL»ë¯]{÷],\8sæÖ-|O‰dllx\&ú^¾|ìØ;ïL]qÎúû[[QþºrŹÉvú ´·C�ÿê«o¼�ü¦£8gžÈãÊ«ï‘#—/CŸH�د¼²oß‘#SWœ3=ðBÛ9vlÿþW^qîúõ;wè›Øìéil¼t 2¦§8gеµ§Oãû-¥Iúṋßý±¿ûã§Ø" " " " ÉEŠÒ†A[®ââêê%Kpä´�|4:Z\ E4޽¾zÕ¹în ßÔTSƒÞƒƒË–Ù‘ã>65oko¯©ÁN캺îîxJÙ%KÖ­Ûº;¹«ª ôæÑðÝÝwîÔ×;wd\¦³ã¥Á{cuõ²eØÁÝÒRSúB�zû¶)N‹ŠbwŽûÛ§¡¡ŽŽ¦&Ä�õÉË[¼¸ª Gt§§c;Þ5q|úåË'O†w¼3VqqUvt?öØÊ•à›——�m;Ÿ‡†°‹¾¾þòeÔïÌ™šäG©«;sæâEìÐ^´hËE~wÎŒ6ñÝmذ}ûæÍÎUVãèô””ÑQ¼§66ÖÖž?��ò/bajf(Œëë;;QϪªyó¸ëaðÞ‹§N<øî»í©©ÙÙ¸`Ë–mÛ6lÀB†yó°Ctt`ñêë¯^}ï=œl[ßææK—°£üæÍŠŠçŸGyóò°c;œ8E…;ç·mÛ´iåJ´×ÌLÄD›½xñÔ)쌿q#v'þ¹sG�ž9ã\YÙ /Äã‹…&¸Bç%\¾Í'X=·mÛ±'6ÌŸŸ› NccØ#�*çÎ�<éÜ¥K w[11e¹ˆ€ˆ€ˆ€ˆ€ˆ€ˆ€Ì3¾ëê±²Óñî£âzº0�æ½Æ�Æc9Yî¨ÿö³,W4ÿû­ÿýÆ�–‡åd¹£þÛÎr°\Ñüï·þ÷?Z–“åŽúË." " " "ðèÀÎ놆ëס˜ ”Ö‹Ç%|d8nÈÆÝÜÕÕ‹áNm Ô¯ˆß؈=Öt�hâ9 â+Wâï¼]±bóægžqî‰'–///ÇÑìX‰ º™……¥¥Pà~ðƒ{÷BÁVâNÌm¢Kqñ’%ˆ•[·®_ÇÝï“íBom­¯ÇBƒ¨TU-YRVuÅ®ôŠ ìà//_´õY¸pñb(Î7o~ì1�^P`ŠsŸšš‘ÅòÒ¥ë×C�»fMqqv¶O;¦¡Àííšî‚p°Úºõ¹çž~é—–Bqž–f9ã{E>‹­\ù� |UUáï�%ÀBâxŒz{Ñ‚&.,€B .öìyî¹mÛ ˜6Å9ë‹èmaÃúõðߺuåJܽ,°¨©©¯ç‚øõö66ÆËGò¯YãÜÞ½;w®_ïܼyÙÙ¨7n"Gž™™ÙÙh¿�?¾c8TUåçsqÒ_´ƒë×››{{á+ÝÝVÏ艨'NfØ»×êYR’Ÿžà‹|QOð^µjóæÝ»Ñ¾/ÆB‰ˆ€ˆ€ˆ€ˆ€ˆ€ˆÀÜ"0ã ô¹…Sµ�‡O`ttpŠÉÚZ»Óœ%€BŠßÒÒÜܰ‚þPâ(÷ŋڛPÃGwg{_ìîê‚xW5üq§9Û+V,Z…êd’šš—…4öG�e¿[\äƒ�ÐUU±wµ÷õ55a@¢£Ü¡øÇâ7&qoŠñùóÃÊ|,òÆŽrì¤ß´ ŠáÍ›¡ðß²eãFܵž™‰%®w+©q.(^£2YÜhøyó ’Ç÷–“ƒïo2).®¨@½¢rçNkktç4ê��7oÆ;Š|åÊ�‘o^ÞäõE^ee+V`çö¦M�?ó‰'Ì\¿~É*œ-¿ººh~à¿qã¦Màm³Ñz 4¿víÆ�P¸G¥e\°P!,Pä76Æ_@�zbaÄTNÿÊÊÇCxœ ˜;Æ?›Yá�ΘÈÀÊ{¼‡'h§ÿTKËxS  —(>ËÁrGã=l;ËÁrEËM;ý§Z>Æ›jøh¸DñY–;ïaÛY–+ZnÚé?Õò1ÞTÃGÃ%ŠÏr°ÜÑx²‹€ˆ€ˆ€ˆ€<šººn߯�ÕØ–E‹V­º›¢7+«¸ t(¯q´7•æ5ã‚»¾×¬ÁÎã‚‚´´ð{ö¸3=*…… Ba ¥s8|4\Ô^XX^n;¿¯\a¢aÂv~u5ÿSQœ"�¡¡þ~(â;;»»a‚vì áîí��¡qA83ïܹu«½1ïO°G˜OUín—ðt„ƒb¹w\¢ß+”ÃÅÅEEá;á'Ë?%%= (*+«ªâ-¤@~à/?äóæõëh½½™™“-€ÿèh__¼v¿p|ä‹z÷÷ „ë�ú°žá“Õ;þ ±` °ßKwwGÇÝNn˜,=ù‹€ˆ€ˆ€ˆ€ˆ€ˆ€$�i¼z?˜g‚—uV˜Cì.´D/ûá’PÑHÅbØïnŸïnaÂ~ Ïr²Üá03ñ™å`¹Äozß‚øM�—B‹€ˆ€ˆ€ˆ€$¼AáXWWSÝÉ‹’Þºuþ<îjmlÄ‘âxçŠ ™ñ”�ØÑ~ûv[îÔ.(()A|/aµ¤w-)).¾—ݸééùùPD2.ïd÷)ÇÿTP°p!îÏÉ1:Üú‡£ÜW¯.+«®öJÔxG·ãý³º:öˆûhnccØÉ|öìÉ“'NØ�ÛPœÏ5‰~«Øé_\Œï?=}: "¦Ê%šã54\¹‚;çã³Ï0S1;:𛡬_¿ 4¸ø šïýÔí§¤¤´;ë¯]ëèˆ×—¦RV…H3®@ÏÄVžãn2*4!¢";ª0OäM‡á¦ê Ç»§s‰ú>|»øÝsñ»?~Š-" " " "0³FFz{¡ ¬¯ïÇ]Ð8ª»¡¡©)zd÷TJ^[[S%æŠ%%ØÉUzo<Ã$ƒýN¡XnmÅÑäP-çädgßM=õ:à '#P5ïcâ‚'žØ¹sÇ´ß´´Émø˜“â{}4_,@ûëéB¹²³q»ýÔÒƒ¢¾¥¥¡íM"" " " " " "07̸ëò±"ŸŠÌ�@ðÂj+÷ù‚KÜTpÓ=jg¸ÉLÆc¸¨=êÞˆ/'ËÍp3e²âwo߀øÝ7ŘYxÂâ×®M¼3ŠÜÍ›Ÿ|rçNÜ]=ùÒáš46¾÷Þ¡CÎ;VS…"Jí›7›šp¬ú‚‹Ï›‡�½99Ptr×6î��7ÆŠÈÇÇÝéyyxÓ²tîö·±ñÆ ,¸WÉÎ..F~X4:Ë~ûvC޶ÏËËÌŒqNK–,\XP�8×Îζ6(�£²jÕ–-ø€)αã<‘@‹�ÍMM·nݹ“(ÔÌ»ã;Â"‚ââ °ðáúõîn,„€@A|ãÆíÛP—–VWƒñd2::0€EgϾû.ÚÃðpZ”óEE••k×:·|yy9ÚÏüù%%–_}=OH@;»}»¥í®¨hz 1FFìÎy.HMÍßNÑqR@aáüù¶À£¡�ù"¿[·ššÐ¯Š‹/¾[»`ýÇÆz{Ñ>êëûû™'ýdŠ€ˆ€ˆ€ˆ€ˆ€ˆ€Ì^ãkõ“Câ�rçQéxÁ�7áu§}ª&kÍð´Ó¤;ËÑ&Œ •<&ËÅr²Ü¬G´¤QwÚ§j2=†§�&ÝY–‹åd¸d1Y.–“åf=¢åŒºÓ>U“é1<í4éÎr°\,'ÃÉx4 ¶µA!Ý�‘Q\Œ#Ë‹Š¦§8'E(±#;*7o^½ 7”ÁP §¤äæânìÅ‹óó©Dg”éôéóç±s{2¥bwwcã¥KP´64àJ¯{•””´4(ö—-[º& ý3gœ;y2v¡Af¦Ý�>þÝ9¥§CËÔ¼ÙÓÓÝ�»á'“ŽŽ7P¿+W::°=Ù¥¸xÉi•Û·Ï�;v ):;Ñî&øÎëêÎ�÷ºº¦&´ƒ†qilÄ ==>vIÉ’%••ÞÎOW¯;vò¤swî LÖ†§©éòe”ïå—_çðæ©Sµµ\LÁ´±£½´téÒE‹èâÍ7NŸÆ÷ÍÍ==\â}ý',`�ÂýìÙcÇNŸö'6øú$" " " " " "0› $��;ÎËqŽ;¾q0 ^˜©PŒÂ¦{Ô¼ßpÌ—å`¹XÎhú3mg¹XN–›õ Ÿh9é5ï7óe9X.–3šþLÛY.–“åf=È'ZNºGÍû Ç|Y–‹åŒ¦/»ˆ€ˆ€ˆ€ˆÀ£E«cgoT/6Å`T© —Èž–VPPZŠ#ÑÓÓà ™GFº»‘_K‹)ñü›™ …õÚµ8:=*mm55P€¾þú�§NaG1îìÂÎð¶6(د];{öí·�Û¿ÿØ1¹Mã^쥥UUX@0™TW/[êdǃƒ DåæÍsçtîĉ‹¯_Ç÷ãâ\GG[Žhï½£GpîàÁ3gjk£±“מ™YT~+Wb§vX°ýÔ©·Þ‚búìÙ+WnÞD}»ÆŠñÆF,°8ztÿþ×^‹¿ ;þ—-«¬ ï`ÇåX°QU5q!x>üÓŸ"½Ë—¡ŠÇÉðnmÅ’³g‘#ò½t ú°X~……aWûœ•…¥Û9|±þÈ‘}û^}WÔÖâîz´[(â±ß'(¼ñtwßMÑŽô$" " " " " " ³�@ä•xæ+0?¬à†àåâ�ÚN» ‰ËK…fâ±> Ͽ̗å`8™" " " " �6�ááîn(ª±È8,¹¹‹a'ø¼y8t<ìsoŸçϯ¨À](7ÃÒÙÙÜ >�r‡ò«¨X¿ ÒÝ»7mZ³fb¼pü ÅãâÅkÖlÞìÜsÏ=ó ¨ÑEËééÓÙM�çl(Æ—/_³¦¢‚9ysþüeËÀiªw³ónðÕ«wízöYç6mZ¹2ÞÑß>û„›¶q‡öã�ïÜùÌ3ÎíÚµaCtg<ê•’ÿÛJMÍÊB=¢üáïHùhþ´§¦¦§#�(ÃÉÒAùqþæÍüàóÏ[½±� šó‰šyy¸ À¹;žyæC‚Bþîw™£¾¸*mçÎ^xî9ç{lÙ²²²hª‰íóæY~Û¶=ýô?è܆ ‹‡�òO3--''.<ûì‡>ôôÓØ!_V†…(“Iff~>Ê·}ûÞ½ÈoëÖ‰í͸Çÿ~'K_þ" " " " " " 3K ÅîVNþuÑT0âà?ìx ¢‘GZsgzZ êܱÎ�ÙÜiÎ#²¹Ó¼8¿ã}f¿ž÷/wñ»?–âwü[D@D@D@DàÑ#€¼ýý==¶£ˆsƒ�8׈sý�87ˆs#�xEûƒ)Uò¥J…^Z Îeâ\v ÎåŠĹô@¼b=ùj¤‰ÀûG€ óË—kj::œÛ·ï�wZZœ«­­¯ï뛘g�¡D‡Ð¾bÅ’%¹¹ÎíÝ»sgi©s+VTUH¡n”ôWD@D@D`6�}6~k*³ˆ€ˆ€ÌîЙ,{NÄÐäÄ%ÍÉâËß�Í™â"úL‘Ÿ]ù²�ÖâÜ©@×aS ÎU¢ ÖĤîÏG ôûã§Ø"�Œ¨Ĺ®@œë—övçÒÒœ«©qnþüüü›7�ËËËÍí83sx8^�¨ Ão±ù›R On°Ó5^\ó� ÁX±®>v¬»·Ù'*ä˜{8žë]'ÿd) ô÷ƒMwwOvʶ¶¶µUT87<<2R]í\á¸9WˆsY�€'dò\Bf.¼9wîòåÎN(̾}Û¹[·ššQö<<Ù…íS«Ÿ±#=;Ûêeeέ_¿rå¼yZ˜25Š %" "ð¨àsþÈÈ¥KçÏc!ìÍ›µµþi<=½²Ï­ii«W¯[§çÔÝNt„ûƒ&¬ôE@D@D`àÎîЙnì„t(wö<¨ HNÔ`º'ÞÄjÔŸöéÖëa‡�Ö‡;ȸÃlª v¹•ߣI€; obÓ¯è�ü=a{ކ[ˆßøhÒS­E@D`rœPãóÖ@0±Ö×wù2v|.\xæ ~GG¡8¹s&4íÎA�<2âŸýSSôé‰>ÝÃ¥äﺟҋ†·Ð))©©±>fc|*Ì™6Âã3ÝŽ¥ »3‡Øô}Jü3==- )ÏŸ_X˜•åÜ‚óÇÏ«cc‹9wåÊÕ«�=f;÷W®t®8¿CýA=dž˨Ï"ð~À‘ÑQçNœ8{G±ïßo;Ì[[ÛÛ¡0Ç{Q8Oö%¾/ÑÎ0ÞÝz$íôg­«khÀö¿üËïÿÆ çJK,ÈÈpî™g¶oÇõ|àñÇ,ÀÄ?Þh[¦ˆ€ˆ€<š¸Àmpð½÷Þ} d÷íûÑ�ðœÚׇ…°�ñ?5õüùÓ§�ËÏ‚ÏÇÛ¸Q ÔT«‘ýA‘Uº" " "0‹pâƒGYÞ¯b– 4îà¡">:ñÈ|‰Š.QwúOfò�“é0|4=Úi2ãEÝé?™ÉxL‡á£î´Ó?‘ G~y�8Ç�áQe¢ôä.÷B€í°1¯HÀN½Â‰)²Òd|†¤;At�šØI‰£D©(*Ä+~¢áe�¹J€¿›ÜqNÅyjêðð±cPœ——Cq>‚'^>õŽŽvw·µaÁ§…snåʵký<�ÅÐß÷‹€IÞ/’JGD@D@f1*`߯ A*Æ8aB4´cB†£0éN“á™ ÇtÙ£ñŽîÑø“¹Ó?j2ÝDé1<ÃÑ>]“\�;û¹ãN¸»S"ï¶×†@œ;ˆ?"lO väm8ØÛ{é¦Ë¨8ïéÁ��ð~)Í-ö×’¿¿LŸSrtµ«´Ã žØÚìôG:æÏü¨ §«¥€]°éw¤û˜Iw_®h>¬_TÁÎ|èï˃�{˜‹•Æâ0&‹££ÃÃàºté’%p¿téòe9 î8Šš BŸéZ Ãié³<\ýýh¿;ÖÔäÜÁƒÇ�CqÞÛÛ×Ç#á±wXoá߉!¢áÂZ?âYÚéu§=êßÖÖÑ��sßÿþ«¯64@¡~àê»woÝ …ú®][·âè÷ìì¬,)ÔIO¦ˆ€ˆÀ\%À“úÒÒzz°� P1¾óy>:b§¥ÙÎtÆ›«\fº^R Ïô7 üE@î›^Èðêvn\Ä ¬žžsçp§ê²e8¬¬¬´´ à¾³ùÇð‚ˆ‰¬ à j\õŠÔÛ·›š ¸Úµk÷îÏ}Î&j4¡ò�Øô!I pB–;ÏV1Ùo£ùÑ�ýŒþQwúÓ=ŽöDf4ÃMæÎ|…g|†£�ái&r§Ôdx¦Ëï� ¸�G�2\4Ù“‹¿×ö@p%Ä—qs ˜È‡L}\aºÜ¡ÈvRˆO?Ñ'Ƨâü�@pD0ĵ¹?ç6âÜÍ@lÇÆE.ÈÁ‹”&V¯€o Ä9¦_ˆsgñáxòÂÑ@œ“"=Ñ7÷h¹³�Ö×wvbÂýÕWkkvîôé¦&(ÀZ[ûú°2ŸRZ𛋣š7l(-]½Ú¹xùò]»œ«¬,(À}"éïÆóÞ™3ÍÍH÷Â…–Ü-]W×Ñ�;cz{››q§òà Žªíëîï÷í¿  ##7w*gfæç;WTdæêÕ%%ÕÕέY³`�™ÅÅË–AQ�žž©…P‰¾ŽGÎ�íœ;R°Àwœ¯XQV†çCCÝÝ/ ~iý´Ñþ]Ä«Â,´)”ù¼ßp¸3Us§ SdhKgâÄž…g,ÖdzQÁÛ‘›Õ‚)› ócù˜bT!nGÄ#Ÿp<Ć‹w7_ŽGáü-¦å‡éJìüY¹rÅ ¼G^¼xåÊâŸKâÇ'”Æ—�iË�K ««§ãŽbÇø÷Î;§Oãª(ÒÙ³î^ö†ŠÚÙ3|ÏA;Ç2Ý´4ßO‡††‡íw'vÁŒ�ÍÒLì%taΰww÷õ!ÆË/¿õêµoß‘#Ø9ÿä“›6a^gÏžíÛ1^çççåiœäw'SD@D`®À¨‹qÏ¡Pœ�ŒØ8Ëúñ©ÓB!fñÞI†”ù~�ýý¤©´D@* XÞzëÍ7¿ýmýõôÓx¡Â€RUõàŠÂ|ñ‰;¼V�ËÂ…f"WlÐûÚל۸qóæ_üE¿SáÁ•H)‹À½ "ý†ÓI�ýá^ãGób:L—þ‰ÜŽþ OwÚéO÷¨�áhFÃEÃÓÎðQ“G­Ò�á£éÒÎp4éÎx4£î´sÅ)í Ïôd&~OwÁN!H¸ŒáÜÉ@ðbÁÂ0ˆ�s)ã�. ¸ˆsõ�øxl ÄßIÎø4Y.^ÁÀçTÜПæè(| °„ø�âTU@�ƒ;-ýô)b¢üæNÅ8ý4©xg¹¡A}1îb”Šôí�8·(�‰\X/™s‹ÀÐ�MüÏÿùî»÷wνòʵkPœÛdCâºÞ¸a oÌ Å÷Ë/_»öÖ[Î}ä#Ë—ïÙãÜÏýÜc�½ø"ú]cã{ï9÷Úk55o¿ ÅyK î–f¾Ì�íväm­›¾01��—CCPt´´ôöBñÉx'O65]¸€&éé©©PLlÞ\^¾n�súÐòåO=…;bËËq$ã1¼ÌGƒÿy•EZÚÈȵk¨ûð0ï8ÇÂ&¶˜ð…:í>fÇ_ÎZ­¹DÙ�®L‘íÜ~Ñ™rAHÚááÎ�êAæAþ^Ñm9x+�¥`q‘.Ã3ó3wïjõe9ÊÒ÷é1}˜ár[™7ŒaglFFZÎà{€"� O9^Yú+†@kk[h½þúÛoC±|üøÙ³8Ò lŒ4èåÖÓ§ž?ûãÑMîx^C¸ßýÝ_û5ܱÊ_—ÿïÿë=qÂ÷'×÷|K×Ûnø%a¹ig|º÷öb ›Õ ÕÞ|óØ1,ÐܶmÜ|ôì³;wbfÁ‚¢"œ!�¹@`dÄ6.`ÄäI2+1šrÜF=GFÇ ô¹Pëä­ƒèÉûݨd"  pBä½÷Î�Äéž=»wãN: #Hèµ'HnÚÎÑtigB˜Ï¯®ÆŠé7ÞøÆ7pÙÞ½¿üË~'ÃÉ�d @ú½–…í?Ú連^4^";Ý£é&Ê?ê�Çôh2<ÃÑNºÓŒºÓÎx4éÎx4¹Óºñƒ�Áãè“¥ËôeÎ ~?QÅ9Vc‚�Šÿý›âüT þû¥Âøl ~ç7ãEkÇöAE8w¤GÃñ÷€G¨O,jàËÉøL—Š_+¿�€ ÓÒ¡I…:ãÑ„¬££¦pgyÈ‘G—’xa@8g}ž½¨ÀþÿáàA,T<{¶¹ùÊ•ÄõA; ûƶ:›¼G{þá¯\Ù¿ß¹¿ÿ{ÛÁu&"ži0=º³&òg;†¿Mx௥‹Oôg:##hñX rûöÙ³X�ÙÐ;ç¡°ûô§×®ýЇœûà««wìðñ‘¦dîàï^ 8Á 7·¾fØ™™’b mL¨Y 3l¯—h{£¿µE„°Øt‡ dbºT\[O`ø°Âž92˜>Zº¹˜?}̆¿ázXO57+«…g~>¶ÅÂ_ûÄpäB;{°�iyzw_¤5<Œ�½óçbÁBWW_ßc�MÃqôYî—@CCSSO�so¼qø0|�8qáæ6JÀ ·r´Gºøœ-Ø/Ì­Ÿó&¦È6»�>//7в²|(¸ãhuÜ­Ž•޾ì�´ÓŸ¥B©Yïgõ »3žg¡H8tèÄ ôËÇO�‚¹yóºuEEÎ=÷ÜSOA¡¾p!FÎpŠú," " ³‡ÀØF<Œï¶pœ%�Ží¶”޾2)ÐY¥+"ðÀp‚'ÞbÅ3^÷V¬ð/Z|ýã‹í,�M³W9Úé?™Ét.j§ûÞ½Ï>‹£8zç�ýȹãò±�Yy'¾D2–Lx¸µ_–‚þèGávKw†›ªÉx“¥Çp4' Ïüžvšœ€Ž¦3QáÇf2|4ݨ�¿KŒõO”¢ðtŸªÍoªñîáà÷UœãµÈ^ŒÐBÂãbL,�6çŽo¶ßhÈDí6.jg¼Â@p(Äïüfx¶÷DíšéÐd8Æç iúC®?Ô3ø½ñ+¬íÅ‘Šzš,'Óaú2çöŸo~óôéï}Wö´´àhå© {“µ*{^Dܨ;vòAqÎplWÌŸùEÝžé1œå11†cºáøè÷´3Ÿ––¾>(¾öµ“'_zÉvÎãÄŠ/~qÆŸùçš›{{áÿúë7n9â�–‡’ýª²2/'4=ÿüòå;wbg{uõ“O†K©ÏÉL€í„ãEnnNNw7Úöf¢äÜ Ê§4¶ «Û\cÇ 7ûý5ŸOÍü™*aŒ¥Cš k2ÿpËF‹!ÌÅ—ÑòGÈp~äN11^Xº4á¦hîp1±té‹…^–],üa\�„ó‹t‡z˜®>‹€ˆ€$3,àŒ§@G™1îá¿=·b¯z2×dn”M ôYö=öö ¡“¼ùf]]¼b¯y¨”=P²zÛ·/Z„Æùó³³}úÊ�ÙE€çÕÕK—âÅ(ѧcâÕÎ"¶_Ð�ýˆv¦ÄÐè�ÚÍFÄÂ+íš5+WâÈ5‰{ýº5[]íÃê“$3ô‚h‰W^´w{ˆ³ðñÂÀ-Hn|ƒá…£ûdá'óg:<*šáù;r-箂‰Qˆs¼›™áJq®$ìl€8·<çx÷8óÃDú?MæKÖ?êNÿDæ½ÆK”žÜ,~_lW<ª�Š*¢};@ ” .0iÇçðéf÷íËìÌÏÇ7÷©þe?a;߈?b>+l;æ™.Þ¬Gw Îá@1;RÌv�3<Ë� MÉžv�£¨µÕÓ­à�ÁP2½Ý�ø~Çr3}™sƒÛsmm{û­[¸ãÜŽTG›àxƒšZ+‰mõ|2³þ˃íÔâšÂÃÝÒö±âåƒ`ñ^UY™•…� ÒÒrrœ›7/#w#çç§§cç¼Eº==v'zo/ö ;ר80€q¦¡ap;ˆ‡† ˜˜?ËÃÒ³žµµØ�ü{¿wàÀŸþ©Õ?\N„×ÿêÕöv(d®^=qæÁƒuu§N9÷¯ÿõ¶m_øv4ggãŽgIr`?àx‘••žŽy€ÁAû]d©ù�³GøVlŠa†³Þƒ¿ÖÞ­•Â×TbÖ`gÀgHl:Ì�&óƒiŸí/Ò‡ñŠ2º‡}­X~–Û}¬B0ëa. Ïrðx„67_.ˇå J�¹›;B£feegÛ]”Æ�ß CË�{!Àç¡o~óoÿW…\¼X[‹�ç“ Û9ÃEítOd²÷°ÕÓÎðL�î('ú�T§=Q?`ühz´ÓŒ†£;zŸõY A;ýQ”‡î´S¡þÎ;ヒq– þ_þåÏ~vÍ�H~2E@D@Þ_##¶ñ`pðÂ…sç�v?^â qþ|cÛg¸óws™ü/ß'†‡­œÃÃmmv¢Un.Þc³²Ö­{â ¼ÇæŒËäé=*!¤@ŸeßtGG?ÿìÏŽÇÊs>0¢xÀ„ݪä?Á¾t)ÖL›]+/��þÎ^œ¸¯iÛÚ1  —xwÚYc{óíô·Þc²_Yïjî´3>ʃÐ}Á¸äçcEô‰/¿Œ£8KKq7z¢#t™ŽL˜ h·Öƒîž;á½Çö�©Å‹†Š¦G{4ó£Ô¤Ô¼ˆs? Äîòƒ¢nq þåê@œË ÄE³7(D ØñÁŽ?ˆW¨SÁG!Tñø‹] ËO;ͨ{´>QÆ“™\¨Hæ]âÁ†îñƒÑï�}ˆ}�&Ý£µb{˜˜Ž)ªéÎp~DЦßžˆ_(2?Ñ ñ C¨¸†:Ï—ìËqnU Îåâób¸Ë�8WˆW¤£oBX~î´g9¸€…å´Ðú;×°¿òÊÕ«Øq�a}ƒ=ÄjÌvÂð°Ãv˜ô77ßÿ.쟙™šŠëÖåçc̪*çV¯.(€™——��‰¶C>×ÑDZþþÓäÂ,("0±rýzOî´=uª£ãÒ%ì°ïé©­5Å:vÔ$ZºšâþùçKJ¶ms®º:7wÑ¢ Zð§¶¶·Gÿô§--ï¼cGß#Ÿ?ú£#G¾ým(â÷ìùÕ_õáõ)9 °}[k@¡22M¸z…1ûAâãÁ~‚˜?ö=nLà!ü�¶Gø³?¥¦Ú]ÉøÝfúÏôñ),Ì?¶6ÎX< Íô˜OJŠåÃ0Þ=|Æ ÊÍú³<áÜñ™%ðõ·O±î´ÁdžÑ”d�©`;ºråúu(z/\ˆ*ÎÙÎØ²igQwÚéÏðt§Ýü£m8j÷©Ø'Œsx6c?DjˆCûȈý>øxæ�Üc,„õ1ô¾X{4~"ûdîô¿pñò@IDATáÚ5Ì›ÖÔÔÕa‡úòåK—rþˆe`X™" " "0UÁ08>† µ´47C]~èо}Îõõ]¹rú´=7cfZZf&ÞGG[[›šœËÉÙµkïÞÉéþèv[zÊñÒFWÿÜ�­áùÅDåç ¿aë4ÖeØ�ì±Ô^4Q%Øá“¯�³°ª*²Ä%À~¾ôpaà¨;íôGß°þ�>bŸÙ—,L¬Í¿Ú1Æó9‡ó€+S°ôÍþ�qY²w™íÛ÷áÜÞ½Ï=÷å/[? Ç÷¹è“<|7Âí6Q ¢á¢öDñ¢îAwù‡É“¨_<{4<íÌŸ ½ú@œûA ^ø\ Îaa &P23SRp§_J öÉâ—¹b*ÈÜ­?ÛŽCÜý‡à‘‘ Š‹1³l\p÷¢ç^ Ä9Þͼ-¤ñ •hù™{Ôd¸¨»ìÉI€ãf\øÅÒbÂÏg UHpLàXÂx�&ºÁ×Úý£ñãDZÐð« ÄçÂO^ч•#~xÐŒÇÛ1…ܾ=çªÁ fˆ_°Ât©Pçì<áád Îeâ_,YŸ¾@¼Â�é3]šÕ�øþFw™³‹÷ΞmiÁÎ<Ú+Ûí4£îQ;ÂAâ¹£�Á�}fYYffa!ŽJ_½Wð‚‰[‘Ïñ†éÑ´\&þe}h²ÿ/]ÚßýÆ���Ø!×ÚÚÙ‰‰þ7ßlnÆNñC‡ÚÚpúð0ó³tQÞ‚‚ôtŒGÿê_­\ù™Ï8·dIYYE…/K°zu_ßòåXPTT]íÜŸüÉÕ«ó7v>î�ÿû¿· /¼°|ùSOÅòa2“‰@¸•¢\hQþ{£¢Û—­…}áècñh£â�®0‘.Õb؃ç"Ü@Lw˜Ï `ø–‘‘ž÷ôt³Ãß—¹yÂQX.\¥€|p¤5üx úìHßòÉÈ€ Æ!Ø¡¸‡?„i!}Æ#ßO-wíãX½-%ħâ=\ZúÊ�{#Àßÿ“'ÏžÅ*´ÏØ p¶Hö@Ú™Ÿo�lÉô‰5cÛs¬_b[q1Î&Á¸²h6¬[·bNþËËËÉ oÈÁéÕÕνûî… XP_ߨˆÆ]]ÝÝèÁþù66/ž4Äß/o� w7 � íŒv?yòÜ9(.ª«/F=8~3¬L˜ Œªo.]ºp ó#GöïǬO–€B d$³“ÛÛ�;|ÁgMÐÐÞaÇ÷O÷¨i!¼+CÒ=j·�–â�;ÃÃ]]~!Oa{£éSŸÞ'öW¶S.,á åå àùpûöæfù÷õ¯×ÖþÝßA11<Œ‰˜�|dáB(¼W¯®ªZ±bâ–† RØßþÉ?éîÆèó77ob«¯^»vø0îH¯®ÆŽöOÆ—™œ¼BØÊÇöÄvi}~Öžñ×ܬÕû>`þT•3*Êûúúûñ\”ž>oŽt\° ²òsŸÃóTN~¤§ÛUÝÝÍÍ?þ±sÝÝ7oþ·ÿfãò`#E¯�¶Y Øá‡qáûûûú�ߢE6|ï{ðÁ^sŒOýý v æùó8åömœ �•5<Œ“QÐ?‘ê¬gIȦq@Úòˆ-)âÃ…œù”hqôWî�ŸW®^½q;¤'ö¸„%jG�5¶\ÚñîöñrsM!þì³;vTVb¼yâ Œ;•• âËÉäùçwíÂ<M†ÇŽoŒÛ;† ø#G°ý·¿ßޤÅ/�ï•üÝa|˜¬1ëG;ÃÐ�õ¦�þawìôÇï¹kœ#%™" " S!À÷ÒÞÞcÇp¢×ÐÐéÓ8!mp°½½µ)Ø(…±Ç>Ù8g3ìä±®®¦&,œËÊ*)ÁxËù”‰e°…«8I iÚS)ŸÖÚF½ÑÑØù›h:œgêìlnÆx<6Ö×gÏxµt‘ÇaÖ³»ûêUüá={°&;Û Ük}¢ñ–-[²dÞ<çh~â/¼€»¾ûÝ—_¾v͹ƒOœÀD>~wP2–“é°üØEþW¾ò¹Ïa!Ywwo/ðÿé?}ý똗`8Ä÷}w¢{cc[üù¼Ì|dŠ€ˆ€ˆÀÝ`œÁøÑÛ{ö,Žf8~|ß>(Ä»»±ÐšþHÃÆ3{¢¦;O˜IK+,ÄF›ÖÖŒ <×[º‰ò@šL/Òžp¡@Çóz"a9ººð�yɲ2,|èè€â?¼P4üf�ºÀÞÛÛØˆ�룣ûöýßÿ‹ño¦P¤oØð�ØøíŸµ•bö»«}g5½ød‰Ø1`ZÃ7º3œL˜ ÐúíGÝÚ;lh÷x1‚ »ù3ÜÔL‹å_èh§‰!DÔNw–+j§ûd&{/ÃÑîMËy¢ÝÜ}¼X;Ýaâû�g‡;b�'Ð`CŒ¢qÁ€ûôÓ»v•”àHѰÃéXŠˆ-™«ÐÐ.h²žQ;Ý™Ñð´Óœj~Q˜^ÔNwšü�§IwöC*øX.¦7U“ñ˜Óe>\X€ÑÈÆ÷X“á˜_ÔNw™³“îøÆ‹º|Ãf3“ýˆ&Æ*ø3cÒßÇ7öBï—ÂÂôtŒ#p�¦Ä„É~Ê8\`‚ý¹6Abå¡Bœýe²²0\VVv6ºXÍp‚Šíð ªù�#äd©É¦„ŸÿQØÑ>iRAmoBÞ�þt§ºÉ§géðù?%%'ÏU‰ç8XÏ/íí·o¿ü2Ø��GŽàùÇúéÞ´ô™/Jf cË�Ù‘Bggcãßþ-vš·´`¢í3õ)\Uò[¿õ/ÿ%Ê[P�ŸwôWÔ—fUUe%êñ¿ñ ¿€p ––béà}ŠB^ŒG“þ´ãj�kh0îô—)" " ñpíë»yóvƒƒÇŽ8€�ç]]8Ñþ'½‰'hÇÌ#æùÊʰPíèÑ”\�RZjG·sþ#^ÞpÃs(ÒóéÛs°·ã‰ßÂ…OŒ¦Ç|JKŽ‹s'Ofeá*“œž0kõ@iQ^¤ÈzÙsrÄQõÍÍ8 ª«ëõ×øCØëêpd=|9GóžKví@ŸeßfIIn.üþø�?ò(° §‡è_^ž—g�Út‘)³ŸWns¢‘?ø0Ã?àÑt›Á½1 �D¢î´Ó2“åa¾´3^Ô�vú3<Ýi§Ô�vúOf2=Æ£ÝǃŽöŠN>œx…þïØ�=LXA~ðàw¿‹õ»wúÓˆñ©éÓì$�¸}ÄÖ‡ß7ÃÇúN´M7|4*xT{u έ ·MM˜ˆIO±;úb[#ÔèÖ¾™²ŸJ5—é¶_?ÌøHÓÀfïíÅÝèX÷‰;uWâÜÕ@¼b�¸ü}³”ôw®à÷» »Â;t:ñ/\¾ÕÚï0ûããu /Lì{ñ'Ð�ýmªüòóqÉóÄÐÌ�;»igH*ði¿W3šÇu?þ€úzHx¼1äs¯ù+^r`û]½º ÍÍ8$e¤B‹=ÅÚ|Ì…¿ãt§!Â’Ø¡V­ÊÏÇsËŽù0?3ÿÒÒÌLLxÔ×÷÷C¡ñÞ{­­558꺨;¦*çÏ·¶ÖÖ"´ÕáB"8ÕØ 7Óت1bØï¡¹°�°سJõ·Àa¬xÅ~]1q†V±mÛÄÚBqŽ~xåÊ¡CŸÿ<pv• t`Á"NþÀ¼{§= Åڭܾ·âÃgfâ’LÌ56~ç;Ø!38ˆñ®­íæM(Þª«7nü“?ñåÊȰ#ä± ýÓ‰8#¤¥iÏaLŸå±Ú#œ÷1¯î� ¡ù^éc˜�þŠÀô ð¹ŠgüŽ£U±¯ÒŒMÕûÃWê Üù/ßøÆ©SÎýüÏâ¸bí±ÇV­Z°À¹ßþí¯|;Âþú¯øÃË—q¥Õ�;¸Òç+_ù¹Ÿ{ì1Þ²e‹‡Ÿ/W­ª®ÆxöoÿíW¿ºy³sÿã¼ôvÐ/^¼p!ç?û³/¾¸j~‡lg<ôõW?øê…íäE3Ü“AÍÖÃi¿páÚ5(ú««—,™?ߟ0ÃúÈê<‡8€+¯[Z°‚q£ Îfçxm£QjjeåÚµ¸ºuxÏÇ+Wn܈ñ9ºaÀRœøóvåÉȈmÌña8Þ!_lÛ‰úû�˜�´ù$Ìò`®¨Ø´ ãîÛo?~ì®nY½ Æq§;îhÇs4Òcmü§”Ô·««¦ãuzú+¯üà0ög¿ô%\¥TP€y­¹*R ßã7[W×ÞŽ#Z¿ñ�#Gðæ_X'&h/�Ö¼õWŸ|¯½võ*:âÅ‹˜ Ça7@#‡»ÙW¯..ƃî‡?¼jö·¿}êV¼PøâK{ØD:_üâ¦Mx]²{)¾ú,³—,¼@á‡Óç`ð:;~ðùB®%ÝÙoig˜¨;íôgxºÓNÿÉMös–Žv‹ þÛ lŸÃ!˜_âü:~ú–2òІ‹-9Ó‡ ¼0ñ€WN(*ñ+òpó øG�FHÉì#Àï?ÚÞXºÓ>]3Qü¨;íT^Äú;&tV‚Ü[Z0¾ed ÛÄ�oßÖh÷%¥‹�·øíð~÷ò‰=.^\,H1ÿ�ìàÈÈÈÉÁóÀ²@œ;¦@0AÿA˜<˜GÔNw™ÉI€ßWc Ø©c/f¿oûåå8Çö�ÑŽãÚÿÞ@p'-dú�ìç½�øßqÒcy Á‹n¯D_±rPáÍ~‰“J0!:]E6òL‡væO“érÁËÏòrü‰ºÓ_æì"À玽{++±cîðá;wΜ±ßjû=EË@�¬¿ø|þÓ�õކ�ãÂÓOWT`¢ƒå`è‡m²=ïØQR‚#Ûq~Éo8÷ÒK—.ýä'˜øX¼îóæegã}/‘tv àh_ÄÃŽaʶm%%ëÖEŽ‹ô“™¼ø»Èï,l‡›oíV,;a� ÛãÙÛž?lçi~¾™%€篿Žçý”-™››��÷¾°<þ}ƒŠ~¦d!|þ’½ çöÀDÿCÌ®®înÑÎ�ïéé™™P€QRS32°³fllhÈîx4E#9 ÆÖç;ëÍòp?òµ�L�¿+ÌQ¦LŸŸo °ÆáìSb{e»£ÝBÞ¾ÝÚŠì¿ÿûþçP¤óóÏ}îcƒâùË_þô§1qŸHP¤üÒK?þñ•+νúêÁƒuuö»€‡r…ß‹ñŽóLl^Àr¢‚ÿøñsçšš°ÓíüyÌ—îÞ½e úçç?ÿ3?…f¦-´áÎøßù�¯~ã<¥¯Ï®�ø³?3Åú¡Cvä;ý£T`§Âð÷„|i¿t©¦ó¨úÐîÝxŽæs%Ó•)" "ðhà8ÝÓóæ›Pœ ÔÕ]¼&6.â¯�9'1ÒÀמXGF**°àóàÁ±1ÌOnÙòôø®Î- Äšâ¹9‘øçQ›_§~#Oø�çÞ»í@g<^mÇ+órqîÀ�·ÇʧžZ»ó�çÎánw¤Î竟Õ9ÂÞÞ~ö,âaù*Ž„/,|ñE\õ4WÇU©RÙ’¦ivw  !=ZW‡W úD»=²õõÙ‘bXoŠ È#Gêê°"ÔdzpÑøö‹#9««qôÒ±cõõˆç -†O'œ‚sŸüäúõ8òèA º:Rccw7HçÏÏÌ„ÉŽŠŸ{~Ð%Qús‰ÛëD;(p$—õü”ûì´4h±àO¦ê>Õpñò¸·h~Q;ÓLäNÿû5™¾ ÌvD xcáøc⬺zéR¬4£"… ŒûÍ[ñg–ûKµÓ}ºæTÓa8Žk´ãñjÏ‚‰Õž<˜fe àH¤è¸ˆ_ŒCaÁDÓÃc¡µsŽ¿lõááÏ~:6$z $öAÓ+ιŠñq’íH_´ýâ\S þ.w<ãwΗ×ʵYëOÒÀï&Vôž ã~9ý÷Ë ¤ück²ç&*Ðù;ûÁ@î]qÎ|x4ô¦@üÂú÷âܵ@Ð^±ÇÐ9¨ÑñKÅ{C nühLˆs•�„Ÿo™b¬ÉvÌx·A9Œû3˜ïú@pôħÉ6ÖËûèÓl$¼6Œ?Ç­\YV†ßÇ; ¡(>|¸½Št¶_7þŽ{û„–†O‰ücÝ·m+*‚âaÍšòòåË'oÇÑÜÞo;Û?Üݹ ®Z[1‘SSÓׇ�‚¿ù›ûöýÁ8÷…/¬_ÿOÿ©s�?^V¶r¥/ÅÙ³MMP�ü¯ÿuîv ´µ @q³xqNvìâ&\ì4&oSŸ’‘@ìSFxü°vÌßUߪ9¢ðäë ^¡nµ OÂïQñv’ŒŒ âjìïFÊxªAŠx¶²÷.ÿt„O拟cËm.�4¬¼ŒgûYýÎVÜ …ÜD:n—ÄøÑ×g%à¶KÏþú|IƒyÓ$7*Òag‰F¦Ü+NÌ××77Û/ë;¾×0e[¨ˆ^aýŠvúÇš¯½vø0à99¦ÐþÌg>úÑð8ÀÐTœÿÇÿøõ¯?Ž“$nÜÀx@A¿ã„9Ý`æäØ a·°{¢ ~ntØ¿ÿèQŒW8º ¹~çw¾ò(ÌÙ»¢éâ®ô«Wý]éQÿ(¯¨=q¼»}ºy³¥Üù=DÓ•]D@DàÑ$€ñ#E_ŸÍg ×Öâ} ³‰7ì 2ÖÄx‰8øŸšZV¶bvœ§¦b¾dÏžçÆÅ¹²@ðÜ ±q�Ϥw#Í#Ü1bÙÆXfc¾,_ð¸úsHñÒ¥?çIªñ;â|c\°0{ÕªM›ÀáâE<'ØÖ ˜±ùbû"¸ôô¼ûîáÃÐûmÙ²};Ò«¨¨¬œz=‘òl)Ðïã[²Æj²lˆlÀH–MÛ²°Ž˜(;ø¢ã!ãÁ´æ 3öAv6]˜áüãçÁ”âûÞ¯+ËÓÒÒÛ‹ô»¿{ø0&„srìÅõ×}íZ츯ª*-Å‹øt8î·|Š?·°½ cí /–âI­=û{í u§�þ“›ŒÁ”ig̨;íôgÿFφíô�ºÓnþL�¹ÒÎØQwÚéïy3"%+æ È@?ÏËËÏGH½ˆz‚³ùûW¢:ܯ4]¦‡VŒvD;ÃQ!v2A¿ÇÔ.T;;m¤±é%ß~Ùn-]¦‡@óaû¦éCØ'ºs*×§Ì�‰Ò�»Ï•é0–¥ƒz!ÜààÀŽ>ÌìܽîF‚øñ�±£|¢v†“™œzÁÊ^ˆ-ÃsÚ Z M´R´�¬,Œp^Q½+�ûWœ“RGú\‰LwšTXsÇ<øTœ³ýqGøÑ@pÔ6Ä_­�Sõõ¹ˆsµ�xÅ<Óeï¡b�;á©@‡:ßÎø´ñ‰õŠu•m¶`àB‰O~rÅ LD=ŠÃ\±�ÏöùzY¿ ÿ›Ÿõ/.þ§eËrr°Cî3ŸY±â…ü –#~¬ïmÿ?ÿó+V|ô£Pˆ_»öãC‘ÞÛ ÅÄÿññãù—‰Ë­GoïÈ~‡x”`Ô?qJò™Ilå|ž¡í$\.þŽúþÀ|Š¿¯°Ùg>Ѥ{8U|æÂÄØ§ èSËÅØh_ˆAåìðƒzÐ>Y KÕ|ì/]¬\]‰pÌß/°ð££Ì‡9ZHØàcáA:±áéN!$"p¯Z[ÛÚ°;¬­¥ù>N“­½†ôaÆõáÌﱿáX¶Ñq¿øÅöϰPìOÿô;ß9{Ö¹›7¡ØŽ¦ÇØxÚŠ·cîxŽDoc\ĉ–¯ºº¢'¤|ùËŸúO2ÒÕ…›ö„hm,±ñaOOŸ? ã·ßNOljÑ{ö`§ÃDÅùt©òÊ:Œ­ÈÏë … �·££¶áfªé�¿ãép£+çŸzjï¸8wüøk¯ýô§¸brÑ",Äë뫯¿t)\ˉã~w÷­[¸R,+ËvìçäüóŽ+žæÚ|Ìø£Žäþø:<¨¢¡!³A"msŸ˜ ;ž™ö�Éø|äDç@záÎ�”.ϧŸØü½ßƒû„Œòüá?ŽÑ��¡!”w–¡¿ÿûçÎa‡Ð—¾´lŽ®Ýºµª G�²C…y=¸R*å¹B}Ê®N°�js›@·ö�¿á~@;ë?±?Ñ'ÖŒ†£/Û+Ó¥�þñz¬÷ J”ÃX=h£‰Þ�þÆ|i§¿ùØï„å€�Þ—Ÿåîëe¿D´3ÒÂpÇ s__¿MdñÎAßÂÐ2g;�‰ß¿µ'ºûv—{¯-ÓK”Âù@üÎó¡¡–´»‚‚ÔT.œa{�¦�ß /T¸°¶³#=½ C0>eü.M‹ç÷z! < Bá€s/°0 ‚…$ˆ�ü¹O„v˜6^{Žßˆ•–6:ÚÕeý ÌŠÁAˆ¿#›ŠKòF\Éì!€_m|ï7ñ'vDkÀ~@…ÍÅ�8Wˆ~ŠÆŸ®�í‰/PÑø��Ø‹ÊÏ#çYNŽ-lŸwñõ»ˆM؆�øä jpÀÂø TÔ³<,íÁÆýñ…˜F:Ì�wy1¼Ì¹I€ß{}ýè(žÿ&*ÎYo´~žÜDXüÎoÝZXˆ#e?ùɪ*Lx,Z„ŽæÛÛáä)>˜ÌŸýtåÊÊÊêjç~åWÒÓ?õ)ìthh8y'”µ·ãˆëÖÖáaQ‹>‹q‰¼|¿5Nwî "Ü©S--Øa±}{Eņ ¦Jõý$€oß­š€�;¦ñÜ�¶m‘¯…‡Ýú‡ý5W ‡ø¦v£Ÿ™ô¡iåˆîhgná�Þár1”ÜRb ËÅJ‰Ï¬'Mó�þezàbé1UÆãU:áå —Ëz Âð)Ї·Oú+Ó'ÀçÀ‹kj°p–ωS²vÉvîшuŸ7//ïC/¾ˆ3E&¦j­Ý§²dÉ¢EPhÿÞïýú¯ãÈÖ—^úÑ�0Aþ꫇ãŽW–—)qg;í4¹#'„ùØÇžyåùÔ§>üaìÌÃÛ•ïÛüuòåbºÿøóÏ㘷Þ:~W2tuõôàýËËôøx^–Â… 55xÏ*++-żŸ·}úú$" "ð(àøÐ×WWwý:Æ¥›7qrž‡mž›£–�¤quPV6dgcY»vçÎ'Ÿôa¨ïºW†Øá�“(Q{’µqÏ?§ZÊÜ�~¯ù°œT¤³MMûöaÉYaaS¸`Ù5ì|ÊöTÌ¥§çìÙ#G°0mûö§žÂíåË¡€G©ö^˘ ñ¤@¿�oÁ^É,t£hƒ†?š:š‹½‚YS·nHlƒBÃbãB8Ë'œÒðñ�.|ñù .cÅ~º�ÊNµ¶¶³;¨ZZ0±ÙÛ •šïX8põüæ7¯]Êœ‚‚ôt(Ò×®]¼¸¸øý›ž¤˜òž#ÐÖ¡¸ÂTkÿ¾Å‡«רžC_º[ ÷ u§Ý|Ùÿ¬Ç!¶õG¦îÍø¹Ãßú8ËA;cÒ�ùÒNs÷ù2œùGݽ�ñ'3§—>_„ÑÏ¡”Ìmh�á–M;Í©Ö~²ðœÈ Bnm >õŒŒ�SœcGì=÷íqtÔÊËò³\T¼cš-çE §Â;9°7˜�÷g<¶ur`úqî™@ðbgý‘þ2ç¶—×^»qã�w&Ö�í 7&ã÷¼¤$#¿Ïwî áhZô=ü/,ÌÈÀ{všWTàN:Õ^V¶lâAìwã Ó�˜ã̸°<Ü1Ç«>òì!wn×®ÎÎ�ý“ÎN—þðkk_zÉs O¦÷ê«×®áè½mÛ-ÂùtŸ™Z*×É ÄŽøEµ8þv~Ï>=Œ* ÏX41=‡Ïø ¿ÛèGÅbز@ŸÞ7–퇥„ Üã)Øm<ðåFʈÏðfZ~ø|7Áø‰+ël´…‰7İ’ öø7æÃœ`�îTÇ,Ã!îüÁg‰L—^¸pí®@ˆök•±©¢ý…Ý͆)=ÿüSOáÒè�äçÎ]¾Œü~ðƒ7Þ¨­uîßü›/~G³2\F†½}á ÿ8îlݸqÝ:Œƒ¼{¼½½» …+*ÊÊâ] Y^^RbîÖ›,˜7Ï©_ýêç>‡ÃÖ¬Y¶ ï1QéííïÇüáüÁ7¿‰`¸» ÙV®\º¿;yyv–å³Ïbi—sÿçÿ¼þ:v¸QÀ"ÌÇÛÃ!,L8}ÏŸ¿z\víÚ²eÉ)ÐÉE¦ˆ€Á¤s²3ùʃ£ñVR’—ÞQƒöÿ³÷&P~Õ�ÿSï‹z‘º[­ÖÒjµvÉ«d[–e/²-›0;9„„˜“�B`&�„`–&p20„ Á Èf5àE^åM’-[–eI­µµuK­Þ÷íߟwùþëý^ÿ~jÉjIÝ­ªs~¿z·êÖ­[÷ÝzµÜZ44MÆ5éèZÚB%%¹¹¤×@Óž†§¤J:ÝVR’—G>äf]Už£t •¯ �'U˜ûﯩ¡Ìt0—Ï‹U$ËsºQj|~ûÛ55L`}á ÅÅB Cç;®£óV. *,Ð�î«A;Õ’»töÁ¬ôÒk… V|<\°â­&} CS;š"lñª;LÔð,X©ãá‚ïò]å#Œ8_‚ãñÉañ£|¡nß½ÁÁÄ•áJïýñ$´Aïølò­|ПhЇïwµâØIgW…feÀaœß8ì¾*ùegO›†A�2í+<™úÍȘ:ÕLòii2ø™<ŒËÁÁÞÞÎN ­­ì ÉÊ¢³n$L|�ìp@jykÇ“Á†!Nð­ÁŠNèeddfb@׎Ë(fô9.·hœ>ûÐDhMèÜjí¤zOò._á®Î™þ¢7|Wu´²vZz²~¦è¾^_åÒ]ä2\kÇ·ê§Úv1Q:y2º£ÙéÒÈ£#ÈT^ñÇ,Êà–PƒžòÓ€Võ\ü‰/-/9�To”¯÷Ç—X`„>íØÑܼoßpÞ¥—K–TUqûìÙõ.}Q éWf0ÑøCiÅÇõTéÇŠ/þ´#}jè‚ 8tV[ø¦¨ΛW_ÏÑ‚»vµ·sG®Ò«<Û·75a˜èêêí¥ËËËÎNv5‚ð½¾%`-† ¼pcý Þ¬= 6NÕ±ñ¹zIFÅ�Ûyÿôƒ8±€ïpn®Õ§xi9‰‡�›ªwPˆæ£ï¾qc}0qÅ#ãÓpƒŧœä ^ é/Å]nnQÑòå,@¬­ýùÏÕ»²v…žü£®Ñ ” }÷dxšÕpå�çìa/�‘% öhÿþ#Gl%šF:ÕÄ8 4΄'8Ž |õÕ—^ÊÉ)qwß},‘ ‚íÛ÷ì¡Þ~îsÿçÿ0±ýßÿûŸÿ9õ¥¸¸ €ú.wñÅ ²Áå«_ý›¿aYssk+í´iÌ\ Ëù3g–—Óžþïÿý·»z5íêäÉôç0Ì'ë¯64451�óå/÷»Ü­zð ¿n݃rçùßüÍ?_r+W^våúùÏׯ§ι³-L.v8<%—Úþý‡óô^Ôž&¦õ�—€—€—€—ÀD—€æëê8�…Ö×z¶j]œáœf içöíËÊ¢ý»ôÒˇcœõ*­Ý>3ÉÑÿ5ûškÉ «þ5|‡º£ýÌòƒ.ôUŽ‹/¾tÈ ÿ8¡¦¬,;›sÌÇF7©ßŸ–frêî®­e\)¹N”öÕÐ_§~-XPVFÅø·{ï{,8}"ýèµ×N›vúé”â?xç;++�?ó–lß)žÊùÜØU~«Ö¬4劜œ¬,:ê¿ùÍž=tÈßñŽ‹."]8:ô!òÎKàT$€V™fÙ4�BÔp ‡çhxNF#¦ô¢ž®ƒìÉÁŠ·ÇE"†5\®A4X|$âÆó6­ÁW9Õùjp;ßqfa‚…ü,<5á{âH@z‰VòþãðH%M…ýúÐAUè‚ ¥¥®Î^ee©.À‡s‚ä Ë0¸£ˆ  z„ÐÝ##£¤D Ú€ŽggBWWOóiCŽ«G23iÁ¬ã ŽrgB*##/�Àf@—áÜÕ?«—ɦ“Ì`A¾Ýݘ ]{(ƒ¬ ;2(J^®Üþé\J€^ï3~¤¹Â¥¿â)þ¾âñÂS¸óBwîVîŠOõÇ:Cçî\×Nt&FY`’Ÿo;_µc].]E ùtw£ÉÔ;JH:3` _wÃ7…nøŽrñ%¹èvñ©xÉÑûCz¯/¿|ìGŒ÷öÚ÷Qõ$^ÊåËËÊØAWºÔ ‘X¶Á—X¾è¤¢«ø±æ‹_µòŧÊwÕU¥¥K—:ºâå÷ô°„,^~¹¾9¯\9kÖ%—Ø�ZRázÿüK@õB_`¸âûÊza°…c(&D½ µúD;Öߟ•UVFºÂBvzVV.ZôçnýœèB ò¿««¡�£l�~ˆò%ÌòSNÆ— ôÒÒ¹TÖ?2ÎUhᨫàËG¯ `AAiéÕWÿEEeeðzzª«á¿£ãرßþó~O;‰²³ÓÓÑsÚhJPoÐqò3.�£ü‚ã�—ÀéJ€ %Ì{54´¶¢oª·Ð‘þ™ž9Ê WHæLÛ^Q1mùr��--ˆe8'?ÒïÝ{ø03wŸþô7¾Á‰.ŸúÔÝw¯XÁÕ%‰é¹ª�qQ*ùò‘_RR\ý^(\þ�GŽ0~Ãp¾i'ÄpF ±Æ×Ö­»vQOÛÚ::¨§“'çåq¢Ìœ93f°@“Qüúú'—‘Šï†ê§`å7’ßÐÐÖ†üºº¸tÒ FJçã½¼¼¼&†h7h{zŽg‡õ¤Iíí,Фu!ÜõµTÔðYbÊš��ùó/v4î-é Ø¸wpPóŠð”Øî3ÿD»9ZNåÐ…I“/愲ìl»ëœóÍ0¨[Kl¹Ö_î뫯?p€qF}}]XsæTU9¾-Åøû¿à èûغu¼ømÛ¦#f¯tø‹TÇlíÚ¥K™@_»vÉ&Ê?ö±û�¦(F!JEá¨S|÷»ï~7G;ÜsÏÆ�TÐgžÙ»—ޤèGSŠ :v+WVUÑ!þ௼’#•î¾{Ý:vȹôP Tÿ–ÿ¿¸v-+7}tÏVŠ<øà®]6Áo˜JoØF ‹q"ݵkXÇ]ø½*;C(!Õ›2„Û@˜ªN*+?¹ñÔÞÞÙ‰�`óææf:ÂwÞi«â#ž�Âå«B Žã{øB‘€ôJ Ùðr ##ý”þv8V¢zëâTg,Önªq†EžÑpÁ¢u~ÊW°â©=‰Bƒß<«Ô‚�ojèLüðS¾‚‰Ã)­Â[lbz„§xïO,  g¼ã¸‹‡Çá8~N…¯pÕOÚ”ž#Ó­ƒ˜��Œ/ð’é¬B32 i—º»�¥ÊÈ(-5|£öðÃ�=öðÃÜAÞÞŽa\‰¦¦ÆF:ÔwÝuç�·ßÎÑêlùCÿ­�ÃÇ@È]H´kjKËìèwñåÏr´;ÒÓÓu�|w7åÃ<ÉDtS•3JÓ?Ÿ[ Œô^/_ú,ß…‹oû’+^+vu•ú=Â>[¾ô}Fè¸χ.d§U¢�Ò�KBÇÄ&.Ž…Îí(ïêÂï¸VytÔ»ÊÉB˜¾:†§8j¯ÉG†ó+CÇ„/ÎÕS—ƒšP=yõÕº:v¦IT6ÅgeÙ‰!W\1s&wxka…ôLøš¯ò¯\9s&;~úÓÚÚGa¢ˆ)¤aõÊZvø74ìÛÇ]è&Ǹ¼/4ù�ÝòÚNK�¶ŸÔÞ¦½W÷vm"Pï“ý,|¿YøŽ_UuÓMßÿ¾ÌùÞÆ ù~9òòË_ü"ZÓÕÅðÓŸþæ7Ÿ}6>ùɻ樂7ož¡Mq&ϺküË_þ—aÇyg'K…‡Sìëc‰œãûšk.¿œþ�œÊyôhCƒæ1‰KU/U§%;Á¢Ç¼%q»w8ÀZ—_¾lW¡¨Ýž÷½¼¼¼&¦èc¿êì|é%† tvrõýYkc­½¤ôÖ–ÜÞnW‚-]zÑ�;{h½5^‹¶eº"Yo…~5åm§� ‹q— ó;7nØ@.’‹ZV7.±ù¡¦&úíí/¾¸q#'fÍÍ£íG»œ§Jï‚7 «bP=LáìÅk@‡ÏD;Š‹"€gÉ*�ž�ÙŒpS%Ã×@ÈÒ8zÐWøöòŒ¥£BD;¾¤†_ñ)ºzñ¢G¸ÑU ¹·QzQ~…I:pì([…&ú._Ëùˆn´œ*‡IÍí imííÅdðµ¯mÙ‚Á ££¿?º�� 1èeeAwéR¶ ‚n˜5 ¾tÔ'†µ›XÞD~=4Ñ$€ºúyº¥sú›˜R:dÔU7ŽéöÉ`0pnÂÅ`ýÇà V¬ò¶¼DOæGñ¢1*—}E¬¾G)(\ß3Á¢¬xùÆP”ºb½?^% ý9]þ_o:åOO;Çw?n@§U°…YÒ<ÕXQR¸ƒÁ˜4‰Ûq]S¨Ö^Ùj]Ý‘#¬�¬¬äö= Ó§_u鬆hçísÏmÚÄÐÚµ·ÝvË-ÐãÐu«g2 »ö0±~“‚|]½KŒ§Ô´‡Ä›!Þäå?./èzwþ$ ÷!?þ¾Ä™‹·÷õ$†÷žØŸ9׆@ñ­|«C'îƒ`SèœÁúúÐÁôй#£7‡.t<½Xô^“’CU踋ç Ÿ2¤ë®s†…ô{eП:‡/¾§þi"H@zR[ÛÚÊ�jq§÷>sfN / 9Á¾ŸÑïe<Ý…K>S¦r§ìŒ99,ˆÞ·¯£ãÈk·ì»cÙ¿¿¹ùða~¡Èi¼•SõBóðÏ{T{ÂwVaV6‹aVÀž¬÷ƒ‰'¥3\÷_SóÌ3Ÿÿ<'ÿ:´~=;l²³ÁÏË3ùK) pFzÕ>4Ða S¹X¼RY:�;,µ0i? �ýã<9²e˾ÀIxééßúíТEög1YYùÆ7ºtj\yµ]|�ÊÏñ¨xLò8 Ðû¡Þp9 O¤ß§Cãd¸ìOv7ùáÃõõlœqú,*®ž¢á­­ííìÀþéO÷»]»‚àoÿÖ é–ÿÊ+v—ú7¿ù£½ôt) ŠþäO8ºvéÒyóXXwЭ©až/n8OäŠÐãHw6Å]y¹!Öð2ű‡—;Uš­[wîd¢Ÿ»ß1Ø«Ÿ:œ¢ñððð˜H _ˆ�º³³®ŽñOf¦…N+c=e•Öµ;ôóòo2þdÃËÙk7´AÕõB“·e6O"nGËW¹tb WOffr¢4 ߘÿt-®É‰Þríè8|˜ñ¦äšíƱz³>Z*!:ª6Pd]C§‚]*ëÛT�þ‰MTkèECÜsb¸£`áü;\åj>áTk3üÛ��JpòT¯øVjèZzž,ßT¹ƒaØÑôÈL…}ð4P –x>KÄs7«¦FÕÎ¥SÎà³#ŠOÆk¯55áÿâ~ùåS¦ÐÁ~ÿû—.åHݸ¡…¼½›¸�ŽPÂèó™–8±V£¿Qm6êÊ=Ä æ™0~Nï &çpíÉÁŠw5:@Q h¾Q VËß‚�úððxùDþ�žRʆãÊ= ÇûUèï½’&¼ž²¦¢#ºè%5O;P•GffzºL)ìäúg\ê®Kw—¦ è“&Ù$ní¡#<}:wÅÏ—5˜½XQA“‡ƒ­DHi`¦•ÎÚcèœa^;ÎE_|žkùøüÎ�¤/uu��\©‘ÊM™’�ÍQz:AÁë…IJr�\fÌÈË3zg' 0gZ;& ^::�³äžJÞ>ü|K@½ùzß6Æp£iñiý×þX_½ù–?þªUŸþ4`MMìè>zô¥—0X³Ü}ÿ~–Ú ;nTbzäF:2˜»Ü“xUkH®ÒFÂÄ¡87~aÂŽþÚäÉ3f\}”–Λ÷¡qs~>GÐÇ�hiúù¸œÀ6 ËÅ`B”Ž~£áÛœ¾‡½N&�pýßÐÀššÚZæ­œIã\½qqFÑé`"¬üÀçÎqÆq×ÔÔÒ ¹Äé‚›—Ç¥A ;Ïßüæ›oæ¤ÌTîßøá·lá䇶6;zÝøVøw¾óÙÏÞtÓðÔï{ß�wrµÊ/~ñÈ#œ$óÒKœub'RÚ‰b‰ü5667ÛÌ`"­¢¢ÂB&ì“•%S�覒¯…ó^Øq¨÷¤~©¨xßKÀKÀKÀK`bJ@ß}NVR{i3ÿj?Ì矶G'M¦§ÏœynvT›�Ÿ™�™¤~�Þ|1{ÈüáÙrj33++«ªèÿ¿ò úúzzœ%�Ü�;µÓœÈ)9Ÿ-þÎÝ Þ€®ŠÀ@Ê*Š:Xzó¯A—ŘJ(½”X0Š£0ð�¢°ue]‡Vé†ã¹tRB« Æ/±âËÂ…¥«Tظ¦Œ†AŽ®$@ÆŸË�X'Ã�ÿƒMºü|@77›!�£GU�-ÃSzåÞÒÒÖí ‡ä"fÉ‘p•LœòyñEöÁÞÐÐÀÎõeË0¡+ïOT Ä'€†OIÏ�þKßOU&è5zªt‰õW�âuB£ß+wÕ7ñé`‡aùGa=G}ñ—&¾¬ü@©ð¢éô ®JÄs6G/ŠçR‰’÷dzBµùC;A9ô}–�?Õ²ÆÓ¥‚5á/C™èwtôôØÑ}®�S\*ßôx`}e‡¯é­&PMÇ‹‹‹ŠìŒuO©‰Ÿ™CÎvXØÑëÐæŽA&%µÙÚ?3È'Rêíå6ZøÌχOå›JN#SôçF¼!—Sô™P}+ã†t½Wµk‚UÏä;ÊçöIù«Î �ûH?ã\©2¸Ë�ã‰~<\†tíD=å—*]œŽ‡Ç·ôÞ9¡Šï¬i>1øæ0 sGª× I$Ñ—\¦LÉÉaç€äªï’°;;í$0Å+ÜûcM¦ýŒ6TäÃ)ïÛ`žÜû¶^ËhšñõÑ£›7æ3¤ËË›;ƒô‚Ì33sr¸²./¯¸xÁŽz_½úÛßæåGyûÛ™@³£Ý¥G­“«åK^8q'¾,”£±Æ¹ã_µ\úÈü”22Š‹¹’`Ö¬K.ùìgEËù]]mmûö±sþðaŽnïëkoߺ•þ”ñå¸0¾”�(Pb$]†Çñ„ï}/�“I §Í¥ž�8Áü@tÖÑꉛ×S]‚ú~X�þP�m~ÁrS8wxkÞ-ÊÞÔïÙ³§Og§Üå—/]ʪË/_²ñâêjÆ3|¢ùFiDŸKJ¦Lád¬¦¦öö¨á»´Ôî&�âFŸçÎ�5‹nõWï?;ÕU¯víÚ·�«²^xáÕWÙ™¿eËöí\D}KÆWN0>B.ª�ø’ƒÂ•· O._Õè#G £rZ *:Þ÷ððð˜˜P»18ØÝÍü"­®µ»V^Ï““ÁÔ©3gΚåæé\Ìè>uuÙI™XÛ,ÿxëh¡ÝݶÁhtswÔ4ÿR\yzŠ�'¯ÕäÅ«¢ QXበ"E°ttÜè¸jÂTÔ…€©´Qßâ¾Å &•ñáþõ=GUù˜‚óYˆ*ºÃ‹æMyá=1, ÑÁ¥|7ÝTY‰¿n]W+`;;;:0ŒC×Ê¥r6*@¤3i»ŠFxb:ÇáYYf)+ËÊ¢_UeG:EyóÏGNR•Iúmñè-?Ó!{¶zañÑpB[¬ÃW¸è)Þ0‡]:ãK°RˆžÂ+>.XñÂW¸`ÅG}ââŽtü”NpOõ^yG4ã4†K2JÑ?�w  Íz÷ç¢,ª÷œTb†Ë•Â?jGâJZì:z„`ÇÏÎÎÍeA;›lgúnåfáL 1D¨ÕnK3#Ãç°ÒRñÄœŽ£û½û\V¸T  'ùœm�{ö$ ºÁ{çYßNÁh azo YzcïWxâTéŸ/_|kòH|L ]ì �»+]é´ã|Qè:Ü—þ�ñ!’zzìdû²Rr«O‚‹ŠlºôôB’Í©”Ur™<9+ ˆ`ÒêÛÅsW×à F€¼»Hìý¸vÂê0¼Y{m‘·’q�9Ï}}uuÏ=Çûïëã.䯯ýûÿû X²äŽ;Ö­ß&ð˜.C²³KJ¸+¹¿¿¾þ‰'œÎÆôèT<_Ç—ã !ñ5¼<ÖûÁ ÉÓÔ©Ñ#Ú­4Ì?´¶îÝ‹�ÿ‰'þôOYàŸ› O,Ã×êúnXoP©­œÆC´·eå1,™þ\ÿä%�JÒãÚÚ#GØynæ_‡­x…ÄaÕÍ# Žãc@·±cþ>ðÖ·.[ÕûÄøÓ…þäOîºkñâ øÉO~ó›�;1tÛ<Þ»ßýÆ7²ÀæT�Ìã‹Í�ËùïyÏ߸p!ß•äõ¬»;n@WŽHN_…áÇà †}}x/¶üààÁ£G9ò~áÂêjŽÄç«—¹ÒzßKÀKÀKÀK`üK€V�¶«ó‹œ7¬yWB §Mà——W2älÁ—ú¾÷ÌŸÔþ´·—–b°.,]_éå«Ã&:}}‰;Ðë·ðð¥×Âîímm¥ƒœ™9u*íTo¯q˜–fGÒ´£m¢:L­pÓ¹…Û‘ï˜s´¢ÒŽ”·»Ù¹Áœv ù¨]Њ: 7îXx¦özê¸KÎ’‡ü(ÿ ìQà(ªöv&¬Z[9Ä�œÆ'+Ä18À—Ug ·œŒc¤j° �Kó†rf%9�·¿}Ö, ••åå 4°påñO’¤g®ÌÒ"…Äa«Ñtñ`)\:÷$šø¦ÇÑ{އÇáá)¢!`“Ÿê‡à(ϩžÑqð©>ÅÓÅaѱðT±Âòþø”ï5™ÞK/ã¥J…Ç,|Ñ�/ �B­²ßê¢Y}#¿ÄÊ`ÎÀ@W—µKyy´ƒìÉ3Ã:ñôôü|ÚeŽz·U DÔ´æ`’_FFv6J¬[µ 2k‰]y¬ý#o9òW¹vtÈÑ®•––—G[ríÀåèBÛ¯Þ[à�G¿Ë¼a÷ž¥òõþÕö(\®òO„Žþ�]Q£tc«ìŽñ§#Øå; ÿä%púÈÉ™4‰ïr{»]�! ª?Lûû�Ó’Jj¿©©§‡�8ÉΞ©¹ìÀ09‡þo K@½ùÃû?‰ï×âig(”Ré{moŸ^�=ÉlÖÛÛÙ‰!�%ÿQº£cóŒö¡)zÎ$EZ ·'Ó;¥�j¡ãÉ0��&¾ ˜�›²EË'Ú\ô¿ô›ˆ·ê ×ð-N 2Ú¢âvÌGñ\.êoZzåç}/�“I@PvìØ»—y4§÷– X…ÞEa0n¾yåJ&Æï¾û�ï¼øbgØ>YžÉâvï®­%ÿ}ûÂgG<ó‚µµ6î8pàÈî?~¼¹™Æ¥¥ìÀþÖ·>ýéoLFñÔÂþ꯾ô¥Ç‚úú'_±€ù¼Ù³gÌ`ãKe¥-?{vEpUÕŒllZô‡�éñ\dXg§:wªÇÓùÈó»ßýéO¹²áÁŸy†{8“¯}S,døûxíµ½{™gÕ{ÓøKøÞ÷ððð˜˜ÀºE;‘‘¡vY¾Êk0hl¼Ù>äˆãÈ=ጞ¯«ó®¸âÊ!›7Û|dM 3†.Ÿé¡ ‚+®X1äìÄ%æ5Ï–ìè ÜœW½ûÙñ‹·¬ýýÌ”ž-nÎ=Ýê¹Ï~ôsTÇóÞ{·lih‚×^kh@ÁÃyç¡£WØ11Mç*Úau>Ç“)€ƒíÉ…º'bdº6ª¢ÍúëD<Z$ Ñ�ãéØK=2v|¼£�ˆW9㟃á¹[Ht¤»÷÷Sq�/s:œQ^•nçG‰\‡ÔÊÇç€'ùìH¢â³Âûô‰ßûª«™øY±¢²’•&f£ù¨äÞŸøP}^Ri¸é1šÕK}Þ]¸é¡è¸‰Kï`ÃH¤ez­´Q?ާ8…+WÁŠW8µŒ8ÁŠ'ÄÂT.Á†¿6¥åø7Xñæ‹îéæç .â4¯þi¢H`´ß3Ú‰¦¢« Œ©¡c¥#Ž£;§Mcg@CCs3í|IIQ‘ÝI.Ik¢39l¹bðæ?:ÊœÑÂJÒ)SØÑA«F»ÆÁìÖ14<uŒ¥§ggÛÑ~v×7€Â.j¨wõT9ê[¡~ˆj�ÕŸÎÎîn3è³vÔµ“’µšz,ª'“ŸqäÿÏ–$­ôÍÏŸ<äè—0äI�«ú?�¡sï3ž‚‹X0±?tA0#tè+.Ž=þ`éñ+¡cb—zà‡4�Çu¡c"7þÊí9>= ¨ž±Ü‰ïíí==Ñ+<ìëÉÊ|Î9=Ú"6æÐÕ!É™ñVöP{(øB”Ñx(³¾ŸòÕ»àÍÿª‚]L´|Ö‡°vˆp�ww)£)ô,ú6 H|8¾ ŸiIÑ3½³Ù —�…òÏOØ‚£tzŠú¢có”‡Xò·Ã}‹1 þÙGÍ_ùÒk3þ­¼FÅÿ{ œ\º’§¶¶¾žñú�—sõBý{§™P^²dÞ<›ï²½\�È|ÛÆ�[·²`wÓ¦mÛðUßÞýî;îÀ°|X¡ÒnW×]qOûôŸlºß¥kjjk£ýnlܹŸ�ù,xQn«W_vYEEü·ÿ6w.†¹ƒëêh·~øÃ_übûvúÁ¶4fÅŠe˸Ë}åÊK.!ÝäɶÃ}Þ¼ÊJ®Ô|úi£a_'o ¥¶“·ÂyOð¥ñ§ò÷¾—€—€—€—ÀÄ”­.ý»þ~k±d@W»ª¾+­4ó|ii¶`»«ëÄ k¿f9ë· w4$7ô˜]¢=_:NÅĹ4/$ƒ»Ò9ŒÑy’ý{²¡z¡^ˆ È„ëÛ >?ÁÉéÕáR€"¡¯#Î�¬¥| Ëå¡'¶ÅƒÂåK?•³ðUÎ8ßÂ=Á†;ä×Ñ~ù9n­<„¦ý'Ž2EÛû^'—îh®ÍJš®ES WÑúâ`Ãúö·ï½÷•W‚àW¿zì1®R8t¨®Žñ‚N|ŒÒâ97—™´ øð‡ßóžK/u±o{Û-·pôù† /¾ˆ]'08Í×Åj­·^{me¥KúÁ~þóW_µþ5ä}ï»óÎ%KâXApÛm«WÏ™Âwªq–/ Kéç½õ­·Ü=éBø¿üå£�²àùç·n�î¼{úé-[(Ïÿý¿ÿñì8Ÿ>½¬Œù£G�cÇ»“§åç`QN G®|¼]òñ¾—€—€—À…!��ÛCi­'H‹a½AÚ9Z |ÚOZõôÔÔìÚ¼l'Äœ-õèr`< ÉÏ—£·‚<::vî¤ýg~9jýh-4µyXµ·\‚éäw¾ø­|'¬]wí àLlëJpª&®g*ñ’ígq‰K°MQ¬")­è[ަ(J/ºÀ¤ŠN*tD+Š?<¿D~¢¼*?£#þ„o9Jå¥üSù¤×¥SJ£Ã?å1,q�ˆO~ùùyyTüåË üñ_t†tM‹¾>q_ñ©øôá¦BõÒϸsú˜#|é“`aÅÃ+^ø ¬x4ŸgÂ-Ì`Å+œô‰x¶pM OéñE1Y¤‹ÖWÁJ/¾.Xñ¤ŽÒ�ÂÂ!>8(ƒ¡â½?~%àÞkò2ŒŸ<ÕðÐTtâášÈà*&Fr¨/ äZZ¸eêÔ¢"vjDë‹ôØ|Õµ¾‚éüñ³+Hè/ØÎsµ‘ii6Áe07 Ó¯ˆÖB«†5¼u·»A¾Ë*;vÔÔ`ˆ_ºô¢‹æÍ3þÁ�¡•¢h/ãNr’�÷ðÙ•€ú-óB…¡súÏ] !ö„.Xà‰!«5tN;¤³2$Ëߺ ¸(tNOâùŒuXõw[èlà¥ú•È»ÕdõߥçZa�ˆë¡‰*õOfÌÈËc�Ñ«¯¶¶rR�Â¥vt;ÝÝv´žêçD•Ëé–«§§¿Ÿ`µµ ÔN"?Ñâ©¢"/�…Ê’¯â¼?Ö$`ï�ŒC½Qëg¸·koÜÒ ›þ 8JåžDµ·7Yÿ#--+‹žÔ6¾ßƒƒ¶CÖõv´�Qýù’£ÁÒ3ò·�OJ¥)t43û~ç$ d'�°Ì‘ŽÊ]ò¾³Ü•N”;)Å!ü ٠唼µRï{ D% ½a_4ÍMM}}Ñ pé—�GS›¡œïöž=v{bìpèñÇ7nänÔ?þã7½ ƒvaa~>;¿æÌ±#Óßò–›nbœñ³Ÿ=ø ÿÒ|«{œdõxÍš«¯Nf@߸ñ•Wh?Ö­{è!Ko<èÈõ+¯¼è¢éÓ_kÖ¬Z�ÿø×¿~íµ¨áßjœò½óÎë¯ÇÐ>oÞìÙ|WäXÞLù)סCÆ­Ò€£g-(Ø¿ÿðáèI4#ÉWïGùåæffú«²$ ï{ x x L| ¨ÚÕ••Å \¹¹ÖÏSûb3ÈÁÚ-µ×»wÓ®i^c¢�;UÎÞÞ;¶m£Ü¶áA=e¤ƒä\ï=- û@oon®�Üiýûñ®QC&ω鲳1½ššk¨£J€¯/˜x:X‰áR©€Åó¯*•ˆotŒ22ué£ùJÚQ³‰xGßp\ú(ÿŽož,ãÃòO¯|å;¼D¾]8OV|u@/nåÃmr¹Ö˰òÄd‚w¼cþ|VÈÊ B< v˜óá’á@G�êÃ&þ½ï%`HÔSé'Úˆ>Æa…[LtâÞè(|¸>‹žù’¾ÃSˆ¸Ò„V" ¾ÕÛÄðÄÔp‘Oá*×pØÊáâSÁ*�âË7.¡/9£a;¹ v1ñ’xxèèv-°T¼÷'¦TϪ« gͲ2Ú˜Íô†àžncãhÛ£GÙ±'}›˜R9õRI[¶Ô×sômw·ÒEÁµ›ö4~Qí‘ä.<ï�5 ÄûÖ‹Aóá”þ;¾ëÕX}‰ÂQyrVÖ¬aåƒ^3Ôš«×î:|Ö‘rŠ`0ñ6 TE²ô¢ÇWGÍ…[z‡oéU½N:ò9Õô![1|«ØŽŽÑ)r4©D}ñáòã_|»rZ¾ÀƇáqsCnn\}õÔ©©¤£7'JEÒ{ôþ¹•ºÊOú)ß4Ù… –o:n¼Š†âäÇÛŸ¼¨>hà‡]¸Õ�8L}£ÞÄÃË�Ó,ß•Áø,_õ:+\rŒÃ Wº8L¸wã_zïñ tÁŠWIËWø©úJ'?žNáZù˜:N4ÁAyùìÙÜ}÷øã[¶<󌥦žº>Ñ|MŒÅ;Ÿ°¨;y¼›¸VÂÒZ*«ÅÐÖ^,Ç øMM��DÙQB{8=tî(j­`eâ˜+q'yÈ�Ç{øÜJ@õB0½¿¸¯…�\aÃI zÒç8׊gg ‡Ò‡çC—ؾÅÓŽEXüo �ã¿¿ßÚ)•W¼ –|ËBçZ*\øÞŸ˜Ð{¾ôÒòrîve!nô(8â)¹ôåÉ'ܼÙÁS*§^*Éåùç�aa�“—£AËÅX™–ò’K¦M[¸ÐðÛ7‡ïŸÆ‚x³ðaw}ÛȘ‘¾þ5—ùÎâ韀!_cÒ“Z§JuwŸ8�ÞÄ]nnqñܹAPUµfÍ?ýõröì[n« `öl¸â,@G_ý"ñ‡Å¯ çLG’>-­¤dùrvÍ™ó¦7Auõ�7~ç;Ãõ“tìíïokÀÎôWå“Í?Z~IS|9|‹,¼¸<<ì%�LZ yóÍ×\Ãê³frgªj¥ÒÄa…›Ž ²Z¢°“ù�<òÜsµµAðÜs/¿|äˆKϬ(õâSŸºûî•+9réRNvA¯¡÷Æ7^}uµÃ×Óï~·aþ}œ`rô(WcÊ‘§páY¨û‡.ß åsñÅ ””Áßÿý‡>™™¶ó])^|qûv =ôÌ3,àQYí›bòSi.~äó•Sœá¬pÅÍž]XH~7ÞxÍ5,0P]üxßKÀKÀKÀK`bJ@ó53g^>ä¸r…ÃÜ­½²6"qž‚+‹çêGÚÃÖÖG}è!`ÛhRR¹Z[ׯðAʶ·Û–ÖoиÒÍvZøà`v6'Ê̘qÉ%—]æNœïò™pG¸óéVU•”°“ùå—�e¢Åª>±@6p´!˜…£Ž�è¸tJiéQ$:gŽ®ÂÕ�³X—[<áÇó;Yz£iüˆ~œ¯h¬Ñ"'ã“4@‰á‰9FÓ+?¥çÃ!&^âåÊËËÍå=de¥§Cù-oY°Cºï˜JrÞ?3 èÃ�HEzˆ^J_5]�§I„Åñ,ÜèÒTZ¼`—ŠpÌlV‡ŒOÅâÇà 6 ÷,êÑ”ÐU¹�¾`‡ç:&yÄåM¯œã| 'U¸â½?~%àôÃôìTK¢t§Š/¼¸þŠN<œ U&HµKõ…¡c¢¨±ñ¹ç‚àÅwîdçÅå—/^|ÑEÊ_í�M¶(&zäz¼¦Žjdb¬ÒG}aÊdMÑÚÚÒÂÑðÜÜÎÄÖUCîšk˜Æ9¿+t®žÇå�J>Q>üóØ•€NÚYº Ø:úI8g(×{–Né¨wê7‡.V„nì®ìÕ ¿ \ê�¦ô�zI=’á}Qè&ÎlìjèØâLõ€£h¹ò©º:7—rÛ·ÛQîpKÞ¶m��ÜÛÒÒÝÍÄFqqnnaáØ*Ó™p£úqð`[[]]<üð¾}Ï>[·?ΑºÇŽuvr²Cf¦�7}z^† á«MÒw˜çyóòó‘kqñäÉÈKò<^}Ú³)½IóÕŸ·7gùÚ»UoD¼ha_Tl¼"]“‰ÁèìàÙ³¯¼ò _ }ËÈ Ÿ”ÊÕ×oÛö­oA·¯�~–Újy‰®äC~Т>á+Å«ž vükÜG*ï¼N.MÌW….þè�®»Ž«F~ò“‡Æ?q¢«« ÀÑ0mt°ô}´y7i®pˆáYá‚-þë_ÿá_x!þçÿüèG¯½Ö‘ž�M ŸùÌ_üÅÕWÁ£�>ÿü�A0~eeôuv~³£]G°›1�ÜŒ¾ø,¼n¸òJÒpq#;ù Ë• ùÈ{ßËÝìí^Ue ]Œ’ýïßäG°å+÷ܳiõ3›ü9އ•*YøÔ©ÙÙ\¥Äòœ¥“¢ôÞ”Öû^^^^SšW) ]ìÜ™“Ã8¨¨¨½Ý®Q»êZžè ²Á¡½ýé§{Œ“ÐÖ¬Y»–%íÊɉ"­ž&&ƒ ¹ù‰'0 ÷ ]ÝÄ|,2°ŸäbýcA��l™=›3DàÆ¿T†ºNÓ]~yE;Ó²³¹ÍÇÊh/3°Uº£ÖŒ‡»x)†)ƒ:°Š7ŸÔF×)Rb~ 7,G¨$çWt�o¸ÐQ>„P=è˜1åwÜ1c��èL€ù�ç&7ÿ¦pµý^_¤—ªW£åÇé 6Ÿ\Œ³DXáâs8løüGË#X¾ê_V¸èÆa…+]V¸ÒÅáTá¢s¦oÓ§é}*^¾¸ŽÃ ÉgÚG“/ঢ£p˜‹Bçd]º à<ŽF_¿~ãÆ  g?7å3GÂw~4|ìv¢ Næ9rô(w´¯_ÿÔS¡{É�cG•èèvQ-ƒc4Ïè³ä óÏãGš˜ ¯NŸ‡Žá܉ *‰Â¥mú777 9 b8vèàR¤Eï\ûZðòHèX±Œcà…£Ü”È•_°øTù5 Õô/'ÂLåôþÉ% öAõæê«KJX¥pR«Žð̾hü×ÿº~ý¿ÈѰ¿ùͧ>ŸüäO|ãÎà îxrìç¥\ÿú¯[·Þw_|â�>úõ¯ÁìÝûÔSÎ@޹ƒ“KZ[{z8ád×®¦&lq“,jm£2CW_]ZzñÅn�JT¾ãIN¯ÖnðÝ´2ë�ÊÀkñn¹ ð¯�ë.�Ñ1<™Ý™E¡vèÐúõÿxÔÕmÝzÏ=PåöÃáÒV_Îé�òµ|à—'ù˜Í£°Âmjr8}… Ýì=xð¹çþá‚ ­m÷îûï·*à=º=Z.ÑeùjY¥ä¨p÷UIäZ*£xñ¾—@* ¨èÊÂåCŽ(·Þº|9 &³³ÓÓ™³Ú�¯úpª¾åìÒ 6¿µµ½�öàïþîß �سçàÁæfÇ­Úƒ›nZ¹2Ù�ç¿úÕc�íÞÍÄy[t¤ûÊ/75µ¶RžŸÿü‘Gjj\>zºõÖk®If8?t¨®ŽoŸúÔ?ýÓO�ŸÑQ>ÔO¾$æéTàx:ƒ³³'Mâ$°µk¯¸‚#fÙwÈ{Ñ‚f½7ñí}////�‰)}ï5Îlnž;—c&M²�讟j=EÚµGæwu1Ï×Ðpß}÷ÞKœµ3ã]Z*åúÏÿd�@c#G·[ÛKéÔ¿W?Ùzœ(ÃÚÖÖ… ¹šEr•œÇ»\þ`ZïÅÎÿüù¥¥\V�ãÕrà†tÖK$ð¦uÄìÙ:f §ƒÈ€L\ÂyV¸ð†Ç›"i@8²âu¡K¢«Žj²ü„‹/|uuU��K Ž£g†Â,­+?8Âst�†Â RÚ `¢“•;sæäåÑ‘¾å– X�âwžKRÞ 8}•†‹ª4]z,Xñ#ùñt‚•Nô.ØâU/T_+u<\°âåŸjxOù)\pœ®Â…�OÇÃÕ±P¸÷Ç·Ðjt­–ŽP"…«tŠ�‡+~$?U:…‹¾è(\:ät$vsè‚àúÐÁ ¡ ‚uë~ø7¿ ‚U«.»Œ ’™3§M›>]TG߇/ 7¾ôÒk¯±«­ xÕªÕ«Ù"C &ÔT®ÎÐ�>?žâØ’€ôZï_úp"t®ÞIÏŽÒéÈóã¡c¡".žzê‰!+W®rLÌâ”úÜù˜÷1ð?: w8·ó\åP»£oL^yèÜýsWŸÓX’€Þ®ZUYÉQp÷ßðàã�s%‡6»ñzß|…mÁ†•¢¦Æ É»w›ÿôÓ‡³£ö/ÿrÅŠ÷½��×ÙÙÑ�€c¥ì2œá Ï>û/ÿÛ¶54`ÐP}Ÿ´#<«üQ‰¨�¾|ÎeAÊ•WΜ‰]rV¼÷Ǫì}k~ÁÞ°k?ÜûÖV¾Ó ‘A]ñV^A™™öD?Ÿ--/½ôÝï2Qøâ‹ÿú¯,˜ÏÍ¥ÞdfNžÌ�Êii¦†/rrëžL�ÉAzkÏг�ã>õÔ‡?L}îê‚n__g'•“&žøsrlG­¥’4(‹•ÏÔ•»•KòSþŠ%�a˜<·8Õ, ÷ÿ^§"ô }ÒÂÙ믿î:úiÇŽ56>ò l_}•:cs–Ž¢ê±tQ°Ã8ù“Ò57›!ýãÿ_ÿ‹vóCzç;ùÞ¯]»z5G«§rïz×Úµ\�róÍf`ß½»¶ÖpšÁÛJEûYP@“ µ˜ÿ›7oölvœ�ä{lãFxýó?ÿû¿oÙºë\éT^•C°â]¸…V¼ê³æ)ø> ãnXº”ïÙu×]{íu×¹ >ákzOÞy x x x \X��jæÌU«8!²½ý•W8Á%/¯¿Ÿvíš9Ýn3ÞìêÚ¼ùé§1_qí{aá¢E\ 2ÞÚµ³--;v°ñ§­mÃÛyÎåLHÁ çj_ ±¶×úÛýýS§2ÏŠ™÷”\Á›.ýïB÷�ÿ8 “¬ O>YSÃ@«³“ék:fmmL乡*,g�뀩k˜Xa\|"¾ŽxÑu¸Ê_ù Kq 7Øå.zÉñ]ñô¢«ô‹ÏDlâ,ÄÑsO.¥*‰Ã·8›Èe‡yQQ^�O~òŠ+èPkÀà'f$)ºº:;pqpÊÑ£P²�9¢)ýVƒ%8®ß �k¹è¤ò]:«¡‚E_é\¸BÌ�‡;˜'W¿þúùKÌOôÄgV¸òS¼`•bx¸MÀNš”™É]Ô99¹¹ÝæÝø�€ Ñ2èéˆe½g•BõI°|á)^;DC‡>àœ/¼¸�Pô§Wzáé„áM ·œÚ!ŽNÇ`²oß¡C|?˜xea]QQA'¥Ð>%êº ùŽC«§~â–{®ŒÙ¾}Ï ™›6Ñá,+›>�zÀŽvœËÐ/9‹ÿŽÐ‰öȾʫrªc*y†nô !:J{d=ÆÉ$ ÷¾1tAp4t$pö–~Å5ºzïҽݕ¾?tŽƒ’йt.ftž´Ó|kè‚@wœËp®ï‹rß‚Gòµ0F;ƒŠCwöÊ3?ã5þ|-¨myiñĵµÜuÞÚÚßÏNëÂÂŒ Nß~ûÔ©I{ûí¥¥øW_]T´lYTTdeq”ù¡C==�{ð`{;;Xwïnlä$‡n¨¬¼òÊÑæöõÓS=ùÞ÷lÇù³Ï=ÊÕ$„G©ê{€Ox²ø(¾ž•Žé› IKƒòå—OŸ¾d‰¯_’ÓXñur‡¾‡EE==Û¶aX>q‚£—E5mà'=ŠÃK:¥2_xøæ,\Gº³à‚ f®fƒ‚Ö'Mêîf‚Ã6õQw-‹ŠèÅõÓå/Ló¥ŸÌà0�“žÞ×ÇB™¬,3€ÉpÎyøQïM†r•Cåuåïè+Dr0ÉÄù~FF~þ¬Y,Œìïgg�°i‡�òñ¾—@2 H�Ô———–²òرC‡vì }jn¦sÚhTâp2ÚÉÃÈÑ}X€ -îFgþÃ7;á.¬ªâˆÕTŽ+¹sÖ¬òrÌ,]:oíé’%ÕÕøsçΚE9JJŠŠïY®©¨w¥sÕÊW¿úýïsT; Þh‡T_U^W�–`QN…§páé{·bÅìÙô³ßò–;î`b_ãD�[¾òððð¸�$ ñ¥Úg®Æ¢½(-=thÿ~k—m¼ÄLŽIFm >ó§œÔÒÝÍ„†w3¤3:ÕÆÞñ ÏÞÞ–!GŽ|íkŸÿ< ZZ¸2L£EÊ rG¥ÀÂWú ‡¯\yÓMA°lÙÊ•ŒÃ5¬þÏx�ÁÉxš:ž˜N/èŽ;–,¡Cø£¡ÎtP�¥"ȹžÔÀºfêÀ¡„ˆžÒ©#&ØáE ÇH+Êø„[†§ü¾Å*á–^˜F9åÅRxzÖxâÃâ„aá._Ë?DÿCYÄ¡òÆÏÍå–# å“'sGÙÝw/ZÄJœ³5‘ÍÛ?_Ø@s�¾&Ê"u¸>é»àÄô©¡x:ƒ…Oc kOñð×—ÞJÍÄôÊ%Uù‡§³z®tÎ?Ýp—Ò?�_ ¤Ò›TáhíBªø‘$¡t¢#|ÁŠWxÜ×IJ ÿù¡s;Vu×ô¬Ðq„!Ž»ÒkjvîäHßgŸeÅè´iì¦cªÈv$ÐáÅ@Í‚°¶¶ŽàaïÆohà�A&v33™€š:Žf¼í6vºË çGOùñòÄáTåOOïá±!ZÚ…çBµ¡n8�s›ªÄÃeXéìDC¹Ùp5¡c%0Ž PBœµÉúuq>d(×Îwñ$tL€â8â 7ü{ ~åK]Þĸt’—èÊ0¯tªo¢ç×ÃSO=uä;ÕìêÂ.ÃùG>RUõ¶·±nÚ4ô\ .$…… ;;««™ð¯¯¯ªbÇÛ¾}?ûY¼ú*·6Áï¿gíÀ­·Î�ËÎ�ó¥WÒïZZŽኆýûŸžza%±Zbõ„á[¬ñ­gùÔ+Ò©¿¬p`•óÁkkŸy†êª(ÿìÙEE,ˆônlJ€÷nœ%Î¥)N/ì …í;«#Ì¥QÂ3 ¦3è‡ýD×°Lo,ÿÄôNZÆ’¤EõMü+µJ£ôšã�A\\(^8~ ƒ|Ä—ò3ØrT~,»V¼ÑpÿâE´I/þ%£éÿ½^Ÿ´à¢"tAðæ7s¨;w¢ßw }÷ìilÄ0=¼žH;]¾ ‘¾ ÃÕ{Ã�Ã,W]cï^LøApà€ÝE~ÅË–±“,??7WWb¥“ÿwuõô°ué…^}•‰÷ŠŠ²2*Ï�;s&†öÞ^ÎVq4Ôߣ~ªÄòÕ < ìRÚS´Ìñ8èÍŸ?u*ó¿ozÓ­·®X?8w´l<�‡½¼¼¼., ¨�ÑF—%KÞð†oäJ‘mÛwNžl °Õ©­R»ªð¾¾®.Ú›#G¾ò•Ï}Žy—¿ÿûÿñ?˜OdK騕iw7G!bÿÒ—>óæ;²þ¯qíJl°µÏ*Qooa!íêÂ…&7�Ã%Wá�wÂÐo¸aÞ<&Äüã-[Päüü‚&ÆYIÁ£{íN!¢5 ØT1¤n 5iR´ã)ŠOC9B¤j¢íØZ¼øQzù¢ èÀ#Ïx¼Ò[Œ¥Jij´ŽŽºœ–?±Æ§þ­|ÐUGWå%en.]j&bYsJÇtÖ, K—Ξ]^Žagåöÿ^£-ô=D;¥Ÿä­kQXù;­WzŘ?Rz‡mélO„’‡£c°ðt”XœÅÇÃ+>NW°âÃìÃü­^ V¼ð.Xñê(\°âå+=û–â< Çûã_zÏ®½±2)ütK˜*ÝHá#å¯ôí¡3Ã7+!µcUbuè…Žþ.dl �;zº««·ýÎÍ-,¤?QRRQÁDÐe—±µ×�°’:wt¶ò‘a¿-t´Ý‰ß+ÉOü öþÄ�€ ÊÚq¾7t=mG�ÇK)=�ëÃHá¢ÃÄ$Gl55q& ?pìÔÅA|‡z\oµòZ <äË�-}V¸°ˆ_ñ)_|ÉwxâÚbh71¹XÿXù©Þ¼:W¿YÀ‚€Tù)_ï�o HoØyÎŽ5Þ7%Z»¶¬låJìsæÌŸïVº£E¯€§ðú.¯]ÛÞNºÿüÏ#G}4ydÿþgŸ ‚5kæÌ!ü|�_TÎÜ»ƒ>%µzÁ³sQ}wuÈÅGŸˆ·Úåä¦xå§>ôï~·wï† AðÁ^z) ¢ù(�÷ÏŸô>4¡÷7|\¡<ï0ʯӄx¨é9؃é„ÁöŸ¨à%ÒŽRT i§ùÌ2(İe`·Ðx*ÁѼDItˆ“âÌ(8\.\â$+¡•ŸpåÏ·D)IGx-ï{ œŽÔÿª]Üu×M7q’Ã~ðÀœ”U_ßÞ΄»ÓÏ8u顿éžtÔé¿…—•M�ÊüÝš5+WΙuu Ì‹~ô£_úÒúõEÛÝM?’“$˜Ç«¨˜6�Åì@çˆv3¾’ã|OPr—9ýÌÇëëéw²³œ¼³³íÌŠï}ïsŸ[»6n»íšk8:þÞ{û[®ºâ({æãó9¢?¼~+Få•„[|yy^ò¼ë®›ož7/øÿ:ëä.Qñ¾—€—€—€—€—ÐøOWȽöÚUW­^Mûñè£<À&Öôt®Òü¸õ!­�H›ËAç´ŸÝÝ­­Ü^[ûÿðñ�Ayù_üÅ_ÿ5;Ó,àjZ+µÑçCòjWÛÛkj8çèÑþç¯~ÃyK 'ÔhÞÅzé¶¾1ÿ´§ô jk¯½öæ›�#9'ÇóQ¶³™ç„5 Khª·Ý¶`а‰ë={Z[™0WwË=™"(¥ŽV Ñuþà +,Ie5V \zU‹Ä S>ËÏr�ªËŸø¸¶ðEG鈖֪hÃ¥•IÔ _t”ÚÑ·A¤ø žuNŽEQVfGOÉp~ë­K–L›ævþ�/ ˆ†÷½FOÒc«OŽ®´Nñ‚…lñ‰�jƒÒâk JÍK„…E8\iR2‘AÊI°R«<ª?‚-H) …EŸpå�…ÀK„¥ W¼÷/ „Ÿñ?èóÉt"•¾Å¥tªô”n$üx¼ø�áR†?MTéÈMÑ—�½,t®ƒ¨Ž£èË #_ý í$Q¸ Š2Ì˨üä‹OÑWøHþëM7]?ºÐ{’>°/œ Jò¤7ÒÏxîÒ ÑQ¼ô̾ðÑï<)¬ô¢/_uÑ‘/}ÖŽ?—¯ÑeÇýÝø7@ùDÛ$ã Ö;MÆ—ú­ñ|T.ÑU¹ÅŸê“ä*Xò¾÷'–ô=fg6{Ó® X±bÖ¬‹.rõJz/½ÂUÿ–/·t?ýéÑ£Ðîè`¡µÓÇ8…s+ÿ—_>vl×.Ë3ZçTnê‡Â‡×=K ?^Bât8²°¦Æµƒ’[<­‡Ï­xO¼/½�žž�N¾!Ôª 0aËÒ'K Ïö¤y—ÂR _ᢗî9<åMm/lþ!1ÖÕ7Í¢8ý–|�.c)kO¢Ëb,wãEù+�…Æù6 ð¯xãÈ¥6¬<ŒÃîîÞ^ ‡é阉‹b*oï{ œš¤?ZØuIè‚àÎ;¹*~ò“'žÀ°ÜÞÞÛËI�ÃSø„ªf 6ÌÄÙ´Þðî¾ûío¿ôRæḛ̈}ÿýë×s"Wg§Εpú}Ú‘._ñ§êkGú¯ý䓜ö�¼ùÍ´ÛúÐ;ÞŸÿüw¾Ã (ª—Ž®Êe¥t冾‰ðäÉ™™Èí�þèšk¸‹ý¢Ð¹“i$w¥ò¾—€—€—€—€—Pû vù²Ë®½öúëƒ`Ó¦#G.\¸m ®33éw«e¥5²yk¯è•›!}p�ñåÑ£ßüæ¾@;tÕUoxõ÷¼çýï§?‰ :çÆõ÷ÛI�õõ?úÑ=÷`0߸ññÇñ;;éwôõÙ•*p£ž2>?õ˜‰ã 'N¦©­]¾œË—_?ä&~;;´žvb;U€·¿ý’K8‚(;;=�_VVQÁÑ•¨¹ ʬ¦¥ WGÔÅ ß*ˆÉOFé¡lŠ–H_áò]>Ú¬z‚Þ –6ñqXáøª/Q:ÑpÊž V¸ÒÅaå¥âóT|å«t‚£¾ò�æC¼òW|ŽÊC|Otä' §¬Þ� DõHï´œèÇéÅÃË~¼}Q¼|á –^kǬ ˆ2h*^vu˜u»|… O|t….¸1ˆ;ƒDW>ñç+�§W¾ñp¥óþØ�€ÞÃ"F:2RwƒkÁFÜð«÷Ê×:ú�U©´àcêT;!;“ k�Üt#”\¸Ò‹¾ô^zÚÛkªînóu§º ï´RÉèY©óÉȰòççS“|a²wø¢›Š?ÉQ|«sá'BÈ ¤ôÞŸ˜Ðûg2‚z!'ƒ¸‚(<•/¼Ü\«7Â3c˜ÓK…Ÿk_õ²±±§‡|8Õi{Ö^€0*ü³ö™šâ†? �OÖ®Ÿ8ÑÝM;&>†Óñ!çCú†ÍÉP{ÒÙ90ÀÆ€´´¬,¾ÿ:’œvþÓVK´ÌÂzÿpnñhº•þëQXáø¢§øTtÐ(Šá-þm'j”žq Ìt8Õn…;~-ÄâŇ|å¥oôô§gtãò=ñ/z“&ed ç¶¶žÚ1½½åâ}/�×#鑯× 9NBY³æâ‹©™™“&YÛgõíE£õ‹Ã©Â/®®¦ßtýõ,=sœ>úèÆ�ìxùä­8¬ð‘|}„÷ûßÛÝçÊY|,^) fé W‰C˜‹å |å¯Ñp Kü¾Q²ü� xî Èå”èHOjüÒÒiÓXÁ9yr^^vv¼ë]ÕÕtP¯¿~Á çqƒB"%y œ= ¨^áGÝHp7Ù󙦷ú禂+/M)\°â §¶*\xÄÇã°ÒË�—ƒph‰>ñ‚]ËWáÃ鋪›zRˆ|Ñòþø“€¾û¼÷SyŸÂ;Ýt’ŒÒ É�ã N•ªpº³Ô/À•o*|ÅŸ®?½8ÿ¢¯t‚ãxŠW¸ð¼?¶$ ù¼Ð¹#É_]L (œ+ƒÞ³&:YA>7jaHÑ�Ž»’@ð¸~ˆžÂk‚”ï>Ná³ÐáÿúF_G~jA¥ ðu¡sW*°o£¥âU$Ç@ ÇQh8&Dq\É„s|ç̇LD ”–ÚQq‡ ?Û·76îÝË•âbNÀ:U§tÂÏÌdwÐvu±¿¼<3“…ÖçÚ©¾ÙroËÝÕ1`Y]%……»˜h:jT²xÕt¥l9ˆ£äÿÏ·ôÔ‚‘'ÒÓ9z™«éÐû¾>»¢C:`#¸Ö{5=Ð{ÕwÖ•k¸(¥áD)Géj”bz#º|ÏIáhØçØéIt�r"¦¸¶ÿÛJ• ߥvT£xâ‹X…“Fr—�Q"ÖKÀKÀKÀKÀK QZ09't\‘wûíwÞɼÍüÇ¿ý†ã¶6v¦cR§=¢Wlm™õ�]˜…vuõ÷s|ZZ?óýý=´nvɇþÕ¯ Âe‘l\½ôÒåËéç_rÉå—³�Ž­ìü..ž2…ü¬ýïëkläîòÞÞ'ØéÞÑñòË/¾ˆ¡þ¥—^xúõõâöô˜!Ÿ|ÝNsµÐÆ7\Z›nôÕãÐBó¶¶²2®`ÉË»ãŽ7½)*Cç–ÂÙDvŒ]ÂE‹¦OçŒþµkçÍc…ý˜Â8°w/wtuut Pr ØP ¨Z™R™BnUÃ`å£.�º–FÙ°Á¢+K˜â����hþVåìŸôL(Bß…X5¿q|•)Ê�òߢ–��›ËÑpååÓ§SQ§LÉÊ‚Ï�}lÅ ÂÙ¿�A]ÃJŸ˜‡‡¼Ξ00½aõ@õÈòCy «Gب~Y¼ô<Šg1ö,œ‘ÒƒgõO)†ÃЉãN~„Gó‰âEË•Xß�*é£á‚•§3”˜\+^¾ñ ÈùFþìëÕßo!¼ Þ‹wã[š`‘ÞŒ¤o*­ð�ä§Â�‡ Žó3}Å+½üTtR…�”NùŒ”>N'žNp/,|M Å(ÞûçWÒ >†Îñ4’!�˜¸—a}zèœáýÕÐ� ꜄a¹¨Èv~K/tò‚ôÉq`O®•„cû¾ó…ÿ.�Å«ÿ'C¹˜ÊO'2håöŠÐÁ–йܕN†t-x•^Ç çºó\xŽ’šÈ�®\YR²lYÜwßáÃ�=Ææ55¬ä¿òÊ™3Y _X˜�ÍÑT®¥¥»›+¼”<ô½¥¥·—‰÷O|â©§¾þuŽÐ­®æˆ=|&âss33Y@|¶�ÊYZš•Å8«¶¶³³®Îr�öS÷*U“…-_œ»x‹±ú¬'ß ¾Þ�- è{¨…R“&-X�UULÄegÛRn/&ÜÞ+ßm `=L�'Cw|¾Ã4ÌFY†iÿN_€£íB¶vDšjz§YQ1š®�ŸâUxŒ7¤¹–FôùTyIgù%òåÉBñ�Šø�η¸𲲨÷ƒƒÙÙ••øiiÕÕnÁšÞ‹Êá}/�Ñ�€ú7êïÝyç-·\q†ô––çž ‚W^©«cÇv|¼&8΃ôüÕWwïf‚ý­oýØÇ ûŽ&ÔO:Õ={6Èê’áEi«>É /8Ç Ñ…Ö—¿ü½ïQŽo~óßÿ}Ó&&ú;:´pTx‰ù[�Uý}ò#† $1 Üyç­·²ã\w×JŽÂ÷¾—€—€—€—€—ÀéH@íŒúßËBÏ>{ÇoyK<øÈ#¿ÿ}ÌœY_Ï‚n;ÜÜÚK›)w­šZTÚ-ö{wvšA�0úïiiG�²S½»ûøqèµ´<øà}÷AWt\Kh-£ýË€ß×gv®`aG{_O®ÿ«öZU>.ª–Ë0ž=Z]}É%ärà kÖÁUWq7Šë‹t'²Kÿ»Ðýã?NäBF˦»téôézè°±ó¼±qÒ$v¢wvÚÀ³·—C,I)5�RI|6 )´‹‹†H­£C6‡i¡‡ tGÎß踊¥Ës"–‹:ÊÊ“#6ÙéSRRVÆÊVv:1q³zuy9ÿ/ÿ’)+§L!^§’gå§ÂS¸ü8¾ÂGò•N| VÉwö”�Í„kFFvöÅÛ]¤|?¼�aN ú®Ç'bžªTh ú ö¡)tînZ•>N_áòEOp<ÿ8,¼‘üx:ÁñüDGñ‚å§ W|*_锟à‘ð/|ùêÐË0©• £=±+C¦øðþéI@ïKõ£(t®¾ �Û1£ú(=Ñ„àU¡ ‚¡ ‚ªÐ¹“€Bç®Ð A:ÂRW ˆù|ÝÝ—ÝZÖ€áÊ*|%/Ã<ûÞ1L†.®]èNO–°@åØ:—�ä"½•¾…·vœËp.<ñá8óO'“€:œ g,Ç©TTde1Ù¾½¡�»T�éêbâüÉ'b¥ý”)99Œï ²²è—tuõõ1!±iS]ݶmAðµ¯mÞüƒ0îëéÁ`Ž‹ê=ÓŒ{^}µ¡a÷î øío÷íÛ°!êêÚÛÙñžŸŸ™Éx‘|av”)Ò¨�ÞOO?†ƒ^¨¯ß¾=~ñ‹={¸“}×®–vèõõi©¢èª>Æ}ÅËwñ 1ß…GëµÕÄ ¸ì²ââ… ™™9“þœ¾C‰46þ´¶vwka—jH\÷“ñ£;ÉSÕƒdi^oXœ/`òÅç¤$30¸}*ü‹—Ù³‹‹ÙõÞ÷ÞqÇâÅÜM‹óWJJ>Þ÷ðð𠨟§…ÿ:Aðĉâb´4…Ÿô@IDATíÛ×ÙÉx®¸øðá#G?qK¸åmížú¡ÖÞ©¤O»'X'²``‡^O·©;¿·wp¸»[òÁA åÝÝXFÌ0O?�ôÑöU¼¨Ÿk­0ùªÕUˆñ!szù£Ðä窃¥ÏÌÌÊ¢BL™RRÂÃ@&šÊ˳³©xög—^JxeeY;öõ¡^nWÿä%p®$ ‰úC‡öîýþ÷YØQXHCÒ×ÇT¾q¡¯šê£`ñL<¸üã'Xi϶/^ij`—¯ÕcW³†`ÕWÁ.ýÉŸ”_ªüž‘‘—ÇN/&ðX€SY9wî>àŽÖ=y.>v¬H@;W9ƒÂÌй»¼ã|JŸâú%X†š½¡c',Îù¢§§¢§pÑQxN.<Ñžà‘|áÇé(�âËWøHéÇ,zÂ,?Ž—:÷ž^ �ëØŽv‡V;ŠÅ�÷ÏLzŸÚ±½3tAðbèÜÂÝ.Ãy8o?d Ôû-„‘áY†ô­¡cÁ(Ž~-Îñ×·á°áb&´Aôqî{17tîû/Ã}ÜàÍ€Ž�ÝñÐaøÄ±€G›kô½áܽ£ÑxÒ†Ѡu>hHÏÕn¼öÚ�, üÑ�öî}à&.º»“MŸ†÷— -IOqñpƒ³²ÒÒè÷TWq5Øœ9æeeÑ/š<933/Ïö÷2�¡£á»»ig:;¹sn÷î¦&vww 0þΧø¿q~¯pÁ©ðž•ßþ©Ýì0øÄ'/~ï{iGªªØé/¡¨zÿüJ@ój7Ž…=««{öÙ (+ëéaGgw÷¡C[·N‹p2ž�>D±†/ qx¦1»P¥ÖÂ`Õ1ðc R¸vˆ;*†¯ôèg4½ÂOƧh™¯Ô‰¾òî¤IÌ�`€+/_º”:ýý¡™–6e ;[u¢Š„ÂWòùQô¾—À™K€¯9:¯‹O=µaÃ3ÏÁøÐC6_ÙÕ•“cý§ÄÜ\M±pÁ‰X© °ùQkø ~<\°â-�òÃ9•KõP°0DOù ..ÎÎæÈù÷¿ÿÖ[Y˜I‘.Zh z¢ã}/////�Ñ”€Ú+Í_hcÀÖ­6<õã y„£Î{z¸lp0'‡q£Ò9Ã9={úëâÎÚKõoÁ·{Rz£DŒúÇFÁzÏ6þŒRttjí±¶í¦¥±¤›ù˜ÂB®†:tèškn¾9.ºèš!çŽjׯ� µ�½àv K]äëÅÏ›WVÆ„GeeA¯½ÆÞ&üÍÀÜÛËÔ$R�溄ÐBý¤ÚFÛRŠ-E&Îð†c'†8·Î¢èõø4ÖèXùR9óó ™È))±£×ËʦMc¥ åó£]±‚o~óE••±Â¤¨yhâDrŠçëa/�ó!MXpgz]XX\ÌÎ œ5@:A"^ß\-³§8,|£Å¿ÃpaçÿÉ}ŒÁòÅaVø™ù™™,¬IOçöEô��L,±oÆ gØ9³\|ês%}ßÕÔÕ©¡£˜É�ó¥ôŠ—Áìõî@½x>‚ãñ‚•¿ð^¯ºô„¯üÄG<\°|á§‚ãt$WΕþ§¡ ‚KCç&�?Z¾ ³£EïB§£÷®÷ªúV:gðÖÑçZˆ¢öOòõ×d¸æ wFʰ®;ÖUÏ•.NÇÁöD/2™�@¨+Cç êZ@#~âùˆ¥×ÎrÖ/�3ÌK>q:âÓû§&½—SÃ{XzÿÒŸÂÂÜ\Æ)K–ØÑÊ99LL´µÙQxŒá·a cÁpEEv6;×ßð†ââK/e‡uaá’%,äèëcb£µµ¿ŸΑ#_b|7ÒâI;Õ�·;Ó1„s—ì¶m¶3þÅ�{í5®,0ÇŽÆFv”8ÐÚÊ΄cÇ:;1|ˆ9˜KÌ'Uþðc˜ò]5.ºŽ²Bð-ý•W²ƒï¶ÛæÏ_½Ú�hAl<�¥öÿçCzªZàÞÕ•–†~Ÿ8ÑÛKÿ¼¸¸°½çd(}¿©¼KÆIÒj½¾ózÏøÊ‡2Z¸‹½(uDx ÏÑáɨ%ú’¢¦ �ŽÚ�h*K7<•¿ð-çdù)[0’žn'hefN™2kãš’ÛqÞ×Ç„!á|/´�M†sµoâÞû^gSè5z®ú^ZZRÂ<Þà`{;íÊÎ�‡³‹£[™ÇM§z§ùÁòãá‚O…÷2ì8¬Ú®ðììŒ Êù–·¬\É÷íÆo¸áÚk݉ú.žJÞÇKÀKÀKÀKÀKàõJ@í²æ)4OSZ:s&ýÉ; ØhpøpV–�Œvø0 ½³²8ëšñ_´7 j=­uåü13‰«§®õåI±êÅ»£Øí3ø$'·ÓÜrÂ`ýÞÞŒ Æ {÷^}5óÞÞk®á ³«®ºnȹùÍ#¨ÜâæBó/øèñŽ¢ºšp¼ï¾-[8"éw¿«©áˆ žž¾>Vf44?΄K{{[+ ûúlÅFœžS0ž\¬ W×Pq©ñ C?A—ºlÅ4C;:’……LœæçOžÌQƒ“&QA.d`¼ímK–P¡g̘:•ZüÓþñ|Ë-K–Ð.¿ë]wÝÅD¿®R{¥tÞ÷ðððð8Pû,;…Úé—BG»\S³cí×Î�\-–ŸßÖÆÉ€ôvm¡+KÅàÜæß±b˜!]¥1Hí#¡jY-ŒÂäww³ð ƒ=ýÞ®®‚àÕÕ-ZĂѴ´ ˜Ï×FM¯�¾}EšÎyº“EÒ'Mìi"òÞ{_xáС xþùÚZ mm}}(»Ìs­Ä™��¶ûÁ î¢ÃM¨¼*æp^ŠÉô+GB—»€1pãk—““›‹¡<;;'ƒ–¦cCÑ¢©SIÿæ7/^L©¨˜2…�ºZ!£ PùI ï½ƸdXRµgÈqgeÍ�Û¼æØáƒÞÓ Y32Æ 5†ØScÌ÷O 9ß“ùCnÅ Ž.­®ž7ÏÎÇÐ+;#VTŸÔÞÉж-t¬ Ä9…ð”N™«�A?ª«ƒ€õ‹¬`”AþÁй£Ç•Îû‰ íh‚v(/ �Û%¹+]"µ3‡¼ýÌex.)¨~Æ èª‡ÒùqÞè�Z ß0Ôo”ýÖÐ9CCœÎ©ÂúޤâçTéx¼ä�á8yìø •Þhœ%?^"éUÜW=‘¾¡Á ꯽fw�oÞÜÚÊÂÌ]»:;´ñž&2Ô§T_)žg¾Â“¥c¬ÇømΜœœòò X¾¼ `Ñ¢ X° /� ë×76r×ûÆ�­­Ü™Îøºª¥ ‡É<ê5y,_žŸ¿`AÜuWeå�7r"ÙÌpÇ„HNâÕûc[Ò{é³�ha’Ž|ׂÍC¨þŒíÒ�wÒkÍ»h�v–kÂPõ@ý*µ{£Ç‰§ä%pæP}ÖÂç{îY·nÆ ؼ¹¶–e8ÚÕsé¿Å žâ…¯pÁŠÉ�§M§vPí£`pÒÓÍp~ųg³‘éýïÛÛX°_º³·`8ÊŸöðððð8] ¨½S[ýqͧb¯à*2Í·fd?^_�a}÷nN0ËÌlkÃÞ˜•Õ×ÇŽõI“hñ±k,ËF__ffv6ãAz´ØÓÓ1”wwOžL? ¡aÁN\ëé)+c\©+ø´ñfFè‚@ý_õ�O·½?]ùŒW|o@?Í7§ª*‚ü^8x�ŽÝ£�ÖÔ°“¡®®½ƒ]ww?Á¾>ë2ÑÌ8bXWb2¨[8+.ÁÏÌ4¿¼úYc`Çëg�®éu¼~Öév¼Ú”„3–,AÚØ¸f ®ÿàœ8ÑÔ„O¶ øŠl~š/¯D€"@² Ýßéq¦=¿úümðûS�hü+èññ§ê¡¨úªã5#ý¬¯:^_mÁµŸí��ý¬ùðJˆ D€�T!@zª�Ì =@ëy°s+”f_=àúåÛàyËÞ†Ùó%‡ô  Òéá¾p¸êñ™¾êö¢¤hG…>ùH/ÓéºÝéßi>z¼¦¯z‚C;ÆõÊ}Õš^�5½“Aëeíð×åÐoDó)zà˜@àN�¯D€�ùŽ€îgtÔþ6xž>A¬ïmð?y¢ég[oÝ/Í–�þ½î+ßÏkx°À Ÿ @àB/�¯D€"0¿Ðý±7j¹~ÖéúU[Ýë«?êq ž·ÑéQ|:ÐããÃT"@ˆ D€¼óhGÍ;Ä<@´ôÊå‡oƒ¿£V§'Z=ÓßȪzx”f¢8fš^;N3�ïBÉO·×U×WÓég{ÂB?»®ú÷öUó×,úªã5½æ¯'RôÕN×ϼ"@ˆÀüD@ë½�JÛzáU¶×J÷WÚÎÔuý¬Ó³½, D€"°ð }á½SÖˆ"@ˆ )E€ô”ÂIfD £Ð�žQ¸™ D€"@ˆ D€"°ÈYu`ˆ D€"@ˆ D€"@ˆ D€"@ˆ D€Ì:Ðg !"@ˆ D€"@ˆ D€"@ˆ D€"@ˆÀB@€ô…ðY"@ˆ D€"@ˆ D€"@ˆ D€"@ˆ˜5t ÏB2 D€"@ˆ D€"@ˆ D€"@ˆ D€�…€è á-²D€"@ˆ D€"@ˆ D€"@ˆ D€"0kè@Ÿ5„d@ˆ D€"@ˆ D€"@ˆ D€"@ˆ  :ÐÂ[dˆ D€"@ˆ D€"@ˆ D€"@ˆ D`ÖÐ�>kÉ€, ^¿ö¼W3W"� ^¿†Äye.h/Ü<(G ÷ݲfD€"D€öz>"@ˆ D€"@ˆH¹ébœN¾p¸ŒŽ>Ÿ ž722115åy‹åÌäš“³x±ç-[æyÅÅEE……ˆMg‰È{> ¹éêjn¾qÃó>ìí}ñÂó6mzÿý½{=oíÚ’’¼¼ì­…v½y3»2.Z´x&øíáõë©©�Ïûþû/¿èíÅ‹�7Ãü@ Qý¤[U^žÒGÉÖ2›äýË£G·n]¿îy��CC°Kª«›š²¿IÿLýîÍHÚ¨pÑLPýXf-»‰‰çÏ;;Uÿ÷ð¡ßÿíÛ·kWm-ú?”,S¨0Ÿ…‚À›™ùnm½qýbgçà ôÇÆ�;wB¬[W^ŽqL¶†Dõ¿®´ÿ|·u]2qMÔ^ÏD™ÞÅ<•÷TÙ;ï"Ö¬óÂCÀl?°—Ð $jÉéD月=¿‘ äh÷geæAˆ D@Ž€igÈ…ùh5.MÔ&I$ÒÎæ�}däéS8ì.]º|¹¹Ùó&&dàÃ1‡×¶m»v½ÿ>&´W­Â3û…Yp >~ ‡Ýèè‹xŸšzùRa‘�ô©©ÁÁ¶6Ïûò˳gïÜ™ý;+/¯©Á„ì¡CÛ¶­ZåySSÃÃ}}¾ã\çðøñ£GÀiÛ6å@דœ¯_¿xÇòÀÀàL€ùÅ‹ÒR8š·oÆóÍ�€ú£ž7n\»vó¦çõöŽŽbâÚ´^�{LMpWTÀ¡nQõtÅÃQ|»»[[{{}ê7o^¾ìï‡\�ŒLOÃ�^V–Ÿï§ó.;˜­~B;Z²æêêº:,hÚ¸ qŠŠrsã9"³MŽtÿm¹œýKvJ•_ªW¯^¾Ä‚¦3g~ÿû¯¿®*-7·¨¨ºÚó>ýô“Ovîô¼¼¼Ì8®_½šš‚íùì™êÿ/~ñöäË—�Èù×ÿùHón®Pöé“'Z`b~llrý!B6:ÐS¡ÿa7mܸm[CƒçÕÕ­[WY)_˜¨�ywþ'j¯¿;Èd¦¦©�÷dì�ÌÔŽ¹�ô"Ö~Яí8‡s¯àmˆG8fFF<ïöíË—OŸÆNÛ;wž<‰¥cÌ»�@NN|ÇL¶¡€�wh© SSæp†I éååÁÖ¬Y¿þ½÷àÆGMmfÆ}a—%ùgLDvt`a™3Øñå8/,\¶ |­WnÞ<þ›o<ïîݧOÇÆâ•'|x5ßp‹WCIê ÃdíÚººÕ«ý_À‘ 9\¾¼¸8²ø%å�‰ÀlõÚÑä$Nii¹uËó¾ýöóÏ¿úÊóÚÚúúFGÍœ‚÷Ù*Gó­ ¢š}Occ½½Ýݾã\—ðå˱1ìïíÓF�–Þkøð êð”ô–†ÜX÷>Ÿä(ú 2[ZnÞ¼xÑó¾úêüùû÷±°S-HYXowöµIÜ^Ÿ}žäà#� yOÆÞñKÀ;"0H¶ýÀQ ;ïÁƒ Μ‰uœ¯X±iÓž=™sœÛo€v¿�ÈÂ|†cóFŸ}öÅ_~‰ù£/¾øö[,üŸšJå<ÝÂD�µ"D€¤�dí ³dX …yIl¬;yòÀ ½ÃÃØ*aRñ>J?šµ;ÐÛÛ!¸×®µµag¢à€Ùºµ© GýbG9vÀj÷ íÁÁ§O1ÁzíÚÕ«æŽõçÏÛÚ®\�ë¢"“+UÍòóžÌÈÿ®]‡:äyùù˜p•ï¹¹yy~î99ùù8¢ýСŸÏ?~!ß«®®;wîÝ‹­å† Û·cGy}ýúõ+Wbg£¿â K††ž>ÅêâEµ GïVø‡ÚÃ1üÓŸ<È#Èc‘ ƬXQ[‹A~þsu ¦òi>#€Å&;v:ŠC³�¾â“Ÿ�žvŠ²ë¤­r>ú}b‡ô€¶ïÂKáÇâèzØRø}»úÿãÉäx�Î\ñkS.] Ë8 /q]m×.Y‚z wBÝ€ÚÐP¬Þ]º´¤zÖÊ�L@¹GG‡†0 5õ:xa! ì>ä‚«ô½Øå˜žVŸ¤ÅNhm_* �~WÕcÉ’äì,h'ÈÁÐL@ÿ¤G Z`¿¢_÷dë`×i®Ÿ•þW'÷àí‡Õ úŸê8|ø“OpúÑÅ‹_}…�…ýýÊ‘ÞÓóðaW—çmß^] 9Òv�?nRíbÑ¢¼<Œ·t»šžÎøDdïퟄ�Üë~ÚÆèõk5Þ Ž·@û¬°°¨HÙK–„ÕGó³íèDô8ä£(s‚~ñâpûÁÎ'Q{=ªßÓåMtü§ë¯¯Qü3ݯêò¤óšY{'¶&�›t�“£Þg²òâ·cÕCÚóÐËA+Cêv {ú2ÊžŸœTí|Üoÿh¿˜�ÁïЋ'Ó¥J?è·çªÞ©šÿÑåÈökoï½{—.a>°« z]‡Â•+ëëÑìܹn]tÿ�ÑÆc�È´)ú’x:\å�7¤ô1úô"ø]"ö8òÓÁ–gXe(Sn®²/¥ó†šŸ}�’—Ù·ÏÙõ³z\£íG=/ˆò_´ÖtŒÛ}þ©™¯E«Ê ÍDñ““/^èùO%[蹕]â’5Å75å –L=ÅóÉß`U2ãÏ8"@ˆ@¶#6.Å\F0`!Þûï>¼|9úûÓ§ñéÀŽõ©˜±±®™€y�;0o;䆧ù®ßSYþtö£±È§?&É©­ôlh¨³蘔3CMÍž=ØZYî87iÍûœœÂBL¬îÚµiÄÅ‹--p*½x�o ŽŒ¼|¹mŽ?ÚûÅ‹ÁA8È.\ÀÔ>t&÷Øû%KJK±2eßLÀ·9áF3 iý‹¾¾{÷pdáåËmm¨ëâÅË–¡áÖÕUVb@|÷n[›ù�`ý;}ÍÉ)(À·÷î=tGW­XQXobž0ð::nß¾zGÚwt`‚:^¿ÚÚ;öïÇŽÿuëìc¾ñ[8$�ç©S_~‰Âz²»²²j&/¥pt¼Î¯¨hýz8,�ol4wŽ�Žöõa‡ïÕ™pû¶z?hÄ PŒ f‚çmØÿ[ÔñøÌ¯4HÉì°Åহùôé“'!êÛ½›7ïßÿÑG�GHÖìóIW;J¼dÊ¡€NÁ ˜Ž�íLMŠàý²eUUø6ʾ}èH�#ÚKIɲe’�HNÎ’%Ð }}ÝÝ8²ôÊ•ë×±ó*^À{ÀÎ^œ<°nÝòåæIöïÒÕŽRÕÞ_¼€ž?yòÂÔË /NœøôSì(†À'*¿ ¶nÅÊÈȃøýÀ@ü£uÖ­Ûºuï^è‰ÚZìls j‡†zzÀ÷ܹ«Wñ^ly1ñÆ{¯¯ß=0�~øðÚ5ì¬Æž:ìœNm;2óÍÖ{…Ubú©¬líÚ­[±0e|§8È÷éSUCœ@ÓÚÚÙ gcãúõpdè •#M¯?½pïÞµk81âáÃÞ^ÛÖдúŠ÷[UU_�þ¼¡aÓ&ôWˆKEP'íœ;wû6NÌÑ!?åJàññÇ{÷bÁŽK^õïÊíÓn¨¨ð¼#G>øxà|L¬ÂÝ;éñã�LlmÚ´bª®5l¹~87Ð^Ÿ=ƒÜE…‚‚åË‘ï®]uuñH¢w�#öÂ…?üá‹/ ßÇ¢¢µk¡×NœPï3*Ä£åÜ¿ÿý÷8"òÞ=‰‰Öðo¾C?"¿»w¯_ÇÉJ÷ïwu¹ì:äQV¶zu]�çíßßÔ9ƒõhÊ&dÁG—Á±©ßCMͶmè÷ïßÇ .ÏŸÇ×»ë×oÛ½»k×æÍ°‹Í0>ƒ¾Ÿ˜PÜô2"{ܤßÿš5 á$ìâ�÷wàÀ‰?ù‰bS2ã!p­¨ÀEž·{÷öí6`‚E-èÒvô½{ÊŽnkSv4~»rß¾�g‚:‘%¬ À‚Ýpî\s³ù‰±-[üä,ô^¾zG瓨½žL}�›kü‡ú!d[¿ªJ•™ÿ‰È».Q²öŽþ}ºì{Í?Ýòb·cÌÀ.‡žÆŸŸX¿¾±ñðaØckÖ =]½zöì÷ß{Þ“'ÁobëúèëªU›6áä«Ý»ëë1n k‹ M¦þø]”~@šÂêŸÎù3ïl¼‡^3N Ä|Û¥Kª?Ðièía‡9ÒÔ´qc´®Ç�ß~«æ¥`CA£€ÆÉ}Qïyõõ=x€ù9=_5>Õ岯‹½zûòþýK—ð Êð‘8›Ê.(¨¨¨©Aù”=VT>©‘Œ|&¢ÏmùL´Ÿ-/ÏÉÁ†{^0ÝãöTÏ3i9úúë/¾À8rdÄ]½zæ æÏt()Y¿öèÑ£��a2R]N�¯¾ŽŒ<}Šù•K—¢?}ªiqÍÏWúw×®={ví‚�"›Ç2yðž"�­$b§cT{aƺ:,ôîèÀYتf™cy&l–¢¢pÿÞ|×ï©.ºúѹ–µ™¡Gv…‰ µÄ,ÕŠp­Z%™5gÞWVÖ×Ãü“·ןþôøqå83¤'&úû>Ä¢Ìq®óšœ‚ÃýÌe¸êC"4…ºb%¾éhƒ¹�‰ÛqŽ�p”Áø5&˜09{ñâéÓp¼x“Ú¤P÷Úо}[­¤‘8Î5(œÖÖ›710½r¥µŽò¨`—¯¯/Üq®�}LæJðééáa8N�ºx;±°Á¬ `§gQQìÎ)LîÞºuþ<¾qßÝ=2¢V ëœx• �®ox¥»IêfÒèK�%3ôö67Cî°3Ý\énÒ˜÷Ø¡ˆvYY¹r&xþc¸ À?òݤ·ï_¾jo�uœcE0ø†9ó!ç7ož;‡öøìYø7·2ÕŽfÛÞõO� дyê4\í´ŽŽæf8(´ã|L0=S¯j��ÍÍp˜Ü½ûäI<×ÄðpW×?xÞwß…;Îñ~ ;ØÇ¢FAOÞ»wõ*økǹΗ×Ä(/¯©Ù´ '=72‚=…Á8hj„Z˜mÆo¡ÄÁ^Á{zôèáC}²ê4°eeзúhh]ïG�ÚÛõ‚ vÕîK—>û ^.ǹæ¡jœ?á¢Qûˆ!Gë××Ô`Á¦ccÝÝ8ŠßÐR9�¼Âq�‰Ç®.å8ש••ë×c‚=/O;ìÔðææï¿ÿöÛpÇ9t&öëÁAiëÏÁÁž, úæ›óç¡G£–»Øò×ÖvçÎÝ»¾ãÜÔ»a}Ö£Gwî@/Þ¾ÝÕ…�äQ~X°ôŧOã¤(Ûq®ó1õ.xÁq‡éÕ«ß}‡÷‰éö0ý®çׯŸ<‰… ǹ.+Þ¾„†~÷Â…{÷L§¦Ñ×çÏ=ÂÂÏÓ§ÝŽsýð¿}ûÒ%Lжµß»¦YèWŒ†Ìñê }�}_Áq@pܤߘã\c†…‡è'ð ý¾®ñ�>áIóÐ×gϰÙó¾þúôi\õ¸ ¶ìŽÍ›À´ÙÞ0Á~íÚõë--± )^¿ž˜€Þºr%è8_ºtõê†σ�]c©½Žú"W}mþx†\ºÆÙÖ¯†Õ#›ãµwÒmß§[^ô»›ÿÀB8ÛqeÏ?zôðãþîï>ÿ ¼LÇ9Ú^Ôïž>miÁB•û÷{{Ãú Ô?úA×[_Ã꟎ù�_¶_Ï”ÚöÅÙ³Á(1>ÄëcÇÆ>½pÉU/Ó&AzÌæúÒMÛÇ5>µùÝ»wù²Äq®÷âųg˜ ?uêäI,ƒ$êTÿŠØtês�“-Ÿ‰ö³š�Ù".]ãötÎ3A`C$p~£)?ú·é,'ò˜œ€ÁŠ6?]ªóÇI<—`Õ,ßÔÔè(ô/&cáÊÄD¸üi>¼"@:¯_«l¤õœïú=�åOe?*}é¦ËMwRþz þl&`ç�8ª { $G%èßD]ñóf‚i8Ø´0”CöÂò:`Oít9x+ W¯.)Ñ;@1ùØßßÞÜ… þN2L„Þ¹sÿ>݇mÛ¶Qó×Wê˜(=xðÈLÄ”•-Y#G¡c`×Úzý:VÆÞ½ÛÓƒ‰|¶==p?{†�7®XaN¸ŒŽöô`âFA¡óY¹²¦;êvîܺÓz@‚'1ÑyýúwßaBïɵ“âÉ“æfVUUÇ�cáA¸�¨ùë+V|£ 7bçžþ&šÍ÷ÐßßÖ† f€ÑÚÔôÁGŽ`Â|Ù2s0„2p¸Ÿ9söìÍ›je(&|ÚÚ:;áèÇ7Q%x›ùͧ{u˜¬ÄzrÜÄ[öË䩿ºE•î8@««Õ‰Øñ¤†`…øÍ›j!Æ­[p¤áìTXµJé¡òr|<zDöiƒ¨r˜ñÐ+MMG�B¯¬ZÔ+½½­­X ƒéx|{ú M(7ÜmX`¤Ã\·#i{×åÕWè1}ŸÈµºº±'Olݺ~=0hÇNF至gÏ�Óú|=ºw̺º÷Þ3?Ý¡?róæ�ö7—¡w°ó;^°óß\È¥wªk‡{"e'm,p  }UV––¡‚£�!##è—à\…Ί°É°(9zõjdmmÁJØÉtð ÚÙn:<Á¬×¯Ÿ:……Y�«~°««¹'¤lÙ²f�)?±5ñcÌrbê; };”Úq~üøþýp ëþØçònÜMO�Œ`"¹»{lÌÔfÞ;ô7ÞýºuÊžèì„kŽé®.´ëÁÁ�;±b¸¬LïY â†é%L,=y\ WXXY‰…G�îÛ‡‰p !t ì!Ø£×®}ÿ=&껺††$ ô*+Qbä —¨*ä÷É“�èï’’•+qt¢°³õ7'÷¡ª«×­ƒ~ÓßêR'3®ø vº:´k`h‡;$ÅÎë._þî;œ8£ìÇ©©¾>è»gÏ&&Pœð|]¡¦fÇèÝÆÆÚZØ«Zôõµ·+» ö"&{0qŠ1[¶¬]‹€~¹ÔŽ}, »sGÑêÿ°{öï‡ý‡sÌ�††Ô[¿ß¿çò¯©9zï½4Úßà –À@ÿå d�¼{wCÞö£.ø„ì÷Ë—O�^OŸâ£Mø&Zs3úãgÏ6l@¿[Q��T@NÔ§anÜP ¯tpÅûC=pr êa~Ó»¿¿£õþî»k×°€`¡„°Éÿ¨ºÁ>èí5X`y/.†¤DýÒ�Çø ú{ÏžƒÕª’5zýïS�6FFºº°pÄaÿôî¾}ï¿�ka¡Z ‡~íõÁƒk×0îÒ; ±àýÀƒÝÝ�›ÆÆª*ô[8)㜶oǸJ;‚ô·ÝïÝ{üñÛ¶­Yƒñãƒ8{Èo'¨ä|Ï¥Çt»òkšØ]ºÇsÙ¯&†DvR'jï¤Û¾O·¼¸ÞfYª«±ÃøÀèo½Wïˆùþ{µ¡mÒ þÎïmÛÔÉj!3¾©y‚à8 &¨Á+Wš‹©GG»»Ó©Ì2‡Ý§zþ',�l‹C?÷ì�óç¯^µç�ÐÏ;öᇰk Užé:D�+\å€<Ã=thÿ~È3ú3=Ÿ§ú•+WÌ~ù`AÕÝ»è÷ì©®6íž¹nŸÒ~;Îâa“ºq{zçk¡Ÿa¯9òó™€sýýÐúä<Ôó”8Ùàøq؃z†3XûL̇ÁŽêî~øã ´>9|øèQØE8ò§ÃðpOæ¹ÏœñÛ�:ÑëùsØîúäMÏ+ D`>"½§Ç�®òc>þµ»w1bó©Ñÿa\ZT—Îwýžîò§ªõßDvÜÍL-dW°' •ÃÊŽ·K�t˜¨|ü6È®0T1-nNöLO aF„ÂD»é8×é(ÛŠÕÕ0ðwïÞ°Á4xŸ?okÃÀ jE©æ�«r>Œ Fí8×ézÇ+&.±3Á^ ãI;Jõo0á×Õ…ÃouŒš¨Ç‘�{÷nÛ†½öD=¾åƒ߀€CÏÌwwü£¨tN˜È…ÁÖÔT_� #ý-\(°°w‰pÔç‘·G»üñ±c±ŽsÍ¿  ¬ ß¾Ú±£¦ÆÄ;Œ·þÍB¹â=\¸ðÕWøƒçýíÛÿªé0u"Bª±™Ëv$© ¾ ùnlÄ¡ÿ±¿ÐGˆ>zÔÒ‚Æ¥KÊ�òÅŸ}öw‡Çùó˜HïíÆÂ–dCC\6AǹæY®¬¬©�£®ª*¸b߯Eû¶Ã\µ£DÛ»]îDŸqDôËöíAǹæ³téòåÐúÓ:^O„À`Ðq¸NM a¡“}ük]ÝÞ½pàØŽsýÛÒÒÕ«7o†ÞÂáâ:–×Ù CwùòÊJÓÑ„ƒ—Ḵß[¢ù˜“*,‰‰åC«;w9rü¸ß/9rð ,Q|›SîL€ŽìX<{ö‡Ìtœƒ;ø˜º úyÍšŠ Ó)/_½Z-üóGww÷Ó§a'@n ?°‡°àP¼g8€�;xÐtœëtØC��÷ß?:`—锸×üü’ð]»6x²FW×£GúXw›ì·'O::° @‡¼¼ÒRè1|HÅÜ¡‹ogÂaxüø‡B>�ÏMŠe—¦ã\óÁŽ"8kkwíRÑ:E]án�8*1¬^çš[qqe% ;wnÚdö«�BãÂÚ65/ Ú˜ÔÖîÞ�K¶ã\çSZ ×7ž;v¨… *åÕ«ñqÈÁä¤Êÿ!K��švp~þòåøÈÁƒ° }ǹ柗WX»²©éØ1ôϦìÁþêì|òÄtøâÜŒÌ8ðB=Âç:Ÿ+6l€Ü:´};ìñ…ôŽï¨ú`A0&h?V'{Ü»÷ì™iG”—£­A{ºäïfïÞ>À cX€ˆçœý‡;ôjñäÀ<ÙÌX ‰O˜Žs]nèð««kj¸½GE� kÈ•ê›ô¯p‚Ju5ì¶ÚZµL§´µ©O‡´Î,äiiQ Ätú–-û÷cüWR2ûš™ÿeº_Õx-„«²CdöN:íûLÊKØ{Â2|ÈóÚq®é0ÞG�…²¶½kc£þ¤Bð0|zýgCCðwcc3Áo·™Öº^æz¦©)uó?&ïl¾ÇB,<ƒ}lÚ}f™ƒ³tfJöÞÃ~À¬!æë´ã\—ýc¼~2„�jö+sÝ>Q^W?«ëuMõ¸=ÓóLxofÿ¯ëé²Q2]N].Œ^ ‡Ø~döÑ:½¤DÍ_|øá±c˜çÀô+æ]×­++37,iz^‰ óŒÛŸ>íéÁ8½¯¯w&`þ>xíêêèÀBûo¾ùì3lœéïn´X³¦¾ó Áqé|×ï™.²ýh¶ÉÝÌÞ‰…à¨ÆNÃk×°ÇDV'ú›Hp%c%¬X™”á=&•‹ÅvVcºtø†¡mx`B×õÍý ô²24M3÷à=&t°Óá½÷–-C~öŽ:M� È÷Ù³àMNN~>‹#o&4ô¯ü+Ôèt] |†††‡õ½=�UêÿªUkÖ˜;cÍ´°ûÜ\u4ri©¿¯†ÉÉ/�†XÓúòmÀ{ªp”èØ n€ã«WaoÛýÛD)æªIˉ6'Øúõ ØI÷Þ{ÕÕ˜Pé~àhéêÂîñ0ù~ö ŽŽK—ΜÁuÍš­[1ÁúþûµµR¹ÝòåXË]j´C´ÁU«V¯ÆNuì³Äθ¨0Wí(ÑöU~iüš5k×Jp.)Á!ûàêŸ4€'àŠ«ÃÃ}}æ·p¡g±“lݺÊJ­‘4mص¸%Â@U9HÕî–0JÆÍ99yyhGz}þ®_?}ú«¯`P×Ö¡VUõÞ{pü•”,› èÿ–,ÁÄQi©º&Zv|kùüyœD3:ü_ãdäwôèÞ½ø–£Ô!ïsXXw°Bð-ïöö–Ó™Š}áp”ÂÚÑï5ÏË[¶ 'ÌTW/_Žöyÿ¾úzGGk+dØé }©w ¿z5= üûú‚;�7lhhÀ˜ÂÂð‰1�òâŹ¹°w6nTG³_¹âï,×4æÜà°®©Q;å»»ý�òع:<¼kÜ””俢^/_b ³}}Ú¾¿õëëêàÐõÐy@AfŠ‹KKM§>ø`§ùØØÔú-ß^Âì)¸¢'ª5ÿ¨ëÚµUUêkÓQ*¾´tåJuPK‹ùMvÛQ½k¦CïB_×Öª÷?,,¨­…Ãñ¿PW›x ¿„löãèUaß¿ Ñv°æ§ûhýnž?Ò÷ Áò+sÑ­YØë®P^^U…�ya¡’“·ë·Ù–޲_¹¢¾I¼t©ÿ©]NèÝ‘‘ÁAŒOpoè[8Ä ÷a“Õ&½tÜ„…s O ©ªª¯ÇÉ ö„ˆ™îÑÞ g6mª¯ÇB‡Ç�ÕI5؉ŽEê|è%¥¥´}‰eš»wãä‚“'±ÓØ@›g‚iÇiÇNCýg25þ›«~u¶øÌ×ߧ˾ϔ¼DáŽvŒ~¥¸XÍÃDÑåæâpd?¿ÃBÇø¿ÂBœàï° ºG-³ÂõÕ«Lê¿êNªÇ¤ó?6ÿùüŒqÙ¹s—.açïÇ8{Í´³±nø4ìúââø ¡Ì~ö ú•övô‹jC¬UØ)°=çr>O*Ÿ®w‘êq{¶Ï3i<2QNØJ……þ'ì`kLLàã„Ø1êììúúÍ›««qÊMi)dª¨héRŒS–.ÅHB—–W"@ˆÀÂBö>ņO¤$Š‹W¯ÆB÷ÆÆêjs¾Eó™ïú=åθkäæ÷5ëè¶{odäùsŽˆÇ+jBûq0a·lÙÀ ½óK¿L `bqhhtTONa f¿TL´Ú‡¡ááhgìàMW@ùìºÏ./å×Ghj^““êÈžÓ§ÕUǧúŠÜ©²Ø�‚/ âˆ[|«Ýœ�Luùæ3?È-P…ãGˆ¢MÀ1oLuÁ`?b*ÕxÌU;J¶ùùË–aG_MM}½¾66Â1= ¹†ãû†päjOÏÐô‰�77ãÛ­p|ò vb…N�½ê‰ŸàþÄX:÷‘dÒ`®Ú¤/¾ü隤æšîü°3 í,vú?¼üzb«²R-l‚»4Ì9þkÆj0YG²6 ‹CsÅ:õï\W¼OØï¿¿u+vâKÖúh&¼§îîÖV´k\M^Ð XÁ_W·e ôAuõªU‡˜æ�ew¦ã\Ç—–VÎ:Î5ødØNäþ™Oãà4?üðæ &R}-£,A‰nî\�šÀ‚¦þþ‰ L´®Z…ÃØ‘ ö¼*;Rç‰ëÒ¥……�+i(/o&€:¾]ó+-]»ŽÀü|å…=‡›}”;Ž0EýÍÅŸ˜àªª ?ê]ó×G¦ã‹›8Ë%цÒR­w_ÍÓÞÆ>y8*õQ곯‡’Óyž““OžàÈô¯¿V×Ùæƒ\LÜ­èñ¾++•Ý`5?Ûòeú÷Ð{Xb�?¢Ê¡õóÞ½îÙƒ…�€(j?^>nRr`—géRÕÏûãß-Y²t&i ¦¦ô·Úƒ¿^;wÂñ~úô�æ °0nÅ'Ð/¥.„×7Õã?]¿L÷«©Ãin9%jï¤Ï¾ÏŒ¼D¡-oÇAø]0&±'80Õ/ÂëŸný K›lýõï V÷ïÿäÌkŒ�ݾýý÷žwëVOVêO`\¹òàÆçûö?]–mõDzmôçÒ€~Å^¨�¾ÊÜðûÕî¿R­Ï£Ê›*ùD+Kå<Á|™gÊT9W­ª¯ÇÉ7åå�áœz { ó©?üpõª=¯Šy¥•+7lÀBÂ-[êëÕÂ�àÅQrÁx"@ˆÀ|Aã-ŒßŠŠ‚'‰a–.lž®¸xãFØ#ÇŽmÙbž¨g×w¾ë÷L•߯m¾?Çqñd¶jÆ`¢ÓÊ0<ñ�:tþ0œÕ7!_½ÂQ‹Q+:KJÖ®ÅÑ_|€}€±_(ÄΟÏ??sß*Gˆrp„x+V¬\‰‰ÊY©~/ù^ØQ·¥ªI~—.8îàX¹RM,Ga›?¦:±{ñbSg¾^¸€#3p”£=Ù ÞØˆ’KÞL|/[†rà’8BQ/Š˜M9æËoað•–bå=vøH&ç¢n ¡åææåa`[VVQ� ÎÝ»�ÁßTUG2«ãÀrŒo6Cá@�çh›íÄOØûd; CE‡ó,€_òA½Ññqõ­ìäù¼Û¿ŠX0××\€°lYI‰ÚQ<;|ôŽÕ'0e€¿��رŒ/¿„�8�‰Ø!·o_¾ŒþééÓM›ð©‘ýûëëÕÉÉ•çɓ۷± ¯££¬ n6lÀG[’ãµ~ÕÓÓÑam¯ëyþg‚ž ÒiQWèߎŽînЯZUW§Þ“éÞ4™˜U–¨žÀÐ8)cÆåËá¨ð@}³\å¾y³r�ÛG·/]úÞ{Ø‘T^žŸ¶k|üÙ3,õ8yòìYœ¼d‡Å‹ 0P,..(€ý‰'\/~óÅîîžû¸q›G&ža#ØvB&ì| +É�>Ú�T÷c§"hËf‚½Sx¶õÀïÁ=JR3ñ>R‘ìÓÚÚíÛqtmy¹úF|ØÄ9ZÎ�‚^/++-…¼fâÝë˜xމÿŽ„`Îx‚~Ã'`7à½á+¿±t©ŠI×ø/[úÕTá”)>‰Ø;saß§K^2…ïìóI¼µ'þ‹Ù—r>s@±cÇÑ£øÔ Na°¢bçN|b v ìnmûõõÝ¿áìÁŠ ØÍÙú�fÓñ-}7ÉÈ Ûg¬ý¼³q¾Ö¶ÓQNœ0Š&þüç?ù N^‘Š8¹#\,ÜííE[2í]Ü÷öª£‹qýÁƒ'Nà“Uµ$#—R™' D `¼~àÀÇðôZÐoòúõÄæÿ¾øâ믯^õõãôôà 6äBGÂ�[%*Ìwýž‰òGa7_ã³Æ�®,(X¶L;ž´ÑŒk{ûÓ§˜økl\³F§ëßH®ÃÃý33tt@IDAT!–Òž¬ÊË‹=ª ;v45á¨HLo¤s‚#¶„ÉÅ,Z„CG1A¥~¯Ìk×n܈oX66VUÁ;×_BÄN•G�‚Žs|S;þšš¶mS;¸Â ôõåå¡n/¶´„½ß¹®_úòSwéË-QÎÙÚŽ¦¦†‡Ÿ>Å‘¿íí8*á¢lܸeKuµû(O�CIÉʕ؉ˆµ½ÝïpŸÍµ’-9=¥ù'ze;J± }aaI‰îWÔS­Ø|ñG÷à ÷xzn)œPðôizw€K½ðžúû>ÄQ�öjP8¬ì�³©½>qbãÆ­[1á€+ú8Há耽€ ‡7._ÆB]žþþ–‰70€Ãvc q»L«VmÞŒO;ìܹf ŒðogNªÐΔ[·ÎžÅïÅÅïæ„…>b»µµ« Ž$ŠŠ**°c³¦fíZudVT—“ƒ”§O>ÄŽb}D;ž±`rrR½'”]­v£û °ÃI¹RuîÑ×çÏŸÌ„èt;Ö"ò]·nÓ&,ØxðàâEÈ÷ð0¦´p,gc#4>~<º½¶VýnóÓÏø€ˆ¹“ñèÇðÍnLDWUáã šÚ¿âDè·��¿ýÛS§||ŠÌÞÎÝ®1PÅAÛУ££ÓÓh/Q ìRÂñ zuØ6úeu$?Ðþzqжƒ«ªêê`ïÚU] üg°Ð $t@=°@G°B>ËÊôáÞš"x}õêÅ È_Ÿ> <˜>Ÿž0Q±zõºuXhXV†71÷¥‡ íÛã¡ÁÁáaÕþ—/×2¯´x«�O°£ ¾qpj˜}€å`˜�¾t©¹ÙÞù¥y@&¯\¹x' |ôѱcØA†#©Ãøé߸®s5þËT¿êªÿ|I—Ú;é¶ïçJ^²å=Í•~È–úÏe9Ð_à(iôÓ:à}`<¶oßÑ£;v¨�/æBÁ»wÏ�ƒÝ\V¦ìæŠ ·£z'PbƒÆò™ Ñ÷º<‰^{{{zÐOlÙ²reø–ž ÇññáaõqH?}¬ôø›óy~é3s—­óLví3]NÈ ì�+Ö®­®ö¯(ìÑÉÉñqŒi»»<€ÝÑÜÜÕûñ÷îµµáùàÁúzœ”Æ@ˆ˜ï¨sck‘“SXˆ ²;wnØ€ù€«W;:0O‚“1_ÓÚÚß?ν�½b‡ù®ß3]~¿ùúœSAè°“¾=©õèѵk—.áèäÑÑDízùrt+K®\in6'>ssq¸&¾-üzÖҥ˗ÛyÃ1ÛÒÒÝ­'у%>ÁA‡‰’––û3¦mmÈWMîiÓù„&P++KKÍL��·oÃ06†Ãà¢K€4 4°3êáC8U}°30l‡x4'WŠš^3OøEYÙÊ™½s;�0áxïÞ»æ8wá™éÙÚŽ¦§±w;;;á`ioWG7··÷öª‰T~/_ªˆÝ®+*Ô 2.©¤b;š š8—ŽTSaÂåÖ­;w 'ö{Öyé#5››oÜÐ'›è´wõª0”»M0 ïímmÅÙ¥KA} ÛÚÚÕ«qÄc²;ÉÑ�·½ ¸vv¢Ÿ¶ßkNÎâÅp„••­Z;äàÁ½{ëꂹâ7Q†x�vLE&±LGõ:ÔÔ„#òÌ»âÂ…3gðéìCŒ×/›¿[÷££OžàóèrÔkË–�;1qŠ/ ãhÁMoCص¶Gµ74lÝ µpHÂqõäÉð0+äääæâ=ÀÒNtÐ>~|û6&�•ÃVÿÞ¾NOOL`ÁÕýû�Ù�6mØsQQe¥²7ýTL°Þ¼yãhèÅ�wØ=kÖTT„ Ôô¯!§¦®B<ÚǪUååÚ!­iÍkk+ìRíH6Óæâz QÌ,š›[Z¢Ž&í“'÷îaGÚÿ{pý¿ÿ;Ö†‡_¾D;�zï·nÁÆ9¶0ù£5ÂÞíêR¸áÛÕøÝÓ§ÃÃæ§Š‹qh«ùKuTKK{»ž˜ ¦Ÿž>mmŧ ôš`êüzžXˆ”M¥ÆxíÂá$¼Ï‘‘ø;ÿ1ÞÀÉ(xûæ8£,èûê�´±›7¿ÿŸVÐh`ÜY[ëy‡ïß�…y:à›·°3~ø¡­ 7³ ™ÿÍU¿:[|RùûÌØ;éµï3%/©Ä=•¼2­RYöùÎKéFŒb–'aâúðáíÛmG4ìæK—Î�ƒý65�kþ^ñÓzW§ŒŽŽ�ÇëcÁýúãÇ]]æB)ý{éud¤«ëÞ=œ�89^3ÅI÷+wîܾ {UôØñVT¤èóe>O× 3×ÌÏ3…¿Í ìÅÖ=ÝåÔóµ½½j^K�sûûcçkÑ“à“XøWS³s'>™SU<ÒVqxMcëÆ"@ˆÀ|@Àµ(^¶lQ§F›õyðÄèù¹ù®ßÓ]~KuÞ»¸úÑX>s“ut d0!±}{c#ް4&$®^=uꫯà8íìÄ„æôtðÛƒ¯_«o÷ô´¶Â¡ñùç§NáHÛhÞ¼¹¡ä˜L5U^^q1&ºmƒâÑ£701×ÜÜÝ� 1ä ÀD&؆†úú0rêÔ™3pôß»÷`&਩ä&\Íz'{��}UÕæÍæÄ2ŽŒÃÜï¾;{ø NL}Ä"ÐÃDQKËÕ«ø†Î•+·nݽ‹…ª>X¾.úÉ–R½?{ 4±³wddr &tù^¼Å{¿téÛoÏžîÉæËߥ�lmG……eeXQkî^¾|æ Úw{;&H'&¦§µÜ!ò‡vþüyO&ºO�Ríi:Àá±reyy<LJ¦Mý•íh6˜æäáD�M›**LÛøxO&h¾úê»ïÐ�tuõô@öôtwãÈé ¾þú›o°_žM ÎoÑO?GØÈ>j >m€ëÈLÀ;4 ß/\8uê‹/Ô=8Rí°uë޽ؑg;(l:×óØXoo[›çÝyp½yýôÍ›--hï¶1551�¤÷îÝ¿�ß™;Còóƒßº5ÓÍ{Ýoé8¸Ña ïÝ»i“é8|ýúÅ ì(>þæM\SÛÇêܳ犉Jôù��šïG�c¢Gk› ÿ\%/*Z¹;Öí]×3A�4Ë;Áëêl»ïùÌ™“'/^Ä‘‡˜bUúåÄÌï¾;yßä´ý®rétìÅNúššõëqd5ø÷õaï¹zÆÿ+ª«a¯-]ªvPû)Á;Ø�¶ÍÇ[{ûãǘøÅôd_Ÿœ„ÞºúëüùæfÔ'[B~~Yôîºuæ‚€ÞÞû÷ñ>°sv5¬@èWœX€ú<}ÚѽŒt³>ùù••°ß!=àçŸP_{_ØÁpП:uúôµkØ‘�C´};;t ¿îܹxvÿåË7o"¿{oô¾z­¹A?aÉ�ç½÷^n®9žÀ‡^ 7×®µ´àÄXøÝôL€žlk»u ;é._ni1åÀçÌ»T! ÇCø˜Ðn¾ûîÛoÑ> �/­·!Xxuõê·ßâ“¶s»¦fófèSvÁò{ý:ìÿDÐ44ì܉Yee+V �oݺr¥i/>yÒÜ ¹ïéÁÙf)¿×õMçøo®úÕÄÑHß/2cï¤ß¾Ï„¼¤ï-Ìž³®&ôÃìKûnq(+«®Æ Q¶¾Ô �pN”¹° 'Ëa‡¹mbvgç³g°åÔæÕ 0ÍÍ.`^©«köŸâ‚^¸xñÛoÑÿ?}ª>í¦í²©©ñqØiW¯b&.¶_Y·®¶ö,dR-ŸéÔç:¯ùrÍô&œ?Â{n™ °ï^¼PóF¶û9ýå|õ åhn¾yóºzœ{ñâÙ³8ñ Žts À1Ÿ58ØÝ�ù,[Þ—-[ºí‡�"ð®  ?�±sçæÍÏë€ùÌ3ܽÛÙ©7;è4\ç»~OùM´€Wrýh�ËÜ?åÎ}ÂKPZº~= æ½{'g&Êî߇ãP--7ob¢W+û¿nÝöíb"3ü›£˜pÃù¶m{÷bTOÏ™3˜Ñ“e­­×¯c WWŽ0xwïÆŽ3ÓÖ¿ ›$ÇIJJ7§áô/ükØoýTÿ®°påJLØlÛ¶z5& ïÜéé�ƒüåË¡!8€Îžýúë°o�úÔÝ’%«W㛆±ßjU%ÑøØ¿s=Caab¹ºZM$á C‚8@;ßOŸþê+\S¤¸¥*¿tñÑR’*þ©Æ%“í( rr à@ß¿çNL|ž9s㆖ÈpkëíÛW®¨k"|ËËkj°£ßp“ï½M$‡ø´™kG³kïñk��½Z²µþKo~fy £7nlj:p_,‘ÀV5‘} êÆ�«WM‡�þý’%¥¥0¸ ''áÁÑï©nS:¯l¿¢ݾ�¡{r%ÅNÚ]»°GÏóp€w2y[Ž`O ,-UGéê…W�ß»‡öŽ+J›; yp×iI4k±vmc#úÅÅáté;¯¬¬¯ß½ 6úú¾þvŒZ€16ÖÕ‹ææÍÒR,$Ü5sÄ´:ÂÜ,Åü¿Ç×°G:;‡†0‘£ÃÊ•55Øq-šˆÍÍÍχczÆÊJ8¤îÜQG¢ ´µµ·cAÇöí8RçaÃÆ�­­pÜ?|¨¾IŽë°/Ïœùê+,èH4À½¡ä=_ô¯q®�räb*7HýS]½~½¹°"Há?­X±~½šèokÓ;¥0Avûö¥KX†]í³ ª6RyN6/¼e´ï††Ã‡ñÍÓþþ“'±£6 Bw÷½{pp뫊 ÿ¯ìííÛ�‹-;ÅÅ«Wã½oݺz5&Úáv‡<==4„+§Oñ…}$~X.K–¼÷úùÚÚ+ÌÉyÔ;œ÷ïǸåÉ“à·é±ãã\Ãø.´¸0Ý™ª:†É¤n}Áåб9b<„ñXCCUäàÖ­®.È0áùܹo¾11±TLqqUÆC7à““ƒƒXð�º]â°ñ °µk‹‹Í…AÕÕ;g‚çµ·ù%Æ•�{ôŸe¢ ——ôÆ¡ö²0 ÂÊšîñ_¦úÕ°ºeK\&ì�LÙ÷é–ó�…ɰ´›|pŸªß¥[?˜åžMýÃ~kòžo÷’þý{MÍîÝ{÷¢ýì3óÛèÏŸwt`ÔÝ»••øÆé–-«VaQ_¯v®÷÷û;¼¡coÞ<þÛoqM ©(9‹z˜xÇXãòåテ�ï yy§ÔÕ­Yv’ÐüiŸ èÆt†LÏ3aa懵í§�Òýýmm°çOžT×ÒÒšسGŽlÛ†y�ô—sñb8ö·nÅ‚ÔsçÔI9�?Ø!X¨þå—(F¸Ð—jAjØ»ÁøcãÆuëôBß0Æ"@æ;uZ¾¼¶¶¾ã/åwÔ §»»˜ ˜§Y³ŸÊ++SßRŸïú=ýåJJ²ýh�ËÜ?åÌ}â—î_"~xàÀ®]˜ îðˆÿk¬\¶ G+65=úñÇø–yu5Žêu…¼<&ïy'N|ôîUU²o°–”¨owîßÿÁÈÏž0ÑùÚßÀ4"dMïŠþø'?A¿ÑЀ#¤ËË—Íìl\¶ KÍ�…[¶ìØGïG9‚ òòòÄú'û=Ï·ç0ý”HÐ?ã“)›654à(¹'~ö3´'8Îí>%Œ¯TŽ EÑ^VßLÄ‘ðav€í8·Ûù®]þâ°òÄöËáý Ú2ú¡Í›Î,¼ ÊMw÷íÛjGdªO| +uæãô·„õJ€~mýúµkqte2í|íÚÍ›í‹Øa®¿} û ¸74=zâ¾yUWgÚQù®][W‡öýá‡ê›œÚ~‚~Â=´³©Ÿ£ø ×@?±zupÇu^\QØy_\lŸŽÆ«°°¼ >ùäÈ,Ä@kÑe £_²dÙ2ä{èÐ`àWQáË›©õou½ìÅ+ú[òš.ê 4L¾š_ý’%pq£>?ûÙñã�ƒŠ =IõÄUT·£G?ùúzݺp½�òŸúúýû?üvpCƒ-'aù@¿ÀÞ¸±¡÷?ùÉþý˜à6ëfþGõþþôÓãÇÑ/,_ÿ½àÄè¡ýû�G¹6oV @4Ï·æéŒ\gkÓÿÀYÒ’©ÓlÇMÈåÛ°açNô3ìØ�þ]Òæ@³iÓŽh?ÇŽákyÁqœííêÄ.]7È&ÐwîÄÞIë_á…¾kjÚ¹³ºÚ�×'’´·÷õ™Ÿ®�½DÆ1¨/Oéÿeª_õ‘™Û»0yO¤D³±wÔ{Lï8uI§¼h¬’mÇ8ÉÅcÜ€þú]ó»B�¢^:à@l´g̢ؿ]:ôƒÎ×dë¯yÄÚ™Ñ}’þM6\ÃÚÞƒt>½8–îÝ{ô(Æí¶ÞÆIrpŠëOr`ç: íÝ»u+ì%WÀìÈÚŸØ€¼`<&/ài¿�††ƒÑ¿¼ÿþ¦M°k\ G±� óœ°/”L‡ÿ*›Û§.1ÞÓlçM ý¨ù¬óÑ×LÍ3iùÛ³çðaȬͰr…Å¡¬é.'?G:´{7@X®gê·(ÇùÊ•6lÝêyÇ�úé¾}Ñ Ä5Þ¼"@²�0;ý¦© ã•]ëyœ†ù3`A\gç“'a§Îwýžîòk5¾Éö£šÏ\_�¿ Òus]\•?Ö6NLŒ�açÀÄÄ䤽Ê�ßx�Ãf/ŒÑT!‰£§¦Ô{zz;5ˆul¥*ïTón/f‚žÄVÊE 4ógp‹2S]›xÅÎ4ýv¡ü ¥˜°Qß¹*™]R>'ƒ@¶¶#|Âãè(4‹¹³Au¾XŒ õââùqÄÛ‘\:ѯŒ�ã�qu¤74Laaq1ú‘üüà›ëë×SSø´Ç·ßú;É@SW·wïGÁ1Ü©fÿžÏsƒ€ß>ìo`«…Kùùæ„íÜ”2{r~²§<©*Éë×ê¨óÉIµ^[q˜¸Óv�tð•ª2%Ü£ßÒCE옂í´d&ÌG9ÖG¶ÃÞ†~Öeo£V¨_²øh;XᦑSv0pÃûŸ­µ9991PJµàBY³ê½€¦BÉÛ�©ÜæW>Z ðöñÎñ©Èì>å@™_uŠWZ]ßtŒÿدÆC>ui>Îx›Ð.é'§S^R‡Hú8éú¿+ú!}HÎg¿½íýtÏßé#³Õߨ?z\±”ãËà†¤$´|¦CŸ'Z–l¡ÏÖy&Ÿt—szZÍ[›GËþ� ûS�wìrñ™"@f‡À|×ïé.ÿìÐ�»_ÏKúÜÁÅœ‰ D`¡!€‰|ÛæôéÏ>ÃÈ££ª†¹¹¥¥ØQˆ}›8ëÍMGVtÃ1òàÁµk8¢÷ÁƒÞ^ý[ L›š>ú'‘¬ZUX8['ÌBÜõ™,Túü{,1H:ÐÇŒ¿ D€"@ˆ D€"@Þm¬Ã¡ßm0X{"@ˆx÷À‘28º}Ë–š)~ùr[¾{ƒ/ص¶âÛfø®úèvìæÄ$}}Ïžéï㘨á[v8"òÒqn"Ã{"@ˆ D€"@ˆ D€"@ˆ Ù�w gÿ;b ‰ D à¨=|¢£­íÎ�~ð¼ææŽŽÞ^yÆø–]c£ç56nÙ‚oîÙ;ÖåœHI²î@ϾwÂ)Ü�.EŠtD€"@ˆ D€"@ˆPÐ�NI D€"‚Žh‡C}h&àˆ÷©)õMáÅ‹_¿Æ·_½ÊÉÁ7ìJJJgæyyÜq$£t /ˆ×ÈJ¼£Ð�þ޾xV›"@ˆ D€"@ˆHáž4tü! D€,d-ÊÍ-(ð¼²²Š \ˆ D€"@ˆ D€"@ˆ D€�…�@ί"kHˆ D€"@ˆ D€"@ˆ D€"@ˆ DÀ�ènŒHAˆ D€"@ˆ D€"@ˆ D€"@ˆ ït ¿/™U$D€"@ˆ D€"@ˆ D€"@ˆ D€7t »1" D€"@ˆ D€"@ˆ D€"@ˆ D€¼Ð�þ¼dV‘"@ˆ D€"@ˆ D€"@ˆ D€"@ÜÐ�îÆˆD€"@ˆ D€"@ˆ D€"@ˆ D€"ð @ú;ð’YE"@ˆ D€"@ˆ D€"@ˆ D€"@ˆp#@º#R"@ˆ D€"@ˆ D€"@ˆ D€"@ˆÀ;€À¢ž·áÍ›w ®¬" D€"@ˆ D€"@ˆ D€"@ˆ D€�Hr•=2� D€"@ˆ D€"@ˆ D€"@ˆ D€"@Þ õ¿ Ñ;Ðß¼ ž·èmH&R¾RºDK&å+¥cþ‰! ÅUJ—Xîž'å+¥cþ‰! ÅUJ—Xî|ÿR\¥tÄ?1¤¸JéË�ò/ÅUJGüC@Š«”.±Ü)ÿR\¥tÄ?1¤¸JéË�ò/ÅUJGüC@Š«”.±Ü)ÿR\¥tÄ?1¤¸JéË�ò/ÅUJGüC@Š«”.±Ü)ÿR\¥tÄ?1¤¸JéË�ò/ÅUJGüC@Š«”.±Ü)ÿR\¥tï*þNº˜tÍüe �ú…2ôå YÊ/Q:¾¾Ê?ÛªºIõõõõõõ�jÍÔÑQÿRÿRÿRÿRÿRÿ²ÿI]¿*åÄþ—ý/û_ö¿ìÙÿ²ÿ•öš©£cÿËþw.úß”9Уš‚z­ªc�¢Ig<ó‡Xÿ¹éÖ•c�øSþ(saV²ý±ÿcÿÇþ‡ýûö?ЙìØÿ@樨2­{�õõä€ú‡úr�é@ýCý™£þ¡þÉ´îA~Ô?Ô?�êŸôè�] ^^DæóW˜ÿÌËr¤üQþ€ÛŸ’ƒLÿgûSˆSþ2-y*?Êå°ý)9Èô¶?…8å/Ó’§ò£üQþ€ÛŸ’ƒLÿgûSˆSþ2-y*?Êå°ý)9Èô¶?…8å/Ó’§ò£üQþ€ÛŸ’ƒLÿÏîö—ƒ*ºˆáЄ ŽûwáÜìX7æoc†g7na¿Š�só!þ±¨·Ü„¡çæCù‹E�òç–›0ÔbãÜ|(±¨QþÜr†Zlœ›å/5ÊŸ[nÂP‹�só¡üÅ¢FùsËMj±qn>”¿XÔ(n¹ C-6Î͇ò‹åÏ-7a¨ÅƹùPþbQ£ü¹å& µØ87Ê_,j”?·Ü„¡çæCù‹E�òç–›0ÔbãÜ|(±¨QþÜr†Zlœ›å/µì‘¿ÈèúÅbëø+ «â´;>±_Ùܘ?Àº⟘$QþT[J 5¶¿ Ô?Ô?Ô¿ìØÿÒþH¬'¥ýAû$&5Aëà RÿPÿ$&IÔ?Ô?Ô?Ô¿‰i ö?A8þçøŸãŽÿiÓþN¬'¥ýMû›ö÷»bG:Ѓæä쟒7HgŸ780ÿd b⟠(”¿äd©�>ê?¶?¶?¶¿d&D¨R�õõõõOⲩÐ>´ÿ¨©©©©uˆ±ÿIìØÿ°ÿaÿÃþ‡ýOb 2RÑûpü—®þ7côÔˆ¹"@ˆ D€"@ˆ D€"@ˆ D€"@ˆH9‰²Õžü¨ß¹Ò£~'�wñw¥Kó‰¢sñw¥Gñ•Æ»ø»Ò¥ùDѹø»Ò£øJã]ü]éÒ|¢è\ü]éQ|¥ñ.þ®ti>Qt.þ®ô(¾ÒxWº4Ÿ(:Wz_i¼‹¿+]šO�‹¿+=Н4ÞÅß•.Í'ŠÎÅß•ÅWïâïJ—æEçâïJ�â+�wñw¥Kó‰¢sñw¥Gñ•Æ»ø»Ò¥ùDѹø»Ò£øJã]ü]éÒ|¢è\ü]éQ|¥ñ.þ®ti>Qt.þ®ô(¾ÒxWº4Ÿ(:Wz_i¼‹¿+]šO�‹¿+=Н4ÞÅß•.Í'ŠÎÅß•ÅWïâïJ—æEçâïJ�â+�wñw¥Kó‰¢sñw¥Gñ•Æ»ø»Ò¥ùDѹø»Ò£øJã]ü]éÒ|¢è\ü]éQ|¥ñ.þ®ti>Qt.þ®ô(¾ÒxWº4Ÿ(:Wz_i¼‹¿+]šO�‹¿+=Н4ÞÅß•.Í'ŠÎÅß•ÅWïâïJ—æEçâïJ�â+�wñw¥Kó‰¢sñw¥Gñ•Æ»ø»Ò¥ùDѹø»Ò£øJã]ü]éÒ|¢è\ü]éQ|¥ñ.þ®ti>Qt.þ®ô(¾ÒxWº4Ÿ(:Wz_i¼‹¿+]šO�‹¿+=Н4ÞÅß•.Í'ŠÎæÿãt�{ÄAHïÁÌ„qBü)lÔ?Ô¿J¤ç?ûö?ìiÐþµ�X£ýIû“ö'íOÚŸé±<WÚŸ´?iÒþ¤ýIû3ØÓÒþ¦ýMû›öwP+¤Ú¥ýIû“ögâöç�ôT7HŸ_f ??ûŽù+DÒ«€mÔýgâOü�åÏo™¼cûShSþ2)u~^”?Ê`ûóÛD&ïØþÚ”¿LJ�Ÿå�òØþü6‘É;¶?…6å/“RççEù£ü¶?¿MdòŽíO¡MùˤÔùyQþ(@€íÏo™¼cûSh§Gþ>Â=ñW,¸^é’8ŸdÁüM䈿Zidb’Þ{ÊŸ‰/å�ò§»tS.ÒwÏögbËöÇöÇög¶ˆtßSÿ˜SÿPÿPÿ˜-"Ý÷Ô?&ÂÔ?Ô?Ô?f‹H÷=õ�‰0õõõ�Ù"Ò}Oýc"LýCýCýc¶ˆtßSÿ˜/4ýâ@—5¯dÕPìE&¼¸gþ6"aÏÄ_&'6v”?ûˆ,!®”?N6º”?Ê_Ф²%D&Wl2œltÙþØþØþìVa>ËÚõ� 'YÜSÿPÿPÿØ­Â|–µ+êN&²¸§þ¡þ¡þ±[…ù,kWÔ?2œLdqOýCýCýc· óYÖ®¨d8™Èâžú‡ú‡úÇn泬]Qÿ(œBèáâÀLh]ÍÐ|%‰Ý3ÿ0¼ˆ?å�íÏoÔ?ázÒG(Ù»p¾Ô?Ô?Ô?~›¢þ ×>BÉÞ…ó¥þ¡þ¡þñÛõO¸žðJö.œ/õõõ�ߦ¨Âõ„�P²wá|©¨¨ü6Eý®'|„’½ çKýCýCýã·)êŸp=á#”ì]8_êêŸlÔ??:Ѓ¯'Vø¡0ÂE;–1¶À‡Sù±Ìß}Gü)lº5¸¯Ô?.�ÄÐEMýCýCýl3ñž¨\%ˆž‹šú‡ú‡ú'Øfâ=Qÿ¸4J=5õõõO°ÍÄ{¢þqi” z.jêêêŸ`›‰÷DýãÒ(Aô\ÔÔ?Ô?Ô?Á6ï‰úÇ¥Q‚蹨©¨²Qÿ,êâ;oƒ¢Î'"@ˆ D€"@ˆ D€"@ˆ D€"@ˆ  �w GU-Ñ•4Q|ìx)_)�Íßõ,å+¥såg§KùJélþ®g)_)�+?;]ÊWJgów=KùJé\ùÙéR¾R:›¿ëYÊWJçÊÏN—ò•ÒÙü]ÏR¾R:W~vº”¯”Îæïz–ò•Ò¹ò³Ó¥|¥t6׳”¯”ΕŸ�.å+¥³ù»ž¥|¥t®üìt)_)�Íßõ,å+¥såg§KùJélþ®g)_)�+?;]ÊWJgów=KùJé\ùÙéR¾R:›¿ëYÊWJçÊÏN—ò•ÒÙü]ÏR¾R:W~vº”¯”Îæïz–ò•Ò¹ò³Ó¥|¥t6׳”¯”ΕŸ�.å+¥³ù»ž¥|¥t®üìt)_)�Íßõ,å+¥såg§KùJélþ®g)_)�+?;]ÊWJgów=KùJé\ùÙéR¾R:›¿ëYÊWJçÊÏN—ò•ÒÙü]ÏR¾R:W~vº”¯”Îæïz–ò•Ò¹ò³Ó¥|¥t6׳”¯”ΕŸ�.å+¥³ù»ž¥|¥t®üìt)_)�Íßõ,å+¥såg§KùJélþ®g)_)�+?;]ÊWJgów=KùJé\ùÙéR¾R:›¿ëYÊWJçÊÏN—ò•ÒÙü]ÏR¾R:W~vº”¯”Îæïz–ò•Ò¹ò³Ó¥|¥t6׳”¯‹.e;ÐuF‰µàª¨4�ùÏ#þ‰u!•/å�òÇöGýCýKý›ÈQC®~EšÎþ‡ýûö?ìØÿ°ÿ‘öš©£cÿËþ—ý/û_ö¿ìÙÿ¦®_•rbÿËþ—ý/û_ö¿ì3Ùÿ¦Ì�ÕÑ)µ®vM:ã™?ºâ?7jÅó(”?¶?êêŸLš5¾EAýKýKýKýKýKýë÷ ™»cÿÃþ‡ýûö?ì2×ëø9±ÿaÿÃþ‡ýûö?~¯�¹;ö?ìrÿ#p +@”¹fgæÄüÄß”ŠÌÝSþ(@€í/smÎ̉íO¡Aù3¥"s÷”?Ê`ûË\›3sbûShPþL©ÈÜ=å�òØþ2×æÌœØþ”?S*2wOù£ü¶¿Ìµ93'¶?…åÏ”ŠÌÝSþ(@€í/smÎÌ)»Û_Vˆè"šÅöïÃÇý;ŸC¼;7憟·°_ÅÆ¹ùÿXÔÔÎòøí&ìW±qÄÄââÇPþ|,ü;·Üø´ñîÜ|ˆ~nÜÂ~çæCücQ£þuËMj±qn>”¿XÔ(n¹ C-6Î͇ò‹åÏ-7a¨ÅƹùPþbQ£ü¹å& µØ87Ê_,j”?·Ü„¡çæCù‹E�òç–›0ÔbãÜ|(±¨QþÜr†Zlœ›å/5ÊŸ[nÂP‹�só¡üÅ¢FùsËMj±qn>”¿XÔ|ù‹Ü�®�ÅÑᆱEœv‡%ö+›óX÷Bü“$ÊŸjK‰¡ÆöD€ú‡ú‡ú—ýû_Ú‰õ¤´?h�Ĥ&h}4Úÿ3ØèÄ{fûSè$†š�(í_Ú¿´iÿÒþ¥ý›XOÂþ—ý/HLjh ýEû‹öí/Ú_ÙmE:Ѓê|öOÉw³Ï˜²ñO”?Ê_rQ*¤�ú�í�í�í/™ õO* þ¡þ¡þ¡þI|B$Ú‡öõ/õ/õ/õ/õo¢ÒìR�ûö?ìØÿ°ÿaÿ3»¥EÉõFìÒÓÿdÌ�žÜk篈 D€"@ˆ D€"@ˆ D€"@ˆ D€d�œD³Ñ+¢~çJ�ú�4ÞÅß•.Í'ŠÎÅß•ÅWïâïJ—æEçâïJ�â+�wñw¥Kó‰¢sñw¥Gñ•Æ»ø»Ò¥ùDѹø»Ò£øJã]ü]éÒ|¢è\ü]éQ|¥ñ.þ®ti>Qt.þ®ô(¾ÒxWº4Ÿ(:Wz_i¼‹¿+]šO�‹¿+=Н4ÞÅß•.Í'ŠÎÅß•ÅWïâïJ—æEçâïJ�â+�wñw¥Kó‰¢sñw¥Gñ•Æ»ø»Ò¥ùDѹø»Ò£øJã]ü]éÒ|¢è\ü]éQ|¥ñ.þ®ti>Qt.þ®ô(¾ÒxWº4Ÿ(:Wz_i¼‹¿+]šO�‹¿+=Н4ÞÅß•.Í'ŠÎÅß•ÅWïâïJ—æEçâïJ�â+�wñw¥Kó‰¢sñw¥Gñ•Æ»ø»Ò¥ùDѹø»Ò£øJã]ü]éÒ|¢è\ü]éQ|¥ñ.þ®ti>Qt.þ®ô(¾ÒxWº4Ÿ(:Wz_i¼‹¿+]šO�‹¿+=Н4ÞÅß•.Í'ŠÎÅß•ÅWïâïJ—æEçâïJ�â+�wñw¥Kó‰¢sñw¥Gñ•Æ»ø»Ò¥ùDѹø»Ò£øJã]ü]éÒ|¢è\ü]éQ|¥ñ.þ®ti>Qt.þ®ô(¾ÒxWº4Ÿ(:›ÿ�;ÐuBì8x!½0 vÄ ñ§ü±ýQÿPÿ*=�žÿìØÿ°ÿ¥ýAû×>b�ö'íOÚŸ´?i¦ÇòT\iÒþ¤ýIû“ö'íÏ`OKû›ö7íoÚßA­�j[”ö'íOÚŸ‰ÛŸ?:ÐSÝ }~™1üüì;æ¯I¯¶Q÷Ÿ‰?ñ”?¿MdòŽíO¡MùˤÔùyQþ(@€íÏo™¼cûShSþ2)u~^”?Ê`ûóÛD&ïØþÚ”¿LJ�Ÿå�òØþü6‘É;¶?…6å/“RççEù£ü¶?¿MdòŽíO¡�ùKø÷Ä_}°àz¥Kâ|’ýó7‘#þj¥‘‰Izï)&¾”?ÊŸîÒM¹Hß=ÛŸ‰-ÛÛÛŸÙ"Ò}Oýc"LýCýCýc¶ˆtßSÿ˜SÿPÿPÿ˜-"Ý÷Ô?&ÂÔ?Ô?Ô?f‹H÷=õ�‰0õõõ�Ù"Ò}Oýc"¼ÐôOˆ]Ö¼’UC±G™ðâžùÛˆ„=™œØØQþì#²l„d¸Rþd8ÙèRþ(A“Ê–™\±ýÉp²Ñeûcûcû³[…ù,kWÔ?2œLdqOýCýCýc· óYÖ®¨d8™Èâžú‡ú‡úÇn泬]QÿÈp2‘Å=õõõ�Ý*ÌgY»¢þ‘ád"‹{êêê»U˜Ï²vEý£p q ‡‹3¡u5Có•$vÏüÃð"þ”?¶?¿ePÿ„ëI¡dïÂùRÿPÿPÿømŠú'\Oø%{Ηú‡ú‡úÇoSÔ?ázÂG(Ù»p¾Ô?Ô?Ô?~›¢þ ×>BÉÞ…ó¥þ¡þ¡þñÛõO¸žðJö.œ/õõõ�ߦ¨Âõ„�P²wá|©¨²Qÿüè@¾žXá‡ÂíXZÄØNåÇ2S<|\ôñ§ü±ýéÖà¾Rÿ¸4jC5õõõO°ÍÄ{¢þqi” z.jêêêŸ`›‰÷DýãÒ(Aô\ÔÔ?Ô?Ô?Á6ï‰úÇ¥Q‚蹨©¨¨‚m&Þõ�K£ÑsQSÿPÿPÿÛL¼'ê—F ¢ç¢¦þ¡þÉFý³¨ÿmˆï¼ Š:Ÿˆ D€"@ˆ D€"@ˆ D€"@ˆ D€,<~Ü�UµDWÒDñ±ã¥|¥t6׳”¯”ΕŸ�.å+¥³ù»ž¥|¥t®üìt)_)�Íßõ,å+¥såg§KùJélþ®g)_)�+?;]ÊWJgów=KùJé\ùÙéR¾R:›¿ëYÊWJçÊÏN—ò•ÒÙü]ÏR¾R:W~vº”¯”Îæïz–ò•Ò¹ò³Ó¥|¥t6׳”¯”ΕŸ�.å+¥³ù»ž¥|¥t®üìt)_)�Íßõ,å+¥såg§KùJélþ®g)_)�+?;]ÊWJgów=KùJé\ùÙéR¾R:›¿ëYÊWJçÊÏN—ò•ÒÙü]ÏR¾R:W~vº”¯”Îæïz–ò•Ò¹ò³Ó¥|¥t6׳”¯”ΕŸ�.å+¥³ù»ž¥|¥t®üìt)_)�Íßõ,å+¥såg§KùJélþ®g)_)�+?;]ÊWJgów=KùJé\ùÙéR¾R:›¿ëYÊWJçÊÏN—ò•ÒÙü]ÏR¾R:W~vº”¯”Îæïz–ò•Ò¹ò³Ó¥|¥t6׳”¯”ΕŸ�.å+¥³ù»ž¥|¥t®üìt)_)�Íßõ,å+¥såg§KùJélþ®g)_)�+?;]ÊWJgów=KùJé\ùÙéR¾R:›¿ëYÊWJçÊÏN—ò•ÒÙü]ÏR¾.º”í@×%zÔ‚«¢Òtæ<�ø'vÔ…T¾\t”?ÊÛõõ/õo"G ¹úi:ûö?ìØÿ°ÿaÿÃþGÚk¦ŽŽý/û_ö¿ìÙÿ²ÿeÿ›º~Uʉý/û_ö¿ìÙÿ²ÿÍdÿ›2zTG§ÔºjØQ4éŒgþèVˆÿܨÏ£üQþØþ¨¨2iÖøõ/õ/õ/õ/õ/õ¯ß+dîŽýûö?ìØÿ°ÿÉ\¯ãçÄþ‡ýûö?ìØÿø½BæîØÿ°ÿYÈý�À�®]Pæš�™óWhS*2wOù£ü¶¿Ìµ93'¶?…åÏ”ŠÌÝSþ(@€í/smÎ̉íO¡Aù3¥"s÷”?Ê`ûË\›3sbûShPþL©ÈÜ=å�òØþ2×æÌœØþ”?S*2wOù£ü¶¿Ìµ93§ìn9X!¢‹hÛ¿÷ï|ñîÜ|˜~nÜÂ~çæCücQS;Ëã·›°_ÅÆ ‹‹Cùó±ðïÜrãÓÆ»só!þaø¹q ûUlœ›ñ�E�ú×-7a¨ÅƹùPþbQ£ü¹å& µØ87Ê_,j”?·Ü„¡çæCù‹E�òç–›0ÔbãÜ|(±¨QþÜr†Zlœ›å/5ÊŸ[nÂP‹�só¡üÅ¢FùsËMj±qn>”¿XÔ(n¹ C-6Î͇ò‹åÏ-7a¨ÅƹùPþbQóå/rºG„CÆqÚ–دlnÌ`Ý ñOL’(ª-%†Û_êêê_ö?ìi$Ö“Òþ ý“š õa ÐhÿÏ `£ï™íO¡“j6¢´iÿÒþ¥ýKû—öob= û_ö¿@ 1©¡ýD€öí/Ú_´¿he·ýé@ªóÙ?%ß!Ì>op`þÉvHÄ?Pþ(ÉD©�>ê?¶?¶?¶¿d$Ô?©@€ú‡ú‡ú‡ú'ñ ‘ThÚÔ¿Ô¿Ô¿Ô¿Ô¿‰NH³ÿIìØÿ°ÿaÿÃþ‡ýÏì–%×±ÿIOÿ“1zr¯�¿"D€"@ˆ D€"@ˆ D€"@ˆ D€"�rÍF¯dˆú�+=êwÒxWº4Ÿ(:Wz_i¼‹¿+]šO�‹¿+=Н4ÞÅß•.Í'ŠÎÅß•ÅWïâïJ—æEçâïJ�â+�wñw¥Kó‰¢sñw¥Gñ•Æ»ø»Ò¥ùDѹø»Ò£øJã]ü]éÒ|¢è\ü]éQ|¥ñ.þ®ti>Qt.þ®ô(¾ÒxWº4Ÿ(:Wz_i¼‹¿+]šO�‹¿+=Н4ÞÅß•.Í'ŠÎÅß•ÅWïâïJ—æEçâïJ�â+�wñw¥Kó‰¢sñw¥Gñ•Æ»ø»Ò¥ùDѹø»Ò£øJã]ü]éÒ|¢è\ü]éQ|¥ñ.þ®ti>Qt.þ®ô(¾ÒxWº4Ÿ(:Wz_i¼‹¿+]šO�‹¿+=Н4ÞÅß•.Í'ŠÎÅß•ÅWïâïJ—æEçâïJ�â+�wñw¥Kó‰¢sñw¥Gñ•Æ»ø»Ò¥ùDѹø»Ò£øJã]ü]éÒ|¢è\ü]éQ|¥ñ.þ®ti>Qt.þ®ô(¾ÒxWº4Ÿ(:Wz_i¼‹¿+]šO�‹¿+=Н4ÞÅß•.Í'ŠÎÅß•ÅWïâïJ—æEçâïJ�â+�wñw¥Kó‰¢sñw¥Gñ•Æ»ø»Ò¥ùDѹø»Ò£øJã]ü]éÒ|¢èlþ?î@× ±GLàà„ô<Àü�@Ø'ÄŸòÇöGýCý«ô@zþ³ÿaÿÃþ—öí_ûˆ5ÚŸ´?iÒþ¤ý™ËSq¥ýIû“ö'íOÚŸ´?ƒ=-íoÚß´¿iµBªmQÚŸ´?i&nþè@OuƒôùeÆðó³ï˜¿B$½ ØFÝ&þÄPþü6‘É;¶?…6å/“RççEù£ü¶?¿MdòŽíO¡MùˤÔùyQþ(@€íÏo™¼cûShSþ2)u~^”?Ê`ûóÛD&ïØþÚ”¿LJ�Ÿå�òØþü6‘É;¶?…vzä/á#ÜõÁ‚ë•.‰óIöÌßDŽø«•F&&é½§ü™øRþ(ºK7å"}÷l&¶lllf‹H÷=õ�‰0õõõ�Ù"Ò}Oýc"LýCýCýc¶ˆtßSÿ˜SÿPÿPÿ˜-"Ý÷Ô?&ÂÔ?Ô?Ô?f‹H÷=õ�‰ðBÓ?!tYóJV ÅQd‹{æo#öLüerbcGù³�Ȳ’áJù“ád£Kù£üM*[BdrÅö'ÃÉF—í�í�íÏn泬]QÿÈp2‘Å=õõõ�Ý*ÌgY»¢þ‘ád"‹{êêê»U˜Ï²vEý#ÃÉD÷Ô?Ô?Ô?v«0ŸeíŠúG†“‰,¨ìVa>ËÚõ�Â)Ä�.^Ì„ÖÕ ÍW’Ø=óËøSþØþü–Aý®'}„’½ çKýCýCýã·)êŸp=á#”ì]8_êêê¿MQÿ„ë ¡dïÂùRÿPÿPÿømŠú'\Oø%{Ηú‡ú‡úÇoSÔ?ázÂG(Ù»p¾Ô?Ô?Ô?~›¢þ ×>BÉÞ…ó¥þ¡þÉFýó£=øzb… #\´cic |8•ËüMñðqÑwÄŸòÇö§[ƒûJýãÒ¨A ]ÔÔ?Ô?Ô?Á6ï‰úÇ¥Q‚蹨©¨¨‚m&Þõ�K£ÑsQSÿPÿPÿÛL¼'ê—F ¢ç¢¦þ¡þ¡þ ¶™xOÔ?.�DÏEMýCýCýl3ñž¨\%ˆž‹šú‡ú'õÏ¢þ·!¾ó6(ê|Ê.Ô»›ššžžšò¼Å‹óg®ÙUÊÙ—æÕ+ÔojêÕ+Ô µTuÔ²›Hóš}iÈ�"@ˆÀBD`êmð¼œeOäæ.ÄZ²ND€"@²�—/''1î}ý}°?îÍÖò²\D€"@ˆ D€�…‰À�;Уª—èJš(>v¼”¯”Îæïz–ò•Ò¹ò³Ó¥|ãÑ��{Þ™3ÿý¿ÿ«åyÇÞÏ;|øÀ�ÿð<ïúõçÏ_¾´sõŸãñõ©?IÀüm¼{iþããíí_íyÿð>|옪çáÞ÷Çü×}ý:rHÎq.Í_J¯®aiR¾oÞ¼|ÙÓãy¿ÿýÿú_ñž÷3á׿ö¼ÿó._~ò$Œ³,Nž?(e<¡bþ2\¥8%‚=h¥|¥tÌ?1¤¸JéË�ï_Š«”n!à¯ì‰¿ø Óž8räÀ�?ýSeO¼z[ËçÏïÝûæôK¿þ5ú'üÿýï=ïÉ“xÖGæå¯¯ïúu”ë×3A•óÏÿ\•3¬V~=cߢ½á«Wè§Ãúoôë®›¿ë²t)_)�,WŸJÊWJçs–ÝIùJéd¹úTR¾R:Ÿ³ìNÊWJ'ËÕ§’òuÓ©öõ·û¿ÿw"ö±›¯*«”ί™ìNÊWJ'ËÕ§’ò•ÒùœewR¾R:Y®>•”¯”Îç,»sñõǽGŽ|ðAظW–O•+ý;)�¦—^¥|¥tÒ|5�”¯”Nó•^¥|¥tÒ|5�”¯”Nó•^¥|¥tÒ|5�”¯”Nó•^¥|¥tÒ|5�”¯”Nó•^¥|¥tÒ|5�”¯”Nó•^¥|¥tÒ|5�”¯”Nó•^¥|¥tÒ|5�”¯”Nó•^¥|¥tÒ|5�”¯”Nó•^¥|¥tÒ|5�”¯”Nó•^¥|¥tÒ|5�”¯”Nó•^¥|¥tÒ|5�”¯”Nó•^¥|¥tÒ|5�”¯”Nó•^¥|¥tÒ|5�”¯‹Î¹¯Hzt‚ÎHJŸjºlÈÐ_|ñ_þËý‘çýéŸÞºuåŠçíÙÓÐðÿ£çýêWÿîß}ú©ç-]ª^áìë?>ÞÖæy¿ýío~ƒ|ÌðÙgž÷ùç—.ýÓêy»výä'6˜©ê~öùy¦ ÿÎ΋?ÿÜó>D‰‘'rÂÂ�_ÿñíí¿øÅ®]ž·aC~>âS]/)¿tÕÑ¢©©áaÔ÷þÏ¿ú+Ï;uJÕÏžŠŠŸýÌó~ù˦¦÷ÞóÒò¦š.}õGIƒ²öÄü•\¤ú½Jùâ¿0õﻢÆÇ[[Ãí ô³°'þÙ?‹µ'z{oÜøÃ<ï7¿ùíoOŸVšyÏÏ;qâÿã¿ÿ÷=ï½÷Â÷®KõŠ”Î¥îß?sõûíoO�2ËùOþ‰*§¶Ì‚½Klþá½Qtþ““ƒƒè¿ÿÇÿøÍoÐë¼ýþ{õê`žæSlþfª�¿OcÞIùJéÞåü±Côܹ?ÿóÿï=ïßü›ï¿ƒÝ_ZjâíßëJކÞÏ+� kÖx^]ÝÁƒX(úÉ'Ç�c¡hCCUUy¹ÿ먻wÿÉÉ¡!´«¿üK´/_ùí ö±¤r-¥{ðWãÛÿüŸ1¾ý«¿ºu ˜Bnq•×?(ÿø-ÞßÐкuÿèyÞ_þerãdyþÈ1õãÄTçÿèÑ… Ç·´Ë{úôûoˆïèøå/õ¸©Î_å*ljù9^R½"¥#þÄŸòÇö'Õ©¦£þ¡þ¡þ¡þIµ^‘ò£þ¡þ™ ýãt ë�”ë%èêµ*Åââ1›ôlÈåPm5ô½r¥¤ñ÷9á—xýá´*ÍüŸŸ�©‹º:g;Ñ×΄åËÕÀÀÇüuªïÓ…i銘`Ö R—ûÍ›�««=¯¢bÉÄ¡vv �ùåËý׿ú•çýÍß\¹20€ 55?ý)v°ÿ‹ñÑGþ‚†Äñ×%Qרú¿|Ù×wù²çý×ÿú«_ýÍßxÞÀÀئê?þø�þè�ÿØó>ý´ºZMÝG½ÿÅ‹‘RX¨[’ʯ¨(ø•¿Æ-*ݯETþ>E¼»(þº”H�÷ûÙ¦1ÿp„‰¿’ëptf+uþï)áSþæ‹üå痕ų'Ö¬�=a‡Å‹óòl×sQ‘çi·y¶¼ÿÜܼ¼ÂÂ`éÍr¦«ÿóF}h&,ï`if÷” úçõëX{«°PÙ[ò'¶½5»úÚ¿žËúÃÎ|ò¤½]9oµÝo—ÐýŒ_^™ àóÛßþÙŸá›6ýâò'ž÷ŸþÓ¿þ׿ü¥çiƒâ²@IDATkÑæ6—õGYæ.e‡é ” ú8ª| Q�ö¯F"ÞulL�o[fB<ºÄÓÞ¼ÁB#÷89œsÔûUo_½ÿð_¦&6Õù—•­\‰5:¼ã·3›6ÕÔx^y9>Ôæ‡Tçïs–Ý1 ‹Õ|•¿ØšÄ�áûçû§üǶ¶ÿù2þ�}w‰ÄPÿQÿQÿŶê?ê?HE¸vˆ•—dcæJÿ 賟XHõ»ù•~¾/*ºé jšwaj6:>ZåæVUyÞ¿ü—¿ûv^ìßßÕ52‚o¤ååUVb§ØöíÅÅѹ!GY˜[üW­úðÃþϱÃíÏþìÈÏQGÃVVÖ׿ÿ¾ç¡ŽQ;ƒ:;OŸþÝï°3E/1;xÐóþí¿µõ^fWÿ©©�ììûÝïNÏ?Ϧ¦ÉÉ`Âó×¹û¿TwQ #šNs Ï'ZR\¿³s >û­!/bþ «¨÷IâŸn>ª”?ÊHNŽþ?{o�Uqí�ŸH ¾-\Q©DA¡BÅ{ ­„j«`‹–ˆñŠÅŠ¢Hj�¿€ZD¾DÐÛ(RAñ½ô+ JÅÐê{ V[¿ DDA‚A0ÿüœµ��3óìy’¨í>k%gföžßžÙ³gÏ�–Bwé¹éMëSìOìÈÍŽ¤ÿå¦7é¤ñ?J¹Ù‘ô¿ÜôFÖ÷¯úûç›Rÿü/žóT?è�¡û›ÚŸÊçÓ*Èâq¾yòÉåÚõέ¡V!½5hЪUûöIÒ½»ï B»¾á|Ñüž7¨C>ŸOZ:�ÃA¹°»¤}û3«/�Ÿòé”t{¿ê×Ç>3mßUU*®ö…é�µUÿzÕ:>•»~}Pxù°ŸåNºÖ¡ /ß/=&_¨v:ÕƒôcS˵Üi$_ŠÈ‡´}¦u$úOëDìŸï7>­¥Óx±¿´ÖjÏþ ZµêÐ è™çÔnnÙ�î¦eŠNmûŸä¢´TbŸ¥!Ÿ¯ü”ßÅMó‚©„¤â”ŸîaœÃ•Ÿ.‘™R“òÕ|«Q#Ò§’£æ[ùù¹Ö#×|f-Ãᚨ¿‰NxøjñرIrÓMÇã¡ÅnâÏ˻ᆑ#“䥗V¯~ðÁ$¹æšqãðb¬yáÐQ£ú÷Ÿ9;Ô׬ÁÎô¶m ü2s†ÃZ>Ù§ËëGçó¹8þ8�ÃÉ·­�ðt¯&¹Ž¿þþÔÚó¿TZ}Ï­Ü:æé+[ÿ£Q‹‹KJðé‚¡C3Ù¹æ·C¹ÊçóÙrB1ç«Ó?~÷vè`ÿî¥zðå&ÎÌwç««¿*¹È÷µ ßn¾\é4GôŸÖšøÞn|ZK§ñ8bi­‰ýñvãÓZ:�ÇûKkMì�·ŸÖÒi<ŽØ_Zkb¼Ýø´–NãqÄþÒZÓöWýXËÿˆ€Sl( •@¿âÝ„p¾©òQîtÝ?Üú:TQ�£ïvìØ³çÓO.ÖµlÙª¾�H Å$qïÞ�;·oO’}ûÔíàÀÛì­Zµl‰ìÀÛ¹3I^{íÕWßz+I>ø`Ïžýû±]¿>øZ·>ùäÓNK’víZµr�M„ŒªªÊÊÝ»“äí·_{mãÆ$Ù¶m÷nìŒÿì3¥™&MŽ;î”S’äôÓÛ·ÇzsÇ>•Qá(~èçÀ�$Ù½{ûvàêý;Mš`§}óæ……TGÿ·gÏŽê+IÈË÷õ¶lÙ¶ÍÄC‰Pÿ÷ÞÛY}%IÆ«/päçãQo«V-Z`§¤£%CíJ?xPÕçν{Qž}û¶l�<ƒ$\Û·o©¾’ä£�ÔW++Õá… 6oŽ¥‹F�è›îºG©œô% 0Úmï^Èyíµ7ÞøÇ? /Õnæåa¿yóc�ÅѧžÚ¡ôNtCõ ò†èŸ¾ÿ®]Iòú믽öúëIòþûüÙgª<ÐöýÖ·p$pÇŽ§ž ½6nœÞ]Ö/'?T.´?ôPQA‡A(û†¥h=½þúolÚ„rïÙƒO,@K(o—.ßÿ~çÎIÒ¬ÙGøÚß쯽†~§ÎD@yQ{Œ~wòÉ�:Q½I×J;öÿP=Ìú£ÿ½ûîÆ�è�›6mÛ†O8€…þSXˆ]?ÇÛ¦ÍI'%ÉI'wä×–ä�ùäCs;vlÚyååª}ú),Ic4nܲå 'àÅ–SOm×'A¨^HzˇaÿðX½vO½Ù¬¿)—räåÁ“dçN…ƒ>Œc£›7?æì˜õ-+ ^ð#ðøN-®£�ÖrAß¾}ãF´ë?þÏ•$û÷V}áSíÚáÄ‹Î�O<‘ôë+WUUEð_­¾àÿ>ø`ï^”“êƒ~{<á„¢"¼øtâ‰ÊߨÒèÿÄïkp™é(÷Î�›7£ÂëbG#õEð©þüñøÜÇ©§AÏd“&Ž–®Ë룣ý¶nݸñÍ7a�Ê/¨¾�öÿÙºõñÇÃ.ÚµËü _>p²©?øéB>„aðïååo½…~NãZº�VÐÐ ÚZ1wX§å+»5í r0jàhs´"üÉG½@_`\|ÿ}|ÔCq)ûÅ„~­�|úA{ïÚµu+ÑݼyÓ&ØÛÇÃ#(h I“cŽÁ޾öí;t0û§[µ„ÝðÁÇc>ú‘G¦ç:_ºžª\Iþ8á�_-/óMÕ^ªß¸íu ª½0ÿ0ÛK£“t»\Ô.š�BõꙜ»wÃÓ&ÉÆ�ð˜Oh{Áøù§Ÿžiþ£ä£^J…ܨtü'N*îà’K'=a~VWã�¯|(ŽlÇ|ö‡yæ[ï¼³u«YšomÛ¦æe�ª¾ÀaÏ·ì<éúS½ËË_}v¿u+�Û( øóóahÌ/ÑŸÑ¿¹ ¹}õ éŸðÌ|¾üaЕWÔþ–òÓ]ãä磼�;ŸwÞСø¦÷i§áÇ·ÜÒ¿ÿˆúÛÞȇ•î¾ûñÇ/¾8I_?ôoº”Õ(»¡4ó¯Ç¢"¥Çc�õéQ—ÛDÏìÿÌqª¼üí·?øó4mç§0¯8þø$9å”࿚4ñ¿z¡åûµ Ø%ódzgÌÉSûûãRMšÐˆ©p(¡’^©_b¼Qã 8aíG雺8„Gò‰žþÝæŸ×ÒüŸÆ;=¯íÞóÚæÍéãþz„äSºª Å eõK’ì\ýj ۟ΩBT?7�¯¿ê/-ÕïPõ»«¼\ýî|ï½?Äü³VèÚG;vè€_@ЃjÏXùnù>ùäý÷1ÿyå•òrŒüüöOóÏL¿c! õÏG½ÿ¾ù»÷È#ÕïÞfÍh¦l—,ýûǯ§�_]ý>ßµËÔ~½àèxÌëÑÿ¡'_Oʤ7”HiÝ~ž€ñ*Ý/è÷RÇŽx®@¿Ýö·k©ð}傿¯Ÿ‹#ò¡�°žCí/úû“þ ˆÿq}­/ò#âÅÿÊø#ãoÈ?„Òeþ!ó5ÎÔÍø<Â=l ¾aÐLóœM„¿¹òÝšP—V¢ªYšÇMáë¯:Ê[o=úè¯�$W\1s&RÞµk’Ü{ïêÕwÝ•$�:©Ç �Ž…�Ç>¼oß$™9“¾a׳'v¾Ü{ïÅñª«JK±Ã….*µ¥_}5ø¦L<G¢¿ÿþºu‹%ÉE�¥¾ÞHœ¡{Q¾é8gάYx@عs‹æ+ÉÅ£ ”tìØ¾}Æ7"^QѰa $É¢E—_Ž"xT ¾›nºà™I|ŠÛü_^Ž�=—]Ö§�½Ã§¨åXµjÑ¢K.Áƒ<”ÀÌÞ´é‘G°óhàÀ3ÂeÀ‘ô7Ý„rÚeH’ÒÒùóW­B~uÈ^ «/,̽øâòå³f%ɵ×Nž¼xqL‹Š°cdþüY³~ùË$騱E zÁÌ­õ¯Sñ@òfÏÎFžÊ�/yÂ.FŒè×' Ø�#µ ùä-t‡}¯\9bì{Æ ²ï®]KKaï]„ò�qóÍóæùÐoæÏWýËíÔþx4†zß}wöõî×OÕ½øxE¸þR¨ÔmÛ6lxüñ$ù¯ÿúå/'OÆuò™r�Öµ+Ú·¬ì¦›ðéƒ3ÏlÓ€úoH¯••;v¼øb’Ìž=~üµ×b‡›²^â§ü>é8³´tÖ¬ÛnƒÝvë†ßîEù÷ï‡Ç‘ŸðXškذ{ï}òÉ$¹üòN�ðÀžäj;TQ¡púô±qÆŒY´hõê$éׯ¨Hy>•¯²òÝwqîùç÷ïë­kÈ�éÓѪª/>{ã�=zàu4ï&û§z½òÊÃc¡lðà²2òTÀLû%iÇŽ—_†ü»îš:ö»r¥™K—ÆBÿ6lút´Ûå—÷èѶ­�K¥•—/_ŽñkÐ 5~¡¼ð[óæ=õ”9Ÿ Ô‹ÂæÝMuë�G몽ðq–$7nî\_{‘¾(?É(*êÕ í5yò˜1h/ýmh¿þ‘Ï-^˜B)Þx#Ixà7¿Áx|×]¶e‡ä4e æ%êÛÞ´È~*£yweû¹t’‹”¯bü1åëR™¡ÊJ¼`uã�ðÀü|kàÀ .°ýbQüæ[ð{îË��È—^zì±ùó±#;[¿Ú»7æsèϘÏ�pÂQG¡ øz©:Æò�›pUNú¯ZœæVd¿±¸mÚ`^}Ë-sæ`þrî¹×\cΫ׮�6 ãè¦M\€q«m[µ0 |*ÝÉ~ GÌív .ÿ~Q�O£G«ñ‰FU²h[ž+ýë•W0Ï7ó÷ûïῤt*üÖÈ‘wÞ‰yÅ€g�å›W@ûTÁNéãÆ'ŸÄøÙeãÆùæÏ·ßŽ�/%ÉÙg»ã¤Zà|ñÅÇËe>ܯß�7Ÿb¶ ÿêŽÁ¦�ø·�qüßÌ™ýû£}¹yí½÷>õì èv‹ÙZ£˜)ŸÒp·µªlú';wÛŸò†ôOt÷nÊ÷׿¸'0,ZôóŸãÅ‹ñ㯺 ã[̨»ºñÆ9sî¼óÐÎ�}g­˜òUÙÄ‹BË——•��q‡fÈnÉÝxq1æá \ýüæÕýû_uÆoÅWTTZŠþ¸hÑÀ�x‘�®¼¼ýûQ—±cûõÿ† Jóšÿ²Ë¿nMÿïŸÚÕ•—îÐ[MüN9RýNtûÉ ßµ>LžÃ±?‡‹|ŸŽDÿªÿ¦ýŠO[ñó”tn±¿´NÔ¸…qJô ø4d§ÅêÉÎ…˜]ú¿ôéâbýJ,ŸøWâ]� ^[ãÏ>aµ‘–{‡¨™ÒÔ•|¿ù¢(�®‹Nu\‡ü�ƒ4�B ­~ý‚ìÄ6/ì¤ÆCó"é âýróZ³ßTtΉƒ �ât_»vÞ<< üÕ¯ÆT_Ù,œByùÒ¥x0Ú§Þñp©£ÎÝ:¶níþ´®ªÂCu`¨)&5Ü.1¹ÑÊth|¿Ë…£Ým ð—håÊÉ“±Ð¿pN’ÊËñ pðà>}~û[<€UûÁˆê»ãÁÌÓOÏš… ÙËSˆø’'÷ì9u*‚°óÈ'ëpÓÒö½afzÀhÊ4K…z¯^=kÖ•Wæ^ï¥K©ÞwÜ�#€‰Ëߪءòâ‹<€þTZ:iRxá¼è‹KaÙÿ7l@û––öï?aþwïF »þ�äWTà2Úå‚ Ì…sŸ©J7ïxÐWV6|8*F�^´è¥—°0er˜òóóÝž Î hg'�pý8Ÿ}F;‰Oݪ¬$Ý›”¹sG�ò-œÕ¿iÓ lŸš—gö‹lÎ ^þ·¤ä¼ó¦NÅ`_)‰ö³ys¦öÒœ¡¾ª ûèÛ·¸ Î7ÚmýÃáŸû÷ϼpc�ãÇk{ä­*T~J×£)Ê¿|ù¤I8B6Û…sB+/_¹ —\rÎ9XhÂâ®yaA ‹¬öµlÙŸÿŒ ðØ8|™ý;×®µΑ/6tëVTd.&âõ1¼¸pÁW]•íÂ9•ýó®»F�‹5³g¯_�º…ô�Ž˜c-ø|ó ¦yÅé®[G¥˜õWí5q"Ú+´pN8�o[¤¢”—?ñÚ«¤äœsðâJxþ@òáƒUÝ1ÿ<ø¢‹| çÄ’¿víÂ…7ßœ$ç�7f úv ú/U~Wv-C8ÐS]�?$;æ�ݨQ §ŸG×Ô¤WUaGäOL� ÿ”íÂ9!¡?ã-ôçÑ£±µkvÌÓ¥Z…b‡OãÙ=ôHKóSl­4nܹóOŠ…d,³ÚÆù_ܼÙößš'\�³]8'èQ�OJ�ðjlw-šr¨;Æ©§Ÿ†¿ìÓ'Û…sB‚ßš1ã†0¯?þ±Ç°c6}Ùz&º«o7¾iz–á ¬S¦,^ŒñÒ çj·zõo~s8óá¥K§NÅxqñÔ©ÏuÚíOõiÔÈýÝö j>üB(åÅÝ­¿IË&œnõF�ÒiiDW~¬ýRºþx…/lÆ/œìjêÔk®Áxûä“›6e¹q*¸õ« .Èfᜤ­];wn’\q…½pNÔôïX¢Ô«ÿÚ²¥­)Íï×zú÷OMéióf¼¨‘é‚ ×ÔïDô õ;1“Äxškñ9k†SäC5£Ë\PDÿ¢±¿\zNÍä‘þ'ýOú_Íô¥\P¤ÿIÿ“þ—KÏÉœ'ëtüœóÿÄW‚8zæâðTŸ£ó2spø™tc"‡»sf3OË�•¨¤‡)¥ÓNá'Ÿ\³æ™g°³nõj<ÀŸ5käHrã,¾¥ùî»Ë íÜùüóÀ½é¦Å‹ñàɼ wäÈY³zå¶úJ’gª/ÔgñbX ÚÛÌ�Ö|ä‘ñãAß°!¼è`ç1ciû7©æòƒ�N1ì¨BûÏ™óÐCÐÿŠê ö½lÙòåXÀ¤vìxî9Ôû׿^¼Ø}p‹#SQoè�ê�Ú«zÏœ‰KÜz'ÉÒ¥ãÆ©zã“ ¾VEúªUóæáÁ(]°Fü 4vì=÷ }Ÿyæ¹çð@ì|Õª%K°S¥¤„Ú˜ò¢ýï¼sùr�è^��vŸ;{¯TylËïÚõ꫱#Ù2,ü?ûìóÕÚ÷©§°ó-ä°0xÍ5IòÇ?fןµ]Ú¥pË­ÛßϧénN×rl:ÒÑf¥¥S¦Ì™{€eÀ�-«¾ðÀõg?ÃŽÂÏÔ/€\RBí¥ü(õÇeË.ÄÎ'ì�7Kù�<‚ÂsçBÏô� “r.¼ä´—{a_9úùâÅ+VÀa�è�«W¯X;…÷†DÈ157nÜ­·‚®Œ5ýÓµG’Kö¸j,ôÇ'Ÿ Ù#vòÝyçc�á¨y»„ÊßIÿĉ@ð uòdÚÓE”$éÝ !  <ÔOaÅÐËòå>ˆ¥[/8ià‘GÖ¯we±Síì³GŒÀžya!öùçßz VnùL>„ؼgÀ·˜WQÑ�!çž ¿¡ÏæÀxøä“3gb¦{Á‹aô’%ÔÞqýóþûgÍúãq¼ngÛMEÜLK×/»ù½°3y2ZM_°Õ^ ªöÂH½R{-Z¤ÚË<°ZåÇüá�Ô/d*ä˜õ¡ µgOØËÂ…èïèµ�¿¶ú‚ÿ»÷Þ Ò/O ÷š57æÌY½þ4­’ î�£äÓݦ“¶¿ŠñÇ-‰/®ë§æ['bæbηÎ8ÃÎ×µ+æ?Ë–©ùÍsh¾e¾,‚|Û·?ó ^ˆ¸õV´‚Ò†Ù^ƒM˜pï½ðKkÖ ›ö�y§oŽ ¿SZzǰ{šc†´™™.]ÿL\ŠÆÙ¡Á¬­âÀÑßgœñã»~Ôª*{¤ òmß¾n^"=’,Ô š8ô´|ÐÔ#x©D>=.Ý!ÿ½÷Ô8uÓMéÁ˜£Í™Ï¥çèehñéÓíß$åÊI“ðѺu;vØ5&Éö=¤{,ëÃ�””Ü|3Æ=º Œ�S¦<ôüÉ9çè3-ˆwê—Èí›�1s¦9/„±çÃJÿsÙ2s^¨µ­9 Õ‡¸h^{Ï=‹c<ÒóÚG½ývœ4E'PŽÜîér|ò Òè…I²?ÝÕ‚æ'kÓ)¥åÚtœˆ†ñpéRüÒ~aÅ üB{«Ù1äšpîüHhqxãÆÇCþ²2ûd"’>dÈí·c,Çüó çžS¿w—,Áˆ�$ˆSÝ]ù6ÕŽQ�ÍòªÆæ3c”ÇL3Ã={¢ÄðÇèùZO+Wþá˜÷’ž(õ¿qã~ÿ{Œ‡••ha¢ê{¦ù0úUø÷ýN´Û%DÇïDü.¢‹³/ŽN8¹Þ9|Žž«\ÊÇástÂÉõÎásô\åR>Ÿ£N®wŸ£ç*—òqø�pr½sø=W¹”�Ãçè„“ë�Ãçè¹Ê¥|>G'œ\ï>GÏU.åãð9:áäzçð9z®r)‡ÏÑ '×;‡ÏÑs•Kù8|ŽN8¹Þ9|Žž«\ÊÇástÂÉõÎásô\åR>Ÿ£N®wŸ£ç*—òqø�pr½sø=W¹”�Ãçè„“ëÝÅÿrÝ%höÏ%î G׸vè_G¾­OÒB¨þH'Ü]ý‚jr¸t3/Â!9=zŒ}ß}8ÚN�†oþá ø#Ž8ê(|“µ[·F�®’ßBLQÑ Ax05a‰Å7aémùùXhÛöÌ3qääÉãÇÿìgn©T¹|ÆBåÕÌÚãˆì† ñ¨¨ úÂBtóæöžtì§CJ“&  \8 üGU_G|ÙÌòÙøœ~óòT} QÈoÖÌÜ¥EõiذQ#”¯^½‚’ÔQé£Í‰ß,ÂTޱc-¿K.éÑ |Ôn 9IÚ´éÒGåO�ªŽuñ¶lÙ¹ß.uÓ! h+V”•¹‹= MœøÐCxÐ=`À÷¾‡£5ÑÚ8 ¿úB}Ú¶…Å`�vÁ,ìÑEræÎ½ï>켡EtJ'>}ÏVÿÐŒÎM!<¶…}.Xpë­ªoYcA¬yõû>æ˜o}‹Ú l°¿õ†t³&,^¬êÝ­[Û¶¨÷G Þ¨½ªw÷îØ15wîÂ…f½©sçΟ�¥#ª7¥ãAø'Ÿà‹±öƒ:Ⱦî:µ“ ßDu¿ ZPШ¾iß§Ï/‰Ö#G–” ½Kª/Ü{÷>î8|ÃX_ª6»w¯_�rÐCd­õI‡+îº ;¬N;í˜c°È�:â—k±C­{ã�È?av¶ÒEv9mšzàF DW–¦cÒò)EÝ‘n¦>Ò|ílÒÍ|ÄG«3f,]º`°Ï9ß mÕ –�oŸs ì¤qcµ° |,6ÿñ�ee÷ßïJH’!CfÍÂBÀðá}ú¨öR~”úc«V§œrÖYI2f z†~ÀªË¥€oܨöEQýwï~é%éO}Q׳o_<8ž?žýPöˆ6+,lÞvŠÖÂQ³£G÷èak´¼þcÅŠ—_¶mòÐ!|öhóã¥$m��Û^^—ì;tGŒ()Á¢Ùc¯^­[+MÚºÓõ·ÓíÞ§ýžæ*(@û  Jî'>ø vžžsN‡(ù'àA/-Z´k×­[’Œ5uêĉÊ*Íz¾ðÂÛoø!¤˜©XàÆY ér¬\ù§?á¨âÏ?GËèÒ¹¡7ßT/n¹é%%Åŧžê¦Â/ÿüç¨jˆ»Z(øÿþ?X*ü;¾†ê§L¡WvUUy9^`ؾÝî™ZÿvéQ{SÚî/3=]£‚‚cŽI·×øñ< Ú«}{Õ^IT»¨ö**B{ÝpôiX˜pË�öÚµ+�®å«zézj îgÏÆ^]ØKûö°'ôZȯ_}ÁÿuêÔ«ŽÜôѲ2¼XäÊ_¶ìw¿û¿ÿW½˜`kPËAHËGHÓt:¾{ûUŒ?vyÌ’épºÞGû£ùÖÑGãã7fÌtÔ¼DÍ·?f]4¦€ÒñÂÊã�Ï™Cc’JWö5räœ9Xp:´W¯N�”?Vù©?aÞyã�k×>ø ú‰Y„ÕNÌÕ«ýg|˜ú·sš­”®¿*�ÎáÚ…¦PÈÆÓ©~ýSê·¾uüñêSE*ÉÙ¾_&U>ôW�Ä1|øìÙG†=.µ!ž~Qéqͼ ‡¹Œ]b¥Ç§Ÿ¦“KlêÇ¿ðÚ‰Æ)’‹W8q”õÒ¥eeèG�;·iƒñ•l ~ýF�àzôPó Ìž°øt’€ëÅ‹ŸyfÓ&� *Ñ‘Jz19ÆÂ9Æ¿K.Á« 6¿gn»í÷¿W çøx‡¦›èqN êæÊÁ|/$\rI÷îmÛêñ^xz>|ß}ðsîEóBs±<$òÌ<$ÿŒ3 ÂI Ž�ym—.mÛâ[ß4¯mÕªeKû…\E‡!ÇÔ£IÑa"ù8Û;ÁÏ=·[7È¿üòïŸÔèV}!¾¬¾~}Ö¬Õ«ívU²¨Táú_}5¸ï¸cð`Œ‡Ç«¿VÛjÞ¿€0Ã/ $ùîw ‘ê²e ~ÿ<覫�ç�>:iRúÕ<̳է¶®¼ò‡?Äï.òfôû¯MŒ(׊(^ÎÂ)>=ûÒÑâàõñ+´ôÝ.6 ½õŸ6í¿8ûlõ­qš‡AOM›¶n}úéZOô2®–¯ôtè�ÛUUª_¨ß‰®|ü^B¿0 ô{‰~'fî47uñíZ¦û¥KÅ}úW¼¶öE¾Ûþ¶F9ýØÜ:&ú‡´>tÈNåôËÑ5®ý‹þmK#û°S9ûâè„êÞÅþÄþlK# ±S9ûâè„êÞÅþÄþlK# ±S9ûâè„êÞÅþ¾™öWýÈD]ᆷ¸üÝ6ÀP¾ùéŽàÖ߯ÏPý‘ÒÒÝ|¼ü4Týüç½z™èˆË”�Ú­[ã°Þôƒ€ /<ûlüw/·<ÇÛ®€ú._MÝúQ>�ëËE\¾;–…ÒWH4œæŽO¡�nÈ3i!ù¡ôªª=~ýk<ð·¿õìÊ!=5nܡÿÿ»^°#>œ ðæ›IòÉ'�D©ØQ²};¾‰}×]ö>zsÞy'ž¨Žâ6séü:ê¨öí±à4q"–)ÌkÃ| sëVµ�ªg¶ú§úš’`ß×]7hÔ…¾IòܾårXÆ~l<ëÕ«m[zð¤døë_Xؾý…â…Ñ4— �õ‡ ÃýîÝ[µÂ‚™{¹òÑ/Ðsç–—Ûxê[“%%ݺaŽ.­J¡ZÂߎµ`€O™2½ú J3gþâIòío++ƒ|ø‰—_~úiìd£ ¸Øë‰ó-ðàØ¶Iâ²ý4/¼ðºëð�k÷zþùW^ÙºÕLUGáûŽ7µí‘êcæE¸^½ãŽƒ=â#Ú/¿ËåM�cš#„¯8 Õ·‚‡…Å+9¸Ÿw^»vX¸ë_åG¯9åµ[]Ë4�¦¶åçç·j…ò£GŸq†Ùþø0PÝ£ÜMù8A`Ý:÷+ÛEEX�ýÞ÷Ò~åÇë8°ÏáÃQCÜÕB�Þ¹k—ϬÆëSNéÔÉîÿŠÃþ�Ö?ÊkbPØŸªói>ÁÎj¯^½Òõ¦ÛÿòóÛ´Á‚E¯^¶û59* î$Ÿî& í>vìW`áÉöŒ+¿eKõ"àðávûc¯-Ny÷]s9SK·¥¦õ9hɯnüQòÝr¢¤é43Ŧ£UlMãµ0ó²ù‰òùçï¿O~•ÒÔ½¸ø–[ð‚XçÎ4&Ùt¯AØ{I ^õ´9[±bÆ-[Òé_¨ß[SßÍkÓÓõwõaóZH>µJaa³ffýIÎË/oÞŒsº`?û›Ÿ(MÝ‹‹á÷/¸ K‡xÒòÕ !=>þøúõ#ܺ>§þþ÷uëÌqŠðG޼þú‹/ÆÂ�æ'šB¡šªÔöíúSœ`4kÖí·«q#d’\}�ÇïæÔqÒ ô…ñüÝwׯW Û7Ýä.êcÂQí™vœS© ×¿þUχIŽ9ö�ÁÄG%Ĩ�yaz>¬æ…ï¾ëÎ •¾€C¸#ކ 4Ÿ�¯÷]à³sú¸ÒþHsùÛˇ‹_ ˜Ñ/†Ì÷òêKKY¿~Û6×S€Júwk�8æ?×\3`ÆãÐ¥ËÙ¸ñÉ''ÉO~âî ß°Ÿzç�ÌšÒI1îË1ðÂÝÏ~Ö±£ƒÍ\éRTU5k†2‡;Öw:†jIŸþn�4’–…]_M‡ž† ¹øb”Ã쯚ÔŸYO[¶Ø3ÂC‡Þ¿é÷É7û…ýɦt�Pê&¸¿U¿ ß‰f™ãÂ1ÖoÖßEõ—×å ÇE~X7š«ökÚŸªsr!Ñ?§!ÐEÿbþžæO�±)Å#ý/FWÒÿ¤ÿù{š?5Ʀ¤ÿAâblEüOnþdzd£îlxl@?°Â – v oÝÊw›Á­gÍ×?í Pc�j×ßÕ•Ï} îòéøgŸé° á‘Äi§µnmîÜ §8²™DÇ�xì»®‰�Îaò>ÒRÏÌU“á¸r†%úË[\ܽ;ùtnbéú4mš$í۫唵kÕÁäyyê†î¸ÊÊ�«/I…7lX½ ¯O<Ѷ-„òòTöËÖ?Ä´�7hú«¯š�Ëøãí.]_Š«mª?-Žêr¹œ íÀUoÊGü6<ý4Èž|ò¤“>ø¶tà€¿¾ ·ª*?ô×_߸‘,qº¨<Ç( ÿàê1Û#ÕéG§Þ|óÀ�¸«�åݻㅈï|çôÓ±øío·iƒ…[}�B¦z�Ô}pçÎmÛÐ"DG:–úO;íøã9›",ºCnïÞêhëÅ‹gÎD9qíKõW©ö’¯´fÓr‰žÎ›I:J ²±ÁP¿@üÎwÒýÑ-ôlÚMË–:à8vJë2Û!<²¤ö2)xã™gþô'œä°kWa¡‰ëÊA>Ôû…^~Y£Pù6Ì˳õР^Èøþ÷•=.]ªŽTFNŸ=öê¥ìñôê œ'�¤ì;÷Mßâ+—.MM„ÂÄöíï½·mô²küØÞ½{ö ýã�+*ÇÄ÷íÛµëÿH5œ©$xpÞ½»ÚñŽxô�‹.Ø¡_T¤°“~é�¼»ˆÓ³gÿþ?ü!¾ušI¢¦UTìÞ ¿»eËÖ­¸ïÝûÉ'xéfÿ~U¯={ QŸ|‚WÅ6m"O¯12…¨·P¹•µfÊaz5ŧüå!DO·¿n/ý¼k×Î�xQˆêõñÇûöaWfEÅG¡>ûö}øá¦M¾ö •Ô–O¥Â»ìz÷îÖÍ^�39üa´ÿ™gÒ‘Ú6�¿C|óÍ÷ÞÃQþX�éÑEJkMq|uã�[ÂÜ⨯™Ó­ºý·ëW)_�Ý»Ã3f?&uíúãcçg^>1³f�²�† 4éÞ,wÍ…m�„êÏÉ«¬üôSß1Ó'Ÿ|Üq˜×ÑEöCqS�8á⨣¨ŸØå"~÷Þª•Ò#æøðsdëУÝÒ8ÞãÔ{ï™3=HÁ’XçÎßþ6úC|ý4À¼¢[7|…Ü-_¹rܸË.Ã<5]OÌ€§LY² ëçœÓ¦�oáÛ•pàÀGÎ|˜ðh^øÚkJK(ôH­b�Á”+|OÏ#m^§ÔxýSûî¶9¨ð£W_­æ8‚êcÎGÅ•à‹+IN<±{wœd•Í…—¦Ž<Òœ]¤s»õw9@ß¿/ cV¬¯ƒÕ—ù;•(½{ÿû¿c~c3ÈCò[·îÒ…>n¡gRšNø‡{‡<qô;Ò“«“×k$ò—˜WÒ½¼|íZ|㲬LÝ]ùgœÑ»7v´ríµ—^Š…œV­ÌŲWzP«Ë]\Œ*ÇoïqËNqÊGòë×oÐÀ”>}ùê«Û¶áÈÒöíi‡©Ý®„cÞ‘—ʉp¦‹ä›ù©­í|q©ÀA¾°|û�-É?óL¼B„œ$Ç®'(¸ˆ_ÅÒÿCòÓË*ïCÝq¾IõO#fN¡|8XüÕW±PyñÅêHÒ¼<Ô´G�ë¯ÇÔ�![¶¨OØö¸qãºux Œ}Õ°K÷êÚµwoÝ{õÕ×^ {víÑåçôGüTnÒç¦MÏ?ÿðÃI2vìðá3føX)gÜ�ðCÜÇã_ [¹rÕ*¼ pé¥;š;ß|sÝ:|sÔ¼°²_¿³ÎjÛV§B.bÚþöîݼ9I~øî»ï¸C}jÀlª?W^-ØZËf:Â�®þ¨$ŠÃµfMu)*:•pTÍ6mzî9ØÕرøjpîíEõ75¦$Ùÿ©Wš©X€ÁÌMõÒú7sè0>ØqôѺ?“þé®9}’A%IšS…TiÒ8jÜ­ÍñGɧò†Z�¸Tùµþuº Q\Ù¥¹ü”Nã.Å©þð«8’Ú½ˆžÆ£ò׫‡1N/+„µkŸ{3ŸŠŠ~ýü 󔟯?9;qË�.¯Í¡´šÆÝ±£¼'ã¸WÛ¶'œ;Ô—iÍÊÊP£®]O=zÌ^¾Ò£;¶C�o½¥ô¨Æ U‚úõI*Ž}Òæ¼ZͤÙPýuýWÉÉ„N²3¿Êãû`”î•év­_ß'+/oãFø1̇횛3‡)_h^ˆÜéò„0 ÍWZ¾ýuoõç't’ž—׳çO~‚Oß\rÉOŠ…eâðç§|¡{¨ýk®þ¶d²Ýk¨üT›¿sçöíñ²åK÷'Êo׿Aƒ–-O: /l)<:ž¸µJñË' Éws¡¦Ë«%#Dù)ŸIE�HOÄ>ÓË?^™x\˜ÊŒ~ñ·¿©ß‰:¨ß‰$?Þ.”4®þœýS™E¾jÑ¿ÝÏÉ>Bw±?Îb¨×gÖ«ô?éècœ5¹ýPú§1éÊfÄÿ¸}ÇŒ‹ÿÿ {༉i3ÄÏõ,•‡ãúzèß³€î/8: ŠLP¶Šs޳åûK®­K éÕ§ÿ�¬P:dÑðhÊ?åáå›9ÍÜ”NH�»“]é’è|(s¨Üš‹B¹É×¹ýù}ú§<öÝŸßæ Ç|ú¯Éúóz¤òûJ‚rã+ÀIÒ·o§N8 ”ÚÍÕÕÐM§ø§Ÿ~ø!¾Í}ÒIM›Ú»9H>!¨;å#y¡Òùsû¬ÊÆ×±B»vØ…Õ¯ßé§ë[Êî¡K*�[>ÂsÓ÷ïßµ õm×®Y3»Þ*G^^aaÛ¶I2x°:êùG?zñÅÿ÷ÿpôóŸÿüì³ØázÿýX°¤E4Â'y/¼°rå¼yIríµê>f̂ءŒå‚ÌßÂÜW}a™ª¿ûÀœäP}éNr}v…¦Miï qú»�ÕO<”Nq¡¸¾û‘]i~.ÝÞ®%‘ü½Õ—ú8ZPKÍ6”I¾«¸¸W/ìoÞüÈ#M{$^*é…âDÿ´úÂŽß#�ÄÙxîj¤°;Ã~ñ‹²2,ÿèGûÛÿþ¯¶Ççž[¸Ð´GÂ¥û† +Wâˆ\º�³páªU°Gza†8éîÊWéTnªÝ·o_·nÖ,Ù¡Ò»|±ñÊÊýû±³òÑoI.ÝÓ8T|�8M-*jÝã Ùçl.Êo§úêos¤c~¤4Ÿ™‚z™q„±óóµ×þúW÷Ðp‚ÓùÁ÷Ùg••´ƒ=Óøä“]¹6 =b绫ã´tu47ê€+“lÐ}ò‘ž‹þ‘Ïwaï÷Í7—”Ü~{’ÌŸ¿zõøñIÒ±£*'ßŃÿżÐ�Ÿ[nŠò 3s^ˆy±{!Ÿ›æ�§[ÀÏJõç'ùª´:/^ÀÅÞb:Ø;=м1!Ÿò�|Їïþò¿O‹È¡sQÈ_œlƒ_óòè…PB¦;å§8Ý÷îݹ3ý¢Xš›Rüò‘ º:Ý)7ÅéJ':ݺ¿Bw„C|”/}Ïü;‘ø©h_…o#S¿8é¤&MÌW{m.B«‰;ÕÐÆrË'òýz²µ–KÌ�+ú·û‡ØŸßNr±8;�WìOìÏŸ¤ÿùû‰Ý—r‰ùq¥ÿIÿ“þ§çýâü~"�cçñã†üÏ—�˜T÷ôÿp‚4˜ÚO1W ¥‡îÿ,òÑÉ3_Äak“ÓWHÿ¤7S&$ÐÒmIŠ“ðHn<¿)I…‘וA¸$Gç·¶'⣻æ£Òø¾Ê�;ð̸û¿–JòÓåU9Céמ�ªcÀ3>ZR|µu5®± ã)>’£Û9@SòðÈ•¸ªêqqI ¾É{ã�}ú´mkRìpX>µ‹]~Wº�¦Jeçp9TœÐýT¤‡�FåÅ!…¾£‹‹/½ôºë’d̘Ìõ&¹„Gz¦tN¾É�FmÛvé‚o]Òýò˯»î†pÄñîÝx ·yó믯_Ÿ$K–Üu×äÉØõm š$Ó¦ýö·X¸ëÕë®»ðmsô�GîîÛGPÙ°ßN¥o bg¦.sfýï£�¶oß±ÃÌ�ÅJü}´ý¢€’Fõ$=Õ¯_¯ú²ó›1â§´zõ¨ô”bß ×ÌG-NJ§4¿‰Hüt¥ICø…^GU|晹ìPÊ$_}öB-Ï›r±›éê«ÇŽÅ7Æ‹ŠLo’©ÿS�mýiù¦FýÑŽ'žØ¹3ì‘îjÚã;ï¼ñk~¸¬lÒ$¡ëÚão~ƒ… ^½î¾[Ù£’ùAŽ–ªCHw)Xø_³fqõ¥ù(Ô·ï˜1eeøFêO~ræ™xÁ€¬0]ìðÞ¾}éR,T?ñ„B }žO>ìµsçŸþtÄp-]Š�Ô*”$ë׿ý6¾YÞ®]£FøÆª»^Rrá…X`§^FòHÎÞ½¯½†fÜ|hiìä/+›:uÐ %Þ¦�ï›Æ„·uëqÇÁ.û÷¿õVÚõ†2ºº$þ/*àùGårIÈ—NS^Ž($Kµ×ï�ö"<’n//'$Éûï/] =è:Qó.ÉÑ~Wñ m½yó{ïá,•SN9áìXÖü !7}ß¾ŠêËæA 'ñ¨G¥³L&·‹§¸ÁñÕ�?�Žráî^ny]:Å©Í)ž$î|‹8\9úæÏ?ÿòËøÃå—û¿Ý­åØ¡ªª�?ƧVlïƒñèÄáŸÉP.ÒÿáÖŸð”Ö1ò×?m¯*Ç�7ÂN'O&Ϥ‘ðâÔg´mK>DQüöóÜsÿ;^È8ðôÓ›5§­ÿ�|Ì40ÏPçiÙÐã¿ý[’˜‹Z ¦Û°¼üùç1¯Ø»÷òË“¤E‹F�J¬|âµ µœâÓÿÏ8ŸÒX²äÎ;1Nþå/ãÇ_pæCê5& A£ƒ�…ý}´¬ G¾·lé—“—wè�^蟇õ™]ûëúøC„æRÃò]N'-úk¯ýñ™((ƒ=û8œùG¨¦Dεþ� $=‡°”e~öŵ´$yöÙ—_~÷]|Ó¼G�LŸ \’³{÷¦M8á‡ü¥“ Ò«*$RŠ)]—×NÕ1ÂÓ)nˆ8Âý9üÒµŽ4*^ÍÑ1 …'òòí’bvwWÿ\nª¯Ö¿�ƒÚËN ÇD¾Òh¬ÞDÿª_ˆýù{¬Q�”þ'ý=*ÖnÄÿˆÿ�ïÿ+þ—ÆóëG(�Œ?ÿãÏÔà!ÇAôlïÙÜ?ƒ|ŸëAþô—Ã|\ñ½¯|’ëãGup¢sü&…3ÝÃí¯êŸ–²ÕòÔÀïÒ -]ÚikçHóÙôlc�Jb#8 vVQªæ§ºç^¿¥)\WÿîÔ¡°°U+ìlÄ÷ ÍkíÚ+°‹!ê ëß–è´TT¨oôVTTVê>áJ'ììî¶<•7­W—î……ÿöo8j±kW»ÝÒõ¦²qõ?t•±Ü‚—ŠŠÌz •óàÁÊê ¢qa9…8ô+7nÞð:uêÖ ‘ãÇ/Zô‡?$ ÕÌ+/ï…°À¾e =æÊËü¶mϨ¾LNõ}Óuë^zÉ]·¹ÜXE þÏÿÜ¿{Ä,ìÛ¯‰ ¯Ò¿k›7oÙ¢mÊ•‘ŽoÚô·¿aa’.Ò=âÓqâ°ÛIËWý+ÍOùì{aáqÇ)û°Ó_xá®»žz*IðpW϶¿×_â‰H’ßüæžê ;ŽçÏ_¾ß’ÕV‚OœtR×êKaÓ,>÷ÜË/ûôÆÉ¯¬${T÷Ï>CBÖw×u©ˆ_uÕöرc·n8Êu„E‹–,�=º¸®=*—‹ÐÃ÷Š ,�m¨¾Àƒüªü]»â…‚ë¯ï×Ï^8'$»–••›6ýýïzá\s¥øïMštèð½ïáÈv›íÚõëÿúW|¢býúçž³óbÇâ�|Ææxä6K¶m[y¹¹kœF޼副Îm»&> áÛ®¯¾úÜsé¥7âÒwðC>¡Q\s„CÈãòˬ<Ÿj/å%tÿãÚË–‹oÉ¿òйp®è¶¬tyl=ÿ¹ÿþ?ý nù]~3Ž>¾jÕŒæ‰È�pP¶ò{HA.º›ZÏ”J\_åøCeÉîNã¶·BÉËsç[nK)¾ÂÂcŽÁ|ƒÆ$èœ8¹ °XÄõ_Z¾IóͧŸÆ™7*“FŸ/1ÓÒ\&5SXÉG~»f*–ö—6!§óïÝûÆødÃe—M›F\úÞµëÈ‘X.*²—°µý(^Â…q’ÍÎ�±òUþ×_ê©ÿóôŸ.-šjýÃîO>ùôÓÍq òÑãW¬øË_ÔØ+ï^ôóE‹fÍš=ãâìÙ8iä±Ç^zÉo �¤KW\|î¹ßÿ~’´iSXˆ&úõ?/#ÑÚÚÿlØ€­FŒ¸çèÇ7ß*ôêŸ?þ8ò¹ß�FiÌòè’Q*Í‡Õø»ÿgŸ}þ¹ærC!4—�â_ˆ7ôAé¡{,>•^ã¨öwí<,?�¬0¿’[>*‡§ÛŸðmÿUXx §�†“]QÝËË.ħb^|žÂ¥í_ÅÕS>lã±Çî»'ñÐ¥å#ä%B5¥Ûå'9f9TZœþÓù¾››üvè÷’Û/ü¥TõWؘqš¿—*+C}’êè»ûÊï㣴°V‰#»»ÈÏN£Ùqóm!úÏN£Ùq‹þ9 ˆýegQÙqsÚ7Çž"ßÙãôâûÏ΢²ãi]§‹þ³ÓhvÜZÏ¡�è?;�fÇÒºN¯+ý¹€®EÛ!ýCÏN?ÜX,n,_¶å‰Å�åƒ|ßO骪† ñÀÎ~Ì¥àråæä“¡¸|¾²@V¶†ƒ[³C¯­‘P=”U�ìv _ ·16lÀ‚ÉÖ­••vº��bný)=þ~ð OΟÿüÆØÈ]¾¼*Õ+;íÇ·³f8¢øüóÝGH6àÃsæ,_þúë( '_=ž:õ?ÀÃ9_\¸÷ìùÛßbÁÑ}ôfk$ýûtEù]¥ÛÒkÞÎÎ?¿G;�[oʪÿž=ÐÏ´i?ø4˜®·m7â�ÿYgõ¬¾ðàW’\qÅìÙX×—]*Sÿj7öSé GŒžpެ¶÷Ü�rJϞ矯ù(´páˆwÝ…„j 7­'-GY>ýôܹØù¾f 8 ö¯¾ ûíÛÛž/¿úr÷$"×âÅóçc¡Ï}8îÊ?xpûv,HΟ?mšÞ}ªý)Ê`–C—(·�+?I5·s/¼�Å+\ðýþ÷Irûíóç£|ôºBHêÁƒï½·nvÞz+ô½xñÂê ;ŽçÍÃÂÁ'Ÿh\Ôçä“‹‹üã4Ú]w]{-̾ñ=ÐMó˜)o¼ñØcX�éÙ©írƌիiñü!{4ȵÇ�ýÓK»vv{){lÐÀN7K©ÃiýM�X€ª�Ûh@IDATãÊqi¾ °£üÃ3?v­ªª¬D}-š>öë^T6�KD¡x~~Û¶X6Œÿ@Á² v _sÍÔ©¦�â°y,|u耯3Fú^P�ŸïÛY¾mÛÖ­~hòûõÿî»ëÖÁÇ�[¹Ò•ƒéz)LB ÑMÉÇÏ?ìöÒ8Ô^þq@—Cµ×L›†“ ÜË­c,½¼|Þ¼k¯Å‰ þ…9-_½¹~ýüס¿Úð­gøëN°÷Û\f ÈfœÂ_ÍøCÒÝ»Y—¦âd1Êﺻt«ªèdÛ#¦qU½úS5ßÐt´N\xøá_ħ«5-åÁë\G&MR/8hõ2à€?ü!BÍt½T*ÏGòÁi"©y¿=êjº=`óæõë16ìÜsñ2>�á^ÐÐ/Ù§OÇŽ �|â"ûIëãôˆÏ G»¼”_Ýáÿñé—É“gÎ4_~ŽôèÊ?ùä³Î2çTÏeËn¾G¦¯[·u+^ ¤t[ªŠAÏ?¿høËÊ02b\\¸}î/Ù¾�ÆFÅM3Z·>ضXXˆoµß|óCMœ˜–Š…Qøë²²§Ÿ6ÇA]ÎæÍýóá^ÀÉ#sæ<ö^xà¯Ð|¸¸Ø7¦ZÑÝÅw[ߥ‡âº^!•îò¥m¦qcÌðBvBwq3ñ�VSõ'k ÉÓé……˜I÷ë7h�=£V/š^{íСx±ã�7>úÈ?rUVâET̶JKaW¾×á´´tHi:­ï�&”ÿuqHÏ.¥»ü÷Ñ�áâÐ寧ü$ô{Éß/Òøª_L›†_@z^Šß‰xÁ%ô;q÷î7ÞÀøðÃ8„·aC”T?x&.·üÿì‹ ;F»wÇ‚ÔYgáëÉ”+û JºÎOí�þa¬xˆN9è� ¥S9é>â¡<öÝ–äâØ¼¦žÀ ªªå#~’o¦cgd‹GM@èø<!ß vmva(Ë-·$É•W^pv¼â ¤°ï]»6oÆ !Ë–Ý}÷¨QXØ!+Wu/*úÁN?G“j] „ǃX@½ñÆž=o» ýKàŠ ~×^Û§�JKo¿–»w?á,è<øé§8RwÅŠ»ïF»/^¼aå# ¨CiéE}÷»”¢ï œx"ÊC;åï¿_ÙKUUy9ð÷é3læ§O‡Eaçu³fÐÓ?þ±~=èßpÃÔ©x NíáZ´N×2UHÉñ¥šíÀÓÕQægŸý‹_ =p0¶¹ ·aüy8Ò»gÏ7ßÄNáY³.¿;áš7¯_Z?øàÕW± 1jÔ´i¾z�‰£yÛ¶ÕýåC{a}̘âbØãw¬[‡tØ=\ :÷\,�3}:>5нûÉ'·h‘$Ÿ~úÑGXøßÿ]¹þnÆ ´˜®%´‚–}ûvëÖ¦�Nwí‘vr†ìñØc›4A‰?üð�wðMñeËfÏÎl�þöÐ%P!pùÛ§  ñ;ª…¢¥Kõ2Zú÷ÿÕ¯€@vt �ãE¶½{Uÿ¼ÿ~´t4¾mÇ~?ò–íÛÿð‡^‰™•�Ñ»wçÎx¹@ËE.÷:öØNÕ—JÅ"¸¡‡Å‹o¾¹¤ßxã�w¢¿té‚vËÏ?x»½þú×åËÿû¿ñâŽú»‹‹8êIx>º›æ×¿â ùÝt{¡xàÝ¿ÿõ×í… Ž?¾Q#ØÓ¾}[¶`'ÿý÷��ñ‡¼•òU»ÑÝ-½ŠƒßG!œ3®¹þæí·KK§LQýö…£›¡×¿üå÷¿Çز2õ‘ Ê÷…øj}Žq啸´AzùS^þê«8š{ĈK/Å'š6­W %ï½÷÷¿¯X¡üªûr0ŠŠ Â|åÌ3õk)~‹ ‰ê_;–ÙPžxè!Ìû7VíMö’—× úBžÝ»·oÇ'V¯Æx°v­=~*rc\ýõ¯,À¸Ó¡ƒmi7/OÍ_®¹óÌ_¦N%œÜKWzļÂÔ#œ¡GŒÿðަIíÚýüçW^iëè$¿  mÛsÏM’‰{÷Æü/ð�tŒ;£F]t<ö�!·Ü‚…±ý¨K—c�Å7Àwìxûm¼�÷ßÿ=gÌmM@>Æ©‹/þþ÷Û¶%DÜ©÷›ia»Åüã¼ó0>MŸŽcéûõ=úþûuù/¾é&ø×¢¢E‹V¯†ÕߺVzõχ—.�4 sšwÞyë-Øïu×]pæ9Ð æ…[¶¨y¡=&½öè1z´šêq5�îd¯>ÿMú'<[éØáòQþªª5kðûvŽÈÎI¢[.7®ÎZ§/N<±[7¼˜Ø£윴95Yȧ²™¸vªâ@ºw/)Áü·k×ûïÿå/ñ;F!äåmÜ»4èüóÑo{õê[}á÷æ\IòòËË–Áòý½Y—€ô¨StHµ³Šk>ÒˆæCÈ­—M…Ù)ÏNňßÅ¿òÛj¼rý¶Ù/è÷æ5‡ÿ;ñÐ!|’bΜAƒ0Ït_4Z¶¬²òÄñ"Îðá°+÷¢ú¸én<–ú÷õK�ⱸ±|"_ô/ö÷©ßÑ=¶_ÅòIÿ“þ'ýOú_¬¿¨i>ñ?âÄÿÔ½ÿɧ ÅáÞCA™µªØáÊÈ”ÿë å³w=¨ãÁÑܹ3f˜ ™êâ£a‘·K—ô:x}ß⤷¯]ý»å#:ñûd›iè¤�‡|ÓuèZ€búN|™ÚÇÄÑ9)¤öUTØò—¸|øx@Ù©SïÞ½z�kÙ2óaFyùÚµX°>œ^ŠŠ°ðµjÕ¢Eø.ŽMÎæòÉGþ#Ž8æ,$––ª¥Ñ²2] „.œ4 hðWiéüù«Vá[•;ª2ä^à‘žP>ÄÓísg—ÝŠØ·Ó¯vjŽ�ºË.»õVœ.5Ê®4‹í™5K¸n ÜtÄOzï¢�—ølû·yt âqTù’%Ó§c¤ÿQ£°SR_kÖ(ÿ¢î:Ýéòâ•ì�0 Ô/àúõ;vÁìT¼îº+®°_˜ÀúiÓ 9[F¦ØÏ>s&üvDÛ|Í›ÃÇ�Ÿ0†aÿæCÊñGàÖÄÿ~Î9C†Œ«а`£¯8;Rªséy�’)”Ÿß¦Íü‡ßÏS>Ø{Ïž:à é˶?,Dá— ÔB^Ô ä…÷Á·çc½®+ÏÔ(.uô»É¹i~Í;ÿðµ—¶ÿØöRru>*‡¿½ÀG9ˆÓ¼ã„Å¡üÞ²eeeø&:î&Ÿ&ù½{�ƒþxÉ%þv­ªRû}:r1ÍxÝ�?¦ôìÃÐ>v¡b¾¥Îæ°5X^®üàˆx}WQÑÈ‘j¾5`æ[ªð¢Æ¿¼ývøÕË.»é&Œ¤ïòò•+Ñ2Æ©»ÂÊô¿W/øÕY³†­)¿ã“æë˜ïÏ›7sæáÌûq üƼy£GcþЩS‹´¸h–ú7G®ÂÂvíà·-š2å½÷à¿o¾Ùg³ÕcUU¯^xa¯1øôhʇœwözãEÃ>À|zÞ<ŒNúš;wÒ$Ì+0FÆ\#FÌž�8š›y`9ø\…yé^¯<€Y>ðµjÕ£^Èøío¯¾/|•–Î�k¶ÓäÉŽ�W¬À‹;]º¨/h>üÀj>ì›b>xg.Ù§ñP]pß¶ §YÑsƒÂBÒ�ÉSsáPÿ¢Öª]éá‡"_ÙµèߜԜݒؿߤÿIÿCñ[õžÃ¿KÿókXúŸô?éâüÞáðýî<ý°â9}‡_ðo–ü ðSͧ ;-4àÙ\:†Ò¾o7yd³fØ9Mpq¬í‘GªÇlZÿj‡Ð±Çvè€ ¦|<:ê(ìgM_4¥~}µS›â¸c!Î÷P4-Gµc~>Ìtpáˆûô×’‘^UÕ v÷šuDzaa£F>}€f^Í›wéòŸÿ©ŽêÅÎ%ú>£.q7mŠüéz¾ýA¿%%wß�…ÊÒÒ~ýP†´|UŽúõëÕ3%†ë_PS-G¡Â>!I§·l‰ìˆ$M˜wjÿvízõÂBÿŠ>8}:òH“&·‰«Ó±shذ ð�g¼ 0x0`¦5­s˜!Sfz: DØ7ä™úCA'Ï_ÿvíÎ;/¦Þ$OëU}?±´tâDì¨zòÉÀέV­üý šäá�ÿòå âÓ’’âbõêIßÁWR2r$v¦._¾f wêÔ¤‰Bé�Ú±“~Ñ"¼¸QV6fLIIX†KéÚµ_?<_°àÑG±4Ò¯_—.ænwSf^z€½d $ê~iò¸aU¿1c°€²|ùCA?®n Qç¤X½zM›b§#Y-•«yó¦MÕñ£f.�Ÿì_§Ø¡6mzô€=¯^�š`GRÏžn™ì*ù(Kié„ ÷Þ‹üwÜ�…#ótp¦åã«ÛxñgÑ"ìpš>}äH䣋êEq÷^\¬ÚkΜ?üí=th·nê[Üþúñpk�¦|Õ^#GÂ_À:ÈÝ2eއìVå‚v?ùäâÅxq£¤$Nÿ½{„£|—-[µ KîA­…… ¨žšY¾Yvøù³Ï<Ø×Š‹GŒ8ûlô3‡Në~ù¼ón½'/ÄöKìSÅæ„ ._ž$øƒzQÅ”Üúõ]?¤ä4i‚¡æuôÑáù�oþ¡Æåoa Ké‘ÚkÕª‡ÂŽîXÿf¶æÒí…‘Ó,µ “üzõê×Ç<‚.¤£�–,™?;MçÌ3 •1}ó§[n™3 &ãÇ÷ëç!ŠäàÕ”ôü…ì‹Jä¿×Ýøã—¢øÒ1ßÂBf Èߺ¼yyî|‹ìDq¶kwöÙXà̶_£]•_�2 Æk×N˜ÿØ¢EvõÐå�ËW¿>¬Þ?ÿÑX:„rÚ5V¶W\Ü·/T§OŸ?ÿH’gž™6 z-œkDçÌØzTó Ÿ|z6lʼ ²v-,=}’�›GÇñŠ’ï¾ý þËì_œ|šWÜ{ï²eÈ?`-ak *”—‡y0|.Â-,TŽâ!;>óÌ+¯Ä‹W8ÙE!èÿxµöÚk.Ä'YÜ«¨Èž÷í«,]Ëssè8$ѼóáLóBŒÿ™æµ¡ßm$M—'ÎŽ)Ÿ¾ÛùÈÎ5ÝiyvºKóµn�ß…®¯Éú»Y³o} >Þ”óû·°3=œüóì³8Y¢¬lâDø·~ýÔ Cø�q·_õ…qeäȱc1¾Ázï¾㸚Ó‚/É·µkj©  Ûß½™ì$›ß?¦žÌáwgon¿Èæw¢êúw"úÅ1ǸA%*(8ùdø…ÒR³ç’^GŽüÏÿÄÎóÃ_8·•$ÓåÉDçi"Ÿ×Q˜Cô/ö¶ŽŠô¿-…x¤ÿIÿ ÙF\ºô¿8=ù¹¤ÿIÿó[Flªô¿LšÊÛñÅUU…Ž–�©á‡-T›m>·0¹âäšOäÛÈU�¹æ³¥«¢\ìèpåö<@>}”à5ȧ¸OvÍÈWȹփòíßÿÑG»v% ¾8M6l˜Ÿ�o\¢^x¤Ü¬YóæjAÅ_ÂÉÖ�äšÏ-E®8»wã‡{ö:„] Ö«‡£Qo<l^}¡Þ5ÕŽ••�ˆ#¨q ,^8Q˾ª/ØKãÆ-Z`׎JukއëèvMîܹcŽT¯W¯°úB?©¨¾oÒQËleš¥1åÃn>úhûvÔ³ªªaõyªŸÂ’`Sªwšù²·LÙçŠÃ嫨ػ;`öìùôSØ^‚‡Am ¯fÍT{áu™šñ°´×îݪ½”þpä>ì²aæM±È€…aÓ&¹z¸ú¢¸¶Gµ·¶ @ùÑÊÊìì1Wù\>Òÿ¾}Ê/Õ¯Ÿ—÷ùçè7G…—Èj9ª¯{Ï5ßáã¨~¹cLJÂY}¡G`4�]‘ßqå„â¹Ö#×|n9gÿ~Õ_**>ÿþýãcAAa¡ê÷¶—¡|ÙŽ!ùçÐ!ø!ô"è—fûö¡A¿-[¢<  _Ýü·®Ç^o.‡‡VÕ Kù Ø+ôo¤õoçscÔ¯?þXùÕF�òó�‹~œ£�¦öqsúã¹ÚQ®ùÜR䊓k>’_Q±gæ/\Y ÿ�yú[EÅ¡CX�nÞ¼E øI»×QîÜÇM5ƒHüìÄ8•Ÿ¯æ˜�cîtä‘ bœjܸ°Ð§´d:Üú^®8¡|è—jÜWþóxŽòòÔ¼°Y3s^¡ò…î¹æsñrÅÉ5ß7Q¾š·ÑïEØ,üVƒGï·ظ/\_v™ùI¼X‡Tî¸g˜¸Ú Ç¿iú¯¨øè#»_ø/©Ù}¸ÞDù¦ÕŸÊíÞs­G®ùD¾­�\õ˜k>[zîã¨È‡âý¯«wŠçªÇ\ó‘\ºçŠ“k>’K÷\qrÍGréž+N®ùH.ÝsÅÉ5É¥{®8¹æ#¹tÏ'×|$—î¹âäš�äÒ=Wœ\ó‘\ºçŠ“k>’K÷\qrÍGréž+N®ùH.ÝsÅÉ5É¥{®8¹æ#¹tÏ'×|$—î¹âäš�äÒ=Wœ/óíüâÂTľ¾døâÉ–MË#¬ÃYÖÈ}b‰œª|"?s;e¦JûC¹LÐÅþ¤ÿAâ2{˜ÌTñ?âÄÿÊø»°ª½‰Œ¿J2þh›È>$ã�Œ?2þük�?x¡ãé§§MÉV7ßlÐ>vì¢E8¡OŸ¢"¼A—ê5Jo”†£Æ—/?þÜs“dòdœ¤¯ÒÒ{îÁŽö�íÄÿˆÿÿó¯í¤ý¥ýå÷4 ÇK>$¿ÿ”Ž²Óš«W™ÈüCÆdüÉ<þT¿Cí¿²Wáø79dââî"?sÃ…õ'ú÷éFìOM|ºñ¥Iÿ“þç÷$>k1Óü¹¤ÿIÿ£Ÿ¶¦µ„ÂâÄÿø=IÈb(ÝŸKü�øñ?ÔGø»ø_ñ¿~OÊÙŽ?×7Ñÿâô…víÎ8G³»×äÉÞpC’ÌŸ¿|9޸ߏqëVì°Æy\Û·'É믯_ÿÄI2mÚ°a¾…sàá“Ý»ŸvN4q/éÒÿü=ɵ7îÏõMìþš¸õuãþ\R™ÿÉüÏí+Ḍ?2þø=iØfÅŸKü¯ø_ñ¿\ßÑtñ¿ß ÿ›Ú�®›RB¢Ñ€h@4  ˆD¢Ñ€h@4  ˆþù5€O =üðèÑ矟$3f¬][5;vÁ‚'ŸÄöš4© DÁ ˆD¢Ñ€h@4  ˆD¢�ÚÔ@pzH(÷&GáÆ¦sø=VNˆ�Ãçè!ÜØtŸ£ÇÊ ñqø=„›ÎásôX9!>Ÿ£‡pcÓ9|Ž+'ÄÇásônl:‡ÏÑc儸8|ŽÂ�Mçð9z¬œ‡ÏÑC¸±é>G�•âãð9z76�Ãçè±rB|>GáÆ¦sø=VNˆ�Ãçè!ÜØtŸ£ÇÊ ñqø=„›ÎásôX9!>Ÿ£‡pcÓ9|Ž+'ÄÇásônl:‡ÏÑc儸8|ŽÂ�Mçð9z¬œ‡ÏÑC¸±é>G�•âãð9z76�Ãçè±rB|>GáÆ¦sø=VŽÉ‡âÜqŽl¿÷Þ)S† ÷̋ŠL.Ü»÷ AcÇ&ÉC­Zõì³¹/œsõãè\99:‡ÏÑ9|ŽÎástŸ£sø�Ãçè>Gçð9:‡ÏÑ9|ŽÎástŸ£sø�Ãçè>Gçð9:‡ÏÑ9|ŽÎástŸ£sø�Ãçè>Gçð9:‡ÏÑ9|ŽÎástŸ£sø�Ãçè>Gçð9:‡ÏÑ9|ŽÎástŸ£sø�Ãçè>Gçð9:‡ÏÑ9|ŽÎástŸ£sø�Ãçè>Gçð9:‡ÏÑ9|ŽÎástŸ£»ø_î@'Búè:xÁ4'0–.ò¡ß7DÿʆÄþbûR.|Òÿ¤ÿ‰ÿÿ+ã¿{t�Œ¿2þB2ÿÈe^›Gæ2ÿ�ù‡Ì?¾nóÕ+U»¸¾ìС$©¨Ø½ûÓdÏžC‡òó“¤aÃü|¤ïÛ÷é§àoÒ¤Eõ•$…… âòÏ'Äÿ‰ÿÿ'þïëæÿBþJù²šû/þOüŸø?ñâÿäù“ý¤Å?_®¹‘G!Éø#ãO.ãÏ— è5m�¯n:€–ç†D¾Òˆí–\-Õ^\ô/ú‡Äþj¯�eB–þ§´#ö—ÉJj�&ö'ö Hÿ«½>– YúŸÒŽØ_&+©=šØŸØ4 ý¯öúX&déJ;b™¬¤öhbbЀô¿Úëc™�¥ÿ)íˆýe²’Ú£‰ý‰ýAÒÿj¯�eB–þ§´S;ö—õÊO³ Nozøyk#Uä›Zý«7mL�ÔnXìÏԯ؟Ø é¦]Ô^XúŸ©[éÒÿ¤ÿ™=¢¶ÃâL ‹ÿÿ#þÇìµÿcjXü�øñ?f�¨í°øSÃâÄÿˆÿ1{Dm‡Åÿ˜ÿ#þGü�Ù#j;,þÇÔð?›ÿñ, Çu¯\ÝPúˆS½‹|W#¾¸è?ÎN\݉ý¹GĸŠÓ«Ø_œž\íŠý‰ýÙS*×BâìJú_œž\íJÿ“þ'ýÏíf<®_‰ÿ‰Ó“©Y„Åÿˆÿÿãö 3ׯÄÿÄéÉÔ,ÂâÄÿˆÿq{…�ëWââôdjañ?âÄÿ¸½ÂŒÇõ+ñ?qz25‹°øñ?âÜ^aÆãú•ø¥'Ϻ߼ 0Sµ\74›$»°È÷éKô/ö'ýO÷ ñ?~?©5”kÈ�+þGü�øݧÄÿøý„ÖP®!?®øñ?âtŸÿã÷ZC¹†ü¸âÄÿˆÿÑ}Jü�ßOh åòãŠÿÿ#þG÷)ñ?~?¡5”kÈ�+þGü�øݧÄÿøý„ÖP®!?®øñ?_GÿóåºÝŸ‹ÇâÆòqò\z,n,Ÿ‹ÏÅcqcù8y.=7–ÏÅçⱸ±|œ<—‹ËçâsñXÜX>NžK�Å�åsñ¹x,n,'Ï¥ÇâÆò¹ø\<7–�“çÒcqcù\|.‹ËÇÉs鱸±|.>�Å�åãä¹ôXÜX>Ÿ‹ÇâÆòqò\z,n,Ÿ‹ÏÅcqcù8y.=7–ÏÅçⱸ±|œ<—‹ËçâsñXÜX>NžK�Å�åsñ¹x,n,'Ï¥ÇâÆò¹ø\<7–�“çÒcqcù\|.‹ËÇÉs鱸±|.>�Å�åãä¹ôXÜX>Ÿ‹ÇâÆòqò\z,n,Ÿ‹ÏÅcqcù8y.=7–ÏÅçⱸ±|œ<—‹ËçâsñXÜX>NžK�Å�åsñ¹x,n,'Ï¥ÇâÆò¹ø\<7–�“çÒcqcù\|.‹ËÇÉs鱸±|.>�Å�åãä¹ôXÜX>Ÿ‹ÇâÆòqò\z,n,Ÿ‹ÏÅcqcù8y.=7–ÏÅçⱸ±|œ<—‹ËçâsñXÜX>NžK�Å�åsñ¹x,n,'Ï¥ÇâÆò¹ø\<7–�“çÒcqcù\|.‹ËñÕØt”íQ \Ecé"HÑvG]ÄÚÇ'ö'ö'ýOü�ø_ñ¿Ù5Ä�+±tdü‘ñGÆdü‘ñ'vÔ¬9>eü•ñWÆ_eü•ñ·æÆÕX$eü•ñWÆ_eü­Ëñ·ÆÐC�rëªc‡xj3]äcXý5n%IÄþÄþ¤ÿ‰ÿÿS—Ó=£ÿ+þWü¯ø_ñ¿âõ¨Pw!dü‘ñGÆdü©»QGK’ñGÆdü‘ñGÆ=*Ô]HÆþ™ÇŸˆte‚ê®Û™’D¾Ò†èß´Šº ‹ý‰ýAÒÿê®Ï™’¤ÿ)mˆý™VQwa±?±?h@ú_Ýõ9S’ô?¥ ±?Ó*ê.,ö'ö Hÿ«»>gJ’þ§´!ögZEÝ…ÅþÄþ éu×çLIÒÿ”6ÄþL«¨»°ØŸØ4 ý¯îúœ)éëÝÿŽÀ"TD³Ø:ì7>ŸFÈâqD¾O¼Þ|¹Òi<Žè?­5µ³­¥Óx±¿´ÖÄþx»ñi-�Æãˆý¥µ&öÇÛ�Oké4Gì/­5±?Þn|ZK§ñ8bi­‰ýñvãÓZ:�ÇûKkMì�·ŸÖÒi<ŽØ_Zkb¼Ýø´–NãqÄþÒZÓöÜ�NŠÅÑ~ú`‘FËaÙårÑD>4€÷^DÿÙY’ØŸêKÙiMúŸ­ñ?âÄÿÊø#ã¯Ì?²Ieþ!óh ;«±gÆ4™ÿWkÀÕN¦¸ô?¥�ì´æjTæ¿2ÿ•ù¯Ìeþ+óßìFeü…²³™Ø�ù—Ì¿dþ%ó/™}½ç_ÁtÛ�~,÷áðeAäç: ‰þkBbb¹MˆjÂúÄÿIÿ“þ'ý/—$âjBâÄÿˆÿÿ“ý‘šð>2ÿÿ+þWü¯ø_ñ¿Ù>�–ñ§&4 ã�Œ?2þÈø#ã�Œ?‡÷jQn£‘Œ?µ3þÔÙznÍ.¹D¢Ñ€h@4  ˆD¢Ñ€h@4  ˆD¢Ñ€h@4  ˆD¢Ñ€h@4P78"[1ô&C(Gå‹Mçð9z¬œ‡ÏÑC¸±é>G�•âãð9z76�Ãçè±rB|>GáÆ¦sø=VNˆ�Ãçè!ÜØtŸ£ÇÊ ñqø=„›ÎásôX9!>Ÿ£‡pcÓ9|Ž+'ÄÇásônl:‡ÏÑc儸8|ŽÂ�Mçð9z¬œ‡ÏÑC¸±é>G�•âãð9z76�Ãçè±rB|>GáÆ¦sø=VNˆ�Ãçè!ÜØtŸ£ÇÊ ñqø=„›ÎásôX9!>Ÿ£‡pcÓ9|Ž+'ÄÇásônl:‡ÏÑc儸8|ŽÂ�Mçð9z¬œ‡ÏÑC¸±é>G�•âãð9z76�Ãçè±rB|>GáÆ¦sø=VNˆ�Ãçè!ÜØtŸ£ÇÊ ñqø=„›ÎásôX9!>Ÿ£‡pcÓ9|Ž+'ÄÇásônl:‡ÏÑc儸8|ŽÂ�Mçð9z¬œ‡ÏÑC¸±é>G�•âãð9z76�Ãçè±rB|>GáÆ¦sø=VNˆ�Ãçè!ÜØtŸ£ÇÊ ñqø=„›ÎásôX9!>Ÿ£‡pcÓ9|Ž+'Äçâ¹�é#&pð®Ú=x@äC¾#NDÿbÒÿÄÿˆÿU~ vþËø#ã�Œ¿2ÿ�ù¯{ÄšÌ?eþ)óO™Êü³vfž UæŸ2ÿ”ù§Ì?eþ)óO{¤•ù·Ì¿eþ-óoÛ+Ôô\TæŸ2ÿ”ùgöóÏ/ÐkºCj¼º™hynHä+�Ô®vµ®ã¢Ñ?4 ö§ûD]†¤ÿ)m‹ýÕ¥ÕiYbbЀô?Ý'ê2$ýOi[ì¯.­NËûûƒ¤ÿé>Q—!éJÛbuiuZ–ØŸØ4 ýO÷‰º IÿSÚû«K«Ó²ÄþÄþ éºOÔeHúŸÒvíØ_ÖG¸gßôvÁéM—ìqrÍ!òM͉þÕ›F¦Nj7,ögêWìOì�†tÓ.j/,ýÏÔ­ô?éÒÿÌQÛañ?¦†ÅÿˆÿÿcöˆÚ‹ÿ15,þGü�ø³GÔvXü�©añ?âÄÿ˜=¢¶ÃâL ‹ÿÿ#þÇìµÿcjøŸÍÿxÐãºW®n(}D‘©^„E¾«_\ôg'®îÄþÜ#²\ ÅéUì/NO®vÅþÄþì)•k!qv%ý/NO®v¥ÿIÿ“þçö 3ׯÄÿÄéÉÔ,ÂâÄÿˆÿq{…�ëWââôdjañ?âÄÿ¸½ÂŒÇõ+ñ?qz25‹°øñ?âÜ^aÆãú•øŸ8=™šEXü�øñ?n¯0ãqýJü�Ò“gÝo^P˜©Z®šM’]Xäûô%úû“þ§{†ø¿ŸÔÊ5äÇÿ#þGü�îSâü~Bk(×�Wü�øñ?ºO‰ÿñû ­¡\C~\ñ?âÄÿè>%þÇï'´†r ùqÅÿˆÿÿ£û”ø¿ŸÐÊ5äÇÿ#þGü�îSâü~Bk(×�Wü�øŸ¯£ÿùrÝnž´ñÃaøM;Í‹×àý\:U䛿¡õB!ѿ؟ô?ê ü]üçQmrÜâÄÿˆÿ±ûL¦˜øΣØÚã¸Åÿˆÿÿc÷™L1ñ?œG±µÇq‹ÿÿ#þÇî3™bâ8�bk�ãÿ#þGü�Ýg2ÅÄÿpÅÖÇ-þGü�ø»ÏdЉÿá<Š­=Ž[ü�øŸ¯£ÿÉÛùÅ•yñÖ6u‰‰D¢Ñ€h@4  ˆD¢Ñ€h@4  ˆD¢Ñ€h@4  ˆD¢Ñ€hàŸO_î@U-Û7iB8nz,n,Ÿ‹ÏÅcqcù8y.=7–ÏÅçⱸ±|œ<—‹ËçâsñXÜX>NžK�Å�åsñ¹x,n,'Ï¥ÇâÆò¹ø\<7–�“çÒcqcù\|.‹ËÇÉs鱸±|.>�Å�åãä¹ôXÜX>Ÿ‹ÇâÆòqò\z,n,Ÿ‹ÏÅcqcù8y.=7–ÏÅçⱸ±|œ<—‹ËçâsñXÜX>NžK�Å�åsñ¹x,n,'Ï¥ÇâÆò¹ø\<7–�“çÒcqcù\|.‹ËÇÉs鱸±|.>�Å�åãä¹ôXÜX>Ÿ‹ÇâÆòqò\z,n,Ÿ‹ÏÅcqcù8y.=7–ÏÅçⱸ±|œ<—‹ËçâsñXÜX>NžK�Å�åsñ¹x,n,'Ï¥ÇâÆò¹ø\<7–�“çÒcqcù\|.‹ËÇÉs鱸±|.>�Å�åãä¹ôXÜX>Ÿ‹ÇâÆòqò\z,n,Ÿ‹ÏÅcqcù8y.=7–ÏÅçⱸ±|œ<—‹ËçâsñXÜX>NžK�Å�åsñ¹x,n,'Ï¥ÇâÆò¹ø\<7–�“çÒcqcù\|.‹ËÇÉs鱸±|.>�Ååøjl: Êö¨®¢±t‘ $‰è?»£.bí‹ãûû“þ'þGü¯øßlŽâÆ•XºŒ?2þÈø#ã�Œ?2þÈø;jÖŸŒ¿2þÊø+㯌¿2þÊø[sãj,’Œ¿2þÊø+㯌¿2þÖåø[c è¡�N¹uÕ±C<µ™.ò1¬ˆþ¿·’$bbÒÿÄÿˆÿ©Ëi�žQˆÿÿ+þWü¯ø_ñ¿zT¨»�Œ?2þÈø#ã�Œ?2þÔݨ£%Éø#ã�Œ?2þÈø#ã�ê.$ã�Œ?ÿÌãOĺ2 Au×íLI"_iCôoZEÝ…ÅþÄþ éu×çLIÒÿ”6ÄþL«¨»°ØŸØ4 ý¯îúœ)IúŸÒ†ØŸiuûûƒ¤ÿÕ]Ÿ3%IÿSÚû3­¢îÂbbЀô¿ºës¦$éJb¦UÔ]XìOì�þWw}ΔôõîGà *¢YlöŸO#d ñ8"ß§?^o¾\é4GôŸÖšÚYž¹ßør¥ÓDÿÐ@Z/:EìOëB‡x»Ñ¼™B<Žèß§?^o¾\é4GôŸÖšø_Þn|ZK§ñ8bi­‰ýñvãÓZ:�ÇûKkMì�·ŸÖÒi<ŽØ_Zkb¼Ýø´–NãqÄþÒZûãíÆ§µt�#ö—ÖšØo7>­¥Óx±¿´ÖÄþx»ñi-�Æãˆý¥µ&öÇÛ�Oké4Gì/­5±?Þn|ZK§ñ8bi­iû î@'Åâè¿ }°H£å°ìr¹h"À{/¢ÿì,IìOõ¥ì´&ýÏÖ€øñ?âeü‘ñWæÙ�¤2ÿ�ù4��ÕØ³ãšÌÿ«5àj'S\úŸÒNvZs5*ó_™ÿÊüWæ¿2ÿ•ùov#‰Œ¿2þBÙY�Ì?l ÈüKæ_2ÿ’ù—Ì¿¾Þó¯àºíÎ?–û€pø²� òs�Dÿ5¡±?±¿Ü&D5a}âÿ¤ÿIÿ“þ—Ëñ?5¡ñ?âÄÿˆÿÉþ�HMx™ÿ‰ÿÿ+þWü¯øßlHËøS�ñGÆdü‘ñGÆŸÃ{µ(·ÑHÆŸÚêl=·f—\¢Ñ€h@4  ˆD¢Ñ€h@4  ˆD¢Ñ€h@4  ˆD¢Ñ€h@4 ¨ ‘­z“!”�£‡òŦsø=VNˆ�Ãçè!ÜØtŸ£ÇÊ ñqø=„›ÎásôX9!>Ÿ£‡pcÓ9|Ž+'ÄÇásônl:‡ÏÑc儸8|ŽÂ�Mçð9z¬œ‡ÏÑC¸±é>G�•âãð9z76�Ãçè±rB|>GáÆ¦sø=VNˆ�Ãçè!ÜØtŸ£ÇÊ ñqø=„›ÎásôX9!>Ÿ£‡pcÓ9|Ž+'ÄÇásônl:‡ÏÑc儸8|ŽÂ�Mçð9z¬œ‡ÏÑC¸±é>G�•âãð9z76�Ãçè±rB|>GáÆ¦sø=VNˆ�Ãçè!ÜØtŸ£ÇÊ ñqø=„›ÎásôX9!>Ÿ£‡pcÓ9|Ž+'ÄÇásônlúÿÏÞÛ@ÝVUçÁ ¸€IP�` �ñSƒ©$@ÕÄhƒÿpH¥ÕHj¤-2b@êo´*µC‹1£¤8JF±Áá_“@Ô¦\Í�¦±ÆŠ€J¼ \ðʽðÝyöXw­=÷šçyö~Ï9÷½ï}ö°×šóÙÏ<û9sε߻ÏÙñ#?'Â!~ä�xY;âG~6N„CüÈñ²vÄ�ülœ‡ø‘?âeíˆùÙ8ñ#ÄËÚ?ò³q"âGþˆ—µ#~ägãD8Ä�ü/kGüÈÏÆ‰pˆù#^ÖŽø‘Ÿ�á?òG¼¬ñ#?'Â!~ä�xY;âG~6N„CüÈñ²vÄ�ülœçùw}=;†�˜°�ضÜ(¾)ÐzĉôWþ©þÔÔ»>°œÿkýÑú£õW׺þõ�XÓõ§®?uý©ëO].çʳcÕõ§®?uý©ëO]êú³¿Òêú[×ߺþÖõw¿+,úZTןºþÔõçøëÏ]7Ð]�…o5%ž)~§Èr°W½Ì¥¿ô7”¥&V9Rýuj+ÿV™u%–òOùg ¨þJM¬r¤úëÔVþ­2ëJ,åŸòÏPý•šXåHõש­ü[eÖ•XÊ?åŸ) ú+5±Ê‘ê¯S[ù·Ê¬+±”Ê?S@õWjb•#Õ_§öròoô#ÜÇ¿õýž?é2žgêŠ_+'ý»OÕš,w¬ü«õUþ)ÿò’^çÅòƪ¿Z[ÕŸêOõWWIJÇê?µÂê?ê?ê?uE,{¬þS+¬þ£þ£þSWIJÇê?µÂê?ê?ê?uE,{¬þS+¬þ£þ£þSWIJÇê?µÂ­ÿ4n så5µ QTËkcÅ÷Š´æÒŸË¯�òÏ?"Ë+Äéªüãtòê*ÿ”ýK*Ÿ!\^©þ8�¼ºª?ÕŸêÏWE=çêJý‡Ó©VÖÆê?ê?ê?¾*ê9WWê?œNµ²6VÿQÿQÿñUQϹºRÿátª•µ±ú�ú�ú�¯ŠzÎÕ•ú§S­¬�ÕÔÔ|UÔs®®Ô:�7ÐÛée‚ÕÒ¢2¬ß’qcÅoé%ý•ª¿Rê?í>Yš:jóªÿ¨ÿ¨ÿ”šRÿi÷‰¢ÐÔQ›WýGýGý§Ô”úO»O…¦ŽÚ¼ê?ê?ê?¥¦ÔÚ}¢(4uÔæUÿQÿQÿ)5¥þÓîE¡©£6¯ú�ú�úO©)õŸvŸ( MµyÕÔÖcÿÙu½ÿö “ßF;µ‡X³ø„o£ŠUñëô(ºä‘ôWþ©þr5à½úê¨} ZýGýGý§_3ófê?¨£ôÕChõõõŸ~ÍÌ›©ÿ ŽÒW¡ÕÔÔú53o¦þƒ:J_=„VÿQÿQÿé×̼™úê(}õZýGýGý§_3ófê?¨£ôÕChõõŸõØö¹{¶Í¿yÛOuͤ€�R@ H) ¤€�R@ H) ¤€�R@ H) ¤€�R@ l<v}=:µ±Ÿ¤‰x¼�åeqžÍY^‡ây?ËËâ!’_bý²Ë¸�8ø¸Â0o„y¿¥Ö­uÔІy¤ÿPµî›åóë¦uÔÐ&ýM�¡.Å¢ü+Z”Λ‚�7Â<Ò¿¥Ö­uÔІy¤ÿP5õ_œ7-Õ†6Ì£üª¦üÃyÓRmhÃ<Ê¿¡jÊ?œ7-Õ†6Ì£üª¦üÃyÓRmhÃ<Ê¿¡jÊ?œ7-Õ†6Ì£üª¦üÃyÓRmhÃ<Ê¿¡jÊ?œ7-Õ†6Ì£üª¦üÃyÓRmhÃ<Ê¿¡jÊ?œ7-Õ†6Ì£üªVò/üzÖýÑ–°Ek¶|;lÜQžMñMûÜ‹ô—IÊ¿®–Æ©¦úë+ þ£þ£þ«õG믮?Æ­¤ºþÐõ‡)0.kúWÕhºþß©€WgÞ\õש3N5¯¨®uý«ë_]ÿêúW׿ãV­¿ZM�qY£ë�¾ºþÒõ—®¿tý¥ë¯õ}ýÞ@ï·óµÏ¦/k�m ë-þ½÷Þ}÷]w¥ôíoÿû[·ö_ßþû§ôˆGvØ¡‡¦tÔQGqøá)í·Ÿ×aÜ…êz;6ËžëüM�) ÒbÞé/ý•ª¿ñ„ê?‹P@ýWýWýWýWýwìä‹è¾ý¿ïÖöOËÓ^�ú¿ú¿ú¿ú¿ú¿ú¿ÖŸikèZŽÒú«õWë¯Ö_­¿Zµþ®e%�vì²Öß•Ý@ŸvÚç¨-[¾üå›oNéÊ+ßûÞ×¼&¥«¯Þ¼™=»SNIé¼ó~ï÷Î;/¥¼à™Ï|âS:ä|ô˜Òg?ûðº×¥tÁ·Üb7êO9å°ÃìÈ(¡jû=÷t1Ž>:¥“O>ãŒg?;¥úOŸýìÓOOéØc9dxSøš¶mûû¿ÿó?Oé Ï>û�þ(¥ï?%{/{Ù5×¼ë])=ýéÇsà�õqv™aÛf~øÃ¯=¥?øƒ—½ìßþÛ”n¹%¥ÛnKé Oxñ‹?øÁ”.ºè×~íøã;Fý¿(Ð]Îv4ÅšÒöíßùÎg>“Ò%—<ç9—_žÒÖ­9c¾¿s³÷ï OxéKSºâŠ‹.zæ3S:è úh�¥€�R@ H) ¤€�R@ H) ¤€�R@ H) ¤Àž­À¦±/¿¾Áںʼnücãy<âG~Ï7vŽøk¿ÝÀ¾õÖ?ù“·¿=¥óÏ÷»?ö±þ'°ò­b{ ù“IùøüºLãÏ}ÎnX¾á ¿õ[Ýþ¹ÏMé}ï»á»ÿ¤'qD}#;o|Û·§tç�_ûÚM7›ÝV6®î@g6ÛæÅÿêWSÚ¼s3ž+¯´ÛÞv>ïyÏ5פtÎ9§žzÌ1fé¶Ì›ùvìØ¾Ýn¼ÚÇìdûÝwoÝjúØÖ¿�Þʪgÿ÷üvË÷?Hék_»mç–Ï2¥£�ÞºÕÎÑÛ0~?ò÷ÑãgˆùsÄ. ò¬Ûß{oJÿý¿¿éM¯~uJ]ÎØûµy³½#–«]¾z¨}cÇŽþ±yÆÆÏø±{Ä�ücãy<âG~Ï7vŽø‘l<�GüÈïùÆÎ?ò��çñˆù=ߨ9âGþ±ñ<ñ#¿ç;GüÈ?6žÇ#~ä÷|cçˆùÇÆóxÄ�üžoìñ#ÿØx�ø‘ßó��#~äÏã?ò{¾±sÄ�ücãy<âG~Ï7vŽø‘l<�GüÈïùÆÎ?ò��çñˆù=ߨ9âGþ±ñ<ñ#¿ç;GüÈ?6žÇ#~ä÷|cçˆùÇÆóxÄ�üžoìñ#ÿØx�ø‘ßó��#~äÏã?ò{¾±sÄ�ücãy<âG~Ï7vŽø‘l<�GüÈïùÆÎ?ò��çñˆù=ߨ9âGþ±ñ<ñ#¿ç;GüÈ?6žÇ#~ä÷|cçˆùÇÆóxÄ�üžoìñ#ÿØx�ø‘ßó��#~äÏã?ò{¾±sÄ�ücãy<âG~Ï7vŽø‘l<�GüÈïùÆÎ?ò��çñž× tï(æÛ¼Ý�Í|´øû#äï£Ël#Åè!»qþGtá…v£ùŠ+êïšçóLé„ìFøë_þùöÍîO<ê(ûföŽßÿþ7¾‘Òÿþßÿó^}J—]võÕùffVëºëRzå+Ÿó{GþËù³?»è"cë¾ ìõ·ÇÁ×[Žÿ¬g�{î+^‘Ò‘G¦”odw¸wn6úö·¿ô%»a~Ýu>¾y/¿üÕ¯~Á RÚÿ÷¿ÿãOéE/:ùd{ä¼�oØzËñó>ûòÜovØ=ï»Q>r¿ý ‘¿ í�Ï(´�âçÛÆö ÚñûÌë?~¿žó«ÿû¿ÿøÇíçïzW�­õ�óŒìt(Úèó­ÿóÏçÑßï=ïÿ¼óLço ´ú׸üVþ›9«ø½òOù§úSÿöOõß®‹n”ëÏöš þ¯þ¯þ¯þ¯þﯟµþiý3´þw*øúè²#ÿØ?²gþ^׺þÐõ‡®?†ýCëo×9µþ˜Ãüè¯+ÈßG—™ÖŸ=sýÙu=~ã§üsxI ²öÔã�ÿþû¿ô¥xxã<Ÿëé§¿âïyOJozÓË_~ê©åÆoöÛþ¸ãì†úŸxÚi)ýÆo<ÿù·ÞšÒ{ßûüçŸ~JvóÜ6K·k¯µo€_qÅ/þ¢=ºü‚ _nlv¸áÿO?Ýé~É%¯|å™g¦tÀCDm9ï¼ý¯o¿=¥ø½ï½øâ”.½ôºëì›Þ¹àßýîw¼ÃÎ÷™Ï¼êªsÎIÉ~¯�Ùüûíç™ÃìyÜÞ÷ùul,öþ(ŠŸÿpé£ÇÌvoü¬G9?¯ç–-öÈö×½î�o̹5æì°>»÷ü÷¶þ3|蠟‰Ïû¾R¥>úvœßïçÒ¿SDúų̂çÊ?S V$�ÛÖìÅ{Õ_§Ñ|•Ê¿v†´­¸î2Bõ§ú3æç‘ú�úO;CÚÖÜ]ð^ý§Óh¾Žª?Õ_;CÚV\w¡úSý™óóHýGý§�!mkî.x¯þÓi4_GÕŸê¯�!m+®»ŒØØõ·oà849@IDAT>Íåíûo@¾¡·¼xžyuñ·mKéSŸºúêK/-¯!7¦SN9÷\»qþ¶·½ìeO}jûÆy9ªŒ:è˜cžò””~çw®¹æmo+ö2ºújû¦úÿù?÷ß_le”ãË}÷=ø`JöZ™m¿ýì¤tÖY_üþCJçž{ ýãn»í²ËRúüço¿½Í5¦>Ëâg–iÆ:îý¿ÿþ-[ìõW›7êS)ýùlëööö·ÞúWe�´ß²¥­÷ð<ÆÅ¿6‹ÿëú³3øÈGÞñ{RB÷€ÿë ?ð�?ùËW{NÂZ¶Ý{þcßÿµœiûX�­K�µ}ycé_k+ýM�Z‘e�•µÂÊ?åŸê¯®ˆe�Õj…ÕÔÔêŠXöXý§VXýGýGý§®ˆe�Õj…ÕÔÔêŠXöXý§VXýGýg#õŸMurwã|zýÂ÷¸œco�úzž—ýÆèz‹¿cÇí·ßrKJoxƒýÒyÙìuÚ7ÃÿÕ¿:÷\ûÆù¦MÓtÝ´é˜cÎ8Ãnh>ëYÆ~É%]ÓÓnìþíß~ãvCôä“O<1?ÎÜp?¿£6Ï7£oªgtë}=ꨔ~åWž÷<{W^yé¥õoºÇ¿iž»èùÿfí¿®Î“­­øùXÛÏŸ=r¹¶Öã6ƒYûïÀý÷Û ón¸âŠ÷¾7¥·¾uøÈüšÕ�Ï>ûâ‹íÑçç�÷ÜçžrŠ}0"ŸU?Êöí÷Ücqn½uóæ¯|%¥ûïÄ#ûØ”~þçáN:)¥CÉÌíã³7ïc�æŸÏÿ®»>ó™+¯Lé-o¹ñÆ|DÇýÜçÚ5^øÂÇ?ÞÞïn0Tk‹_A �m9~ž÷ùÕôõó¸iÑ-ûmólõ\ñ;5�J�NHÍZYÏä—þ^–j®üëÄPþUI1ªÿ©ÿXR¨ÿÎï¾p´þ ŒÑúÓåÌü¼RÿUÿUÿÕúƒº©ÖŸ¾ZQÆhýÕúÛ­,ýÊéÏtý¡ë�.Kæ_§ö³Fÿþ¦õGëÏüŠÑúÛõ ¤’ú¯éÔ¸�ÞÎl“,7 T†¾qóó=3þÖ­ßûÞw¾3<ËN8÷ܳÎJ餓êÛÚC\¶Dºšúûî|^Àgüîï~ò“)}ô£ÿæßlßnï‡Ý”Oé‘�<üp.BŽÔÞϋ߽ÿýãìu™=ïûÞñ3¿CØÿÛ™ÒÅœç˯jË–”®ºê¼óžÿ|û­yÿìŒ:aç–ÒñÇß¶sKɾ}^oW_ýŽw¼êU)}å+÷Ý÷¾÷ÙoßsΓžT#R²¼øã?þíß¶8W\Ñ�sÊ)ö]o;ÎnYÛqíWžõÍçŸ}ûøòŠî¿ÿË_¶ß:õ«ý­ñÓOOéxÕ«žþômȰ§´·ø´ñ¬µýúùógãD8Åo)#ýM­¸ÿ´²gŒMõ×RKõ§úSÿQÿUÿí®;—uõ¹öëïV÷cÓú×RKëŸÖ?­Zÿ´þiý³Rëû:¡µv޳µyµþjýÕú«õWë¯Ö_­¿åúc×#Ü»å!^jsáĈ¾'/¸}k<ÛÓãßyçW¾²yóðüžóœ§=­»1š}¶ 7¤WÖß©nßV>|¶¥ô¨G~¸Íí&z½Åz®-þ–-ßýnëƒùõå×ÀžÏT|>®»u_fyÇïÎÿ{ßûâ?ò‘Ö�s{Ø~Jï{ßu×Ù>ûÙ«vn)}ðƒŸýì�7¦tÍ5ø‡öòömózÛ¼ù²ËÞÿ~{ôû½÷š½Ä¿ÿþo}+¥Í›û7γ^›7ßxãßý�}#=~ÇŒ/ãmÌl%~AïØ‘’}ïü-oIéæ›�±øÎ>û�ï´G¹?þñå»ðæ=à€‚3jÅŸwüü³_Ìù+~¬€ôo÷ŬØ"ê/sµöÒ_ú·ò"Û”ýõ*ëíµþ ŽÒW¡•Ê¿úz±Ÿ=ÙêUT_3„Vý©þTýš™7SÿA¥¯B«ÿ¨ÿ¨ÿôkfÞLýu”¾z­þ£þ£þÓ¯™y3õÔQúê!´ú�úO«ÿìºí:Nž~òµfcnO�o�fo}|¨Cëmƒ°hžo<ôy³žuüùÈG–c˨ÆkÝÿW¿ú‰O¤tþùï¿ÿ €}sùñ�?úèúÖká˯¤pu£üº»YÁ{;Ïqr+Ìs|§Ó}÷}ë[wßí})½â¯|¥Ý@Ò“Ž:Ê¿Ÿ˜Ò1Çœ|ò™g¦ôÚ×¾ó�ö í«®Ú¼ùŽ;º÷ïˆ#R:øàîáøå|:èØcSzö³M%»‘~ÓM¶Ï ܳžõë¿þä'ۣߣ×kèñ[‰ßkß;ÿð‡S²ï�÷oåŸ~úE¥ôò—Ÿvš=²ÝoýwÉ{mžÃüë[ZÇÛbÏ~|=)þ˜w«¼oÑÈç_„Ëvé/ýs.,b¯üWQãÐø’þ㇖þHå߸Œ‡FêëúKù7.£Æ¡•Hå߸Œ‡Fê«ÿ)ÿÆeÔ8´ò) ü—QãÐH}õ?å߸Œ‡Vþ!”ã2j©¯þ··äß®èQJä}c‰ø²�åeq™—ݳ¼,®ÜHä^Ë;Äù–èÆ‹1Ô¯éŽ;¶nMé»ßݺuÛ6³?ô�ííÛÉÆ´ßl³ùý÷÷»)}á 7ß|ýõvãõÒKý#¿íh{Dýoü†=¢¾¾}nž²õãwv³µì娌ë^É¿|T>ïÜúüyúyŸyûöüÁú6›}ùËñö�-[þÑ?²ß®Ô£öÝ×"úøÇsÚi/|aJ_l¨ù›)sæ™o{›}áÉOþÖ·ì;êöêìÛÝ�}ì1Ç<úÑññ†ëÇ�±‘ç®»Rú¯ÿõÜs/½´�8þø”ì{ç¿þëõo°÷1ÃYÖ?{òû�çÜž=/ÇE-(–—ÅfnÄò²8.jA±¼,®0s#–—ÅqQ Šåeq…™±¼,Ž‹ZP,/‹+Ì܈åeq\Ô‚byY\aæF,/‹ã¢ËËâ 37byYµ X^W˜¹ËË⸨Åò²¸ÂÌ�X^ÇE-(–—ÅfnÄò²8.jA±¼,®0s#–—ÅqQ Šåeq…™±¼,Ž‹ZP,/‹+Ì܈åeq\Ô‚byY\aæF,/‹ã¢ËËâ 37byYµ X^W˜¹ËË⸨Åò²¸ÂÌ�X^ÇE-(–—ÅfnÄò²8.jA±¼,®0s#–—ÅqQ Šåeq…™±¼,Ž‹ZP,/‹+Ì܈åeq\Ô‚byY\aæF,/‹ã¢ËËâ 37byYµ X^W˜¹ËË⸨Åò²¸ÂÌ�X^ÇE-(–—ÅfnÄò²8.jA±¼,®0s#–—ÅqQ ŠåE8x½Ü8,Á[#ÈÃò²¸Ý¿}CØ^—?w›³ç5ĵoXFç?Œ~Ûm—]–ÒóŸÿŒgØ>óçã[¯µ~½gÇ�}vJo}ëË^vê©)Ùmæ.–yj–á+¨ùjdkll}¾þ,«î£ �ë³?îqO|âSŸÚ�ÿŸþiwCÛ8nºéŠ+^óšno¿}~ÖYçžû¬g¥ô�ÿñ“Ÿü„'¤ôÓ?} ?õSvãûˆ#ìÆx÷}ór|wÓ¦CMéÇwn¶g·˜¯ÏP¿/µB·Ývà öÛìöxùz;ýô /¼ä’”ì{çùjg®ü:~8[2¢ÛGñû¨2Ë|ÅÒ±8Å7J=·Õ,VVW'ý¥¿òOõÇö‹EãÔÔÔÔÝWX>õõõõ¶_,§þ£þ£þ£þ³è¾Âò©ÿ¨ÿ¨ÿ¨ÿ°ýbÑ8õõŸÝÑvýz¹µ2mD÷¶NãsÔcǃ>ð@ûÏ»AYް·ú�?bÌ�‡Å�~ú¹ç¾ùÍ)}øÃ7ß|Á)wœ=Øœ_8rœý÷·¯ºç™í§ŸW85Wa‹òo¿ýŽ:êiOKéê«ÿý¿Å+úÇæ™=êüÚk¯¼Ò>hðÚ×^pÁoý–}ðàÌ3åWRú¥_:õÔßþí”>ð��ü/ÿ2¥°w Yö¬¾å—cÇŒ†ïÿ–-·ÞšÒ»ÞõÖ·~ìc5“=3 ¥ /|á ÿøÚ>ÔÓÎ�×dk9�ƒÞÿòÁ�Ì0Œßy"ýóq‹Ú+¾)0TSúç j³H‹òOù§úV”ú�úÏ0+oQÿUÿUÿÖ•ú¯úï0+oQÿUÿUÿÖ•ú¯úï0+oQÿUÿUÿÖ•ú¯úï0+oQÿÝ;û/üz¹…ÖjÏ8Û²âã "7€õÿ±�ýÙŸµo(ÛùÞ|³©Öµî›núô§¿ò•”^ô¢O|âí¬¢óhÛó0UÇ«}£úío¿üòç<ÇÝýàÎ-¥íÛ;Åóë¶xvì¦M�x„ýjú1Ç{ìÏüLJGuøáöèq~k½‚”þîïþïÿýÎwŒå„ì7Â#]ðùïØaì÷È;–îuw³îýÈãÖþØcO;íe/Ké–[>úÑg<#¥Oú–[ìýûô§o¾ù3Ÿ±è7Þèó=ó|îsöÍî7¾ñ_þKÛæ3¯{]JŸüä›Þd¿‘žh?“qvcåq[§)õ÷ætóÍW^yþù)ÙkìoOx‚=º}ëÖ¯~õË_¶Gô?ð€½ÿùuæ÷ÿ�Û}÷™¿ûÍöÂqÓM_übJñ_üâOþdJ‡º}ç–Òa‡ýÄOœt’} âðû�TtGôß�ÂÂ��nó™?Ê«ùº¯ôï´˜¦£òošnÊ¿¬€êOõg L«#õŸiºåê›rýUŽÅן5¶=VýwºL{•ÿÓt+¹¨üSþ™ÓòHõ7M7Õ_V@ý§SbZ©þ¦é–³Oת?ÕŸ)0­ŽÔ¦é¦þ“Pÿ锘–Gª¿iºåìCëÿ¦|ÃÌ„n‡j[ñqå%Ìaž=#þ�>ò‘�yŒÉm[9ãÍ›¯¸âÚkSúêWÏ9Çn |ÿösÆGúûwåöÛ?ûYã»þúÏÞ~£Ü6»ayÚigŸýâ§tòɇ^³;¿–Ìÿðç�ö”§¤ô‹¿xÊÎ-¥è^oöwŒøÿèu†´º™?÷õ¯—߷טýå¸ndvo³yæyà�;ïüÛ¿µG®gTw>%ñ³½½Ï<ûíwøáv#ÿ´ÓÎ<3ïÏ9'¥ßù�mÛì7Ë¿ó�;ïüú×SºõÖ?û³k®±G׿ÿýýovìco}kJÿãü³öô§Û£ß�?þ ƒê˜óÏ#:ÿèÂ%¿îÖqvCûî»ï¸£½Sòᇯ½ö oHé%/±,n™/óö¡‚”^óš—¿¼f8á„óÏÿÃ?L骫Î9çä“[Gµm9NŽ;DMÕmÈÔ²(¾)×ß”ükéÙ¤¿ôWþ©þÔÿ»õyØ'µþ 5)×qÞ´ŽÚ´þhýÑú£õ'î#ê¿Ã®©þ‹×�–jCæQþ USþá¼i©6´aåßP5åΛ–jCæQþ USþá¼i©6´aåßP5åΛ–jCæQþ U[?ù·oô‡c~c[/ÞlÑqvjÑ1-{ij§Å?ðÀãŽ;í´”.ºèôÓýyÚ�ÖÿôŸ®½ö _ðžXÇáùïØñÕ¯¦ôÁ^pÁ¥—¦tåÎÍ~×ú�wn—_žÒwlÝÚ}‹¼¯¿ékQ ßÖ­ö�ã;º×²lý:èÈ#íÏ?÷sö Êùîs—_n7¢¿øE{øy±çQy½ÙÒßÛë~è¡”þ×ÿºæš}¨ï³ÙA|pýMè!bÇÎ-¥Î6ÛgE:dŽ¿ß~hß&?ê¨ã޳Ãgžùò—¿éM)]wÝ;ßi�B÷úýå_þõ_÷o]#×|öåøyî÷óŽë°[·ÖÇ ¾ŒeqŸ_Ça‡p€=Ú}o­ÿ¬‡Î¿®ò¢J4Êùãý(£ã¤¿ô÷¹4oå‘òψ•‹tSýÍSm¨g¤£òOù7/“¢¼QýÍSMõçˆòHýGýg^%Ey£þ3O5_}Ã?ÈÕŸêo^&©þL�\-õ~žj5®G:ªþTó2)Ê­óTSýy¢fm–éoÈÚâæ£Wÿ�CN>Ùn¿ýíg�e7Ðío~ ¶¿îºK/µé×]÷™ÏØ7˜ßùΗ¾ôÙÏN餓Ž<òàƒSÚ¶mëÖø‡”¾öµÏþÓŸ¶o®_zéW¤äogÎ׿þÍo¶ß2ïn^fkÙ[ÓloÙã>²{œ÷—¹½¶³Îºè¢ßû½”Þýî½È!^¶o|×»ìFògØ­ìW½êÍoþÿÂ¥þÄ'Ú ðƒÞo?ûfý=÷Üq‡ý–ü'>ñÁ¾æ5ö üòÐö•Ò)§\xák_›Ò/üB_‘úý·ÌGù3?c7ÚSºñƬ­ýÖùœyæïþnJ¯{Ý{Þóò—§ôÔ§žxâÑGÛ åmÛì‘ùö›àÝ#Ìßõ®«¯®#Û¯¹§ôä'Û¯€×öíÛo¿Ýn@ÿón¯»Ÿ 6ß¶í'~"¥Ï~ö‚ N=µ>nmãM›:èÐC-/ú’ϬÝåD· d[·/ï¿}”á1�9úèÎ’U:úh;¿Ç<æÐ�›}Ó¿t4«õ�0Ë´+¾)°L…çsKé¯ü›_#ËôªþTª¿eVØ|nÕŸêOõ7¿F–éUý©þTˬ°ùܪ?ÕŸêo~�,Ó«úSý©þ–Yaó¹Uª?ÕßüY¦wYõ·iì‹FŸdBþ±ñ<ñ#¿ç;Güæ·GY?íi]ôÉO¦ô¶·zèŧtÉ%W^i7hóùðÃ7Ýtå•öMôn_ìÆP^•].¼Ú~þù—]vÝu)ýÚ¯õkÛŽ6\nWö¸özË|;vdÖÚkãÈÞájþ2òpÀ±Ç>ó™)}èCïyÏ·¿�ÒóžwÁõ7ôíõÚwÓ/¿ü�o4�ì[à¶å×kçTŸç-ÿ?ᄳÏ~ó›íƒ /x�}£mOyÊ‹_løç>÷ýïÉKRúÓ?í³×o·æßúÖ .°=ÿYϺè¢×¿Þn¸ÿØ�í»o}ÇŽûîKÉ>a›E1ά“=|ßž0pÿý�Ý�ÎÇežî¨òäÏÈîUäY½ï¿«Û·d§¿�Mù €úH³ñýqìñ#?'Â!~ä�xY;âG~6N„CüÈñ²vÄ�ülœ‡ø‘?âeíˆùÙ8ñ#ÄËÚ?ò³q"âGþˆ—µ#~ägãD8Ä�ü/kGüÈÏÆ‰pˆù#^ÖŽø‘Ÿ�á?òG¼¬ñ#?'Â!~ä�xY;âG~6N„CüÈñ²vÄ�ülœ‡ø‘?âeíˆùÙ8ñ#ÄËÚ?ò³q"âGþˆ—µ#~ägãD8Ä�ü/kGüÈÏÆ‰pˆù#^ÖŽø‘Ÿ�á?òG¼¬ñ#?'Â!~ä�xY;âG~6N„CüÈñ²vÄ�ülœ‡ø‘?âeíˆùÙ8ñ#ÄËÚ?ò³q"âGþˆ—µ#~ägãD8Ä�ü/kGüÈÏÆ‰pˆù#^ÖŽø‘Ÿ�á?òG¼¬ñ#?'Â!~ä�xY;âG~6N„CüÈñ²vÄ�ülœçùwÝêËŽá�ýÛ–Ñ�»|ògœßoÄøöÛÙOú+_i7ƒ?ô¡Ë.³¬§�fgêϾÜxôÃÚgœqî¹]”ÒUW}ô£ŸúTJçœó”§u”¡ûl^ÿý÷ïß’}øáG?zÓÎ�MÔ� ïXâ×U¿&Ï�â×ÇÚøÇü©O=çûÞ÷õ×Û£ìÏ?ÿ¬³ìÑéÑûŸÏßóì³Ï 'œq†}Sü²Ëì·Ô¯ºê‚ ~õWS:ôP{…]ϳ^d�–¿øâ›nºá†”þÝ¿»à‚½¨û¹Gç#j»Eïž ðŸÿóõ×§ô¦7�uÖ‰'–ä{à�?ýÓ)½ð…çŸo¯×Ÿç…¾ä%öÍóù‘¶þcõ¾?å•t£ÖÙ _—a-GìÁì¦SÙùHû€HÉŸ>Ž_˜ê‘×¥øÆñ+¾)PÔcGÒUõ×~G¤¿ôïwºœ'}+êoÈŸYý^ù§üëgZÎ�¾åògV¿Wþ)ÿú™–3¤oEù…ü™Õï•Ê¿~¦å é[Q~!fõ{åŸò¯Ÿi9CúV”_ÈŸYý^ù§üëgZÎ�¾åògV¿Wþ)ÿú™–3¤oEù…ü™Õï•Ê¿~¦å é[Q~!fõ{åŸò¯Ÿi9CúV”_ÈŸYý^ù7-ÿö¹{¶õß$/îÚæ™{Êm�µEîŽÞ½ñsbÖ‰½m[JwßýÍoÚ£½o¿ýÎ;·l±G„?jçf¯ø¾�›Ýˆ=ä�G?:¥£�~ìcíF¹=лܴ£Ëú;ÿÖ«ß¶íÞ{ïºË]ÿõ¯Ûþ¾û~ð{t»Ý¬µíÁíW¹M‡#Ž8öØ”Ž=ö˜cìQâf›¿�=ÿíÛíýÙ²å{ß»÷^c>pçfûìÜlðÁùÑèíßœ7L½��_»ˆ±âw*î�ý§|C翈jÏ¡úSý™ª¿ñµ³ˆ#T�ŠÊ¿EdÓxåŸòÏPý�¯�E¡úëTTþ-"›Æs(ÿ”¦€êo|í,âÕ_§¢òoÙ4žCù§ü3TãkgG¨þ:•‹È&ϱ‚èý�­Ê}ÄrgŠß}Ò¢¾¡¿\ÅûìÒ_úÛ’¦ü3úµ±Š™êOõ§úSÿQÿUÿÕú³Š·Cë¯Ö_­¿ZµþjýÕúÛ_W1Óú«õWë¯Ö_­¿Zµþ®bÅíÇÐú«õw#­¿»á^ÒÜNo]`œGà…Kñ½f­¹ôçòÄk§üCNœ®Ê?N'å__ÕŸêoþ.\]©ÿp:õ«�ù‡ŽWús:Iÿ¾êÿêÿêÿýšèϸ¾¢þËéÔ×VëŸú¯ú¯ú¯ï õœë+꿜Nµ²6VÿQÿQÿñUQϹºRÿátª•µ±ú�ú�ú�¯ŠzÎÕ•úO§Sãz;½L°ZZT†õ[2n¬ø-½¤¿òOõW*Cý§Ý'‹BSGm^õõõŸRSê?í>Qš:jóªÿ¨ÿ¨ÿ”šRÿi÷‰¢ÐÔQ›WýGýGý§Ô”úO»O…¦ŽÚ¼ê?ê?ê?¥¦ÔÚ}¢(4uÔæUÿQÿQÿ)5¥þÓîE¡©£6¯ú�úÏzì?»n ÷ßžaò[Ãh§ökŸðmT±*~�E—<’þÊ?Õ_®¼WÿAµ¯!B«ÿ¨ÿ¨ÿôkfÞLýu”¾z­þ£þ£þÓ¯™y3õÔQúê!´ú�ú�úO¿fæÍÔPG髇Ðê?ê?ê?ýš™7SÿA¥¯B«ÿ¨ÿ¨ÿôkfÞLýu”¾z­þ£þ³ûÏʽ_6šI) ¤€�R@ H) ¤€�R@ H) ¤€�R@ H) ¤€X ìúzôrÆ~’&âñv–—Åy~4gyYŠçý,/‹óühÎò²8ÏûY^çùÑœåeq(ž÷³¼,Îó£9ËËâP<ïgyYœçGs–—Å¡xÞÏò²8Ï�æ,/‹Cñ¼ŸåeqžÍY^‡ây?ËË⛾ ¬=¶1(þÔIú/BåŸòoÚÑ"²OýOõ§úSýMùƒDýg ¨ÿ¨ÿ¨ÿ¨ÿŒÿ‘Et]ÿ©ÿªÿªÿªÿªÿŽýi­?‹P@ë�Ö­?Z´þhýYÛG‹¦­FZ–³þ¬ìú´·]GI) ¤€�R@ H) ¤€�R@ H) ¤€�R@ H) ¤€X�ûŽ “?ɇüÑq¬ñ#?'Â!~ä�xY;âG~6N„CüÈñ²vÄ�ülœ‡ø‘?âeíˆùÙ8ñ#ÄËÚ?ò³q"âGþˆ—µ#~ägãD8Ä�ü/kGüÈÏÆ‰pˆù#^ÖŽø‘Ÿ�á?òG¼¬ñ#?'Â!~ä�xY;âG~6N„CüÈñ²vÄ�ülœ‡ø‘?âeíˆùÙ8ñ#ÄËÚ?ò³q"âGþˆ—µ#~ägãD8Ä�ü/kGüÈÏÆ‰pˆù#^ÖŽø‘Ÿ�á?òG¼¬ñ#?'Â!~ä�xY;âG~6N„CüÈñ²vÄ�ülœ‡ø‘?âeíˆùÙ8ñ#ÄËÚ?ò³q"âGþˆ—µ#~ägãD8Ä�ü/kGüÈÏÆ‰pˆù#^ÖŽø‘Ÿ�á?òG¼¬ñ#?'Â!~ä�xY;âG~6N„CüÈñ²vÄ�ülœ‡ø‘?âeíˆùÙ8ñ#ÄËÚ?ò³q"âGþˆ—µ#~ägãD8Ä�ü/kGüÈÏÆ‰pž×7гcøˆ {ðˆmË}ð€â›­GœHåŸêOýGý·ëËù¿Ö­?Zuý¡ë_ÿˆ5]êúSןºþÔõçr®<;V]êúSןºþÔõ§®?û+­®¿uý­ëo]÷»Â¢¯Euý©ëO]Ž¿þÜu}ÑYøVsPâù‘âwŠ,·{ÕË\úKS@ùWjb•#Õ_§¶òo•YWb)ÿ”¦€ê¯ÔÄ*Gª¿Nmåß*³®ÄRþ)ÿLÕ_©‰UŽT�ÚÊ¿Uf]‰¥üSþ™ª¿R«©þ:µ•«ÌºKù§ü3T¥&V9Rýuj/'ÿF?Â}ü[ßáù“.ãy¦¡øµrÒ¿û¤Q­ÉrÇÊ¿Z_åŸò//éu^,o¬ú«µUý©þTuE,{¬þS+¬þ£þ£þSWIJÇê?µÂê?ê?ê?uE,{¬þS+¬þ£þ£þSWIJÇê?µÂê?ê?ê?uE,{¬þS+¼ÑúOã:W^SÛÐðEµ¼6V|¯Hk.ý¹<ñÚ)ÿü#²¼Bœ®Ê?N'¯®òOù׿¤òÂå•ê�ÓÉ««úSý©þ|UÔs®®Ô8�jem¬þ£þ£þã«¢žsu¥þÃéT+kcõõõ_õœ«+õN§ZY«ÿ¨ÿ¨ÿøª¨ç\]©ÿp:ÕÊÚXýGýGýÇWE=çêJý§Ó©q½�^&X--*Ãú-7Vü–^Ò_ù§ú+•¡þÓî“E¡©£6¯ú�ú�úO©)õŸvŸ( MµyÕÔÔJM©ÿ´ûDQhê¨Í«þ£þ£þSjJý§Ý'ŠBSGm^õõõŸRSê?í>Qš:jóªÿ¨ÿ¨ÿ”šRÿi÷‰¢ÐÔQ›WýGýg=öŸ]7ÐûoÏ0ù­a´S{ˆ5‹Oø6ªX¿N�¢KIåŸê/WÞ«ÿ ŽÚסÕÔÔú53o¦þƒ:J_=„VÿQÿQÿé×̼™úê(}õZýGýGý§_3ófê?¨£ôÕChõõõŸ~ÍÌ›©ÿ ŽÒW¡ÕÔÔú53o¦þƒ:J_=„VÿQÿY�ýgŸ»gÛü›·ýT×L H) ¤€�R@ H) ¤€�R@ H) ¤€�R@ H) ¤ÀÆS`×7УSûIšˆÇÛY^çùÑœåeq(ž÷³¼,Îó£9ËËâP<ïgyYœçGs–—Å¡xÞÏò²8Ï�æ,/‹Cñ¼ŸåeqžÍY^‡ây?ËËâj�(ëW|S %é?îQl~!œòOù§úSÿQÿUÿó¨!´®°~­?Z´þhýÑú£õGë»j.§õWë¯Ö_­¿Zµþjý]ܺÊ2iýÕú«õWë¯Ö_­¿«\v=Z躶Þv„Y¦]ñmY‘þ»§­¤¤üSþ©þÔÔVyYS®(ÔÕÕÕÕÕ˪°º‘Ö­?Z´þhýÑú³ºU§DÒú£õGë�Ö­?Zʪ°º‘Ö­?yý!n w `KÐêÊ®Ž¤ø�ҿΊÕ�•Ê?S@õ·ºš«#©þ:5”uV¬n¬üSþ™ª¿ÕÕ\Iõש¡ü«³bucåŸòÏPý­®æêHª¿N å_�«+ÿ”¦€êou5WGRýuj(ÿê¬XÝXù§ü3T««¹:Òú®¿}í"ù%Ö/»ŒÛ‰ƒ�+ óF˜Gñ[úaÝZG m˜GúUë¾Y>¿nZG mÒßêR,Ê¿¢Eá¼)Øy#Ì#ý[úaÝZG m˜GúUSÿÅyÓRmhÃ<Ê¿¡jÊ?œ7-Õ†6Ì£üª¦üÃyÓRmhÃ<Ê¿¡jÊ?œ7-Õ†6Ì£üª¦üÃyÓRmhÃ<Ê¿¡jÊ?œ7-Õ†6Ì£üª¦üÃyÓRmhÃ<Ê¿¡jÊ?œ7-Õ†6Ì£üª¦üÃyÓRmhÃ<Ê¿¡j%ÿÂo gaíÑm [´fË·ÃÆåÙ߰ϽHÿq™¤üëjiœjª¿¾ê?ê?ê¿Z´þêúcÜJªë]˜㲦õQý�¦ëÿ� xuæÍU�:ãTóŠêúW׿ºþÕõ¯®uý;n%Ñú«õ×—5ºþè+ ë/]éúK×_ºþZß×_á ô~;_ûlú‚°öØÆ øS$鿔ʿiD‹È>õ?ÕŸêOõ7åõŸE( þ£þ£þ£þ3þDÑ}tý§þ«þ«þ«þ«þ;ö¤µþ,B­?Z´þhýÑú£õgm-š¶iýYÎú³²èÓÞv%¤€�R@ H) ¤€�R@ H) ¤€�R@ H) ¤€�R`5 ì;6Lþ$CtòGDZvÄ�ülœ‡ø‘?âeíˆùÙ8ñ#ÄËÚ?ò³q"âGþˆ—µ#~ägãD8Ä�ü/kGüÈÏÆ‰pˆù#^ÖŽø‘Ÿ�á?òG¼¬ñ#?'Â!~ä�xY;âG~6N„CüÈñ²vÄ�ülœ‡ø‘?âeíˆùÙ8ñ#ÄËÚ?ò³q"âGþˆ—µ#~ägãD8Ä�ü/kGüÈÏÆ‰pˆù#^ÖŽø‘Ÿ�á?òG¼¬ñ#?'Â!~ä�xY;âG~6N„CüÈñ²vÄ�ülœ‡ø‘?âeíˆùÙ8ñ#ÄËÚ?ò³q"âGþˆ—µ#~ägãD8Ä�ü/kGüÈÏÆ‰pˆù#^ÖŽø‘Ÿ�á?òG¼¬ñ#?'Â!~ä�xY;âG~6N„CüÈñ²vÄ�ülœ‡ø‘?âeíˆùÙ8ñ#ÄËÚ?ò³q"âGþˆ—µ#~ägãD8Ä�ü/kGüÈÏÆ‰pˆù#^ÖŽø‘Ÿ�á?òG¼¬ñ#?'Âyþ]ß@ÏŽá#&ìÁ#¶-÷ÁŠo ´q"ý•ª?õõß®,çÿZ´þhýÕõ‡®ý#Ötý©ëO]êúSן˹òìXuý©ëO]êúSןºþ쯴ºþÖõ·®¿uýÝï ‹¾Õõ§®?uý9þús× ôEdá[Í@‰çGŠß)²ÜìU/sé/ýMå_©‰UŽT�ÚÊ¿Uf]‰¥üSþ™ª¿R«©þ:µ•«ÌºKù§ü3T¥&V9Rýuj+ÿV™u%–òOùg ¨þJM¬r¤úëÔVþ­2ëJ,åŸòÏPý•šXåHõש½œüý÷ño}ÿ…çOºŒç™z„â×ÊIÿî“Fµ&Ë+ÿj}•Ê¿¼¤×y±¼±ê¯ÖVõ§úSýÕ±ì±úO­°ú�ú�úO]Ë«ÿÔ «ÿ¨ÿ¨ÿÔ±ì±úO­°ú�ú�úO]Ë«ÿÔ «ÿ¨ÿ¨ÿÔ±ì±úO­ðFë?�è\yMmCÃGÕòÚXñ½"­¹ôçòÄk§üó�Èò qº*ÿ8�¼ºÊ?å_ÿ’Êg—Wª?N'¯®êOõ§úóUQϹºRÿátª•µ±ú�ú�ú�¯ŠzÎÕ•ú§S­¬�ÕÔÔ|UÔs®®Ô8�jem¬þ£þ£þã«¢žsu¥þÃéT+kcõõõ_õœ«+õŸN§Æ ôvz™`µ´¨ ë·dÜXñ[zEú_?ÛRúðlk9Ö&ý[ŠEú·°k³Iÿ–~Òß(ÊXÙøÃ)åú/žµŽ”-•ýüÓúß®“Vµyóúžë]ú·u§u ÝæUý«þëõwUõ—ë>ïsÆ®*~ާüWþïŽüßÛòïúëo¸áúë‡×õª?ÕŸê/wƒîFH™-r´{®ÿòúžëߟ‘ê_õ¯ú/U±§_ÿ–z·¿èËyYg«gy¬úWý«þs5ì¹ë®û¼/g”Gªÿ¬D½_¯ýo× ô~{ª_z7¶«ýÖ±fñ'ÜF«â×í±è’G‘þ?˜m)m›m-ý•¨¢J®Ø¡£üë³”™ôGŠ­l„Ð^ÿ\ï¹þûlªåʨ~Æ ´Ï¿þÑÙôGŠö5CèRï<ðƒô�mͤ?R´¯B+ÿM�¾fófÊ?”Q}õ"t®û¼ïϤ¤h[3„Vý«þWÑÿòõ|ÞçlUþ)ÿV‘9ßü^ù·ÜüËõž÷Ò¿¯€òo¹ù§ëŸiÿþÞÏÒ2C×ßùz>×»ô_­þå�êFÒ_úûœ¨ç‹Zr½çúÏ1”{fþmÊoà¸å9ïÇ&œâ�ùó¨è¾ïl>šDú�˨qè¢4’þ㇎T/ö�®ÿ~³-¾Q¾ÑÏ¿¼Óí‘Î\E�C·5¯­Òœ¢�ë½ÖxÞXú#Eûê�C÷�mͤÿ8EÇ¡[Š÷mEÿèú¾¶ÃÙF9ÿá™q�ÿ¸Š‡Æï�ô§hFO­wÿŽHÿ¬¨W¦=‡nsÔVé?NÑqèZéöxOÓÓl‹ÿžoŸelÝÓÎoÿuþÓþý;ª€õžÿùïù|£]ïÿÞõþû¼Õû¿w¼ÿy�×ûßW`OÍÿ]ß@ïŸN™å_,‹±¼,nì«byYÜîŠ?öB!¿Nö¼X\æe÷,/‹cãfËËâ2/»gyY7ãX^—yÙ=ËËâØ¸Çò²¸ÌËîYÞ—íªVñ>.ë×·g,nxä| ËËâæGzY^7Œ0ßÂò²¸ùц^–—Å #Ì·°¼ççó£Ä^–‡Åőږ—ŵ£ÄV–—Åőږ—ŵ£ÄV–—Åőږ—ŵ£ÄV–—Åőڞeñ¶£ ­l|7Œ0ßÂò²¸ùц^–—Å #Ì·°¼,n~´¡—åeqÃó-,/‹›mèeyYÜ0Â|KÄë¯ç#Ü|vìeyYŽØG°¼,®ÏŽg,/‹Ãû–—ÅõÙñŒåeq8bÁò²¸>;ž±¼,Gì#"^Õ?§S5~éï™Xœ?ÍY^‡ây?ËËâ'ÆÍ»õgÇlw¤¡•Ê¿ñYS¡ëŸN�iyÄÖ߃³­Ü ·?‚æR@ H) ¤€�R@ H) ¤€Ø;¿�É‘ÿ!hª?:޵+¾)«…ô‰�ä<ˆù¹(1 ñ#ÌÌy?òsQbâGþ˜™ó ~äç¢Ä(Ä�ü13çAüÈÏE‰Qˆùcf΃ø‘Ÿ‹£?òÇÌœñ#?%F!~ä�™9âG~.JŒBüÈ3sÄ�ü\”…ø‘?fæ<ˆù¹(1 ñ#ÌÌy?òsQbâGþ˜™ó ~äç¢Ä(Ä�ü13çAü‘?Cüf[Jÿßl[û�óüªó øüéù}Ž›qkÝGç—y‘?ã¦î?òO�›�CüÈŸy¦î?òO�›�CüÈŸy¦î?òO�›�CüÈŸy¦î?òO�›�CüÈŸy¦î?òO�›�CüÈŸy¦î?òO�›�CüÈŸy¦î?òO�›�CüÈŸy¦î?òO�›�CüÈŸy¦î?òO�›�CüÈŸy¦î?òO�›�CüÈŸy¦î?òO�›�CüÈŸy¦î?òO�›�CüÈŸy¦î?òO�›�CüÈŸy¦î?òO�›�CüÈŸy¦î?òO�›�CüÈŸy¦î?òO�›�CüÈŸy¦î?òO�›�óü»¾�žÃG'äÛµí¯Ægâµîßh}SDúw¹¥ü[k�Í;^õ§úSÿQÿÕúï�¤õWë¯) ë�y×kõmÔë�{f[Jßšm)�8ÛR:|¶­Uµøøüˆø/Ͷ”ŽÜ¹uTJ‡îÜ9dxÜFÕx¦m‹Î_׿ºþÕõ¯®uýÛ¿ÒÓõ·böUi¯¢Ó­ZµþjýÕú«õWëo¥Ñú«õ×ègÅô+�ö‘S¯?vÝ@oÓ.ºšˆ_©âwÚ,7¥¤€òOùg ¨þ¢ Y®]õ×é«ü[nžEìÊ?åŸ) ú‹*d¹öÝS÷ζ”îšm)ýôlKéÇfÛrϸfÏßDÿêlën¤ydJ‡Ì¶¹¬ñîÑ¿œ�âwZ¨ÿ”œXåHù§ü3T«¬ºKõ×i¡ü+9±Ê‘òOùg ¨þVYu%–ê¯ÓBùWrb•#åßFοÑ�pŸzýÂÍwúÇóL=Bñkå¤÷IÏZ“厕µ¾Ê?å_¾¤¨óbycÕ_­­êOõ§ú«+bÙcõŸZá�Þî›måçÇͶÕß8ÏšçßB?v¶•ו_gÆ-o¯ü¯µÝèù_Ÿk7Öû_k¢÷_×_ºþª+bÙcõŸZaõõõŸº"–=Vÿ©VÿQÿQÿ©+bÙcõŸZáE÷ŸÆ t.½§¶�á#:êÓ³±â{EZséÏå‰×NùçãâtUþq:yu•Ê¿þ%�Ï.¯TœN^]ÕŸêOõç«¢žsu¥þÓ×éþÙfß8¿óλîJé˜Ù–ÒQ³­Öw÷Œóëȯ+3>¿îòªúçUìý‘ÞN§¾jö=$õ_õ_ŸõœË+Õ§S­¬�Uê?ê?¾*ê9WWê?œNµ²6VÿQÿQÿñUQϹºRÿátª•µ±ú�ú�ú�¯ŠzÎÕUî?�èmy퀚¥aý’Æ�¿¥—ôWþ©þJe¨ÿ´ûdQhê¨Í«þ£þ£þSjJý§Ý'ŠBSGm^õõŸõؘmå›ÝöKãöˆôŸmSk`yÇå×e¿‰n¯óÛ³-¥|öO,­èª?Õßz¬¿V®®Í¦üoé§úWý«þKeèú¿Ý'‹BSGm^õõõŸRSê?í>Qš:jóªÿ¨ÿ¨ÿ”šRÿéúÄ®èýò(Bå‘ Ön-Ñßû†Ó÷gŠ_—çPé¯üSý ë"²¨ÿ ŽÚW¡ÕÔÔú53o¦þƒ:J_=„VÿQÿYOý燳-¥üã‡Í¶”Ž›mýÜ^�³ü:;ìÐC;¬œÇ¶Ù6|Ū?Õß>Í�V sÅ,ZÿЊÖ× ¡Uª?Õ_¿fæÍÔPG髇Ðê?ê?ê?ýš™7SÿA¥¯B«ÿ¨ÿ¨ÿôkfÞLýu”¾zõŸ}ºšó¶J3) ¤€�R@ H) ¤ÀÞ¡ÀöÙ–Òwf[¹Qø„Ù¶çjð7³­<âï1³-¥ýfÛž{^zåR@ H) ¤€�R@ H) ¤€X«»¾��ý$CÄãí,/‹óühÎò²8ÏûY^çùÑœåeq(ž÷³¼,Îó£9ËËâP<ïgyYœçGs–—Å¡xÞÏò²8Ï�æ,/‹Cñ¼ŸåeqžÍY^‡ây?ËËâ¯g[Jù¼Ñy©ÿªÿªÿ«Dýw1ýw¨lߢþ£þ£þÓ¯ ›©ÿ¨ÿ ³bñõ_õ_õßa]©ÿªÿ³bñõßÝÓ‰èk+€öi�I Å£–ÇJÿÖ²îUš7WþÍSù”Ê?”#óýª¿ùúÌ÷ªþTó3yUH¡y~Õßž]Ͷ”˜m)åߟ÷žo_>Ï|ÞY‡±ç¦üß³óßnÁŒ}Ïk¼Þ½ÿu>Œ+ÿÆkVŽPý©þJ6L©þ¦¨–�Qý©þr.LÛ«þ¦éÖ¥úSý­%ô÷�úϼüÙ×>!3_¢vâãæ…->Ì£øE­2ºì¼æ‘þ-ý°n­£†6Ì#ý‡ª-î·9¥¿)ÐR8Û”Y‰z�ó¦FÇcÌ#ý[êaÝZG m˜GúUSÿÅyÓRmhÃ<Ê¿¡j«Ë¿³­|ûˆÙÖzEËöc³­|p ë�ÏçmFÎßcåKA¬[먡 óHÿ¡j«ë?ö#Š?Tçíð˜–óHÿiºµŽÚ¤¿)0Ô¥X”E‹2ÂyS°óF˜Gú·ôúµŽÚ0�ôª¦ëœ7-Õ†6Ì£üª¦üÃyÓRmhÃ<Ê¿¡jë'ÿöµOè´Þ"ôÆFÇÙ©µN8²E<Šo DªÍûíÅyG ù¤¿)0ÔEù§ü›WIQݨÿÍSmXg‘Žª?Õß¼LŠòFõ7O5ÕŸW Ê#õõ«¤üÍëí³-¥M³ÍgÑÆ›çó|p¶ ÿ`�êFýWýwL5Dy¤þ«þ;¯’¢¼Qÿ™§Ú°2#Uª¿y™å�êožjª?¯@”Gê?ê?ó*)ÊõŸyªùê‹ï#©þTó2Iõg ìü÷ aIu–X èˆloÝŽ´¶Ö%$ËËârԲ߽ñ-éì¿o|ãÿý¿o|#¥ïζ”ò?Àå×™Ï/ë’í~ÏâüqhÎò²8ÏûY^çùÑœåeq(ž÷³¼,Îó£9ËËâP<ïgyYœçGs–—Å¡xÞÏò²8Ï�æ,/‹Cñ¼ŸåeqžÍY^‡ây?ËËâ6Ï"¼òOù§üSýE}&²Gýd¬]ýGýgýÇb´?ÓÜé¿ÑÿÕe>ï¨Î#{Ä7Ö®ø�‘Α}¬Î^úKS ʳÈåÓX»òOù§üSýE}&²�í3^ýGýGýGý'ê3‘=ê'cíê?ê?cúO¾/™ófê>Êë̇ü7u�ø‘jÜ|œçßuÝ;òÖ"˸+°.Q>e»ú¯úo�W9/|¦©þTužäüˆò"û£}”gºÿÛÿë×ë»ëºw¡[oSñâQÿDø�ÿGgÛð,ãícM-F±š¯~‡j{ÍÙkŒ�_ú+ÿ|U çu=©þŠ>µ.Åj5e[mi�ÕÔ¸<)ù¤ú+µ4+³F�Eörd7Rý©þT¾*øõkx䯴ÔýDý·¼Çµ.ÅÊç�ú¯ú¯úo]9íq]gê?E£Z—bUÿ‰t©5²±ú¯ú¯ú¯¯Šá¼®'õߢO­K±ªÿFºÔÙXýWýWý×WÅp^×Ó�˜mCžlÙ(÷_óù”=“MñŸúç)¬y´ëz6,~_¿½üB²¸×±Úø�›m)=f¶¥´i¶Åg%ndo1ÍKÄù#»â�þCM²åQä�ì™·ÞKÿZ�þéù#{Ÿ½›Iÿ–*� éù#{+’ôo©"ýM”G‘?²·”VþµTélHÇÈÙ[‘¤K•ÕéGß;<Ê¿ø}Fuù#{+’ôo©ÒÙ�Ž‘?²·"Iÿ–*Òß@yù#{Kiå_K•ΆtŒü‘½Iú·T‘þ¦Ê£ÈÙ[J+ÿZªt6¤cä�ì­HÒ¿¥Šô7PEþÈÞRZù×R¥³!#doEZ�úçûŽGζ”~|¶müû¯Ã÷g¹÷7 ætèö8û„Ù,ѼoÞ'æž?ŸßO̶”ò~ž&}ßrÏ¿«5SüN•ùy=5ÿ[Š÷mÒ_ú›Ê¿~]ôgª¿®OŒ]û*¶fê?�*ª¿Vvd›êOõg¹°ÑûÏg[J‡Î¶œý{Ïþgg[J?3ÛR:`¶uˆï ïôN«ÿ©ÿ)ÿ7~ÿWý·PÿSÿSÿSÿÛè×ÿíî§ë_õõõõÿ±ýßðè_V»ž‹PÓêoÑñß@o¿pk˜ÝKÎ§×ÆE ooó*¾ôWþ•*Bm¨ ÇŽT-ÅÔÔÔJe¨ÿ´ûdQhê¨Í«þ£þ£þSjjUý'×]Þ—W°w�üù¯Jÿ¬²â›Y�eüÃMæÖú“•¨÷Ê?åŸê¯T„ú»O…¦ŽÚ¼ê?ê?ê?¥¦ÔÚ}¢(4uÔæUÿQÿQÿ)5¥þÓîE¡©£6ïzí?»n ÷ÛÃðä-aÚ§6ĚşpU¬Š_·§¢KIåŸê/WÞ«ÿ ŽÚסÕÔÔú53o¦þƒ:J_=„VÿQÿÙýglÞõ³zÏŸM=õ?ÔÑú¹�Ðcßé�•þµH-åŸ)P+6¬úCÕס•Ê?Õ_¿fæÍÔPG髇Ðê?ê?ê?ýš™7SÿA¥¯B«ÿ¬Ïþ³ëú¸—×ó[³±o¸â�iÏ-Åû6é?.£Æ¡ûZ·fÒœ¢ãÐ-Åû6é?NÑqè¾Ö­™ô§è8tKñ¾Mú�Stº¯uk&ýÇ):ÝR¼o“þã‡îkÝšmýó?Œ=Ÿ–&{¢mêù�ÕKù§¿ÿYÊ¿q5�ß)é?NÑqhé�Pþ�˨qh¤~÷„”1+šâ�QKú#Tÿã*j©¯úWþ�˨qhåR@ù7.£Æ¡‹ú»n S”ÿ¥o]ûŒåeqc_ËË✬®,n\tþ Šo ŒUãY]YŽØG°¼,®ÏŽg,/‹Ãû–—ÅõÙñŒåeq8bÁò²¸>;ž±¼,Gì#X^×gÇ3–—Åáˆ}ËËâúìxÆò²8±�`yY\ŸÏX^‡#ö,/‹ë³ãËËâpÄ>‚åeq}vêïÁ·oðÁ”îœm)ýÃlKé'g[J�›m)0Û†g±^-ù‘ôߘm)åüØlKé¨Ù¶;Ïk}¼ÿªõ¿ÝSÃÊÿNwåŸòow( úSý™ê?»£úì#pÊ?åŸêOýGýgw( þ;oýÙç;³íᇣO�Do™}²É¤{œç›Ê3õ8Åï+0UÇ©Çõ£—ߢ›GŠo ¨þÆæ�ò¯¯ÀÔ:šz\?ºêªŽS�“þ}¦ê8õ¸~tåÿT§'ýû LÕqêqýè{Nþçó}`¶•èßÛ¹}ÿû)mݹÝw_JùÜïÏ×Ï3nìuÌÔãrüoÿÙVÕ~ølKéGg[J?2ۆיk�Ÿ_ÇTž©Çå¸y?•gêq9nÞOå™z\Ž›÷Sy¦—ãæýTž©Çå¸y?•gêq9nÞOå™z\Ž›÷Sy¦—ãæýTž©Çå¸y?•gêq9nÞOå™z\Ž›÷Sy¦—ãæýTž©Çå¸y?•gêq9nÞOå™z\Ž›÷Sy¦—ãæýTž©Çå¸y?•gêq9nÞOå™z\Ž›÷Sy¦—ãæýTž©Çå¸y?•gêq9nÞOå™z\Ž›÷Sy¦—ãæýTž©Çå¸y?•gêq9nÞOå™z\Ž›÷Sy¦—ãæýTž©Çå¸y?•gêq9nÞOå™z\Ž›÷Sy¦—ãæýTž©Çå¸y?•g×qÑ7ÐwfÿÒ’Ã1ûÅ|bAñM�á?\áw@úw­í[Ê?åŸêOý'ßhÀ}7#ÔÕM­?¹"¦ìµþjý]�ëïC³-¥m³m¸ß>Û† Èù<¥êcòz”ùü¼ÆÚ8ògû¦Ù–Ò�³­ìó7éÑoŸûxvæ�Mýo¨ oñïï˜#¥¿) üãsfˆTþ™¥Š,ê�2ª¿(C»êOõ§þ£þ›¯Ó™žÑa´þt:hýásfˆÔú£õGë^ˆG¸‹kŠezAN‰6°œÿkýÑú£õW׺þõ�¸Óõ§®?uý©ëO].çʳcÕõ§®?uý©ëO]êú³¿Òêú[×ߺþÖõw¿+,úZTןºþÔõçøëÏ]7Ð]�…o5%ž)~§Èr°W½Ì¥¿ô7”¥&V9Rýuj+ÿV™u%–òOùg ¨þJM¬r¤úëÔVþ­2ëJ,åŸòÏPý•šXåHõש­ü[eÖ•XÊ?åŸ) ú+5±Ê‘ê¯S[ù·Ê¬+±”Ê?S@õWjb•#Õ_§öròoô#ÜÇ¿õýž?é2žgêŠ_+'ý»OÕš,w¬ü«õUþ)ÿò’^çÅòƪ¿Z[ÕŸêOõWWIJÇê?µÂê?ê?ê?uE,{¬þS+¬þ£þ£þSWIJÇê?µÂê?ê?ê?uE,{¬þS+¬þ£þ£þSWIJÇê?µÂ­ÿ4n så5µ QTËkcÅ÷Š´æÒŸË¯�òÏ?"Ë+Äéªüãtòê*ÿ”ýK*Ÿ!\^©þ8�¼ºª?ÕŸêÏWE=çêJý‡Ó©VÖÆê?ê?ê?¾*ê9WWê?œNµ²6VÿQÿQÿñUQϹºRÿátª•µ±ú�ú�ú�¯ŠzÎÕ•ú§S­¬�ÕÔÔ|UÔs®®Ô:�7ÐÛée‚ÕÒ¢2¬ß’qcÅoé%ý•ª¿Rê?í>Yš:jóªÿ¨ÿ¨ÿ”šRÿi÷‰¢ÐÔQ›WýGýGý§Ô”úO»O…¦ŽÚ¼ê?ê?ê?¥¦ÔÚ}¢(4uÔæUÿQÿQÿ)5¥þÓîE¡©£6¯ú�ú�úO©)õŸvŸ( MµyÕÔÖcÿÙu½ÿö “ßF;µ‡X³ø„o£ŠUñëô(ºä‘ôWþ©þr5à½úê¨} ZýGýGý§_3ófê?¨£ôÕChõõõŸ~ÍÌ›©ÿ ŽÒW¡ÕÔÔú53o¦þƒ:J_=„VÿQÿQÿé×̼™úê(}õZýGýGý§_3ófê?¨£ôÕChõõŸõØö¹{¶Í¿yÛOuͤ€�R@ H) ¤€�R@ H) ¤€�R@ H) ¤€�R@ l<v}=:µ±Ÿ¤‰x¼�åeqžÍY^‡ây?ËËâ!’_bý²Ë¸�8ø¸Â0o„y¿¥Ö­uÔІy¤ÿPµî›åóë¦uÔÐ&ýM�¡.Å¢ü+Z”Λ‚�7Â<Ò¿¥Ö­uÔІy¤ÿP5õ_œ7-Õ†6Ì£üª¦üÃyÓRmhÃ<Ê¿¡jÊ?œ7-Õ†6Ì£üª¦üÃyÓRmhÃ<Ê¿¡jÊ?œ7-Õ†6Ì£üª¦üÃyÓRmhÃ<Ê¿¡jÊ?œ7-Õ†6Ì£üª¦üÃyÓRmhÃ<Ê¿¡jÊ?œ7-Õ†6Ì£üªVò/üzÖýÑ–°Ek¶|;lÜQžMñMûÜ‹ô—IÊ¿®–Æ©¦úë+ þ£þ£þ«õG믮?Æ­¤ºþÐõ‡)0.kúWÕhºþß©€WgÞ\õש3N5¯¨®uý«ë_]ÿêúW׿ãV­¿ZM�qY£ë�¾ºþÒõ—®¿tý¥ë¯õ}ýÞ@ï·óµÏ¦/k�m Š?uA’þ‹P@ù§ü›vA´ˆìSÿSý©þTSþ QÿY„ê?ê?ê?ê?ãÿAdÝG×ê¿ê¿ê¿ê¿ê¿cÿAZëÏ"Ðú£õGë�Ö­?ZÖöÑ¢i«‘ÖŸå¬?+»�>ím×QR@ H) ¤€�R@ H) ¤€�R@ H) ¤€�R@ H) V£À¾cÃäO2DÇ!tkGüÈÏÆ‰pˆù#^ÖŽø‘Ÿ�á?òG¼¬ñ#?'Â!~ä�xY;âG~6N„CüÈñ²vÄ�ülœ‡ø‘?âeíˆùÙ8ñ#ÄËÚ?ò³q"âGþˆ—µ#~ägãD8Ä�ü/kGüÈÏÆ‰pˆù#^ÖŽø‘Ÿ�á?òG¼¬ñ#?'Â!~ä�xY;âG~6N„CüÈñ²vÄ�ülœ‡ø‘?âeíˆùÙ8ñ#ÄËÚ?ò³q"âGþˆ—µ#~ägãD8Ä�ü/kGüÈÏÆ‰pˆù#^ÖŽø‘Ÿ�á?òG¼¬ñ#?'Â!~ä�xY;âG~6N„CüÈñ²vÄ�ülœ‡ø‘?âeíˆùÙ8ñ#ÄËÚ?ò³q"âGþˆ—µ#~ägãD8Ä�ü/kGüÈÏÆ‰pˆù#^ÖŽø‘Ÿ�á?òG¼¬ñ#?'Â!~ä�xY;âG~6N„CüÈñ²vÄ�ülœ‡ø‘?âeíˆùÙ8ñ#ÄËÚ?ò³q"œçßõ ôì>bÂiTk²Ü±ò¯ÖWù§üËKz�Ë«þjmUª?Õ_]Ë«ÿÔ «ÿ¨ÿ¨ÿÔ±ì±úO­°ú�ú�úO]Ë«ÿÔ «ÿ¨ÿ¨ÿÔ±ì±úO­°ú�ú�úO]Ë«ÿÔ o´þÓ¸�Ε×Ô64|DQ-¯�ß+ÒšK.O¼vÊ?ÿˆ,¯§«ò�ÓÉ««üSþõ/©|†py¥úãtòêªþTª?_õœ«+õN§ZY«ÿ¨ÿ¨ÿøª¨ç\]©ÿp:ÕÊÚXýGýGýÇWE=çêJý‡Ó©VÖÆê?ê?ê?¾*ê9WWê?œNµ²6VÿQÿQÿñUQϹºRÿétjÜ@o§— VK‹Ê°~KÆ�¿¥—ôWþ©þJe¨ÿ´ûdQhê¨Í«þ£þ£þSjJý§Ý'ŠBSGm^õõõŸRSê?í>Qš:jóªÿ¨ÿ¨ÿ”šRÿi÷‰¢ÐÔQ›WýGýGý§Ô”úO»O…¦ŽÚ¼ê?ê?ê?¥¦ÔÚ}¢(4uÔæUÿQÿY�ýg× ôþÛ3L~kíÔbÍâ¾�*Vůӣè’GÒ_ù§úËÕ€÷ê?¨£ö5DhõõõŸ~ÍÌ›©ÿ ŽÒW¡ÕÔÔú53o¦þƒ:J_=„VÿQÿQÿé×̼™úê(}õZýGýGý§_3ófê?¨£ôÕChõõõŸ~ÍÌ›©ÿ ŽÒW¡ÕÔÖcÿÙçîÙ6ÿæm?Õ5“R@ H) ¤€�R@ H) ¤€�R@ H) ¤€�R@ H)°ñØõ ôèÔÆ~’&âñv–—Åy~4gyYŠçý,/‹óühÎò²8ÏûY^çùÑœåeq(ž÷³¼,Îó£9ËËâP<ïgyYœçGs–—Å¡xÞÏò²8Ï�æ,/‹Cñ¼ŸåeqžÍY^‡ây?ËËââñG `üµoÌe™¶íñ×—žáSÌžvØ�Ž~\@¨·§ã€?¦Ÿ®[ì¨b›Žý‹ªù7Ëë�›ØQÅ6èO u -ˆ¿ EØÓã&øÖÛÓq L?]·ØQÅ6úUCþÕã&¦Z±MÇAüUCüéqS­Ø¦ã þŠª!þô¸‰©VlÓqEÕzÜÄT+¶é8ˆ¿¢jˆ?=nbªÛtÄ_Q5ÄŸ71ÕŠm:⯨âO�›˜jÅ6ñWT ñ§ÇMLµb›Žƒø+ª†øÓã&¦Z±MÇAüU ñ—|�…¥OÄ%ŒÁR/‡•;J¢�Ÿ ç^ ¹HBüù±TN5Œ¿¼È?È?È¿˜0ÿâþ£ÜLŠûÜ�å¢&÷‘ùîÿ{�êÔ«cüyuÊ©&Åý/îqÿ‹û_Üÿâþ·ÜL‚ùó/)P.jpÿ‘W÷_¸ÿÂýî¿pÿµmß%Ðóé¼ñZõ ¡qnBÕ ú7CÄâ¯Ú Q3¢ùããã¯Ê?H�š¡òòòòOù?ˆ4#ûàþùùùùù·ì¤1ÿ4CÌ?˜0ÿ`þÁüƒù§±G‹ªÍF˜Z3ÿ´m½ÚeÇQP @( €P @( €P @( €P @(Ú£@ß²4ü$Cê8Íž:ÎÚ®ákv+OÊOÃ×ì)\k»†¯Ù­<)? _³§p­í¾f·ò¤ü4|͞µ¶køšÝÊ“òÓð5{ ×Ú®ákv+OÊOÃ×ì)\k»†¯Ù­<)? _³§p­í¾f·ò¤ü4|͞µ¶køšÝÊ“òÓð5{ ×Ú®ákv+OÊOÃ×ì)\k»†¯Ù­<)? _³§p­í¾f·ò¤ü4|͞µ¶køšÝÊ“òÓð5{ ×Ú®ákv+OÊOÃ×ì)\k»†¯Ù­<)? _³§p­í¾f·ò¤ü4|͞µ¶køšÝÊ“òÓð5{ ×Ú®ákv+OÊOÃ×ì)\k»†¯Ù­<)? _³§p­í¾f·ò¤ü4|͞µ¶køšÝÊ“òÓð5{ ×Ú®ákv+OÊOÃ×ì)\k»†¯Ù­<)? _³§p­í¾f·ò¤ü4|͞µ¶køšÝÊ“òÓð5{ ×Ú®ákv+OÊOÃ×ì)\k»†¯Ù­<)? _³§p­í¾f·ò¤ü4|͞µ¶køšÝÊ“òÓð5{ ×Ú®ákv+OÊOÃ×ì)\k»†¯Ù­<)? _³§p­í¾f·ò¤ü$þÖ7ÐÙPüÄ}x„¶Ö~xü¤@ì'Ðñ‡ñ‡üƒüëó@kþ�ùóæ_ÜàþW~b ÷Ÿ¸ÿÄý'î?qÿÙš;O�ŠûOÜâþ÷Ÿ¸ÿÄýg~¦Åý7î¿qÿ�ûï|Vhö½(î?qÿ‰ûÏò÷Ÿ[Л= ^{nŸÜ¿W¤µ XªêÐú“ˆ¿0&Ú¹‡ñçÕFüµ3êâñG `ü…1ÑÎ=Œ?¯6â¯�Q¸ˆ?Rã/Œ‰vîaüyµ팺À…øCü‘aL´sãÏ«�økgÔ.Äâ�Àø c¢�{^íÖÄ_éO¸—¿ôùç']ÊãT=üYå ¿Ò(«Ik÷Y}ˆ?žÒ³qѺ}Œ¿¬¶ÙÑê}䟬ÂÈ?È?È?ÙÑê}䟬ÂÈ?È?È?ÙÑê}䟬ÂÈ?È?È?ÙÑê}䟬ÂÈ?È?È?ÙÑê}䟬Â;Zþ‰, Û†WÕ4TüDQV^Ú¿T$V‡þ¶8‘Ú!þä'²¤B6]6�¤ºˆ?Ä_þ–JFˆ-®0þl:Iu1þ0þ0þä¨ÈÖmã ùǦSVYÚGþAþAþ‘£"[·�+ä›NYeiùùùGŽŠlÝ6®�l:e•¥}äää9*²uÛ¸Bþ±é”U–ö‘��ä¨ÈÖmã ùÇëY@�‡ –•V†ÙKRnü1½ ?âã/Œ äŸxž UÝ‹ã"ÿ ÿ ÿ„1…üÏA¡ª{q\äääŸ0¦�ây"(Tu/Ž‹üƒüƒüÆòOkk[ýÅÛ|¨£ €P`{P §gÓ&ç6nܼ¹_?çú÷nTbƒP @( €P @( €P @( @J�­o §Ê>I“‘íV\«ŸÄ×êV\«ŸÆ'íV\«ŸÄ×êV\«ŸÆ'íV\«ŸÄ×êV\«ŸÆ'íV\«ŸÄ×êV\«ŸÆ'íV\«ŸÄ×ê/¿ü Ï>ëÜO¬êݨ|òÉÇwîñÇŸ|rõjçÖ­ëîîé‰}I£9Yûü6n\·ÎŸï£�:GgMçýøã�=Fç½zõÚµ¯¼¢õ:Ønh‹íYýbÇʶ��[»vÍš'Ÿ¤óôQ:ÿU«è P?HyçÖ¬Y·ŽúAÚÓVä·éßÝýÄË–97iÒÑG�éܨÞíè£�›9óÆz(†ëùäÿ‹üÒ£ZÝŠkõ+{V\«øË)`ÕÕêWŽñoÕÕêýË)`ÕÕêWŽñoÕÕêýË)`ÕÕêWŽñoÕÕêýË)`ÕÕêWŽñoÕÕêýË)`ÕÕêWŽñoÕÕêýË)`ÕÕêWŽñoÕÕêýË)`ÕÕêWŽñoÕÕêýË)`ÕÕêW޽yñß´7й£e?µP¶ã)ÿm�¿»Û¹Ûn›=ûì³�ûÁ~ØŸëªU/½äܘ1×^;g-èzèn»¥zQ­�›î»ï?8÷\ç¦O¿õÖW_u®³Ó¹•+�;∓O^°À¹3Ï<þøáëá[ŽÚô§¥µ·rü¡ÿéë¿fÍCÝv›s×\sùå_ýªsK—Ò²mðçø•±>räĉ3g:wúéS¦|ò“Îí·ßàÁ±7˜ùøfÆßæÍÎ=òÈm·]w�s§žzá…ßÿ~HüÌü|Þ��cÆœu–s—^zÎ9ŸùŒsûî;`ÛZYòyðy½ùýðÃË–Ýx£sW_}Þy”ÿ('e7öçロ³“¾Ï:kʔɓ�;öc;è çR½áãï±Çn¼‘®ÛäÉW\qÇ•öÆ�wnáÂåËgÍ"}vÚ‰­”¿o½õ²Ë²ù{×Þ�íõJæùe:ç9äàƒG�rî˜cN8áØc)>dH=„ÆlÌÏýo ­üÑà'B>)¯`cG@è�øÃøCþ÷óocÙ´üÑȿȿȿȿȿȿe>5Z~¦‰�ùóæÌ?˜0ÿ`þ‰Ï‘­lÅüûÖœ›¶€ž N/«ŸØR>­lo'?-À,ZtÎ9£G;7{öòåù~�I :Ë–}ë[&Ä‚èö‡¶²é¯»›–ê‰õÔS�+²Î˜ñ½ï9÷­o}ö³P#hëÿÚ©¬cà÷qõæÜVø_º.o?=XòàƒþÁ’/|áÛß–c#/õÚè¡”o|cÁ‚¹s�=zøðÔbnÃaüÓÂóŠW_=c†sgŸ=ož\tÎâ×Û3ƹû·Ûn»ðBç>x—]Êf–zØi[w7=šð�ïœ}ö¤IÎÍ�[õì‹ ´ð}Í5·Üòå/;wØaC†tt}¸eÍšeË®ºŠËÏ;� [g'ézûíóçö³Î Ì–-[(/^Óä–2eã�»}ñï´Sè1Ÿ¹×kùòÙ³�»÷Þ5kèMÖ�}lذü›¬q}µ€'Ÿ¼óÎÿ8,œ;!ÑqÄÏõ2×,ï˽ˆŸ_Þ·XógSl··€ßkýí1ãÜ+¯<üðè\já|Ԩɓé äSN7î#qnÏ=$üçž{òIZò�?ÿÿ‘žùMu²ÑÂðyçMœH ²‹ßsÏ)§87lYÒ›=þýõ]µjÉZhM-œOœxÁô&÷ĉþ0-èoÞüüó¿ù �ïäÉôæô�~äiô/]Jo®ñ‹ûìãÜÍ7ÿàt¾C‡–�#ëøëî¦OËÏž}Ì1÷wô —צ«k„éÓ�;ùä±c?øAÒoà@Zé¥5kþô'ú’Æ/~qÓMÎ]wÝâÅré}ñbºž'œ@=¸á†åËé�¤ýö o�g™† =ú´Óœ›7oκ¾¯¼òÆd:ô€>ð�ìÂ9åué舟÷„ “'ÞСýûóÙrãÆ—_¦ó¿ë®… o½•bÅç_öY¹rÞ¼óÎsî_þe¿ýn¸�>%ÜqûíÇÖz%ŸOÙëæ1íñ—:ð³’)…êµCÿjq4Eü!þH�jq„ñWM7Œ?VùÇ+Q-Ž0þªéÆÑGÿ’‡þ¤@5ÕtCü±^‰jq„ñWM7Ž>äŒ?Œ?R Ú8Bþ©¦ò+€ü㕨G;úøë].ðè§ŽÆ%Š·êÇqÖ/uœí�Ÿ‡\¶ç¬ïõ×ÿä'´àõ±��rÊa‡é Ý©«Bº½ð‚s?ûÙW¿ºhQ`b=¹EÖ¹�K¶óùq{(·?ýùë{è?)PïA‹íïúÓ›ç�<²bÅüG¸þßû·çŸO_d˜5kìØý÷/Ž¿Áƒ‡ 9þxç.ºhÞ<údø;ß9yòI'ÑB¬ÿä;!ÒèwÜñè£':Gßuhämâ›6=ö-„_z)-ÀÊmêÔ+¯¤ä)SŽ:ŠíÃqC†ŒAýY¶lþ|ºŽ£GÓ›ß!'¬ZEç{ÓM÷ßOîL›ÖÕµÇ=à¤2�~ýýóÿçÿü¯ÿ_8§…þ .¸þzz#üÄ:(Î?|8-(zè‘G~ìcÎ}æ3'Þs�sÿôO'žy&=ÈΙúvá…×_Ì1¤×´iGlÙ=º.ûïDï–mÍïgûOŽÚ÷y|äȯ|…~cÚ´±c�ãåóìqY…¦MûÒ—þ÷ÿ¦/�Ì�KÇ�wžÿ‚ã.Zô£у_ú’_@ßygBÊówزè¡5Å*i�sݺ5½›sO?ý\ïæ\w7µú�ö^xá‰'èÓôwß½bŲež—ÎcåÊGyüqêÿ_þë7ó¯[·z5ùÑÙÓqËj•+VÜwŸs«W¯[Gç�꿦?×ÓÓݽv-]ÏûÀC{tÞžoÕª5k^~™{JÆ -~�ù_~ù…H'RË—ë×Ó§¦ù¸žžW^¡öG‘ü+VÐõY¿ÞëÚݽn]Ï€³f �÷¦M„$ÙÃQ´ø– þügºnoíÚW^ñÇ¥Ž‰µs?¤�û/Û¹^ï¸��{öÙ?þ1,yûó:üpçÆ�=šÎyKãôíû®w9wÒIgž9u*{‡’Ž Ú«æ¿uë~ó›_þ’Š9‚=fgçĉW^Ι©xÞÐBõ—¾ô½ïÑ›Ùr›7ïæ›iá–´ÉnEoµêßÓ³fÍþ'½1OY-¿Ñù|ík Ò¾\8gÏÿ Aûîû7ãܹçΟO Ñr[µjÞ¼%KhÜÑhÈn!ÿR_ׯçqãËuë²™&Œ#F(ö{Ãzw=›ãÈ7uÞ[¶ôíK¿u>zô´içžK_ ðÈwåÊßþÖ¹§žòç�ÆÉÇŸ—©ãªÆãrΗ[ò%øI�¼&¾â/f•m)¡?â¿^$¥â㿞jrôÕË㈿zJ"þH�bܧâùù§ÞHJÅ òO=Õ�¤©8Bþ±åŸ)(×S²=]¦þ¬àOÈŠkõ+žÇ›ÍÏgDËG´e—ñ| ½MyË-÷Þû…/Ð’#FÄ>]¯ÿ´0tÏ=‹]q¥Ë-[ÒL!�’¥ ÷¡‡~ü㫯vîôÓ¿þuúT5ûóñ¾ÅÿO˜0s&}ZúÌ3'L 7>ùMMöäã7mzúéŸþÔ¹N8é$úD6o3fÌ™sÍ5Ä·d érÅþ�Ózü#G:GïåÒ'¯�:êíoúiç¾ûݯ|…~Ûxî\Û/^O˜0kÖµ×:÷ÿ0~ü¡‡:Ç¿«Ì¼|~Ù’ôðÁ%K¾óú¤ô%—Ì›—µÖßïì3†~ƒùÒKÏ9‡Îsß}ãï/ÿk¯Ñ‚êŒ&�ôQhÂîê¢O`_yå§>Eç1cÆyç]w]œ“Œ¯¿~Ù²üGçþë¿Î?Ü8úÄöý÷g½¿ùÍŋﺫø“éþww?ò}‚zìØ)SœË¢Ñ'®—,ñŸ6ϾeL Í«W?üð¯~EçñôÓÔ¯w¾“Þ5vî ƒ† ‹)�æÏž}qŸŽó Û6H+ég�^™ÿm½›ŒeÂåx–ÁŶàϸYZœýÕ¯–,¡…f¹�tÒ¸q—Å�{’ç0à€è�ôÉ“éZÓ›ó|äÒ¥´@ÿÇ?ž{.½aÀ±^±o÷¡EîmÙ²y3�÷¢E4nåvøáS§Òo•wœ�pÖ+Öy,ÕÙ¯ÿÎÎ㎣ߞ3æ’Kè�îð.:íýö·ÏÊR´åóQGïæÛãÿgÞ¸µ^kàÏzUÕ?‹aÛL'èO „qÓ(Û†øÏf’¬2Ú>Æ_L!Œ?Œ?ää_ë¼bõ+æäߢ&õÿýó‡þ˜ÿã#)-Ù¶øQ˜ÿ1ÿcþÇüo�W¬~ÙÌã÷‘Šš`þÇüƒùóÏŽ7ÿô�%»V´UŸ�šs6íâÓ'/œwönÎñ"7÷fÁ‚k¯½ývz›[¸¤aVo[·î�œûÎwŸÄÔÙÙÕEK5]]òØxâò­Þ—Þ…\¶ìª«hA”Î…?×Så¢E³gÓÂî¨Q³gßv½Qž÷dý{z^]ÚÈóÊ+§OÏ.œóÑõøiIjÆŒñãé“Éçœ3cF™…sÆ_´è²ËN?�Þä¿ï>zC;,Œ±G(é ëÛn›={Ô¨ò 猲jÕÒ¥ôFñg?;z4-üÝwßÚµù7™ó×À€=÷Ì·¬\I*Ô[8g.ŠE:–�:êsŸ£EU¹ÝrËÝw?ñD¶5Ï–µÐþºu¿ýí½÷æΩ}äÈ™3?üaç² çÞÿÁiÁò¤“N=•8ï¼ /¤ß‚ž2eüxZ`}ä‘X4БշÁƒ�ûë¿þð‡åX ÅþŸþôž{V¯ö7tq†ÐzCŸ–µIo¹ :hPý%èüÿùV_£…è7Þ(ê0~¼s‡6|x욊bXÔF×àC:í4Ùú4üï~Çï>§Ž¶¶÷éCgüÜs?Ì™.{ä§?}≇Zdÿ³ù'xÑ^ПÛéWÎG�¾àï·ßî¿ìÀ_z˜0�ÎÙ›ËŽŽ·½�~³œë¾ÜsÏþýý¸(òä=}mË–�ãžiýý‘k×RžþÑ�ò ç4R製ö¢³kß&õo³g?)ÐnÕô‡þˆ¿0Ú½‡ñ‡ñ‡ñ×îQø0þ0þ0þÂxh÷ÆÆÆ_»G]àÃøÃøÃø ã¡Ý{íu�¯Uã¯ôz½M:]ͺTmOÃ×ìÕXÃQ~q±åàƒ?õ)ç¦OŸ9s̘ì«V}ûÛÎýâ«Vå—Îê³G½í¶ÿ÷â{í'N�ú™Ï8÷Þ÷†s­·ÇélíÚ{î¡·TÏ?áBúäyv£Eÿ³Îºêª… i�ý®Þ͹;{7ú4ù‚W]uÖYÅèW�¿úU²ßw_ñáBgæ,SVúhµssæÜt-Äßu×=÷ï-·£s´¨(7z»tùr~ÇÔ9zÃöòËo¸�>ñ|ç�÷ônô›Õ„@¿MKnÁ¹ïÿ»ß%žîî¸þkÖ¬XqýõÎåq>àLž|ñÅÿöo´À~ÇwÞI_ðç}óÍóç_~y8ïì@¦¥µéÓ¿õ-ú­îyþ¬` {ôF;=¸pÍ5 Ð#·ôn7ßìÜâÅK–\v™sì—_‡ óXŒ[!@IDAT•×ùòþðî»éS׌™ççV*é�÷øéOå›Ò¤ç¸qùÅžÏ=÷XïP²ý¡íGyê)z0ÁºI|yÛ:èÄéÓëryáÂóÏÿô§�ûÖ·n¸�>í¿zõÚµ§¯Ô6ú$ýþ@ñrõÕgœA¿yýío¯\™WdâDºžG½×^±tæ—ç•®÷ô<ÿ<�ç+ò<#GÒ§æßñŽü»Ï>ÛwÛmÈ��‹¬o¼ÑÓ»Û­-ŒOÑðì³ô%†0î<Æá‡ÓƒG1lXþÌó ù(ÌÚò*K¿~´�>hÐν=B[°ò^8¿b&&FOó3’/ûôyõUú„;kðó~ôSG«VÝwå�sÎ;–~»]ª3kÖé§Ó8~?�a©¥øùXÍÎ~UK _³Wååã4|ÍÎ8UK _³Wååã4|ÍÎ8UK _³Wååã4|ÍÎ8UK _³Wååã4|ÍÎ8UK _³Wååã4|ÍÎ8UK _³Wååã4|ÍÎ8UK _³Wååã4|ÍÎ8UK _³Wååã4|ÍÎ8UK _³Wååã4|ÍÎ8UK _³Wååã4|ÍÎ8UK _³Wååã4|ÍÎ8UK _³Wååã4|ÍÎ8UK _³Wååã4|ÍÎ8UK _³Wååã4|ÍÎ8UK _³Wååã4|ÍÎ8UK _³Wååã4|ÍÎ8UK _³Wååã4|ÍÎ8UK _³Wååã4|ÍÎ8UK _³Wååã4|ÍÎ8UK _³Wååã4|ÍÎ8UK _³Wååã4|ÍÎ8UK _³Wååã4|ÍÎ8UK _³Wååã4|ÍÎ8UK‰¿u]A~!"»|žfžù½—ÿÅi¡ç ƒ>úQZ�Ûo?êièûìÙK–Ð"ËæÍùvö­==O>I £W^I ¯AçÎNZ°:ú褷-ׯ·. ù·ß—.�3‡Љ'{^_¼`-úÓó7ûîK Výz7úÄyGõgøð#�¤û¹só¿¹Ìç5wîw¿›zÃ>Ë“í'}ªùúëçÎ¥…§#ŽØk¯]vq®oß-[ˆwÈbtîË_¾é&úd;óðñTÒbéUW-YB ø#Fì·½‰ËJîߟh!ûþ�>-âeÿ—ÚéÍôŸüäÚkiž7æŸ1ãškn¹Å¹iÓŽ?þàƒ�Ûe—þý™“Î{èÐÎNú¤ö¬YË—ßp½yNˆŒBåòåô©íeËäƒÞ‡¼óþ¾½«kòdz à{ß»ðÂI“ü›ÊôSCz7ŠƒaÃö؃ÞÄ}ÜÛ¹±c?ûÙýö ­´äGoXßÿš5ô&´Ü{w÷OÐ'åý—¸ÿôF-= ÒÕ5t(õ7´{¤}ö9ôÐ£Ž ¨µîüÿþÓ5èêz÷»é<³íÁ›öò½—øyß,ÿ�!‡æÜ?ÿóÍ7Ó'ÆéáÚ˜gÑ¢9sÎ>›ÞŒ;ö„œ;¶¶Q\|þóóæù¥Ob§ÿººN;�Îo»íÌ3éz†ÅórççÏ"ûÿ�½›sÏ<”öÖW_õ¥†·ïºëÞ{Ç>QÎýÏží§ÚÓúóRt©OŸÁƒIŠ…ø–?_öIñKUŠ×?�ìñóÓxèx>'*·lY¹’~*ãØc�ìÝèK´…’Z©ýè£G�¦8:ùä/}éÒKåÛ�»à‚yó(Žÿž÷äÇ¥gK�WZÿìY†ýÐÿÐfÙ¿Œ4V-_lÏ—Ð_Ž ¼>©âñ—i)ùVm|ivF•%âñ—�4Ž�|«_š�Qe‰øCüå#�#$ߪŗfgTY"þùHãÉ·jñ¥ÙU–ˆ?Ä_>Ò8Bò­Z|ivF•%âñ—�4Ž�|«_š�Qe‰øCüå#�#$ߪŗfgTY"þùHãÉ·jñ¥ÙU–Ûküm]@Ow<¿  ;®×ó å¿£ðaÃz»x§�† ùÀœ;å^Êc%ônÎ=üð† 1¥Iò¤·Óo‡ó‡Û™gâÄ)SŽ9†N;:èMÉîîT"`>_öô¬Yóàƒô¦wþÌ]]S§Ò‚ãñÇN aÌŸ?:ÔhYö“Ÿtîâ‹}¿ø¼èÝËûîsîé§éŒ‚j�~Ù›Þ >è ü{¥’¿£cèPZÐ?þxÙÏ®®�ܹ÷¿�=²‹wá|˜¹£ãïpî�Cè=ÐìSß¹¿ü…>RM äuÚ²eĈóϧ7¯;lÈ�,N~?ðï´-\ÓûËô†½Ün¹eåÊ?ýI¶’þÅ6úTÿ´i“'ÓÂ]GGÌ#øý¢æa‡�C×KnK—Þ->åî=Xút;½YϤf܉Ç�£ÅüU è;ï¼ÿþ´P~ûíK–Üt“s7Õ6ú4ú²e´€½ß~ô^qvá;ë÷ê÷OzËúêÕO>IŸloøK[ý¥—žþ™gœ{á…uëømd¤v~Zô÷ëG)ýâ�=ç8ÿàÁC†PœË�¼cGÐuŽµÇ½ •"@¢Së† ÙvŽ“à™gá/;вôÉ';wÆ_üâgPI}¡aúôl�Û'M:òHzpäÇ?þÃê]Ûì¹ð9äÏÀ·rïã½â#CYì—·¥Úó›»î¢/=¬YC¿x_ÜjòGÆzZÿ"F¼%¦@ÑüR›X´HŸzuè_O¶!þñ‘oå¸ÑKŒ?]#šeñH‹·Z4õ>ˆ?‹Vˆ?Œ¿øH‹·Zb ã�@þ±Ä òòO<ÓÄ[-1å}0þ,ZaüaüÅGZ¼ÕS¤ò�%V��â™&ÞÊ1ÕÁ;­+ó'À é€mö™´—_†!÷“Ýha÷È#O:‰Þ§wyé·°ÉNŸ²^¼xùrú„úa‡�xbþ aú¼4}êýƯ».¯ -YŸpÂÑGûß�Þ¼™~³Y.Ä1?ÉúoÜøÒKôÙn¶sûÊ•?ÿù/~AoÚ¾ç=ôié-[6mʦ`éß§ÏN;‘¿û]~�™ùè—~óW€-¾d¼�wÚÉö«À}úÄÞ”Ù»Ñ'Ä-ý'fê/•ÌŸí#µóÆ:q�Ë‘#�:êÀ‹|lç’ñ¹þÎw~8-ôÓ"8=8Aî&}¨ÿR'ª§Î˦UèóÔÙI¿UN‹øôfíÂ…žŸ>åNŸ._·Îâ>ûPº]ÆõáØc»ºèÍ÷ÔÆýÁí•çöÔq�¶¯Zå?aòÉ—^ú£uìê?þ´Óè tê�s{î9h}9àùçŸx‚~»zÉ’‹.¢ŸX¸ã¾«VÑ·œûüç/¦wÓç̹å–o~“¾”0dHö��âyç¯*¡Ñ5 ýïé!¹Lmù#‹ÈõZº»_y%6¾‰;Sõðb¶øù ”õ ýô­²ÿ/½ôì³”ÿh£ ²r¥¯ñqìï=ŠÿõÕÍ›ó4°�ÔÙ×Éjé–Ÿ¾80sæ7¾Aùv·Ý6÷nÎQVô×q§Þ�dÙ´‰¾ðÌ3¿û=84g΂K—†ë¼xñܹôe *©‡7ÜpdzfÑ$á[|æÍ-óW‰ÎÚŸ7õ°¹Lq´< ø¡?â/ä…ø˜if+Æ_VMääää¾¿Ëæ†Öì#ÿfuEþEþEþEþEþÅ¿¿ó3cv–hæ~žóæÌ?˜0ÿ`þÉÏ ÕæœÈ:¥ÚêÃû4ì¢÷·ý_Ü훟ua5¨7ô/úî²ËÁÓãôûÌ´ wÝuþˆ¥K¿þuúÍï/|៘6�>ÁíõïéY½ú?ÿÓ¹Ù³ùÝ_�ÜÙ9u*½Ù»ÿþþ ^úMâØc5ù|‚þ~Ù�Øó>«VÑÂîW¿zî¹|L½’ñ$ CgüÐCþ7®÷ïÝü§‹ógY£¯EœG`œôðf?VÌO‘蕹7yîƒÄ üì!�粳ݗ]]øßþ[¾Í×äñy:K:O^ègþåËï¾û÷¿§…Ôñãé·¯ èÓ‡‘ò�…íùžÆ[£OŸŽZÈþøÇgÌð‹øþ'øSî<°f -®�=l˜ï¹ÿtû­·ò·iüøqãœ;àî ·küò ðq\Ö?>xy¿"Úºu´€yÑE—\BgÌh|ÜÌ™×^K¿Q=a¡‡úOØâË¿îÝ:ˆ~àøãéMýeË®¾šFÂyçñGÝ}\OŸ~íµwÜAû³f�M_˜Èã¤j!^Ù£_?Òùíoçº/·l8Pž{փ㦈ç�zñÅ?þñ׿¦þÓŽ,ú3û2UE¯žÂ}í5¾ÌãÑ>¾¨]¼q{Ç;=ô¤“œ›Ü»~8é˜W²OŸþ½e·U«hAzÞ¼¥K³�êì´SGGêß>/ìQ¾NGyÝèÑçNÆŸ1È?>fêÇÆæ?Î'>^lÿGþAþÑ2 ò�YõFò/ò¯�’ú£IÆò/òoýˆÁý¯3šJÈ?È?XÒ²)柼˜µˆÁüSfþ‰, Ç'.¹` ]†|Ø–©mßüñ³¿ÅMJÐÂÝ1Ç\|1-€_wÝ…òÒ$ýùOúë_Ó§‰'M:ôPZp~à�[oýá‹ú�rʉ'rH¾�C_¶ÆÛó^¡ÖÙI F&rÈî»§àd<Èúk¯½ø"-|½ç=»îš_ Lù=Q©¸’ø¬3·û3%D¶äÑí5y|\½7Þxýuz3›¶ü²<Þû„ÿoÙ[’ïìÜsÏ]wÕ?ÉN8ÄÀÿ\ÞÓø½ßŒå?ºÏ è¾�>åþä“´€>a} �?ÝN‹ÅÙmúô±ci᯸xiãÏbå÷ãÇóu¦øð}�û=ýôƒþìgþmæ,î„ \@¿AŸZ8g_�îk»ìB:L›vÁÎýÏÿyç�4^¿ÿ}úNm‹Ó’èïÿ÷O «ò§¼�åÿýûÓƒL£Î‰Âµ|ùš5νø¢ôfç�ý§Þkݯ]ÿì™fy¼.¯¿þê«q…²¾±ýøQEý x×»è·á?œFÈwøßŒwîþûé§&ydýú è‹»ícá¶!Cößÿc£Ÿ$ð%·ËrãÆG¥Oh�<âmÓ¦Ôè©~ð‘ñ²xÔ«¯ÒOc¼ñ)@ è^w¾EF0€TùÌgÎ:‹~ãŽ;–.ýÂè {Äý½Ûc�Ñ×Eüzø]t>>�\Ô?î—?ªJ-Ž ~ýùº§F_ÅóÇ@ÿ¼¾†øCüQþÅøó™ù'ž'c¹£\[ùùùùóæš!0ÿÆçÉrsmÌ;Ž‹ùó/æ_Ì¿˜1ÿbþÅýǶrÿµuÝOÏé É+vËk“7<1ŸlÛŽÂO“|ýÍ{ >b½ÁKËf´€Îï—Ï™³h½qþ¹Ï|ð{ÞCŸ’¾î:^tñ¸#G~å+´05l˜\¼Œßz¦Î¦§‡†ä6räĉ_ü"}²xìØáÃ¥Õ^O_ߎ'ö àqöOûå‡ã†ã7ÏO­¾ÅÿŸ½B×éî»~˜~{Ò¤øo §ù_~™>�¿jŸ/yÒ'Ä÷ÝwèÐð†+óÇ®iêLù*Óüþ莎aÃè�߳΢˜Ó²>ÊèSîô[ͯ¼âÐ~øg?“Ÿn§7Ô?úÑ ‹~„�ß4~Ê4Ù#¼ �çŸ×__¿þÏÎ"ûý¿þëð_ `õŠüd)Æ‹s´�¾Ï>´\L/ ûšƒ¾µžþì¡—ô@ÍC=ýô”)Îíµ×¾ûÚD¡‡h{éRùÐåš÷½oï½c×­Šþt>{ì±÷Þ¾'!KÑÞ¿ÿûÏþ裔§&L8à€l_ËëOGÿîw¿ü%çÈ<Ÿy¶5èŸo¥ZÚß[‹GPK,.âž¾•X|<õïOµ§±�Ýúô4ˆ0âøñÞ�Ç?sÔèñÌ>Ùü>.9+gµ¡ýê×?…˜g€þПã,¾†ø³�#ÖùÏgkÜ ÿ ÿ ÿàþ+•e­yù×+€ùó�ÿ÷_jDñH ñB{)oŒ¿”2y¹†ñ‡ñ‡ñgÿ»…�äŸT–AþM)Ã7_"ÿ"ÿ¾òo_ûrÃ�J—eÎŽÀŸ_’óÚP[¾�kЧ¢?ó™É“;;³:.]zÓMÎýKïö½ïÑ/¥gmÎ�vÚç?ôÑÙ·žý~$ •º¼ã´@ï—OÙ›òò“{ïuŽ~?Ù¶1OϦMô rÚèÓΛ6ýå/1ßN°ì‘:O¶‡2)¬*û¥ñâü)ýR:­\¹t)éô ÜföeŠÿ±Ç~þóE‹h�oYØß¹ØïšÇѳ\q�¶Ÿônð‡?ü©OÑ›Õa[µê—¿¤…ÛÇ{è!çÎ6l]]Ó§{,-膥¿` {þàMg%¯`Öjß'5²_àóX×»ù/ÄyØ/ÆDï€wwÓ/\7þii©‡'}é|�8bܸɓƒ…�ÿÉOV¬øíoC{q/ýé'~õ+ç¾ýmÿ¡sÆ¡GuŽ:о‘U' ‘_¨Ùöhøè£'N¤z�?vùòÙ³ÿå_œ»çžµkóŸs�óÈãì[Gt\wÝܹa‰Þ[)wí¿ÿž{Òr#Ï${&ëþHÙš>ɔן­áø×^{é¥â¶lÙ°�Žäø‘üŒSµ ü6ðÇãÒ¦^Ñ ú—‹¨rÞE½e ô/§h9o©v±ýË)Zλ¨·l�þå-ç-Õ.Ö¡9EËyõ–-пœ¢å¼¥ÚÅ:ô/§h9ï¢Þ²ú—S´œ·T»X‡þå-ç]Ô[¶@ÿrŠ–ó–jëпœ¢å¼‹zËè_NÑrÞRíbú—S´œwQoÙýË)ZÎ[ª]¬¿Uôߺ€^”À·È…Δ_Ùv+®Õo[à�-¥P[¼Ý/ rȸq'Ÿœ?ûûïwnAï&ÏéÍßãŽ;è !C²þõÿð㦣·lÙm·÷½Ï¹N🎈÷ßOŸH¾æš%KèÃEý%↠ä7{öÑGýR0}ÒzôèQ£hmõêüòYàÉïIT¶Æøc¾±6Æh¤Lë´jÕܹ´Pùÿ/-4k½ìî^µêÖ[�ûúׯ¸B¾IK �ŸþôG?JŸL·n¡¿õ¯ �uÝk¯~�>åž}�‚âïË_ž<ùôÓýײŸüäG?šàCãïé¡7¢W¬X¸ðê«)N.ºhölç.\±‚–x5Ýø<³çPoÏ=ìÝ‚?w.ýj¹s�=棛ۃg|oõê+èÓïü†~ÖëÝïvnÈZFÎn›7[ú+ù‡ ëê¢ñÃ×�í+WΙCŸþ^²äÑGù̳l¼LLmôÉ÷ï}ï›ß¼ðÂàÁ8ãÇ�óÁ†‡ ¸=xÆ÷4¿þý‡§ñþ•¯ŒbÒcÑ‚÷™gŽK¿!÷Ý«WÓƒ5¼i¸7®YóàƒÎ]vÙ '̘>}ÎÇwvNžL?uqÈ!±åsïåχ˜ø¨ VŠŸ£9ؤ[ÂU΢.8hoóæ—_~â çæÏÿÆ7Î8£¸€îÜ{ßK?å1p`þ8Y ç!-�Õ­¸V¿²gcŵú�¿œV]­~åØc÷qð“qmiµêjõ+{.V\«øË)`ÕÕêWŽãߪ«Õú—SÀª«Õ¯;âߪ«Õú—SÀª«Õ¯;âߪ«Õú—SÀª«Õ¯;âߪ«Õú—SÀª«Õ¯;âߪ«Õú—SÀª«Õ¯;âߪ«ÕïÍÒë'ÜS'`}’€;jõo¶ß¶ÀŸÒ0ÖÎýï߯½>üaçfÌðKgW^)ß³ôG�5k}ò}¯½b¿ ]o@’2Å3 ~zuôè)SfÍrî’K–/¿ì²à·xñ%—бO=µjÕÌ™Î}ñ‹ãƽÿýÎýÕ_yŸõëÿô':Óï|çÜs¯¸¢¸ÀEç{ Ù7•;6¬ƒïû„2سm´O*¹\R›¾ñ²ãçÏ*Ov¯Óé§guâã–.½â Zhþýïy„ÊfÌøÿƒ®ç�!ôvé3Ïüú×·ÜâÜÙgÏž½`AÀå=Z<åz9ÿXÛ‹çéÏ”ÛÙ�zO>/nO•Áoð`z�‚ßC_¹’~P ¸õéÓÙ9}ºsúÐ^{…ÅÄà—â_½úŽ;háú쳯¼2�¼t)½Û¾ï¾K–Üu}ê{�=ø�ö€jïóðÞ÷Ò(véAú :oÄ?yò±Ç>õ}ºþòËé§ F�>ì°}ö¡Oç{ýzzº»Ÿ}Ö¿yýõ4.æÍ£X/æ3æ‚ Ž;ιw½ËŸ5·?ýôòåõú»Ï>7ß|ç�ÎuÔСù‘ì¿H1uêôé” há<› .½ôïþnÚ4zþÊ+/¾˜|yÿûé“ô´Pû‡?Ð'Ó¿öµSO¥7µéñ‡üF_øÜç>òúMnÞ¸?\O•?ÇöÙsæ8÷“Ÿ,_Nq’=wÒoÆŒ“N¢…öñãÏ8ƒÎ„‘#=Ô¹ÝwßuWÒáõ××®]½Ú¹\¾œ®Ó%—Ì�›}€ˆÏƒt1¹sÏ�<™Þ¨ç˜aýÙ/ä‡|ÏŠ~Òž¯Ó79.¹„âhñbsC†lÙB_Ú`Æã¯G<ÿü“OÒósç.X ”É"ík&ÐuæóÏÚ²ûÌ“m‹íóyXý›í~R ÄEìeÛ ?)�U$¾oÕ ñ‡øÃøCþ±æ‹fû!ÿ ÿ ÿ ÿ4;¯Xñ����¬ù¢Ù~È?È?È?È?ÍÎ+V<ääŸ7#ÿô.]4gKº¿¬>±4‡)޲-ðÓ™Wœ.ký7mé7‰G�ž4É/ú­\™]ô£ci¡åÓŸ5ªÞÊ}úôôФ³oyÒ±Ú6`ÀþûÓÛüù_LoLNštá…Ù…Þ•+, 7†§LɶÖCíìœ:•ÌÆ�Ûÿ°°®´Øcp⫇˜·õô�¢ÝÝYl%Þ%ã~o£E0ÚØN{¾%þÿöÛÏëô�oÐë¤Iç�—½N�?~ë­ßþ¶sÓ§û2Ž’m3†L¸êªiÓü£ÌŸïEñ<=†Œ3Ù?fâþ¥ìäG¿eý�ŒCÐ;çÔ¹ýíßž|òG>B ˆÒâë)ü×_é¥_ŒC­Ï>ûÒKþÓê{ìÿ¸xúج%ð÷ëG ŧ�¶xñUW9÷›ßŒæ™ô›àÁ›w¯¸âì³é·ÅéáËÆ:Ò0-ŸuÖ‰'fÇ#óký]³æ¥—ü5• èþúvؤI—^êÜÌ™«VÑ—fÏöËÈÄOoì_qÅ™g~þó¶ó¦/\~ùM7ÑÜö_P·¨Qôéè:ôˆ#œûç¾ùfZH¿ä’qãh!=»NGQtÑòñ(+âr õÿøã�›3gñbz£ý ƒòÑÂú³?Ýž½þ›7çÇãÍ�{Ùe_ÿ:ת—Ó§_y%ýDÇqÇí»o¾Õ1éÈbÿ=éÆvßÒšÿƒŸ(j ýo�ûŒä?©ò?ò?ò?òüîPf‹êuÜÇFþEþEþEþ�g‡êùV‰üWùùùù7žd­^³òo_ý”}Ðýâ� ·}ñï´Ó€ù?¤í»/ýÖ4½áWÈ·ú¡}âô†lW-|uõnTŽ9u*}ªøH-]2j¿~ôfðî»çß}÷!CvÞ™}ÒegçñÇÓBã-·ÌŸùåô†¨_ÖM,ôéiz¯ôškœ»ýöùóiarØ0ÿn¥ 쎎Ýv£OwuåÏóío�Ÿ'OÀ�­£ƒú³çž¡Åï½ím1…°Ò¯»í¶ûîùO‘Äo‘f‘%gçèÑô&ðí·/\H ´'ޙŠ|Y¿øá´ÀþÍoÒÂûòå]4a‚s¤…ßòQCmtžÃ†í¿¿üÈþî»;·óÎù÷—ÿ?H¡çú_pêm2ä}ï£7çiÑVntÞÿø‡>4|¸´èõw¿{Ĉÿþß)Žó¾}úŒuÖYÎ�±ß~õëŸw5Ôúõ6ìÈ#�û×]¶ŒÞh¾øâ©S³¿õt ÇÄ÷:;éÜgμꪅ éÍôY³h!7õáðTIZÈ1¢³3Þßpý)_L˜pÑE·ßN àgœA|Ö�¾@?õ@?Á@oÐ�Á_ ¨¦£ö`‰ºN~2O çt‹C>»Ñ´Î×ܯÎNÿIþÓN›9“òéâÅË–Ñ—&M:ê¨ì—4ܲúK<:ÙV®^5n< ø¡¹x“Þˆ?©H™:ÆÆ_™x)úbü5±·`üaüÙ£%æ‰ñSÅÚ†ñ‡ñg�•¸Æ_\[+ÆÆŸ-RR^)e,í–8Iû`ü¥µÑ-;öøëóBmÛ²….t™®ÒÂ" ­²ÇÉ�«ŠSõ8ðçÐtìî^·níZç^~yófzSyàÀŽzƒöõ×ýï)ÓÂ7-jŸ"γ†šÆ<ó{U�Ë£„7ÐËÆ±äïî~ùå^ �6m¢¥í�ûõ£ß÷~õÕÍ›I›·¿}èPz‚4Ìn'k«·_õ8‰pÖ¯¿çZàûÄ'ha{Õ*²�÷˜1_ûšswÜqÑEôÉr^¼ Ç•Ëiþr8Õù7n¤ß_½ú©§ž|’~7|Ã:§Ýv4ˆ®Û«½]·]w}ç;iñug £ë&ã»:^+ÎÆ�ëÖÑ'Î÷»Ç§ß:§Qh¡}óæõëi|R�p8ðÀÎÎaÊç›g 5+8Âï•?nÓ¦õë�{â‰?þ‘ú±ví+¯PéèÝqsïF{ƒJç¿÷Þ{íEå€Rùªüþ8ùÿòý?)PU7èŸW ªŽU�˳W¿Žà'pÿ[ö¾ ñ—W ê8ªz\ž㿪ŽU�ƒþyªêXõ¸<;⿪ŽU�ƒþyªêXõ¸<;⿪ŽU�ƒþyªêXõ¸<;⿪ŽU�ƒþyªêXõ¸<;⿪ŽU�ƒþyªêXõ¸<;⿪ŽU�Ûáô_[ÛŠO™Tˆ±Ê,ÇKY«6éÑÀ_TÕÞ‚ëO Tùùö´`|Ï=W_ý÷ïÜ™gΛ—ýýê©S¯¹†Þ$ž2å°Ã´o PtyÕ¼nöh+z"þÞ:ñW¼úÈÿˆÄÿ[eþÁø/*€ñ�ñ�ñÿÖ¸ÿ.Ž~Üÿ ÿ!ÿ!ÿ!ÿ•@oûûû òQäääääÿr/–aý ó¿ŸM±þY¼«°·Xï?ú¤ÐíT6Oë ÙÐÊ{�¿ê Yy­cG@ÿmCÿ×^{î¹GqîÞ{ýëgžqîé§xàG?¢ß–^´(»pN×ð´Óœ[²äž{N9%û©y¾ºå&*\ÿmãú—¿!åëÝX‰ë�ë_íÄ�Å�øCü!þªüA†GPc%ÆÆÆÆî?ËþA´±¼ËG#ÿ"ÿ"ÿ"ÿ"ÿ"ÿ6¶´Â3J¹óæÌ?˜0ÿ`þّ柶- —›ná  @+xì±o<ã ç&O¾â ¹`žå›9sÞ<ú î ößðà¬ûP @( €P @( €P @( €P`ÇU oÙ®ñ“d©ã4{ê8k»†¯Ù­<)? _³§p­í¾f·ò¤ü4|͞µ¶køšÝÊ“òÓð5{ ×Ú®áköŽŽ�÷ÙǹÎή®‘#�ëêêìÝœ5jÂzã|Μ›nª·p®ákvk?S~¾fOáZÛ5|ÍnåIùiøš=…km×ð5»•'å§ákö®µ]Ã×ìVž”Ÿ†¯ÙS¸Öv _³[yR~¾fOáZÛ5|ÍnåIùiøš=…km×ð5»•'å§ákö®µ]Ã×ìVž”Ÿ†¯ÙS¸Öv _³[yR~¾fOáZÛ5|ÍnåIùiøš=…km×ð5»•'å§ákö®µ]Ã×ìVž”Ÿ†¯ÙS¸Öv _³[yR~¾fOáZÛ5|ÍnåIùiøš=…km×ð5»•'å§ákö®µ]Ã×ìVž”Ÿ†¯ÙS¸Öv _³[yR~¾fOáZÛ5|ÍnåIùiøš=…km×ð5»•'å§ákö®µ]Ã×ìVž”Ÿ†¯ÙS¸Öv _³[yR~¾fOáZÛ5|ÍnåIùiøš=…km×ð5»•'å§ákö®µ]Ã×ìVž”Ÿ†¯ÙS¸Öv _³[yR~¾fOáZÛ5|ÍnåIùiøš=…km×ð5»•'å§ákö®µ]âo}� ÅO,Ї7hkí‹÷à'bŸø€þˆ?Œ?ää_ŸZóÌ?˜0ÿâþ÷¿òc¸ÿÄý'î?qÿ‰ûÏÖÜyzTÜâþ÷Ÿ¸ÿÄý'î?ó3-î¿qÿ�ûoÜç³B³ïEqÿ‰ûOÜ–¿ÿܺ€ÞìðÚsøäø½"­MÀRõP‡þП@ü…1ÑÎ=Œ?¯6â¯�Q¸ˆ?Rã/Œ‰vîaüyµ팺À…øCü‘aL´sãÏ«�økgÔ.Äâ�Àø c¢�{^mÄ_;£.p!þ¤Æ_íÜÃøój·&þJ½ü¥ÏŸ8?éR§êàÏ*ýý“FYMZ»�øËê‹øCüñ”ž�‹ÖícüeµÅøÃøÃøËŽˆVï#ÿdFþAþAþÉŽˆVï#ÿdFþAþAþÉŽˆVï#ÿdFþAþAþÉŽˆVï#ÿdFþAþAþÉŽˆVï#ÿdÞÑòOdÝ6¼ª¦¡â'вòÒ>ø¥"±:ô·Å‰Ôñ'?‘%²éŠø³é$ÕEü!þò·T2Blq…ñgÓIª‹ñ‡ñ‡ñ'GE¶nWÈ?6�²ÊÒ>òòò�Ùºm\!ÿØtÊ*KûÈ?È?È?rTdë¶q…ücÓ)«,í#ÿ ÿ ÿÈQ‘­ÛÆò�M§¬²´�üƒüƒü#GE¶nWÈ?^§Èz<¼H°¬´Ú0Ì^’rûà�éýad ÿÄódP¨ê^ùùù'Œ)äŸxž UÝ‹ã"ÿ ÿ ÿ„1…üÏA¡ª{q\äääŸ0¦�ây"(Tu/Ž‹üƒüƒüÆòO5¤Í+V;æÌ?˜0ÿ`þÁüƒùÇ:k6Ïó/æ_Ì¿˜1ÿbþÅüÛ¼yÕŠ„ùó/æ_Ì¿˜1ÿ¶sþmÚzj¢óiÝì”O+ÛÁOÓ ôsÒŠsˆ?ÄÆòòO;okÂò/ò/ò/ò/ò/òo˜Ú·‡ùóæÌ?˜0ÿ´oÖ L˜0ÿ`þÁüƒùóO˜Ú·‡ùóÏŽ<ÿÐ}ÐÔ¾a—e¿Wúg£¢}ûˆ?Ä)€ñ×¾1—eÂøój þ²QѾ}Äâ�ÀøkߘË2aüy5Ù¨hß>âñG `üµoÌe™0þ¼ˆ¿lT´oñ‡ø#0þÚ7æ²L^ Ä_6*Ú·�øCü‘ísY¦m{üõ¥'Dø³§öã�£êíé8à�é§ë;ªØ¦ã@ÿ¢jþÍòúã&vT± ú“E]B â/höô¸ ¾õötèÓO×-vT±MÇ�þEÕ�õ¸‰©VlÓqEÕzÜÄT+¶é8ˆ¿¢jˆ?=nbªÛtÄ_Q5ÄŸ71ÕŠm:⯨âO�›˜jÅ6ñWT ñ§ÇMLµb›Žƒø+ª†øÓã&¦Z±MÇAüUCüéqS­Ø¦ã þŠª!þô¸‰©VlÓqEÕBü%ß@gaéÓq c°ÔÆËa厒hà'è¹è_.’~,•S ã/¯òòò/æÌ¿¸ÿ(7“âþ÷¤@¹¨Éß}dþ�†ûÿ^¤:õê^�rªIEqÿ‹û_Üÿâþ÷¿¸ÿ-7“`þÅüK ”‹ÜäÀýî¿pÿ…û/ÜmÛ÷_Éô|:o¼V}Bhœ›À_uB‚þÍPñ‡ø«vCÔŒèCþÃøÃøÃø«òäŸf(€üƒüƒüƒüSþ"ÍÈ>¸ÿCþEþEþEþEþ-ûiÌ?ÍPóæÌ?˜0ÿ`þiìÑ¢j³æŸÖÌ?m[@¯vÙq€P @( €P @( €P @( €P @�ö(з, ?É�:N³§Ž³¶køšÝÊ“òÓð5{ ×Ú®ákv+OÊOÃ×ì)\k»†¯Ù­<)? _³§p­í¾f·ò¤ü4|͞µ¶køšÝÊ“òÓð5{ ×Ú®ákv+OÊOÃ×ì)\k»†¯Ù­<)? _³§p­í¾f·ò¤ü4|͞µ¶køšÝÊ“òÓð5{ ×Ú®ákv+OÊOÃ×ì)\k»†¯Ù­<)? _³§p­í¾f·ò¤ü4|͞µ¶køšÝÊ“òÓð5{ ×Ú®ákv+OÊOÃ×ì)\k»†¯Ù­<)? _³§p­í¾f·ò¤ü4|͞µ¶køšÝÊ“òÓð5{ ×Ú®ákv+OÊOÃ×ì)\k»†¯Ù­<)? _³§p­í¾f·ò¤ü4|͞µ¶køšÝÊ“òÓð5{ ×Ú®ákv+OÊOÃ×ì)\k»†¯Ù­<)? _³§p­í¾f·ò¤ü4|͞µ¶køšÝÊ“òÓð5{ ×Ú®ákv+OÊOÃ×ì)\k»†¯Ù­<)? _³§p­í¾f·ò¤ü4|͞µ¶køšÝÊ“òÓð5{ ×Ú®ákv+OÊOÃ×ì)\k»†¯Ù­<)?‰¿õ t6?1A¡­µ?)ûÄ ôGüaü!ÿ ÿú<КÿcþÁüƒù÷¸ÿ•ŸXÃý'î?qÿ‰ûOܶæÎÓ£âþ÷Ÿ¸ÿÄý'î?qÿ™Ÿiqÿ�ûoÜãþ;Ÿš}/ŠûOÜâþ³üýçÖôfȀמ€À'÷Àïim–ª‡:ô‡þ¤â/Œ‰vîaüyµ팺À…øCü‘aL´sãÏ«�økgÔ.Äâ�Àø c¢�{^mÄ_;£.p!þ¤Æ_íÜÃøój#þÚu� ñ‡ø#0þ˜hçÆŸW»5ñWúîå/}þÄùI—ò8U�V9èïŸ4ÊjÒÚ}Ä_V_Äâ�§ôl\´nã/«-ÆÆÆ_vD´zù'«0òòòOvD´zù'«0òòòOvD´zù'«0òòòOvD´zù'«0òòòOvD´zù'«ðŽ–" è¶áU5 ?Q”•—öÁ/‰Õ¡¿-N¤vˆ?ù‰,©�MWÄŸM'©.âñ—¿¥’b‹+Œ?›NR]Œ?Œ?Œ?9*²uÛ¸Bþ±é”U–ö‘��ä¨ÈÖmã ùǦSVYÚGþAþAþ‘£"[·�+ä›NYeiùùùGŽŠlÝ6®�l:e•¥}äää9*²uÛ¸Bþñ:EÐãáE‚e¥Õ†aö’”ÛL/è�øÃø #ù'ž'ƒBU÷â¸È?È?È?aL!ÿÄóDP¨ê^ùùù'Œ)äŸxž UÝ‹ã"ÿ ÿ ÿ„1…üÏA¡ª{q\äääŸ0¦�ây"(Tu/Ž‹üƒüƒüÆòOua�/Íñ‡øÃøCþAþEþ-ó©!m^±Ú1ÿ`þÁüƒùóæÌ?ÖY³y~˜1ÿbþÅü‹ùó/æßæÍ«V$Ì¿˜1ÿbþÅü‹ù·�óoÓÐS�Oë~`§|ZÙ~šV ÿ›“VœCü!þ0þ��Úy[î(�‘‘‘‘‘ìо=Ì?˜0ÿ`þÁüƒù§}³N`ÂüƒùóæÌ?˜¬о=Ì?˜väùǰ€î€¦ ö »,ø½Ð?íÛGü!þHŒ¿ö�¹,ÆŸWñ—�Šöí#þ¤Æ_ûÆ\– ãÏ«�øËFEûöˆ?Rã¯}c.Ë„ñçÕ@üe£¢}ûˆ?Ä)€ñ×¾1—eÂøój þ²QѾ}Äâ�ÀøkߘË2mÛã¯/=!§˜=í°ý¸€PoOÇL?]·ØQÅ6úUóo–×7±£ŠmП(êZA‹°§ÇMð­·§ã@ÿ˜~ºn±£Šm:ô/ª†ü«ÇMLµb›Žƒø+ª†øÓã&¦Z±MÇAüUCüéqS­Ø¦ã þŠª!þô¸‰©VlÓqEÕzÜÄT+¶é8ˆ¿¢jˆ?=nbªÛtÄ_Q5ÄŸ71ÕŠm:⯨âO�›˜jÅ6ñWT ñ§ÇMLµb›Žƒø+ªâ/ù: KŸþˆKƒ¥6^+w”D?)@Ͻ@ÿr‘„øóc©œjy���1ÿ`þÅýG¹™÷¸ÿ ÊEMþî#ó4Üÿ÷* Õ©WÇøóê”SM*Šû_Üÿâþ÷¿¸ÿÅýo¹™ó/æ_R \Ôàþ#¯î¿pÿ…û/ÜáþkÛ¾ÿJ. çÓyãµêBãÜ„þªôo†ˆ?Ä_µ¢fDòÆÆÆ_•� ÿ4CääääŸòiFöÁýò/ò/ò/ò/òoÙ?Hcþi†˜0ÿ`þÁüƒùóOc�U›�0ÿ´fþé[ír”?êÍJ|¦;*ÿ͵͹ÿ¨mÜÛbÙìþ3óó-Íâg>æÏ³¤kUù™‡Ë4C}KY~æã²>ºnµò3—:²ÍCãg>.m¨v/ÉÏ<\Ú‘ªy2?óqY ­üQKj›ž'Ê#×?‚ûÉüõ½·2ç Fdý¹Þì’y¹”ø­âç~¦xù<šÍÏ|ÌÏ<©²YüÌÇü)>Ù^•Ÿy¸”¸ÖzY~æãÒÊ“ò³ò3—)¼²í?óqY_ó—üÌÃ¥v|£væg>.ŵÏù·Ý¼ÌÇüÖó­êÇ|œ'‡õçz³KæåRâ·ŠŸû™âåóh6?ó1?ó¤ÊFùËòÉó¨Êϼ\J\k½,?óqiåIùYù™�Ë^Ùv�Ÿù¸,‹¯ùK~æáR;¾Q;ó3—�âZ�çüÛn^æc~ëùVõc>™—Xÿª¸ÚqÌË¥ôo?÷3ÅËçÑl~æc~æI•�ò—å“çQ•Ÿy¹”¸ÖzY~æãÒÊ“ò³ò3—)¼²í?óqY_ó—üÌÃ¥v|£væg>.ŵÏù·Ý¼ÌÇüÖó­êÇ|2/±þUqµã˜—Kéß*~îgŠ—Ï£ÙüÌÇüÌ“*å/Ë'Ï£*?ór)q­õ²üÌÇ¥•'ågåg>.SxeÛSüÌÃeY\«¿äg>.­8Uý˜Ÿù¸¬ŠWö8æ/{\³üwTþ޲iO2hö²|Ò_Ã×ì¯l]Ã×ìeù¤¿Ä½¶/i–æì1þÆÚVÄd{«Ìkµ-ý$[³ùe?5|Í^T,Þ"yÙKÃ×쌓*S¼ì¯ákvÆ‘¥ÆËþ¾fg+ûs©áköª¼�òË<ÁxeK­Ò¾qãë¯oÜH,ÍyîNâËóç~¶*ÿ¤øùº²]žW³êŒÏýãþ2¾´s{³JÆçþJ\¶óùI{£uäR¸uó_êºòuÓ®¯fgYj¼ì¯ákvƱò±?—¾f¯ÊÛ(¿ÌŒW¶Ôú'íÈÿe®ï/õ•×UÚ룕·2~*ŽÙÞìüÏ|ŒŸ:s¶7‹Ÿy™OÃ×쌣•’—ý5|ÍÎ8©2ÅËþ¾fgYj¼ì¯ákvƱò±?—¾f¯ÊÛ(¿ÌŒW¶Ôú'íÈÿe®ï/õ•×UÚ룕·2~*ŽÙÞ¬üËgÈ|ŒÏí²d{³ø™—y4|ÍÎ8Z)yÙ_Ã×쌓*S¼ì¯ákvÆ‘¥ÆËþ¾fg+ûs©áköª¼�òË<ÁxeK­ÒŽü_VáúþR_y]¥½>Zy+ã§â˜íÍÊ¿|†ÌÇøÜ.K¶7‹Ÿy™GÃ×쌣•’—ý5|ÍÎ8©2ÅËþ¾fg.5>öãRÃ×ìŒS–—�Óð5{UÞfñ3NÕRëŸf¯ÊËÇiøš�qª–ëº4ús-m~DKLšÝcÿ~R ö‡ñúú÷­má¸vé߯¶…Oòm5?ó¦xRí|~©2eõm?÷“Ï‹Ï[Ã×ìŒ#KæaÞ`¯ÁÏïUå—:ÜÖðK>îñü›Ëϼ¡~¯Õü|]™§]ü}ûöë×·÷;'E]ógÀçUô+§GmËc[j�ò³¾®˜OU~Ž'Ö�ËG½¶²üÜ_>ޱ[Íϼ)žT;Ÿ_ªä~ÈãËê+�OñÉvÉÏýävö×ð5;ãÈ’y˜7ØË�¿ªüRçVóK>îñü›Ûæ ýó{­æçëÊ<íâGþ—JÇë|]ÊÆÇÇeœ%ÝZ–?O­âOñÉ5›¿¬¾ÍâOõWÃ×ìR/®óõg^n§áùýÖþû_êÜj~ÉÇý/ê×Üþ3oèŸßk5?_Wæi?ò¿T:^çëR6þ8žø8.ã,éÖ²ü©xjŠOö¨Ùüeõmª¿¾f—zq�¯?ór;ò?ò¿�…jó?òIõöxüÇoýø+›ŸRçP–ŸóǸÅógKý’qŠÇûþ§ø$jñx鯧øËêÛ,þT5|Íï}XÇaÞàW?þ‚Ÿß+ËÏ|¬¿ÄkÕü#¯+óÏ¿¹ýg^ÙÏvñK^®ƒŸˆ­SÔ¿þ[?á^ –¶Ñ7ù/^‚ŸˆioeÏ´nìÑýÓŽy¹l.?÷—ù™%]6Æ_žOžIsø%ª½^Ž¿¨kýøÓÏÃÆÏ8íâ—וë|¡lnÿ ÍÿGŒY–|=k ûUöòú3¿Dj]ÿ%S¼Þ,þbüäûg�Mœì™½JÜ–.ÛÍŸÖ�ϱ5ýç~¶›Ÿù˜Ÿ{™.ëy>y&Íá—¨öz9þ¢®åâ¿x^6~>®]üòºr�Ï#”Íí?ç_É'ë­æø~¯uü’)^o1~lñ·½ò§Ï›unMÿYçvñÛù¸ß\6Öîó3ª½l¿�Oz–ã/ö³¹ùOž�¬·‹_^W®ËóñwëÅV{K^äÿ¸rÍÒ¿?yýãì¸ÿ/«?ëœ>Ž•nŽþv>æå²1~îó3ª½l¿�Oz–ã/öù_*Z®ž×ù?®�³¢µ\üã7¯ß·l¯üéóæž¶¦ÿ¬s»øí|Üo.ë?÷�ùÕ^6‡ßÎ'=ËñûYnüIö°^´PK‘Oúµ†_^W®Köíþ¿Ø?ßÒ®þïhü[ÐSk¼=?ôÓ8cá­ÁŸÖµ5ýO¸¼ú2¥ÏSW¿þfó×?»¬µ5úgêï—ã·ëZŸ5XmüÌËe8¾Ñ½úüÍç“ç+ùµ[ y|£õ7—_êÛ¬ñŸR…ù�ì?YRGWog>æHíå¼¼×þb?™O–;&¿ìeºÞšþ§ù¤¥¿ýºJžTÝÆÏ¼\¦ÐÊ·×ço>ŸŸ<#É�üߌü#Uæ:_OÎÇíοÌÏçÓnþÀË{2þ¶¯üϽ¨^¶¦ÿöóÙ¾ø‹ñkïiÜÓÖæå2ŽU¥µ>óùä9J~ää#�×Ã|'±dü!ÿ·2þ¤úíšÿ‹¼ÜRîú7?Öçg>.ù¬›WÚø›Ç'‘$ÿ›�ÿ›3þe/ÓuÙÿ‹?²€nK/UeÐ øÓÁ,R]W¬îg×ßæΙöå§~/—yt½V•_çÏBç“GÚ9½jýk?órY�Y–ão/Ÿ‡�¿q�™/_nÞÜÓ³y³s/Ö6ç˜ç˜ÚÀýumsŽØ÷¨mν­¶å1ËÕòýg}yü3–ÏB\kféù¹ßŒÌüÈÿÈÿ!eãOÆÇU±ÌÇ?Û«Æ�ÆÑËÆøíýL�I5þòýlóxù|lýo\gæ“eœŸ¿8ÒêüG#+{F¬/Ç?ÛÊŽ?>N/=¿Ô—ù[ÝÉËçÛjþo«øÓ|ùëßl~Ž'Æ-–­áO÷WžAsùõþ6—ßÞOÉËõjý/ßOæ“e9þæñòyØø×™ùdçGþ§ þýÓªù'u][•ÿ‹ñ¿þÍæOõSÎÿ�Íâ/ö—¸lOÿ™­X‚¿¨‰`:6þ¶. S€Ð�©�É7n1ðX› ¸˜O¶ üÕôï_Û²JúýVëŸâå3i¿ÆÛl~+órÙhÿ%o»ÆŸäåþ´š?ÅÛ*þ¿ªm!1¶+ÿp?¥ž­æg^ÖS–­â×xù<šÅoåc^.å—¼„—�p™'Uzïòó¯äeü}憛ÛSeYþ/ã·Š_ãm6¿•�y¹l´ÿ’Wæ æI•Uù%/ã·š?ÅÛ*~äVÖ—eÇþèb�ãO»®|d³ø­|ÌËe£ü’—ûo7Uù%o¶?­œR¼Uùùd¼ þFmsî°ÚþpÄø‡Ô6ç¨maÁ}÷Úæ\¿ÚV<Ž�—eJ­Ÿ‡ë�^Ék�£Fù%/㵚?ÅÛ*~äVÖ—©øg¯ª×_»®Œß,~+órÙ(¿ämtüóyq™Ò_ò²«ùS¼­âçñÊøZÙ¬þkýL�G£ü’7uý›Í/y¿Õü)ÞVñs<ñu¢’¸¨ŸÌ™-›Õî§Äk5?ófû”Ýo¿ÆËçÐ,~+órÙ(¿ä%¼VÞóyK^no5Š·Uü<^_+›Õ­Ÿ©óh”_òÊ|‘âåöªü’—ñZÅŸâc^.›ÍÏñÄ:QI\ÄÜٲYüÜ_‰×.þlŸ²ûà¯výûøOáùƒ³‚b @( €P @( @3à'òù�ó—k›s]µ-,„§8yá�Ò×6çÞ^ÛôãS¸h‡P @( €P @( +ù t6ù’žLhÅòº×ê—?k½fŵúéŒy+®Õ/�®×¬¸V?�1ïaŵúåÑõš×ê§3æ=¬¸V¿<º^³âZýtƼ‡×ê—G×kV\«ŸÎ˜÷°âZýòèzÍŠkõÓóV\«_]¯Yq­~:cÞÊkõË£ë5+®ÕOgÌ{Xq­~yt½fŵúéŒy+®Õ/�®×¬¸V?�1ïaŵúåÑõš×ê§3æ=¬¸V¿<º^³âZýtƼ‡×ê—G×kV\«ŸÎ˜÷°âZýòèzÍŠkõÓóü ½uµÍ¹õµÍ¹Ô6ûÂwGm oª3ã2Ož=|yH¶Ëz«úoŵúÉóÖêV\«ŸÆ'íV\«ŸÄ×êV\«ŸÆ'íV\«ŸÄ×êV\«ŸÆ'íV\«ŸÄ×êV\«ŸÆ'íV\«ŸÄ×êV\«ŸÆ'íV\«ŸÄ×êV\«ŸÆ'íV\«ŸÄ×êV\«ŸÆ'íV\«ŸÄ×êV\«ŸÆ'íV\«ŸÄ×êV\«ŸÆ'íV\«ŸÄ×êV\«ŸÆ'íV\«ŸÄ×êV\«ŸÆ'íV\«ŸÄ×êV\«ŸÆ'íV\«ŸÄ×êV\«ŸÆ'íV\«ŸÄ×êV\«ŸÆ'íV\«ŸÄ×êV\«ŸÆ'íV\«ŸÄ×êV\ͯio 3‘ü4�Ö‘fÙÁO Ø?YØ,ÝúCÄÆò?)ÀY±}%ò/ò/ò/ò/ò/òï¶<ÿð<Å Ýþ hν¿¶97 ¶UŸ7»k›süéüI÷!µ­uù�û…ñ‡ñ·-�¿ê#«þ‘ˆÜâþ³uóKýÑÃüƒùó�6ZšoÇü‡ùóæ?Ì¿o­ùW}Ý:Õ¤ǧU+Ju?ðÇúÓ´Öú ñ‡ø‹ýÃãã¯õÙ'}ãŠøCü!þZ¯æÌÿ˜ÿ‹ãLÎ?/Õ6çxáœ˼хsffÆeæe¿f—ÿÿÿÅQ%ÇÑ£9-ű„ñ‡ÿ£¢ù-ȿȿȿÅq…ü‹ü[ŒŠæ· ÿ¾9ù×°€Þ؈w«L�¿ŒZÒúǦu©R½:⯞:š ñ‡øÓb¤¾㯾>õ­õ#D³büi Õ³cüaüÕ‹ݶcŒ?þmój›sÔ6çÖ6]…²Œ{`msŽyù<ìx;†þöþJOô_*R¦Žü�ü_&^оEMì-öh‰ybüÅT±¶aüaüYc%î‡ñ×ÅÖŠñ‡ñg‹””Æ_JjïKOÈÔ—(€úqõhƒMÇP+ìéºßz{:ô�é§ë;ªØ¦ã@ÿ¢já“e1[™6èO ÔS ñSG�›ØQÅ6úUÃø×ã&¦Z±MÇAüUCüéqS­Ø¦ã þŠªm?ñ÷JmsîùÚæÜ{k›s»Õ¶XÏšÛÆ<ÌËçÁç…ø#êiŽñSG�›ØQÅ6úUÛ~ò_ìܳm¸þ¤@V¹�ø—ŠP]�›ØQÅ6úUƒþzÜÄT+¶é8ˆ¿¢jˆ?=nbªÛtÄ_Q5ÄŸ71ÕŠm:⯨ڶÉß@ç KO°Ä/a¬[ÔÆ·Ã厒hà'ÒŸæ•z…:ô÷Z þBL”ßÃøÃøCþAþÅü�ûŸr3)î?pÿA ”‹y‡‚û�íûþcÆW_ݰÁ¹çj›sûÔ6ç†Õ6yµÛW_SÛœ{²¶…óTÛÂy þ¶ïøCþAþ £¹üÆ?Æ?þý‹ÿâß¿ø÷o¹™ÿþõ³m9Õä �ùó/æ_Ì¿Ûúü›ü„{ùçOœœÙK+Á_öÆ……þ¬D¶Düù 9«I½}Œ?Œ¿x&©5d‹…ñ‡ñÇÿ´Ô"ÈGÆ_|$iêÅ�ÂøÃøÃøÓÆN°ãþ§Zþíî~íµînçx¡ú]µ-,T…ßœ=^Àß»¶…ó|µ¶…sÂõ¯výqÿ‡ù7Œ¢°‡ûÜàþ#ŒmóæŸøL¢GNÌùùù762âmȿȿȿñ±Q¿5®ÚŽ:ÿ$ß@¯/¬P @( €P @(ðVU »¶…OµïQۜ۷¶m»ªé¯ákv‰W¶®ákö²|Ò_Ã×ì¯l]Ã×ìeù¤¿†¯Ù%^Ùº†¯ÙËòI _³K¼²u _³—å“þ¾f—xeë¾f/Ë'ý5|Í.ñÊÖ5|Í^–Oúkøš]â•­køš½,Ÿô×ð5»Ä+[×ð5{Y>é¯ákv‰W¶®ákö²|Ò_Ã×ì¯l]Ã×ìeù¤¿†¯Ù%^Ùº†¯ÙËòI _³K¼²u _³—å“þ¾f—xeë¾f/Ë'ý5|Í.ñÊÖ5|Í^–OúKü­o ³¡øé þðGüÕ|IPµ~R ö›ÐßÇâ¯êز‡ñ‡ñ‡üƒü‹ù_~º ó/æ_R÷–ûˆª>¸ÿؾî?zj[x㜯ß!µ­j¼ùÇý¦¶…û€¡µÍ¹ŽÚÖºócý0ÿbþÍÏ4¸ÿð£.¯J³G"Æßö5ÿàú7WÄ?âÿ ÷}ataþõZ`þ 1Ñü=ä_ä_äßí/ÿn]@o~J`ÄöL@ÌV,Áï5iíXÔ�[ ?ô'<"Ú[büy½í�;fCü!þHŒ?í-1þ¼Þˆ¿fÆÝºÚæÜ†ÚæÜ¡µ-öàf²¶‹ÿ�õPmsnðàAƒ¦7Ô‡ Ùm·*ü^5Œ¿*ÑÓø1ˆ?Ä)€ñ×øXª‚€ñçUCüU‰žÆ�Aü!þHŒ¿ÆÇRŒ?¯â¯Jô4~ ⯕ñWúîå/h~àð(ÊãT=üYå ¿Ò)«Ik÷Y}ˆ?žÒ³qѺ}Œ¿¬¶ÙÑê}䟬ÂÈ?ÛwþáO›¯¯mÎuÖ¶íáœc”ßç~­[·~ýºuν^ÛØ«L‰ñŸU ãûÿÙkiÛGüguBü#þqÿ�­ÞGþÉ*Œüƒüƒü“­ÞGþÉ*Œüƒü³#åŸÈº­{UÀÿ@‘Tù}ðçõˆ× ¿-N¤zˆ?ù‰D©�MWÄŸM'©.âñ—¿¥–b‹+Œ?›NR]Œ?Œ?Œ?9*²uÛ¸Bþ±é”U–ö·÷üÓ]ۜ۩¶97¨¶É^nÿuîWÿÚV\@Gü¿5ãŸ#×ןc¡L¹½çî+âñϱP¦Düãß_ø÷W½cË+È¿6�¤ÒÈ?È?È?rTdë¶q…üãuŠ, ÇËËJ« Ãì%)·þ˜^Ðñ‡ñFòOþý‡ø+Q弚ˆ¿rUÎ[SùñW.¢Êy#þ4å"ªœwP¿#ìÆ÷ø'e/H-´Zq­~Ù¶gŵú1+û?UÛœ{±¶9Çxb?”P @( €P @�mU^@^]Ûœ;º¶m«gÛüóúMmsn]msîmµ­ù<@„P @( €P @(PF�ŽŽ~ý:zWwwß}�=vßݹ½j[x°…×)µu]«_™s#_+®ÕïÍâßúzê4�ù8î(×µÒŠkõÛVøyáü…ÚÎSýHµKý¤Ÿ¬Wõ×pWúÉ:ûq)í²žòãvYÊãe½ª¿†Ã¸ÒOÖÙ�Ki—õ”·ËR/ëUý5Æ•~²Î~\J»¬§ü¸]–òxY¯ê¯á0®ô“uöãRÚe=åÇí²”ÇËzU ‡q¥Ÿ¬³—Ò.ë)?n—¥<^Ö«úk8Œ+ýd�ý¸”vYOùq»,åñ²^Õ_Ãa\é'ëìÇ¥´ËzÊ�Ûe)�—õªþãJ?Yg?.¥]ÖS~Ü.Ky¼¬Wõ×pWúÉ:ûq)í²žòãvYÊãe½ª¿†Ã¸ÒOÖÙ�Ki—õ”·ËR/ëUý5Æ•~²Î~\J»¬§ü¸]–òxY¯ê¯á0®ô“uöãRÚe=åÇí²”ÇËzU ‡qٯ쿳øø­d=Rý’vYçãRílçRúÉ:ûq)í²žòãvYÊãe½ª¿†Ã¸ÒOÖÙ�Ki—õ”·ËR/ëUý5Æ•~²Î~\J»¬§ü¸]–òxY¯ê¯á0®ô“uöãRÚe=åÇí²”ÇËzU ‡q¥Ÿ¬³—Ò.ë)?n—¥<^Ö«úk8Œ+ýd�ý¸”vYOùq»,åñ²^Õ_Ãa\é'ëìÇ¥´ËzÊ�Ûe)�—õªþãJ?Yg?.¥]ÖS~Ü.Ky¼¬Wõ×pWúÉ:ûq)í²žòãvYÊãe½ª¿†Ã¸ÒOÖÙ�Ki—õ”·ËR/ëUý5Æ•~²Î~\J»¬§ü¸]–òxY¯ê¯á0®ô“uöãRÚe=åÇí²”ÇËzU ‡q¥Ÿ¬³—Ò.ë)?n—¥<^Ö«úk8Œ+ýd�ý¸”vYOùq»,åñ²^Õ_Ãa\é'ëìÇeOÏ_þÒÓãÜsµÍ¹gj[ÃBzh‰ïi<|TÙ¿ Xq­~o¿º€Îieª£Ô1íØfØ·~~ã\^PYç>ËözýÈ*)�c<.¥]ÖS~à'X�PJýd=xú=i—uö—íÐú#þxt„RŽYž~OÚe�ýe;ÆÆÆ�ŽPÊq"ëÁÓïI»¬³¿lÇøÃøÃøãÑJ9Nd=xú=i—uö—íÖñÇÇ¿UJ©“¬K¤]ÖÙ_¶[õ—Ç1—Ò.ë)?ð#ÿ"ÿòè¥?²<ýž´Ë:ûËvŒ?Œ?Œ?¡”ãDÖƒ§ß“vYgÙŽñ‡ñ‡ñÇ£#”rœÈzðô{Ò.ëì/Û1þ0þ0þxt„RŽYž~OÚù…^é׬z½qÛ,Žz8o¿a=»l[¯ q[<Ä}ã­Û7¼Oé'@²�K$ŒG¶˜=H|—)?ð“^¥˜¾A?èÓ'W¬—)?Äâãù‡ˆå—�?âöT^áã¸Lù!ÿ ÿ ÿøQ‚ñÇÙ¢X’61}RyE"¤ü¶—ü#û³£×åõ–uî꺲�Ë”ßörýÑÿ·öøÇõÇõ§�[*¯Yý�ÿpÿ�ûo?Zbã‹Çò/òo,>�I%é2¥æÌ?;âü“�ëô¨ˆYX�˜Mo³�Æz8Û6_]Øx:Ò�«'J°é8Ûÿîµ-ô�÷dÂNõ;ëW/tȳ[péœ,~1|îø¡,>,qõÿØû¨=ªêÜ“’&�òIJ, µÅ«„%Xr±Ô¨¡½�% ˆÅ¢Á.àÖPl\E®6X°üè¥&@å‚€€‰€ „Ê$˜�˜ûíoÖÉ9sæœ÷yæÍû¾ä癵`ÎÙ{ϳgžÙ{ŸóåÌÌ«øSþ1q’‹/ÕŸŠÕ_Õß\~0y¥ú«úËÄI.¾TU} lIût¼Mûž &¯Ì–±SþyV›{ñ¯ùO.?˜¼Rþ©þ0q’‹/_‰TTrñÁÄ•ê�ê'¹øRý©PýUýÍå“W[bý}íðæ«GØ—ø ›Öúk8o®µ¡×?2^°�]"àÒqù´Ž‘ëíΦêçáÍ9°£‡·ò„¡Î¶KùJû)ž…¿ý‡øôÇ!»Ô_Ú÷8~/ÿâ_ñ§üCuÅ× d—Ö›´ïqü^õGõGõGõÕ_/�]ZoÒ¾Çñ{Õ՟͹þø8ßR÷Êc |÷UÿTÿ6çú§üWþ«þ©þ—Ðø§ñOãŸþýý»‚¯È.�o¤}�ã÷ª?[fýñ뎯Þœ{Ãðæ£"ìKñÓ6b M[›ºÿÑéù~é¼¾¼ÏO'ý aqY»æy¼²þýyï:¼9ç÷m¯¿y]&‘cÀŠ©mÆe7G‹ñ¯øSþ©þ¨þjüéfݰc4þjüÕøÛýø»jxsn›ámÃrqSÒ³~JvéK¸¬á#=ë§d‡ð‘¾„ËÊ>Ò³~JvéK¸¬á#=ë§d‡ð‘¾„ËÊ>Ò³~JvéK¸¬á#=ë§d‡ð‘¾„ËÊ>Ò³~JvéK¸¬á#=ë§d‡ð‘¾„ËÊ>Ò³~JvéK¸¬á#=ë§d‡ð‘¾„ËÊ>Ò³~JvéK¸¬á#=ë§d‡ð‘¾„ËÊ>Ò³~JvéK¸¬á#=ë'µó¸~Ÿê7÷¾¿n¿/]/Ò—ŽcåéY?%;„�ô%\VŽð‘žõS²CøH_ÂeåéY?%;„�ô%\VŽð‘žõS²CøH_ÂeåéY?%;„�ô%\VŽð‘žõS²CøH_ÂeåéY?%;„�ô%\VŽð‘žõS²CøH_ÂeåéY?%;„�ô%\VŽð‘žõS²CøH_ÂeåéY?%;„�ô%\VŽð‘žõS²CøH_ÂeåéY?%;„�ô%\VŽð‘žõS²CøH_ÂeåéY?%;„�ô%\VŽð‘žõS²Kñ×/ §Š`^z’éR½%ÿÆ@�“ªW—"~‘>çÁdâ_ü×#ÍGJ]Šâ é=jºWü)þê‘æ#¤.Eñ…ô5Ý+þõHóR—¢øBz�šîŠ¿z¤ù©KQ|!½GM÷Š?Å_=Ò|„TÒnãÊ£lê{öúY»”åŸò¯SþùxAñ…ô'Ý+þŠ¿4+¬_gåÒçÓòÒzôtê)ÿ:±ãuÊ?å_>ÓòR7x¯üÃuúmnñÏðW¶Qü•¹ šMµþ¯_@—ÒëV=ËOôگǓÏ„íÅéI£˜¥^¶1›Š?Å7¥ˆ£fCÚÊ¿˜=åŸòOùgD¿Ûª?1ê?›fýñ Èã‡7ç–oñ�Ý<Û�oÎùëö<ðW«ü�¹RþošùßÃvmÅÌ—â_ñ¯ùwœýn«þÄ «þ¨þ¨þÄÑï¶êO̰ê�êÏæT2 èÜåuå' |šÉ¿g¢Ó^üsq’r¨ø+=éè™âxUüq—W¾þŒxjxÃÙf…0>™Þµå_ü+þ”ª?hлš#©þªþªþªþªþªþvþ,5z×Öø³qŒ?þ“æþÍìg†7çÞ8¼9·ëð>õÞ»è/’_0txsÎ? ðšá͹×oÎ�Þú{.9tÅÿÆÿÿ4þiüËU¨þÊTÿTÿô÷§þþÔø«ñWãoÇÚºÆ_�¿›ãïúô*<*ƒ\µ•µM8ù·ðÿ½š(þªŒb'œÊ?åŸê�ê¯êooþ<Óø£ñ§Í5þn 㯯k/ oÎ==¼9÷ÜðæÜÊá͹UÛ]·½RñïçÇþ·Ý_5¼9·ÝðæÜöÛsㆷæÐ¥«óõ_ÂgíJÇ—ä,.kWòS’³¸¬]ÉOIÎâ²v%?%9‹ËÚ•ü”ä,.kWòS’³¸¬]ÉOIÎâ²v%?%9‹ËÚ•ü”ä,.kWòS’³¸¬]ÉOIÎâ²v%?%9‹ËÚ•ü”ä,.kWòS’³¸¬]ÉOIÎâ²v%?%9‹ËÚ•ü”ä,.kWòS’³¸¬]ÉOIÎâ²v%?%9‹ËÚ•ü”ä,.kWòS’³¸¬]ÉOIÎâ²v%?%9‹ËÚ•ü”ä,.kWòS’³¸¬]ÉOIÎâ²v%?%9‹ËÚ•ü”ä,.kWòS’³¸¬]ÉOIÎâ"»ž½�Ž•.¤Wrù7øOôŠw�#þÅ¿âOùçÿ�Ú×…AíUTTTTŒ�AUÝàGõWõWõWõWõWõWãOÕÒø«ñWã¯Æ_�¿5þjÔ ~4þjüÕø»å�¿=[@¥¤ÞªÒª"¶®LOþ-­Åÿ+3­²ÏQŠÅŸòOù÷JüY£ú£ú«ñGã�Æ�?¬ zÓø£ñÇbNõGõgеÇü©þ¨þX¨þ¨þX zSýQý±˜SýQýtí1ª?ª?ýª?ÄzuììD¿ÉŹø|ì™GÅŸâÏPþUq0èÿ+ÿ*ÆƒŽ¼ÊŸâOñg (ÿª8ôÿ•㊿AG^åOñ§ø3”U úÿÊ¿ŠqÅß #¯ò§øSüÊ¿*ýå_ŸâoБWùSü)þŒå_ƒþÿÆ�#í Šyjò�ƒ�Ë£¥RŒ#ÿ)gÖǼåŽjÊ0Žøo²&þqÜäXkÊ0Žâ¯ÉšâÇM޵¦ ã(þš¬)þpÜäXkÊ0Žâ¯ÉšâÇM޵¦ ã(þš¬)þpÜäXkÊ0Žâ¯ÉšâÇM޵¦ ã(þš¬)þpÜäXkÊ0Žâ¯ÉšâÇM޵¦ ã(þš¬)þpÜäXkÊ0Žâ¯ÉšâÇM޵¦ ã(þš¬)þpÜäXkÊ0Žâ¯ÉÚÆÅ7Ðý�µWßó·0wY&óËñíŽJÑäß°ç^Ä»HRüU¹ÔŽ5å_�ÕÕÕ_�?5ÿh7’jþ¡ù‡1Ð.jê³�ð¢ê�êO»HRýQýQýQýmW54þÔÐßÿúû_ÿëïÍ¿5ÿn7’jþ­ù·æß[Êü»¸€^ŸNnx¯û é†û6ùïvB,þ{Á€âOñ×Ýd½ˆ>Õ?åŸòOù×Í?ˆ¨þô‚ÕÕÕÕŸöÿ Û‹ê£ùŸê¯ê¯ê¯ê¯êoÛ1�?½`@ã�Æ�?4þhüi÷@F/Fýýׯñw` è½ ¡ˆ1 Ä€b@ ˆ1 Ä€b@ ˆ1 Ä€b@ ˆ1 Ä€è#ÛÂú•üÒqH_:Ž•#|¤gý”ì>Ò—pY9ÂGzÖOÉá#} —•#|¤gý”ì>Ò—pY9ÂGzÖOÉá#} —•#|¤gý”ì>Ò—pY9ÂGzÖOÉá#} —•#|¤gý”ì>Ò—pY9ÂGzÖOÉá#} —•#|¤gý”ì>Ò—pY9ÂGzÖOÉá#} —•#|¤gý”ì>Ò—pY9ÂGzÖOÉá#} —•#|¤gý”ì>Ò—pY9ÂGzÖOÉá#} —•#|¤gý”ì>Ò—pY9ÂGzÖOÉá#} —•#|¤gý”ì>Ò—pY9ÂGzÖOÉá#} —•#|¤gý”ì>Ò—pY9ÂGzÖOÉá#} —•#|¤gý”ì>Ò—pY9ÂGzÖOÉá#} —•#|¤gý”ì>Ò—pY9ÂGzÖOÉá#} —•#|¤gý”ì>Ò—pY9ÂGzÖOÉá#} —•#|¤gý”ì>Ò—pY9ÂGzÖOÉá#} —•#|¤gý”ì>Ò—pY9ÂGzÖOÉá#} —•#|¤gý”ìRüõo {EóöáÛúûáù7rŸ8ÿŠ?åŸê�êoUúó�?4þjþ¡ùoú‰5Í?5ÿÔüSóOÍ?û3ó¬P5ÿÔüSóOÍ?5ÿÔü³>Òjþ­ù·æßš׫B¯ç¢šjþ©ùgûùçúô^'dÀÌ øK[ò_1Òßœ²úâ_üŠ¿�ƒl)ÿ*¶ƒŒºàKñ§ø3”!'ÙRþUl+þuÁ—âOñg (ÿBN ²¥ü«ØVü 2ê‚/ÅŸâÏPþ…œdKùW±­ødÔ_Š?ÅŸ1 ü 91È–ò¯b»?ñ×úîío}ýÄý“.íqº=BþcæÄõ¤QÌIÛŠ¿˜_ÅŸâÏéq\ô¯­ü‹¹Uþ)ÿ”qFô»­ú3¬ú£ú£úgD¿Ûª?1ê?ª?ª?qFô»­ú3¬ú£ú£úgD¿Ûª?1ê?ª?ª?qFô»­ú3¼¹ÕŸÌ:—^Ý–¡æ'Šbz­-ÿ)#¹¾øçâ$åNñ—~"+eˆãUñÇñ”²«øSüÕ§Ti„pq¥üãxJÙUþ)ÿ”iVÄ}.¯T8žbf­­ú£ú£ú“fEÜçòJõ‡ã)fÖÚª?ª?ª?iVÄ}.¯T8žbf­­ú£ú£ú“fEÜçòJõ‡ã)fÖÚª?ª?ª?iVÄ}.¯T*ž2 èùð2ÂbjQÆ·¤][þs|‰ÅŸò/d†êO¾N†ºmåqUTTBN©þäëD`¨ÛVWõGõGõ'ä”êO¾N†ºmåqUTTBN©þäëD`¨ÛVWõGõGõ'ä”êO¾N†ºmåqUTTBN©þäëD`¨ÛVWõGõgc¬?ëÐë·§üV0ò¡Ý´5Iðy« •ÿ8</¾%þÊ?Ÿ x¯úƒ*j�Cd­ú£ú£úSÏ™N=ÕTQêì!kÕÕÕŸzÎtê©þ ŠRgY«þ¨þ¨þÔs¦SOõU”:{ÈZõGõGõ§ž3�zª?¨¢ÔÙCÖª?ª?ª?õœéÔSýA¥Î²VýQýÙëψ§†·Î‹·õPWO ˆ1 Ä€b@ ˆ1 Ä€b@ ˆ1 Ä€b@ ˆ1 ÄÀæÇÀú7ÐK—ÖöIšN*gqY»õY\ÖùKõ,.k—â£>‹ËÚ!©žÅeíR|ÔgqY;ä/Õ³¸¬]Š�ú,.k‡ü¥z—µKñQŸÅeí�¿TÏâ²v)>곸¬ò—êY\Ö.ÅG}—µCþR=‹ËÚ¥ø¨Ïâ²vÈ_ªgqY»õY\ÖùKõ,.k—â£>‹ËÚ!©žÅeíR|ÔgqY;ä/Õ³¸¬]Š�ú,.k‡ü¥z—µKñQŸÅeí�¿TÏâ²v)>곸¬ò—êY\Ö.ÅG}—µCþR=‹ËÚ¥ø¨Ïâ²vÈ_ªgqY»õY\ÖùKõ,.k—â£>‹ËÚ!©žÅeíR|ÔgqY;ä/Õ³¸¬]Š�ú,.k‡ü¥z—µKñQŸÅeí�¿TÏâ²v)>곸¬ò—êY\Ö.ÅG}—µCþR=‹ËÚ¥ø¨Ïâ²vÈ_ªgqY»õY\ÖùKõ,.k—â£>‹ËÚ!©žÅeíR|ÔgqY;ä/Õ³¸¬]Š�ú,.k‡ü¥z—µKñQŸÅeí�¿TÏâ²v)>곸¬ò—êY\Ö.ÅG}Ùõì tï¨í§Ð…²zù7œÿí>uÁƲSü)þ”ª?ª¿ª¿m>5„ÆV¯ñGã�Æ�?4þhüaGÍÞÙiüÕø«ñWã¯Æ_�¿{7®²H5þjüÕø«ñWãï Çßž- —ºª¬W‰]²é§\þmXÿ¯LYqNñ§øSþ©þ¨þ rZfª¿ª¿ª¿ª¿ª¿ª¿aT\Kã�Æ�?4þhüܨý‘§0k2¿Öî¨Mþ�{îEü·‹$Å_•KíXSþÕPýQýQýÕø£ñWó�v#©æší¢¦>ûˆþ@Óüˆ�”�N}å_ÅN;ÖRF5ÿÕüWó_Í5ÿÕü·ÝH¢ñWã¯1Ð.j4ÿ¨3 ù—æ_šiþ¥ùׯ=ÿ*. ×Ëù†÷º6Ü·!È·’øïŠ?Å_w¢^DŸêŸòOù§üëæÕŸ^0 ú£ú£ú£úÓþDzQ}4ÿSýUýUýUýUýmûÒzÁ€Æ�?4þhüÑø³a�u7iüéÏø3°ôîn»Žb@ ˆ1 Ä€b@ ˆ1 Ä€b@ ˆ1 Ä€b@ ˆ10F¶uãŸd(‡ô¥ãX9ÂGzÖOÉá#} —•#|¤gý”ì>Ò—pY9ÂGzÖOÉá#} —•#|¤gý”ì>Ò—pY9ÂGzÖOÉá#} —•#|¤gý”ì>Ò—pY9ÂGzÖOÉá#} —•#|¤gý”ì>Ò—pY9ÂGzÖOÉá#} —•#|¤gý”ì>Ò—pY9ÂGzÖOÉá#} —•#|¤gý”ì>Ò—pY9ÂGzÖOÉá#} —•#|¤gý”ì>Ò—pY9ÂGzÖOÉá#} —•#|¤gý”ì>Ò—pY9ÂGzÖOÉá#} —•#|¤gý”ì>Ò—pY9ÂGzÖOÉá#} —•#|¤gý”ì>Ò—pY9ÂGzÖOÉá#} —•#|¤gý”ì>Ò—pY9ÂGzÖOÉá#} —•#|¤gý”ì>Ò—pY9ÂGzÖOÉá#} —•#|¤gý”ì>Ò—pY9ÂGzÖOÉá#} —•#|¤gý”ì>Ò—pY9ÂGzÖOÉá#} —•#|¤gý”ì>Ò—pY9ÂGzÖOÉ.Å_ÿºW4?1a±­¿�c ÷‰ñ¯øSþ©þ¨þVu ?ÿ×ø£ñGã¯æšÿ¦ŸXÓüSóOÍ?5ÿÔü³?3Ï UóOÍ?5ÿÔüSóOÍ?ë#­æßškþ­ùw½*ôz.ªù§æŸš¶Ÿ®_@ïuB¼ÁL‚¿´%ÿ#ý-À)ë¡/þÅ¿1 ø 91È–ò¯b[ñ7Ȩ ¾Š?c@ùrb�-å_Ŷâo�Q|)þÆ€ò/äÄ [Ê¿ŠmÅß £.øRü)þŒå_ȉA¶”ÛŠ¿AF]ð¥øSüÊ¿�ƒl)ÿ*¶û­?áÞþÖ×OÜ?éÒ§Û#ä?fNüWOÅœô·­ø‹ùUü)þü�ÇEÿÚÊ¿˜[åŸòOùgD¿Ûª?1ê?ª?ª?qFô»­ú3¬ú£ú£úgD¿Ûª?1ê?ª?ª?qFô»­ú3¬ú£ú£úgD¿Ûª?1Û[ýÉ, séÕmj~¢(¦×ÚòŸ2’ë‹.NRîé'²R†8^O)»Š?Å_}J•FWÊ?ާ”]åŸòOù—fEÜçòJõ‡ã)fÖÚª?ª?ª?iVÄ}.¯T8žbf­­ú£ú£ú“fEÜçòJõ‡ã)fÖÚª?ª?ª?iVÄ}.¯T8žbf­­ú£ú£ú“fEÜçòJõ§â)³€ž/#,¦¥a|KÚµå?Ç—øWü)ÿBf¨þäëd`¨ÛVWõGõGõ'ä”êO¾N†ºmåqUTTBN©þäëD`¨ÛVWõGõGõ'ä”êO¾N†ºmåqUTTBN©þäëD`¨ÛVWõGõGõ'ä”êO¾N†ºmåqUT6Æú³~½~{šÁo#ÚM[“¤Ÿ· Rù�Ã#ðâ[â_ñ§üóÙ€÷ª?¨¢Ö9DÖª?ª?ª?õœéÔSýA¥Î²VýQýQý©çL§žêª(uö�µê�ê�êO=g:õTPE©³‡¬UTTê9Ó©§úƒ*J�=d­ú£ú£úSÏ™N=ÕTQêì!kÕÕŸ�±þŒxjxë¼x[uõÄ€b@ ˆ1 Ä€b@ ˆ1 Ä€b@ ˆ1 Ä€b@ l~ ¬½timŸ¤)á¤r—µKñQŸÅeí�¿TÏâ²v)>곸¬ò—êY\Ö.ÅG}—µCþR=‹ËÚ¥ø¨Ïâ²vÈ_ªgqY»õY\ÖùKõ,.k—â£>‹ËÚ!©žÅeíR|ÔgqY;ä/Õ³¸¬]Š�ú,.k‡ü¥z—µKñQŸÅeí�¿TÏâ²v)>곸¬ò—êY\Ö.ÅG}—µCþR=‹ËÚ¥ø¨Ïâ²vÈ_ªgqY»õY\ÖùKõ,.k—â£>‹ËÚ!©žÅeíR|ÔgqY;ä/Õ³¸¬]Š�ú,.k‡ü¥z—µKñQŸÅeí�¿TÏâ²v)>곸¬ò—êY\Ö.ÅG}—µCþR=‹ËÚ¥ø¨Ïâ²vÈ_ªgqY»õY\ÖùKõ,.k—â£>‹ËÚ!©žÅeíR|ÔgqY;ä/Õ³¸¬]Š�ú,.k‡ü¥z—µKñQŸÅeí�¿TÏâ²v)>곸¬ò—êY\Ö.ÅG}—µCþR=‹ËÚ¥ø¨Ïâ²vÈ_ªgqY»õY\ÖùKõ,.k—â£>‹ËÚ!©žÅeíR|Ôgq‘]ÏÞ@÷ŽÚ~j](«—cÀ9ñßîSl|!;ÅŸâOù§ú£ú«úÛæSCh\aõ4þhüÑø£ñGã�ÆvÔì��Æ_�¿5þjüÕø«ñ·wã*‹¤ñWã¯Æ_�¿5þrüíÙzi «Êz•Ø%›~Êå߆ñÿÊ”çŠ?åŸê�êÏ §5aF¡ú«ú«ú«ú«ú«úF…Áµ4þhüÑø£ñGã�ÆŸÁ�:Á“Æ�?4þhüÑøF…Áµ4þhüÙœÇb½ ‚—v±'ù¯ØÿqT ®­øSüÊ¿Áå\ìIùW±¡ø‹£bpmÅŸâÏPþ .çbOÊ¿Š Å_ƒk+þÆ€òop9{RþUl(þâ¨\[ñ§ø3”ƒË¹Ø“ò¯bCñGÅàÚŠ?ÅŸ1 ü\ÎÅž6îüiOˆøSŒO;´ó�ƒ� �ZGþsüaÞrG5eGü7Y«Þ,ïœ7¹£š2ño 4y Å_à"´pÜÛN-Œ#þsüaÞrG5eGü7YSýÅq“c­)Ã8Š¿&kŠ?79Öš2Œ£øk²¦øÃq“c­)Ã8Š¿&kŠ?79Öš2Œ£øk²¦øÃq“c­)Ã8Š¿&kŠ?79Öš2Œ£øk²¦øÃq“c­)Ã8Š¿&kŠ?79Öš2Œ£øk²¦øÃq“c­)Ã8Š¿&k!þŠo {bíÓy s°&óËaíŽJÑäß°ç^Ä»HRüU¹ÔŽ5å_�ÕÕÕ_�?5ÿh7’jþ¡ù‡1Ð.jê³�è4Íÿ‡HÙéÔWþUì´c-eTó_Í5ÿÕüWó_ÍÛ�$5þí¢Fó�:šiþ¥ù—æ_šmÜó¯âz½œox¯ûaÃ}‚üw; ‰ÿ^0 øSüu7!êEô©þ)ÿ”Ê¿nþ Qýéª?ª?ª?ª?íÿA¤ÕGó?Õ_Õ_Õ_Õ_Õß¶ÿ ­ñ§ hüÑø£ñGã�Æ�?öhQw£‘ÆŸþŒ?[@ïî¶ë(1 Ä€b@ ˆ1 Ä€b@ ˆ1 Ä€b@ ˆ1 Ä€ƒa`d[7þI†ÒqH_:Ž•#|¤gý”ì>Ò—pY9ÂGzÖOÉá#} —•#|¤gý”ì>Ò—pY9ÂGzÖOÉá#} —•#|¤gý”ì>Ò—pY9ÂGzÖOÉá#} —•#|¤gý”ì>Ò—pY9ÂGzÖOÉá#} —•#|¤gý”ì>Ò—pY9ÂGzÖOÉá#} —•#|¤gý”ì>Ò—pY9ÂGzÖOÉá#} —•#|¤gý”ì>Ò—pY9ÂGzÖOÉá#} —•#|¤gý”ì>Ò—pY9ÂGzÖOÉá#} —•#|¤gý”ì>Ò—pY9ÂGzÖOÉá#} —•#|¤gý”ì>Ò—pY9ÂGzÖOÉá#} —•#|¤gý”ì>Ò—pY9ÂGzÖOÉá#} —•#|¤gý”ì>Ò—pY9ÂGzÖOÉá#} —•#|¤gý”ì>Ò—pY9ÂGzÖOÉá#} —•#|¤gý”ì>Ò—pY9ÂGzÖOÉá#} —•#|¤gý”ì>Ò—pY9ÂGzÖOÉá#} —•#|¤gý”ìRüõo {EóöáÛúûáù7rŸ8ÿŠ?åŸêOZ×®]½Ú¹U«Ö¬9ôÔØ¡môè*Sºù¿ê¯ê¯Æ�¿šÿ¥ŸÓüKó/Í¿4ÿJç_Ý̲ÊÇhþ¥ù—æ_šiþ¥ùW}¤ÑüSóOÍ?5ÿ¬W…òL²;�柚jþ©ù§æŸíæŸëл+»ÌQƒ™–Ïä•õLøƒs+Vüvhsî™g^xáÅ�{ùåQC[8ûW¿ú5¯yík�ÛqÇm·?>È»o½²×o¿¾W�{'e~äÿ•ä?Žÿ|¬Zõì³Î=üð£�>ù¤skÖ8g Á#F¬]köcÇn¿½åÃÎ;ï°Ã6Û”ïrYÓÿûo ÙO=µ|ùã�;÷ÜÐf×0bĸqvþëÖY†;·õÖÛm–×&ØuÄ9_>÷¦fåʇ¾åçŽ?~öì3ÎpnéÒÊfÆŒSN¹äçÎ;ïÈ#ßúÖø¸þ_ì­Ù–ÿŠ“|ô7ùêµDü‹c@ñ×ëÌâð”OŠ?.^zm¥øSüÊ¿^g‡§ü«xRüqñÒk+ÅŸâÏPþõ:³8<å_Å“â�‹—^[)þÆ€ò¯×™Åá)ÿ*ž6ÏøÛ€w¹ðI/¨±¸¬]ýÆ ÒÿªUÎ=øàí·÷»ÎýÓ?]rÉùç;·x±_òòaU=ñàÏË_Õ”)øá;÷ÉOwÜG>âÜ»Þ5eÊ„ ^ÛfÿÊ]¿¿Âølýu6Ÿt‰­zÙÖõWl®^ýØcÎ-\xþùÿðÎ}ç;÷Ücp8·lÙóÏ;÷á_uÕ¥—:÷�LžÜ›7*¯é}¶ûo Ì÷Þ{óÍ—]æÜqÇ�}öWØB³mÕ1öœ—O™2sæÉ';÷wwÚiGåÜn»±gÙûûo æ÷ÜsË-×\ãÜÅŸqÆüùÎ-YÎ=n¥×áÜäÉ3f8wÊ)Çky}è¡´÷ÞαWóè£ÿõ_7Þν¯Å‹Ï?ßä�ûè£÷ßïÜ~på•¶0xõÕùåÅã�Ÿ?ÿúë�ûøÇ§Oßa‡þp�CÝøÏ�w¯d›ÒõÛ‚é’%×\sÞyÎ�xbõf2âá”S,øþ÷�;òÈ©SsŸJßÐë_¶ì{ß;ûlçŽ>úœsìMét›=ûÌ3íMîÙ³ßùÎÉ“�[»ö¿ÿûž{œ»òÊ9slaùÚkÓ#¦L9î8箿þª«Ž=Ö¹þåÂÊ•–—_ùÊAY^7Ï£:¯iÓ?ü¤“œûË¿<ì°ý÷wîõ¯ßzkûý³Ï>þø#�8w÷Ý‹ç;Î]zéÂ…ù̶Eqç¾ùÍÅ‹?ó{OÝ¿A^áÇü¿ô’s󙃞2%g±a²øú{=d3g&ÿÆ€ÆÍzÿ'ƒò3 ú£ú£ú«ñGã�ÆÍñxÙk �¿5þjüÕø«ñWão¯GWŒ§ñWã¯Æ_�¿Ûø»þ ô*=«„˶h[ð6}ÿ«V=ð€s§�và�sæØ§ÚëÙûã¶ð}ä‘ûìS-öՇᔯ{îY¸Ð?ñ‰yóê ŽÓ¦Ù›¦ßÿþEÙ§¬s‹�æ9Å«ŸM³·éó_¿¦-ïúW¬°ÅÍ‹/>á{C:ÿø†sûíW-oþøÇË–YzžÂè{îY½�^ç³mÏ㎱zµåÅÙgx -@ûXö…ð¸ã.¸`áBç>ö±·½íu¯Ë ՛߶€mו.`Ï™3þu×9w ӧï¸c8ËàŸ›ð›½[WoÌÏ›wà�öƼ�e}3&Ï<ó߸àûûÞ{3þ_xáá‡ô#çÎ?ÿöin¼Ñ{®°§L±+²/XØÕýµéÅ×o îßû^õú9çT•iĈüüç�ûáçÍûÀœ³åóΔµkí·êo¹åÒKÏ<Ó¹3ÎH¿ 0mš]Ï-·\t‘½?n«_Me]ç¿nÑ®gx�¯§ŽWYËÿu†Úõ†éo±à.þ›õ§ãukñ_E”gêì4{Š?ÅŸE…ê_ýï’f¦pÕÕÍ¿ªzÂd”Æ�?4þjþÁTK<ÑüCóÍ?4ÿÐßÿ܈¢ù§æŸš¶ŸŽôS.ͼ5Þ³…Ë#mºþ«Ä[¹ò±Ç~ñ‹æÂ¹-ˆÙ'—íÃë¹…óøúã©ãÞ{ðƒûXõVª·©öK–Øدmï•Ú¶f�µžzjùÐæÜòå�=fûßýnõ꯲ÍýßÞ1uîÉ'¼:¾ÂY±Â~é™Ùªãí¨øxÖ¿�ýok¿ÿ³ŸÝu—}âÛ6çþcx³¹[o5ù²eË—¯X‘;ŸŠÿTcñdWx©ÎoÅŠµkc[ïÿ¾û–,¹ãû‚ÀO†6çî¸ÃNÀú÷ßo¿^f£ìŸã¿:› �ÿ•+ÜÞlNÎ ×>y~á…ßþ¶½{üµ¯}å+_übX8÷\˜]›óõÇ•öï¹çî¹ç?ÿ3,œ{ûÉ“�:Êž?þñ˜8±ÓDoüx{#ýoþfÁ{3;Ý,¸îº»ïnÞï?µ/õÓ«_»vùò;ï,/œñ‹W_m¿è¡o~s¼pîñKþ·ÝvÒ¤·¿Ý¹Ï~öÊ+?÷9oöK—.X`Ú<ð€Ïï ó-‹ÅgŸ­çÛsÏ­\Gvê?�Òuë,C�³‡lKí+iüÿQ£ì·Î:è„>ûYûR@¬³ãï¾ÛÞˆ÷u ã¥Ç÷2ú˜ë‘ÿ˜»_qCÛºÿímg�ïŽøoÇh;kñ�Püµ‹¨vÖˆ}�Š¿vÕÎZñ‡Püµ‹¨vÖˆ}Õ?Å_»ˆjg­øC (þÚET;kľêŸâ¯]Dµ³Vü!í"ª�5b_õOñ×.¢ÚY‡øšùVÛ'ùò(M)‹ËÚ5=t–°¸ØÎ/<¬Y“[d}õ«ÇŽ7®y.wÔ¨Ývs¼öZû­ãÙ³ÿû eôèW¿Ú¹]v?Þú+W>ð€-¸zèœ9çŸüÌœù…/ØqgŸ}ðÁ“&¹oyÿO=õãÿó?ÛBýܹfï7{ŸtÁû ÷¿ø‹=öˆ ’_Š«®{ÅŠ¥Kÿíßìøc�µ7gý6{öØÛÂsç¾ýí¶@¶µkŸzʹ›nºüò¯}͹³Îºì2û�nv›2eæÌOtîK_:í´¿üKûduÅCzüÊ•K—þû¿/Ç3o^О~ú7¿i|½éMK—Ú'§?úѳΊ¯;X¦­)Sªßªþû¿·/¼õ­'Žk6þþ§ööhƒs�=vï½öÀƒ>ö˜-‰¾îuûî{ÀÎíµ×ë^gq� �¿OÈ.õ>eŠ}ÝÎÿú¯=Ô>ñm¿¬mñ²lÙ‹/¦Öå~·þ Ñgÿë¿®»ÎšÓíˆ#=tŸ}Ri³ïý�?uêŸý™söuÛ,6«í¦›ì�î‡úÜç>ع©SëŸ>÷VéÞãæxµ…è;ï\¸ð’KÒ£ì þãŽûô§�{ÿûK‘×<&'3fòä÷½Ï¹sÏ�9óK_²7ºý»ùÕÃ÷Ý÷ħ�æÜ{ì¾{=NV®|ðA{óýðÃ?ñ‰ð›öS¦Ø�FØ›ëÇ3ujÎc*«ò8ýÜ{ÓʘŠãtÝ:{`àMoš1£²­Þh¯¬œ=ºŠ³'íwâ?¶eíâc˜6‹ËÚ1>c—µ‹±™6‹ËÚ1>c—µ‹±™6‹ËÚ1>c—µ‹±™6‹ËÚ1>c—µ‹±™6‹ËÚ1>c—µ‹±™6‹ËÚ1>c—µ‹±™6‹ËÚ1>c—µ‹±™6‹ËÚ1>c—µ‹±™6‹ËÚ1>c—µ‹±™6‹ËÚ1>c—µ‹±™6‹ËÚ1>c—µ‹±™6‹ËÚ1>c—µ‹±™6‹ËÚ1>c—µ‹±™6‹ËÚ1>c—µ‹±™6‹ËÚ1>c—µ‹±™6‹ËÚ1>c—µ‹±™6‹ËÚ1>c—µ‹±™6‹ËÚ1>c—µ‹±™6‹ËÚ1>c—µ‹±™6‹ËÚ1>c—µ‹±™6‹ËÚ1>c—µ‹±™6‹ËÚ1>c—µ‹±™6‹ËÚ1>c—µ‹±™6‹ËÚ1>c—µ‹±™6‹‹ìÖ¿�^rš[`ÊÙzG9]NÆâ²v¯´ÿqã^ûÚÝwwnÚ´úÕ.Yr饟ü¤s×\s×]¿ùMб×5aÂĉ¶>ix³ýÎ;Û› ~™jüø]vÙw_çlñ0Þn¼ñ'?yè¡ð†i¬³¶ùÿÃìM×ÿ÷ÿl�7Ý–,Y´ÈÞÄþÝïÌ2ÖÖ{�<òãÿìg±Þ9û´õôéüÇ雹¶€|ýõçœc º~áÜÐëˆu,ßóvK—ÞxãE9÷á¿÷½¶ðo‹ñ¶5ïwÞ¼£�6ÿ~áÜãV(åÿ�±lÙw¿ëÜ_ý•=*`¿ ½|yüÀDêÿ¹ç~úÓ+®pîC:öعsm�ô¬³Î8ùc�=üpûMïûî{é¥6×]>³J3nÜÎ;¿ãöÀÃüùö@À‚sçÆ çáxÿD%ñןž¿·÷zß/ísÇÛBôêÕÍ7©íA„ýö{ãó�>Ô=Äþí ûïüñ–c±Ü–žï»Ï¿û\?¾Ô‹�Om쌟xâž{–. oÿ¡}àoyK�ûVîú½.·7<{ã ƒ>ÿy[‚¾ùæ[†6ûâBµŸ5kòdãÇû £Fmµ•ýf¹i‚ô oØj«ú� :kÕ­M²õÖö´5ý?ýô�ìÜ¿ýÛ­·Æþ�›1Ã>9¿Ë.Õc%íqóG4ýçíºá¿~þy\ùoFNŽ)ño ä˜ÉËØ¸bíÄ¿øWüås-'eóеSþ)ÿ”¹LËËØ¼bí”Ê?å_>×rR6¯X;åŸòOù—Ë´¼ŒÍ+ÖNù§üSþås-'eóеSþ)ÿ”¹LËËØ¼bí^©üƒ èùËoJKÚ.­š¸¬ä•÷?a‚}jzÆŒt ½º‚óÏ?é¤#Žpî˜cN;íâ‹m¡ì®»ì·¡—/öÙj‰±MúŬŒo ìï|§}¨;Þ.üéOm!pÍš<òÚµ�>êÜí·ÿË¿Ä …¡úTüØ/ç7ûôû½÷þèGÕ;¨ÞÆÞwnÏ=«wž}`Û›Ïö¦ù—¾Þ´µ#Lo‹ÿçž{ùåßþ¶ñrûÐfŸP¿ãÛ_wÝUWÙ'ðÿüÏ'OŽ¯ÃŽ³7›¿ûÝ»î²EôÜý�íýÙ¥ûÃ?í4{þ†n¹å¶Û‚ßë¯ÿæ7¿úUç<«æÏã_Ÿþô¿h¿Ší?+ŸúòɸÿþÔ[Õ·O­ß{ï£�úcóVí¤#F¼êU;ïl.LŸnñà°ˆÏ;‡ˆô¹cr²ôú�[»Ö>Í¿ti=:,Cì éwôgèÑ<»¾Ÿßo·Ý„ ¯zUó�‰—_^;´5� w­©ËKV¯~üqç~úS»Ka[·n¿ýìËÓ§Oœ˜ž¹Y5¯¿:ó;j”½3¿í¶ãÆÙ‚ùøá-øÍµ*¦Ò+³3hZ{+¿/¾øòËv—¼$ÏÿÚµ+WZX¶ì®»ìË §�vè¡ö@È’%uÄÓOÿä'í·âÓåóº•÷Õû}'þ{ï­‰(ÿ�ã¯ÉXo%â_üwª½�¶&šâOñ§økæ…Æÿü¼ªÉÔ†ITTTš9¤ú£úÓŒŠÞKTUU›y¥ú«úÛŒŠÞKTUU›y¥úÛßú;ºIy*ñ'� ÏÔ¶ÙϧuÓ®,ÙtüÛ›á³f�qÆßÿ½ýúGاžëËpÕ‚¢}jùsŸ»õV{CÙ¼ºÂ)Sì£ÈsæÌœiûw¼ãío·7:÷Üs÷ÝíècÇ–ù·E«½öš1ÃÞì1⦛ìMiCµ7‘|pùòO}ÊÞ\ßi§êãÖÎêÕöqqçl¸´Ù¹ßyç²e¶j ³õ7ÊW¬°ø%C[|ü´i3gÚºÕï½›ÆGÀرvsæÌÚ›ñozÓa‡¼½‰[½qcY{‡&O¶OžŸzê¼yöÛÝ×^{Äû·Áêî»õ«§Ÿ¶7»§O>ƒ¾Ôš=ûË_þÎwìóïyÏN;5­Ìï»ÞeoÊßrËå—;7nÜA}ô£1_wßm¿á½xñ²e‡æÜ>P?û.€ýÖµméò¬Yö¥‚7¾q›m*}çÿoxüWw¼Žã''¦ñýæ¹Ô�kêK’U«ìGžx"Õ—> Ÿ�ïêìBm·Ý.»ì¹g…ó:|™7@}ô¥gQî{�©ÅÖ[Û›ßè“çéQ�WÄcþú-“+L¯/]Qþ¼KÖö›å¿ï{ßÄ?ý�ž?êþó |ÿûUüçâ¹äá}zýAôäßÇ ÃVÎFüW¬tÇ£â¯;ÞB$*þÆ@wq¤üëŽ7åŸg@õ§b¢»8RþuÇ›�¾æü?h˜–øÿLœ”mTÿ*nº‹#å_w¼…xTü)þŒ�îâHù×oÊ?Ï€êOÅDwq¤üëŽ7}šÿoÜù7Ú/è =÷´…l¼¿o'îµ×Ÿþi%·ß÷ÛÝw?øàÿ·ýfóÎC›—:÷ë_ß}÷�w†¾½l ÛsæŒoŸt_°àÆíMëÛo¿í¶eËœ;î¸jÝ/ ¾ðÂ#�ÜsOsqøÀÿäOìSöé6~üÎ;Û‚ò 'د¢­¿Ž ©·|T޵ÓNö[ìþ�pÿ»½�œß<{•Öó´nÝäÉÆãœ9Õ¹÷ïõ)ÖˆãÇÛ‚íÑGŸ{®= °págÄüþû¿/YbØzüÛÓö›Ý¶P~óÍ×]·ÿþö¦úêÕÉcÇÚGùíÁ€êqä¿4qÄÇ5¯¤’T¼øã½UÚ÷òîýWïiÛïwÛæù­ß•fWÖáÿþþ{É6Ûl·Ýk_ë{¾÷×íϯ:Óîï~K›ÇÅZû²Ä­·þÓ?9gìÿ�ÿ°&¦M{õ«ƒ�?ÞK¼ÿ矿ûîçŸwnöì+¯´/,zè”)õOÝûûç�äö߬ !õïQ¼]Iïíüþç?¿ývû úiÓ&Mzÿû�›81}Ý[æ÷Þ�÷Û´Ú´êóü;KtýÆ@¨M¶tÿ›œ„ü-çMLñ§øSþ©þ”ëˆêo³jªþâq#ÇZS†qMÖ8nr¬5eGñ×dMñ‡ã&ÇZS†qMÖ8nr¬5eGñ×dMñ‡ã&ÇZS†qMÖ8nr¬5eGñ×dMñçãftéN¼AI_’µáùÀKoF gSõoçm×h ¯ö)íY³æÎ=ï<çì=kûò#�üò—öéöŸýlÉ’;îpîG?ªÚ/®>¤î¯;æÉ‹Ï8㣵ýœ9^h ¸'œpÀ¶ë·Ñ£m Ýô•ÄÞr·íÚkï¼ó—¿´OŽt�- Û¸}:üç?ÿÁü"´Ù͘qà�ö&õa‡m¿½-�ùô¥K¯¾ÚÎsùò¿þk{|ç�«…Ñ'ž¸ï>{÷Üß?;oûû>û°oVÛÇ¡�{òÉ'ž°Of?=´=÷œ�Û /¼ô’sÏ?¿r¥-$®\ùÜsöÎò‹/>óÌÃÛüv¶akFY>þ<¯3f|ðƒ¶ m_ ¨6»ß{oï¯oç�÷ßÿ�Cªß¸7þý{÷[o=fŒ¨ :ºîÛmwÜÑxßvÛ€·<~,³vê?Õw:ÎlMŸSõóò¯[ÿ!ÿ«�ƒÛ½´ÍãU½ðÿÔ¯×xûTÿÒK/¾hqâ7¯÷ûà?�þ8¿ÇyIuÿü]ôRçê�j4�«,í¼­õüóOþø/~aÖÌŸõÕqÝøîw/»ì¬³¬Î\z©]ïUW-Zô™Ï87e ·�Î?>³/%}I¾á÷¿:ÏWÉOI.ÿ>s|„ÖïkÚ+ñ(þ«<,ñS’+þUŽ)ÿÒZ“ë—òHõGõÇ*I)>JrÕ_Õ_Õ_c@ãOn¼Ie¥:¢ñGã�Æ�¿¥úP’kþ¡ùG5ÆhüMÇÚ\¿”G5þjüÕø[ª^^ü„»7È�β|áF)ÅÜTýÛy§×býQ£Æ�Ûn;ç&OÞw_[ˆöûY³>þqûMaû¥áåËmaý‡?´7×çÎ�7ÏöžÏß‚sçÚ'Åß÷¾æB•-¨ï¿ÿqÇÙ¯°/XpÙeÕ"oõ[èË—ŸvÚ»ßm à+VØå?ø�_¶³sîíoŸ:u·ÝL¿ýö{ï]Éìÿæÿ[ߪ~³û„L?iÒêÕÎýä'?ü¡}B»*³f9sæ;ÞáÜßX_Ö4¶ùóä‘;î¸æçÎ<óä“íÒé‚xeþŸ^ÐT-�äž?‘ k½á ;ìP_ ­ë}Ïûõ}çÆŒ±%Áúgì�[´èþûyÄ9ãdòd³òþÑÖòçÙÄ­ÛùkçíýÞŽóíxïý‡ v¬ çç¥Ýú·ˆ©0F mνæ5ÑïöCÜû£üþé§õ«ŸýÌ÷šçükùëÇ×U-üÛççmóöëÖUŸžoþf¸¿Þ`o­×¾vŸ}Ž8Âh™3ÇòqÌÐGäˆc‡6û)ƒ¥KmAÚ?°R¡˜ýV[ÕÌðš%¾®Joçë-;ïÚìË  m毳µs|è¡ÎsÌñÇâÎ}ë[óæ}èCÎ]pÁM7ù3²K.¸àª«lAþ¢‹Ž=ö­o ˜<ÿÕ1ž÷€À¶ò×/ÿÆ@ˆgĦøç3©Î¥â¯ÎGÕSþ)ÿTTÙq…µkÖÕß&'ñ<‘×Ä?ÇS“kÅ_“ÅŸæ?šÿhþ£ù;®²vÍZ«ñ§É‰Æ�?4þhüaÇÖ®Yk·¬ñgd“€þHº¿!½9Ÿ�ÍUÎõ�_}Úû€?ÜÔ-ºöÚ /tn¿ýRK{ÛÓÞh}è¡^ÇûÖÔ©Ó§ÇŸH7¹-Ä?ôÐÓO[h¯\ù«_ÙÒy¼|nŸ&ÿ“?Ùe—jÁn»íì“åÇ?eŠëÞýèÞ{í·Ð�[»ÖÞ_²Ä¿_k2ûTõÛßnoÀ—Þ;}òÉÛnûßÿÛ>MÝyá|Ê”ýö³7cg̘9´9÷ç~ÔQùˆ-DΚe ‘éV¾¯¦I­�{+mq´Éª·µa&·�aoä¦Û´i¯}­}š-@¦çYöŸzèM?õßÔN(cǾá νùÍv7ãmñb{Pä™gòïWÛ�‰­ÓöïŸÿ u§©½ïó×?nÜë__}rÝŽ ¸K–üàö ‰}G¶\tUûÿ„ {îi Ó' mÿ¸sÇoaÿ±�}ô1Ç8÷ñ�øÃü`8η^~yÍš°X略Ïû çÛ†vó(ûQçšw¡3ÿÎÙ�18wÔQŸþô%—T_d^ªºðàƒÕW.b9Ï|TïÚòo ôŽÏ¶Hâ_ü+þÚfMïì•Ê?å_ïò©-’òOù§ük›5½³Wþ)ÿ”½Ë§¶HÊ?åŸò¯mÖôÎ^ù§üSþõ.ŸÚ")ÿ6Ïük½€Žj�¾mà¥öéS¼¶ýþʕ˗Û'Æï¹çþ¡Íö<`}ûüqn+‡SUæÆŽ�8ÑÞT?å”Ï|ÆÞM·RBn½õ”)öægºlyÏ=K—>ö˜s¿üå=÷¤KßöÛé»ìâ—¾GŒ°·¬÷ÛïàƒmÁÚÎÆþ»ñÆ;ï¼÷^çžx⡇ì“ðööy¼ýéŸî»¯-<æø±%ÇÅ‹¯Ú «~å‡~úéóçþâÅö©ø«®úÇ´OÞŸwÞÙC›sŸùÌܹöæû 'œ~ú©§Ú{°±×ærkì?·øÛßVŸ„¯ŸEŒ™fÖ®}æ{Ó<þ|µõªWm=´…ãcÿAÚl•ý7mc ÂGúêĈU{ø¶ léÍÏWØ ~ó›U«šçQE[NîœÅÑÝwßpC{ëo~ó®»Úgò‘ÿþ­m�üë¿þð‡–ߥ�õïïÿ/~qûí‹5ó¢„S’Ûùع–ô>Â}ÎÇy'þÍGÀ3f›mš_d°Œ°Mªz°#z»ÿy\¤ÏÅK>Òóžò–éó¨¼á#=ï)o‰ð‘>�ÊK>Òóžò–éó¨¼á#=ï)o‰ð‘>�ÊK>Òóžò–éó¨¼á#=ï)o‰ð‘>�ÊK>Òóžò–éó¨¼á#=ï)o‰ð‘>�ÊK>Òóžò–éó¨¼á#=ï)o‰ð‘>�ÊK>Òóžò–éó¨¼á#=ï)o‰ð‘>�ÊK>Òóžò–éó¨¼á#=ï)o‰ð‘>�ÊK>Òóžò–éó¨¼á#=ï)o‰ð‘>�ÊK>Òóžò–éó¨¼á#=ï)o‰ð‘>�ÊK>Òóžò–éó¨¼á#=ï)o‰ð‘>�ÊK>Òóžò–éó¨¼á#=ï)o‰ð‘>�ÊK>Òóžò–éó¨¼á#=ï)o‰ð‘>�ÊKSüõ è©"@ú¥—J`‚EÜBúØ6noºþ×­³…ÀÛn;ÿüÙ³�;î¸� mÎ}âsæXÿ_ÿõþûëoŠ×ùô”®ÿ¥—V¬ÈŽô-Û�ñªWí¾»}’½¾„~Ï=‹]w�s7ÜðŸÿ¿}>gλßmoŽ�ig�öØcÿýmáÞd•üÆo¹ÅÞ~¿þz[ÀŒï³ýîú^{Mœh‹f±¼B[¹òÉ'mñ±ò®sÚ´ÓOwîoþfÖ¬éÓ�{õ«·Ú*öïÏÄŸÕêÕ�ã–?/“Ùú;ß9{ö™gÚyUÿyÛÅ‹çÍûÚל»ãާžªÞowÚ³ÏþèGÎ]vÙ¥—ZfÄþíÁ•©SwÚÉöÕ„eo»RV¶¯z¥ë÷Ö±ŸøèNòØ.à¿ô’ý}ú #F¼ø¢�Iþíù©Þ.ùo^¿¿’úñ¾ÎÏK¸½ü9®êRÄ/Òç<˜Lü‹ÿz¤ùH©KQ|!½GM÷Š?Å_=Ò|„Ô¥(¾�Þ£¦{ÅŸâ¯i>BêR_HïQÓ½âOñW�4!u)Š/¤÷¨é^ñ§ø«Gš��ºÅÒ{Ôt¯øSüÕ#ÍGH]Šâ é=jºWü)þê‘æ#¤.Eñ…ô5Ý+þõHóR—¢øBz�šîŠ¿z¤ù©KQ|!½GM÷ÝÆßúô²ãú2Mê÷ë”ì7]ÿÕ«»ïno.ÌŸÿÿðþ�s�=æß·Íó™^ÿŠ<ð½ïÙBüE¥oÜÚÛ{¼þõö¨_8‹yµ¥Äýö;ð@;¿-Y²pá‚¶Þ?7œý÷Ÿ:Õ~;=õ?~üî»›>ư7e,¸új;pS¦Ì™³ÿþÎFn[·nÔ(û4ü„ ©vÉ{£ÛÊ;õï­GŒxùe{sþÊ+Ï;ïœs¼4ø/,›-ûþ™g^vÙ­·†/”p~÷»´ûðå/ÏŸo×ï7»~ûÍó#�|÷»«�Ý{�߯]koLßzë·¾uñÅÎ}å+gŸý•¯8wÍ5·Ýf‹ŽécÉîþzÌÞß'ƶ™Õ±kÖT×sÍ5õë¹õV[ÒN¯Çû{Ýë¦M{×»rŸúž?ÿ¯þʹ믯0)]¿Éí“ï—_~î¹û·5ÜÿY³9ľ P-Ÿ}huWÆŽ�4É>ÁþùÏ×D1\[ðž;÷ÐC?ûY[HüñÒW&Ì6åÕª'ŸüÉOœ›7ï�CN>¹Â2;¿Y>Ù§Ýßò–*»s÷¿ºO†ì�*ußË­·¶Ÿð?=ЉÿpŒÝç+~ؾqî¹'žØ\@_·î�ÿxûíãûÁœe³þŸù¨ zÔ’Ä�éK÷? ^°ÿ�‹rKü9~òÒœe^¦øËóR—*þùLËKëÑÓ©§üëÄŽ×)ÿ”ùLËK}Üà½òs¤ù¯ê�êO¾Òä¥LNU6ª? WÊ?å_>ÓòR&¦”Æ€ê+ª?ª?ùJ“—21UÙlÞù7´´Ùï­~l!Ç(-'l¯Ïg0þ§L™1ãCrÎÞÚ¶Ï|ûÅÖ#~üão|ù}èÀÿã?ì·¼O>Ù~ù ƒÞö¶=öpnë­·ÚÊÎpݺßÿþ©§œ»óΛoþæ7íæW\a ¼ÍmÖ,{³ýMoªÞOmê+ÉĉûîkoæÏöæ´ç=ØO›fç:eJsi»²3Æ>b=c†ýBº]“-;7·™3ßñ[H.möxÁ®»Ú‚`µyíµáqû¤û_üÅÿú_vìyç}êS‡fŸ’Õ«ì�î_|ì1[h\°àÓŸ¶…çpTÝS9=+��³ôú—.]°À> ÿÞ÷>ü°½!}Áùˆ-˜î¸ãý‘yx≟ÿÜî£yÿ—©û¬z³gŸt’ýv|ž¿Ç[´èë_wî´Ó.¼ð»ß�ù¯˜Üu×믿ývç8`‡â7Øsž6D毿„áõ¶/Ù˜ü±Ç/¶ë9õÔóϯGBu=»ìrÝu·Ýf_>ØqG{`Âo#FŒ¿÷ÞÎüI'ÙŸüäüùñþîï>ö±O}Êd¸à‚/|Á¹CÙgû)€µk_xᡇì çœsì±ö¦v|T…n‘9{ö;ß¹ÓNÞ[n_¿.þºsGx™-ÊÏœyÚiößûÞâÅv¿Ãã'ULÎ�{Ä7‡~â‰vþ³f͘±ï¾Î½æ5Ûnk<¬^ýÌ3¿ù�}²~Ñ¢… �;çœK/�ÀŸ‡�—=hðÙÏΙcy[މúõøs­",ô|Ëß׿Q‹Ù)W\QÝÍ Ö­³ßD÷›?¯Ñ£íÌœ{òÉG©Þ˜¯ ñvéþ‹_œ5Ëîs8ÿºgCÛëÊCèëú¡úøŠuýi‹ÿ˜WåŸê�êïæ÷÷Gœãõ¶ê_̇êŸêŸêŸêŸæŸþ/ø:ö£­ñ'fUã�Æ�?4þhü©�Œñ(ÑËvÝ‹Æ�?z7þDK]>i�^Ûê‰WÉÂÿ«0¬N$Hq ›ªÿm·µ…ÂÏ}îß°O“/Zô‰OÌ› Œ{óxÁ‚ .8ã Ûc®êönªsW_=w®-´�SºcǾþõo~³sGUÙÙbu¼ÍÚöÙÇ¹í¶‹¥aÎ�º×^ö1k³¹öÚ&†- ï¾{} ¹yÿ ç=ï9þxû$ö9ç,^ü¥/ŸëÖ-Yb¸§žzì±)~°*·ÊQZiìêýåPÖ­[´ÈîÅܹÕ>gS—M›vÜqÎ}ûÛ'œð¶·Å …u«U«žþ™gê÷?¶xâ‰çž«¾I°Ãõ·§ýÙ–¯ÌpüU5§!èø:î0=Cï÷֪γn·jÕ /Øèéæóyùò^¨`ë èÞ~ß}�9Æîûé§/]zÈ!övµŒl~-/Î?îÜ£�¶½?¢¼·7þ¿úÕoÛÞàÞm7ÿuÙ>Öøó�eqÛÎÇúž×Q£vØÁ~bàk_»þú‹.²ø=ôP{óÚ/‚{¼k¯½è¢³Î²,1+~3ìÜüù×^ko´ïµ×¸q��^³ÆÎпõîý‡3Îß¿xq<Æ¿ôÒ¯|%þ²C¬cÚÞÿ‰'^p�}iãýïßu×z<×Q¼}]÷òç[X;½O©¾Ô—c ÄŽÉÅÅb©â ±™2­øCŒ)þÆ€ò/­q_ãŸêo•%�ó$ŽoßùÕߊ3Ä’âÏÇSc�úšÿhþƒ2KùWeV§<Òø¯ú[EIçlJcHõWõ·sÄhþWå bIõGõ'ü«{ZgK}ÕßÍ«þŽlÞè|á° ›/­Ý$NÓOI²iû·eôY³œ»ýöo´7ÉO?}öìæG K×^—Û›œÇ÷…/\r‰s7ß|å•öÉëI“ìš«ÄÍ3奣FÙ›¼ögsæNºÍ˜1mš½žnixOœ¸÷Þ¶P¼ß~©¥-Á;÷Æ7úOM{½÷ïûÕ~üø)S=Ô¹ïÿê«/¼ÐÞž1#ÿéóúq3gΙcoö.\xóͶÀ>gNý¨qãÆŒ‰ßxŽ�Î�ÉÌ™gžY}ÊþòË wæÌ:^||Ü>øàOüêWí7ä/ºÈÞˆÞyç±csøþ˜I“Þõ®ÿù?í ~/ñû3N9ÅîË”)ù…Æ<*Ÿùã½÷Q£ÆŽÍù3fĈŠÇüñ»íöÎwÚßöÕ‚x[·nÆ [Èþ³?›<9‡ÛÚƒ³f�}ö÷¿o à'�ÿ<@l—oOžlr|ýë×_ÿÏÿìÜ»Þew o¹!Ò4þ=ÖÈ‘Ûoo9pöÙ·ß~à vþ'Ÿl|¤÷ÅÛ£ýìÙ'Ÿ|Á¶ûígŸm¿?q¢]OÉð3v¬-±¿á •/?´Uo}çïߘ1èîäÏxÚÐgÈ”)Õ—+Ž;îôÓ-.ü¿ÿ×¾OCݶò¸Š?ÅŸò/ä”êO¾N†ºmåqUTTBN©þäëD`¨ÛVWõGõGõ'ä”êO¾N†ºmåqUTTBN©þäëD`¨ÛVWõGõgc¬?#žÞBxöª0xDÃ˧D=Á|xpÖõcs½�ÍÿÚµ+WÚ¼�>úë_Û'�ŸþÅ«7�í#Éν<´Ùæ„ 'ÚBÔÎCÛ;8×í"áÆvýáù4¨¢båÊ+ìÓõ/¾¸f�½KlØïiÛ2¯-¸Žß+W.]jŸÌ>è cޱ/øÍ–{/¿Ü>ÔQ{îé¥öFï³C›s«V�Úì^Úì<^óšwtn›mÆŒ Ÿ¥Ç•Z/ÿù3\þÕïÿªUÏ>k¿qÿ‹_,[f¿u>zô„¡Í9ûÅõßþÖ¹­¶š0aÒ$çöÜsòä‰Ëoü§W58þí œ{xh³¼~ê©+~ÿ{»‹"»Ž5k¬µÍ6;îhç¿Ë.;ídûñã+½?ï¶çë�+íÛâ îþçÏXþ«¼Ø\Ç¿ü]RÝÝ‹Å?3[ySj©þWÅâ‰aTõGõGõGõ—«¥ª䪿ª¿VQ‡‡ŸŽ_|ªbFã�Æ�?4þ0³õ0ΖZ5þjüÕüCó/nDÑü³»ùçð"O/'n~@c7¶÷í^ì76ÿ£FU “&í¹gý“罸Ú&ÆÆvýá ë¤ñã·ÙÆèîýØ€ÚlU~<~BUš¢ÛÝ©ì=Ò6C›owÚW‰g¸±•÷Ë:µÍ¾“¾­nãõ_¿Î±c'L°FÞúÖéÓ«7˜Ã•NžÚm[ƒ»~»û2ÄÔ©Õ¾í™VömÏyi‹gö³�^þÛ1ÚÎß ñߎÑvÖâ1 økQí¬ûüÎIþ5þùXèÅ^ùß.£ÚYã;$þÛ1ÚÎZü#í"ª�5b_ã¿â¯]Dµ³Vü!í"ª�5b_õOñ×.¢ÚY+þŠ¿vÕα¯ú7¨øË|½~sÂÂc]¾¡=—µk{>,.k'ÿí`yeíšÞ«…íôxÿϤ©¼y|%iÚùs„Gô}nßÄÍÇÚå�.KY\Ö®ì)¯aqY»¼—²”ÅeíÊžò—µË{)KY\Ö®ì)¯aqY»¼—²”ÅeíÊžò—µË{)KY\Ö®ì)¯aqY»¼—²”ÅeíÊžò—µË{)KY\Ö®ì)¯aqY»¼—²”ÅeíÊžò—µË{)KY\Ö®ì)¯aqY»¼—²”ÅeíÊžò—µË{)KY\Ö®ì)¯aqY»¼—²”ÅeíÊžò—µË{)KY\Ö®ì)¯aqY»¼—²”ÅeíÊžò—µË{)KY\Ö®ì)¯aqY»¼—²”ÅeíÊžò—µË{)KY\Ö®ì)¯aqY»¼—²”ÅeíÊžò—µË{)KY\Ö®ì)¯aqY»¼—²”ÅeíÊžò—µË{)KY\Ö®ì)¯aqY»¼—²”ÅeíÊžò—µË{)KY\Ö®ì)¯aqY»¼—²”ÅeíÊžò—µË{)KY\Ö®ì)¯aqY»¼—²”ÅeíÊžò—µË{)KY\Ö®ì)¯aqY»¼—²”ÅEvp�]ÉGŽÒKaqY;ù7R–Ë}–WÖnããíÚ—_n^ÿo~³j•ÉÙëjÚåÌ7¾ëo^{,i^W¬ mÖN×o ÞP‹å•µÿâ_ñ‡².èÙ¼bí”Ê?å_È/ÔbóеSþ)ÿ”(낞Í+ÖNù§üSþ…üB-6¯X;åŸòOù‡².èÙ¼bí”Ê?å_È/ÔbóеSþ)ÿ”(낞Í+ÖnKÍ¿õ¿�¨ím˧µÝˆÞ"shò_••-�ÿ•+í·µoÚ~òû�ó*^&NÜ{ï3œ›>}Ò¤m·�cÈ—ßÞÆ©âoK�¿*¶tÿuÿ-¶¼ú«ø7”ÿÊ‹åoçUÆ)³)ÿ”'Ê?åS/zm£ú£ú£ú£ú«ñGãO¯ÇOã�Æ�?4þhüaÆ‹^Ûlîã±€^ @V‚zM.‡'ÿO⟋—^[)þÆ€ò¯×™Åá)ÿ*ž\¼ôÚJñ§ø3”½Î,OùWñ¤øãâ¥×VŠ?ÅŸ1 üëufqxÊ¿Š'Å/½¶Rü)þŒå_¯3‹ÃSþU<)þ¸x鵕âOñg (ÿz�YÞÆ�#í Šù Ê>.�–J1Žü§œYó–;ª)Ã8â¿ÉšøÇq“c­)Ã8Š¿&kŠ?79Öš2Œ£øk²¦øÃq“c­)Ã8Š¿&kŠ?79Öš2Œ£øk²¦øÃq“c­)Ã8Š¿&kŠ?79Öš2Œ£øk²¦øÃq“c­)Ã8Š¿&kŠ?79Öš2Œ£øk²¦øÃq“c­)Ã8Š¿&kŠ?79Öš2Œ£øk²¦øÃq“c­)Ã8Š¿&kOüß@÷7Ö>ý�¿…¹Ë2™_ŽowTŠ&ÿÆ€=÷"þÛE’â¯Ê¥v¬)ÿê ¨þ¨þ¨þjüÑø«ùG»‘TóÍ?Œ�vQSŸ}„?UTÚE’ê�ê�ê�êo»ª¡ñ§Î€þþ×ßÿúû_ÿkþ­ùw»‘TóoÍ¿5ÿÞRæßÅôútrÃ{ÝOH7Ü·!È·bñß Š¿îþ ëEô©þ)ÿ”Ê¿nþADõ§ ¨þ¨þ¨þ¨þ´ÿÙ^TÍÿTUUUUÛ.ˆiüé4þhüÑø£ñGãO»2z1úèï¿~�¿[@ïME ˆ1 Ä€b@ ˆ1 Ä€b@ ˆ1 Ä€b@ ˆ1 Ä@Ù֯䗎CúÒq¬á#=ë§d‡ð‘¾„ËÊ>Ò³~JvéK¸¬á#=ë§d‡ð‘¾„ËÊ>Ò³~JvéK¸¬á#=ë§d‡ð‘¾„ËÊ>Ò³~JvéK¸¬á#=ë§d‡ð‘¾„ËÊ>Ò³~JvéK¸¬á#=ë§d‡ð‘¾„ËÊ>Ò³~JvéK¸¬á#=ë§d‡ð‘¾„ËÊ>Ò³~JvéK¸¬á#=ë§d‡ð‘¾„ËÊ>Ò³~JvéK¸¬á#=ë§d‡ð‘¾„ËÊ>Ò³~JvéK¸¬á#=ë§d‡ð‘¾„ËÊ>Ò³~JvéK¸¬á#=ë§d‡ð‘¾„ËÊ>Ò³~JvéK¸¬á#=ë§d‡ð‘¾„ËÊ>Ò³~JvéK¸¬á#=ë§d‡ð‘¾„ËÊ>Ò³~JvéK¸¬á#=ë§d‡ð‘¾„ËÊ>Ò³~JvéK¸¬á#=ë§d‡ð‘¾„ËÊ>Ò³~JvéK¸¬á#=ë§d‡ð‘¾„ËÊ>Ò³~JvéK¸¬á#=ë§d—â¯Ý+šŸ˜°�ØÖßÈ¿1�ûĉøWü)ÿTT«:ПÿküÑø£ñWóÍÓO¬iþ©ù§æŸšjþÙŸ™g…ªù§æŸšjþ©ù§æŸõ‘VóoÍ¿5ÿÖü»^z=ÕüSóOÍ?ÛÏ?×/ ÷:!Þ`&Á_Ú’ÿŠ‘þà”õÐÿâßPü…œdKùW±­ødÔ_Š?ÅŸ1 ü 91È–ò¯b[ñ7Ȩ ¾Š?c@ùrb�-å_Ŷâo�Q|)þÆ€ò/äÄ [Ê¿ŠmÅß £.øRü)þŒå_ȉA¶”Ûý‰¿ÖŸpoëë'îŸti�Óíò3'þ«'�bNúÛVüÅü*þ~H�ã¢må_Ì­òOù§ü‹3¢ßmÕŸ˜aÕÕÕŸ8#úÝVý‰VýQýQý‰3¢ßmÕŸ˜aÕÕÕŸ8#úÝVý‰VýQýQý‰3¢ßmÕŸ˜áÍ­þdйôê¶ 5?QÓkmùOÉõÅ?')wŠ¿ôY)C¯Š?ާ”]ÅŸâ¯>¥J#„‹+åÇSÊ®òOù§üK³"îsy¥úÃñ3kmÕÕÕŸ4+â>—Wª?O1³ÖVýQýQýI³"îsy¥úÃñ3kmÕÕÕŸ4+â>—Wª?O1³ÖVýQýQýI³"îsy¥úSñ”Y@χ—S‹Ò0¾%íÚòŸãKü+þ”!3Tòu20Ôm+�«ú£ú£úrJõ'_'Cݶò¸ª?ª?ª?!§Tòu"0Ôm+�«ú£ú£úrJõ'_'Cݶò¸ª?ª?ª?!§Tòu"0Ôm+�«ú£ú£úrJõ'_'Cݶò¸ª?ª?cýY¿€^¿=Íà·‚‘í¦­IÒ€Ï[©üÇáxñ-ñ¯øSþùlÀ{ÕTQë"kÕÕÕŸzÎtê©þ ŠRgY«þ¨þ¨þÔs¦SOõU”:{ÈZõGõGõ§ž3�zª?¨¢ÔÙCÖª?ª?ª?õœéÔSýA¥Î²VýQýQý©çL§žêª(uö�µê�êÏÆXF<5¼u^¼­‡ºzb@ ˆ1 Ä€b@ ˆ1 Ä€b@ ˆ1 Ä€b@ ˆ1 6?Ö¿�^º´¶OÒ”pR9‹ËÚ¥ø¨Ïâ²vÈ_ªgqY»õY\ÖùKõ,.k—â£>‹ËÚ!©žÅeíR|ÔgqY;ä/Õ³¸¬]Š�ú,.k‡ü¥z—µKñQŸÅeí�¿TÏâ²v)>곸¬ò—êY\Ö.ÅG}—µCþR=‹ËÚ¥ø¨Ïâ²vÈ_ªgqY»õY\ÖùKõ,.k—â£>‹ËÚ!©žÅeíR|ÔgqY;ä/Õ³¸¬]Š�ú,.k‡ü¥z—µKñQŸÅeí�¿TÏâ²v)>곸¬ò—êY\Ö.ÅG}—µCþR=‹ËÚ¥ø¨Ïâ²vÈ_ªgqY»õY\ÖùKõ,.k—â£>‹ËÚ!©žÅeíR|ÔgqY;ä/Õ³¸¬]Š�ú,.k‡ü¥z—µKñQŸÅeí�¿TÏâ²v)>곸¬ò—êY\Ö.ÅG}—µCþR=‹ËÚ¥ø¨Ïâ²vÈ_ªgqY»õY\ÖùKõ,.k—â£>‹ËÚ!©žÅeíR|ÔgqY;ä/Õ³¸¬]Š�ú,.k‡ü¥z—µKñQŸÅeí�¿TÏâ²v)>곸Ȯgo {Gm?µ€.”ÕË¿1àœøo÷© 6¾��âOñ§üSýQýUýmó©!4®°z�?4þhüÑø£ñGã;jöÎNã¯Æ_�¿5þjüÕøÛ»q•EÒø«ñWã¯Æ_�¿9þöl½4ÐUe½Jì’M?åòoÊøeÊŠsŠ?ÅŸòOõGõg�Óš0£PýUýUýUýUýUý £ÂàZ4þhüÑø£ñGãÏàF�àIã�Æ�?4þhü £ÂàZ4þlÎã±€^€ AƒK»Ø“üWlˆÿ8*×Vü)þŒåßàr.ö¤ü«ØPüÅQ1¸¶âOñg (ÿ—s±'å_ņâ/ŽŠÁµŠ?c@ù7¸œ‹=)ÿ*6qT ®­øSüÊ¿Áå\ìIùW±¡ø‹£bpmÅŸâÏPþ .çbOwþ�´'Dü)ƧÚùÀÁÇ„N-Œ#ÿ9þ0o¹£š2Œ#þ›¬Uo–wΛÜQM™ø7š¼‰â/pZ8n‚m§Æÿ9þ0o¹£š2Œ#þ›¬©þâ¸É±Ö”aÅ_“5ÅŽ›kMÆQü5YSüá¸É±Ö”aÅ_“5ÅŽ›kMÆQü5YSüá¸É±Ö”aÅ_“5ÅŽ›kMÆQü5YSüá¸É±Ö”aÅ_“5ÅŽ›kMÆQü5YSüá¸É±Ö”aÅ_“µÅ7Ð=±öé�<…9X“ùå°vG¥hòo Øs/â¿]$)þª\jÇšò¯Î€ê�ê�ê¯Æ�¿š´I5ÿÐüÃh5õÙGôšæÿC ¤ìtê+ÿ*vÚ±–2ªù¯æ¿šÿjþ«ù¯æ¿íF�¿��vQ£ùG�Í¿4ÿÒüKó/Í¿6îùWq½^Î7¼×ý€°á¾ Aþ»�Ä/Pü)þº›õ"úTÿ”Ê?å_7�¨þô‚ÕÕÕÕŸöÿ Ò‹ê£ùŸê¯ê¯ê¯ê¯êoÛ�ÖøÓ 4þhüÑø£ñGã�ÆŸ {´¨»ÑHãOÆŸ�- wwÛu”b@ ˆ1 Ä€b@ ˆ1 Ä€b@ ˆ1 Ä€b@ ˆ�Á00²­ÿ$Cé8¤/ÇÊ>Ò³~JvéK¸¬á#=ë§d‡ð‘¾„ËÊ>Ò³~JvéK¸¬á#=ë§d‡ð‘¾„ËÊ>Ò³~JvéK¸¬á#=ë§d‡ð‘¾„ËÊ>Ò³~JvéK¸¬á#=ë§d‡ð‘¾„ËÊ>Ò³~JvéK¸¬á#=ë§d‡ð‘¾„ËÊ>Ò³~JvéK¸¬á#=ë§d‡ð‘¾„ËÊ>Ò³~JvéK¸¬á#=ë§d‡ð‘¾„ËÊ>Ò³~JvéK¸¬á#=ë§d‡ð‘¾„ËÊ>Ò³~JvéK¸¬á#=ë§d‡ð‘¾„ËÊ>Ò³~JvéK¸¬á#=ë§d‡ð‘¾„ËÊ>Ò³~JvéK¸¬á#=ë§d‡ð‘¾„ËÊ>Ò³~JvéK¸¬á#=ë§d‡ð‘¾„ËÊ>Ò³~JvéK¸¬á#=ë§d‡ð‘¾„ËÊ>Ò³~JvéK¸¬á#=ë§d‡ð‘¾„ËÊ>Ò³~JvéK¸¬á#=ë§d‡ð‘¾„ËÊ>Ò³~Jv)þú7н¢ù‰ ûðˆmýýð€ü¹OœˆÅŸòOõGõ·ªýù¿Æ�?5ÿÐü7ýĚ柚jþ©ù§æŸý™yV¨šjþ©ù§æŸšjþYi5ÿÖü[óoÍ¿ëU¡×sQÍ?5ÿÔü³ýüsýz¯2à fü¥-ù¯éoNY}ñ/þ�Å_ȉA¶”ÛŠ¿AF]ð¥øSüÊ¿�ƒl)ÿ*¶ƒŒºàKñ§ø3”!'ÙRþUl+þuÁ—âOñg (ÿBN ²¥ü«ØVü 2ê‚/ÅŸâÏPþ…œdKùW±ÝŸøký ÷ö·¾~âþI—ö8Ý!ÿ1sâ¿zÒ(椿mÅ_̯âOñç‡ô8.ú×VþÅÜ*ÿ”Ê¿8#úÝVý‰VýQýQý‰3¢ßmÕŸ˜aÕÕÕŸ8#úÝVý‰VýQýQý‰3¢ßmÕŸ˜aÕÕÕŸ8#úÝVý‰ÞÜêOf�K¯nËPóE1½Ö–ÿ”‘\_üsq’r§øK?‘•2ÄñªøãxJÙUü)þêSª4B¸¸Rþq<¥ì*ÿ”Ê¿4+â>—Wª?O1³ÖVýQýQýI³"îsy¥úÃñ3kmÕÕÕŸ4+â>—Wª?O1³ÖVýQýQýI³"îsy¥úÃñ3kmÕÕÕŸ4+â>—Wª?O™ô|xa1µ( ã[Ò®-ÿ9¾Ä¿âOù2Cõ'_'Cݶò¸ª?ª?ª?!§Tòu"0Ôm+�«ú£ú£úrJõ'_'Cݶò¸ª?ª?ª?!§Tòu"0Ôm+�«ú£ú£úrJõ'_'Cݶò¸ª?ª?ª?!§Tòu"0Ôm+�«ú£ú³1ÖŸõ èõÛÓ ~+ùÐnÚš$ ø¼U�Ê�ßÿŠ?åŸÏ¼WýAµÎ!²VýQýQý©çL§žêª(uö�µê�ê�êO=g:õTPE©³‡¬UTTê9Ó©§úƒ*J�=d­ú£ú£úSÏ™N=ÕTQêì!kÕÕÕŸzÎtê©þ Õ¼.1@IDATŠRgY«þ¨þlŒõgÄSÃ[çÅÛz¨«'Ä€b@ ˆ1 Ä€b@ ˆ1 Ä€b@ ˆ1 Ä€b`óc`ýè¥Kkû$M '•³¸¬]Š�ú,.k‡ü¥z—µKñQŸÅeí�¿TÏâ²v)>곸¬ò—êY\Ö.ÅG}—µCþR=‹ËÚ¥ø¨Ïâ²vÈ_ªgqY»õY\ÖùKõ,.k—â£>‹ËÚ!©žÅeíR|ÔgqY;ä/Õ³¸¬]Š�ú,.k‡ü¥z—µKñQŸÅeí�¿TÏâ²v)>곸¬ò—êY\Ö.ÅG}—µCþR=‹ËÚ¥ø¨Ïâ²vÈ_ªgqY»õY\ÖùKõ,.k—â£>‹ËÚ!©žÅeíR|ÔgqY;ä/Õ³¸¬]Š�ú,.k‡ü¥z—µKñQŸÅeí�¿TÏâ²v)>곸¬ò—êY\Ö.ÅG}—µCþR=‹ËÚ¥ø¨Ïâ²vÈ_ªgqY»õY\ÖùKõ,.k—â£>‹ËÚ!©žÅeíR|ÔgqY;ä/Õ³¸¬]Š�ú,.k‡ü¥z—µKñQŸÅeí�¿TÏâ²v)>곸¬ò—êY\Ö.ÅG}—µCþR=‹ËÚ¥ø¨Ïâ²vÈ_ªgqY»õY\ÖùKõ,.k—â£>‹‹ìzöºwÔöS èBYý–êÿ߆·ÀÒ‡·ÐTkKåßó«ë7œSþ·ûÔŠ�Ÿ¶û놷ðS‡ oâ_ñ7˜øKãUõ¯¿õ/Í÷tœÿýå?�÷´/þÅ?æ?>ï}¼ùqÞ÷ý^ñ§øëGüùøB{Å_oâ¯Û¿çÅoøGq^Ò‹ñ¿!õ·Û¼÷ñ¨øSümHüù8êv¯øk>ßý¿W•æõìýÿíøgyeíÄ¿øgê¯Ï{Wé¿ãyyÛ½â¿ÑmoTÉÞ©¾º¬ja'Õõ²¿¥ú_5¼•™ÿVÖý^VÛRóÏgÞ ¯ÿ¥á-,˜Ú¿¿n¿—cÀ³öª¿ª¿ ùèq‚Z¿ÞÊVÊ¿<ÃÊ?åŸeM>:ÊùÔVÓ¯üCyïϳ_þ=>ÚË>ÂTT,wòÑÑÌ*ô÷|óˆJ¢üË3¬üSþY†ä££”Míåš~œ/á 3*§øWü[ìlìñ�âé7µøïvœ/ñ°©]é:º•ëúó®ú¿qÕÿ^ç½ÏÅÿ+ÿðîöŽ£¿IÝìó—ÕIþ;±5jxsnäðÖ´ÿ¹e­&Oe‰â¯Ì Ö(þú£‡7ç|þ—î„øïÿ%¾S¹øÿiL´ëWã�Ïs¿g1Š?6Vòvšÿäyᤚ~^ß6ïýÙm¨ýý§ø÷±ÔÍ^ñ×nüiæ»â¯›¸óÇ(þÚÅŸç-ì�‹ö-6þüßó>ÿƒ'ñ¸hßbù/#‹ÿ27X#þóõ×Ïçý¾Ì¤â¯Ì Ö(þòñ‡™óŠ?ÏD7û4þ|¾û=Æÿ˜£²EÊÙ²¤éÌÿH{B¥³I>ñq¥ªË1Žü׫z˜·ÜQMÆÿMÖ§³sº62ño tbLñ—cÇM ãˆÿ&kÊ79Öš2Œ£ø3ÖOUµ ý&§m$GüçøÄ¼åŽjÊ0Žøo²çCNËË6vþí@‹€ô<Ó>ÅuKŒ£ø«3Võ0o¹£š2Œ#þ›¬5ó!gÃÈ66þ}¾‡s×ý\„¾oÁ¶S ãˆÿ˜·ÜQMÆÙ2ø÷<(ÿÓÙ2îzÕ¡¯ë\„–Ï— é®…qúÿ÷ë÷å³ï�ïOþ�ÏFn/þs¬à¸ÉÕ”aœÍ“Ý~ßdÆK6Ïë÷W·©_ÿÈæ„­º4ta¥ãìO[O³/áÈ¿1Pf0å-ô;ÕÄ ÇÕuâ¿ÿ�=ñ¸À-ÅŸ1Ðä©”k‡7çVoÎùO¬Þ Gñ×d³,Qüµ‹?Ïd‰7Å_ò/ð]U‹Ð÷wÄïûãߣû½üž�x/þc6P»G¥ñÏ㕎ÛÜê�ç!½Þ´ïyÙÜ®?\W½¥ë7êœT=ÕŸ+%Y)Ž|Þµ=Nù§ø+ÅLN®øË×±--ÿÒ8ØÒ®?Í ]¿1�²úi¼M§£‚•o•pÄù�yÏÍãÄùWüW Äqè9±½â¯¿ñçy÷û˜{ñ¿éÄ_ñÞèf?7`BRù7RVšýf¡ËÕ´kbÅñÏñsVµÅ“åÿ†æŸ_(jxsnêðöOo¶ ¾zõªUÍ;°¡þ›ˆ%‰â?ÇŒø7rÌäeêã?Ê¿\DñüUG+þêñ—ã4/Süåxé6þ|òÇ‹ÿ^òŸÃê,ÿ9~øø­ŽöqŸÃê,ÿ9~Ä¿1�c&/SüiüÏW’|¼iþ(”©^ñ§øËGRˆ´|+T_ùcƒTñ7˜ø+yÿ%fBŒæ[Šÿ/Êc ÇL^Ö¯ücïC¿ü篶)•®þŒnR×I÷7¤7ç³¹úÿÃð†9Ú\¯_ye¡ë7X¶zo'þ»ãÿåá͹g†·ð ÂÿÞœó¼þlx v;oÎùßVóv½¿³¢üwwÿ9v±•øß´ùgÇùR$èþoÚ÷¿t_Y¹îÿ¦yÿýgØû\²Óýß4ïé~¶•ëþo÷ßIª×÷«×xŠ¿v ˆÿM#ÿÚÝUÞÝ?¿gÿ��÷\Y"ÿmñÚÚË¿â_ÿþ²¦_ã|ðPo)ÿ”Ê¿zN ²çó¯ßã|éš¼ÿ’¾ßòÍÕñ ô¡h‚‡ô%\VŽð‘žõS²CøH_Âeå)þØáÍ9¿Oõ,.k‡ð‘žõS²CøH_ÂeåéY?%;„�ô%\VŽð‘žõS²CøH_ÂeåéY?~‚íÎýBú›‡·°pîñÞ2¼…O»û7Ò=Ž·ÛÐ=º>¤—ÿ cñ‹ôæ=<ÀQ‘c ÄN÷r?¾û} Iü÷‡Ï7âé=N·{„�ôÝúõÇ!|¤÷8Ýî>Òwëׇð‘Þã°û?Þøù}¯ý§ç‰ð‘>ÅkÛGøHßÖ_j�ð‘>ÅkÛGøHßÖ_j�ð‘>ÅkÛGøHßÖ_j�ð‘>ÅKûi¾§z„�ô)^Û>ÂGú¶þR{„�ô)^Û>ÂGú¶þR{„�ô)^Û>ÂGú¶þR{„�ô)^Û>ÂGú’?Ÿ÷~_²CøH_ÂeåéY?%;„�ô%\VŽð‘žõS²CøH_ÂeåéY?%;„�ô%\VŽð‘ÞûñyŽþž÷ö~�ð‘Þãt»GøHß­_ÂGz�Óíá#}·~ýqé=N·{„�ôÝúõÇ!|¤÷8Ýî>Òû¼÷û¶ç�𑾭¿Ôá#}Š×¶�𑾭¿Ô>ÅQ}¸Û?ü6ŸðÿÜßçWü‰É¿1ß6ñ_±Qg%f¨mÅŸ1 ü¥ëϺuøƒÝ‡§Ÿ~æ™§Ÿvî…á͹iÛs£†·rÄû7ÖîÞœÛzhÛfçvØaû¡Í¹‘#G�™ylJñ¯øWþ«þ½ÒõOþ��¸¾kþW±Qg%f¨m�ÿ4þiüÓø£ñ§>ÒhüÕøk Ô£¢sŽãÿ³÷.p[TÕþøFñ**((($x ´ôHÔ 5éX�'*øgÞQ+ÊK*•á%PC+­0ÍKÒGêx¼”WJÌK%&¥&…'ox/„úrÉ?ßgÿ–3³gïg­yÞ÷}€—ïþ|`fïµöwÍ|g­µç}öÌÞðþƒ÷¼ÿàýï?Š# ï?ü8Yd%?v¶Å>Ç_Ž¿�Œ¿ïL ·…Æ1š“â¶ÑJûž›öM@ä?Åý�þêÇŸ,í"oœÿ³VœÛ¿VœÛ¢VR>Vn—7ÖçÖŠs;ÕŠs;Ö &ÒQÊýÚ¾…þï9­ýÛžwA$ÿä Ðÿ$"š»eüy¾éÍõ;±Fÿ£ÿ�ÆŸDDs·Œ?Ï7ý¯¹~'Öèô?0Àø“ˆhî–ñçù¦ÿ5×ïÄý�þÍÝ2þ<ßÓÿš0…R$NžôhžÓ~žkòÉsÒ¾ûô¿<¿ô¿¢ÿ ËjŹ¥µâÜûj¥úĹp-îûÖJömt™˜»¢ß~[úžÛæñ.VÉ¿0�-ùyFÚ{Ÿþ—g˜þGÿcüå#¢½÷™ò 3ÿ0ÿ0ÿä#¢½÷™ò 3ÿ0ÿ0ÿä#¢½÷™ò 3ÿ0ÿ0ÿä#¢½÷™ò 3ÿt¬ü™@·¥—Fi(/Q’w/ìÓ~ÈH¬Nþm~rGÿ —È ²ñJÿ³ñ²úŸLœ¿\+ÎÉ·Ì·©•°wõºà®|]ì–mçÅëoã)ä7¼þ¡œãŸ�WúŸ�§Ð¿èÿŠÒ†bó+ÆŸ�§�]Æã�ñFE¾n‹+æOyf±ÏüÃüÃüFE¾n‹+æOyf±ÏüÃüÃüFE¾n‹+æOyf±ÏüÃüÃüFE¾n‹+æÏSd=î^ ,O­†ùKRmŸöc|‘úã/‹Œ�=ÿÈ·Íeâ|P­8×µV²ól«=ÁX+ΉÝåË_}ùò¼æß<²ÏüËüËü+ÑàÿÍjm¹Çüc“ù‡ù‡ù'‹Œ�ýþ/;“p�ù/duæ?æ?æ¿,2˜ÿây2c¨Ñ½8.óóóOSÌ?ñ<‘1Ôè^—ù‡ù‡ù'‹)æŸxžÈjt/ŽËüÏ?ïL Åeòá°qj˺h �ke­´ŸO�/²GþéŒ?‰}»¡æŸåµâÜ’Zqn¯ZɾM®ŸYë4äèbwñâ%K/vNŽ+…ÎüÃüÃü“ŠŽrû†šÊGê[xÿÅû¯”o �ùŸùŸù¿^„eÌÿÚˆRæ«ØR¬1ÿ0ÿ0ÿc¢^�ù‡ù§þmÑ{4¶˜™™‹1S¯Æü«e”"{š6óóóO1fêÕ˜´ŒRdOÓNåŸN¯ÔJ•[­¢aÖÈ d >oÔŠs‹jʾµâ\¯Z©ß·=¥r<Ï׊s»¬+={:·Ýº²í¶íi™Ød€ �2@È d€ �2@È d€ �2@ÈØ0xç ôÔáU}’!…¶[q­z!¾V·âZõ4{¡ÜŠkÕ ñµºת§Ù åV\«^ˆ¯Õ­¸V=Í^(·âZõB|­nŵêiöB¹תâku+®U/eoe­dç}jeýOœËñÊ~ïZqnñº²h‘srÜ­=±n­¸V½_«[q­zš½PnÅµê…øZÝŠkÕÓì…r+®U/Ä×êV\«žf/”[q­z!¾V·âZõ4{¡ÜŠkÕ ñµºת§Ù åV\«^ˆ¯Õ­¸V=Í^(·âZõB|­nŵêiöB¹תâku+®UO³Ê­¸V½_«[q­zš½PnÅµê…øZÝŠkÕÓì…r+®U/Ä×êV\«žf/”[q­z!¾V·âZõ4{¡ÜŠkÕ ñµºת§Ù åV\«^ˆ¯Õ­¸V=Í^(·âZõB|­nŵêiöB¹תâku+®UO³Ê­¸V½_«[q­zš½PnÅµê…øZÝŠkÕÓì…r+®U/Ä×êV\«žf/”[q­z!¾V·âZõ4{¡ÜŠkÕ ñµºת§Ù åV\«^ˆ¯Õ­¸V=Í^(·âZõB|­nŵêiöB¹תâku+®UO³Ê­¸V½_«[q5½6{] ¥^u×N¨µrÚÕ—Úl-ïÒŸü“ú_oÖJ6q¾s­dožKÜlhÛgkÅ9¿2I6Ñ¿M­¤�–ñÏøgügñŸŽ”ö‘0þŒ?Æÿþª¶Ôa[ecæ_æ_æ_æ_æ_æß*KÍrüi8þrüåøËñ—ã/Ç_Ž¿m3¦VAÙTÇ_õ t+‰©Äå‡u+Jãz´Oœä·Uí_èô? Ü-µ’M@w«• â\"¤_­8·C­dç!ç%zá–þOÿ�ݸrüáøæŠö¨3ÿ0ÿ0ÿ”#‹ù—ù·ìmßÂüËüËü[Ž+æ_æß²W´} ó/ó/óo9®˜™Ë^Ñö-̿̿̿å¸êèù×0�Þº«2ÑéÚOs£KÈ,­é¼eô¿Œ‹ê{›Šÿ­©ç^«ç6¯çöª•ê¼­ïjŹÍj%;/9Oëñm*×?ÅÏŸù7å¶vŽ?6žâZŒ?Æ_Ü3¬­Œ?+S1=Æã/æö6ÆŸ�«²&ã�ñWöŠ*-Œ¿*l…ºŒ?Æ_èÕꌿj|µŒ¿¢GT­1þª2–×gü1þòþP}ÃŽ¿Íð„@ýCŒ;€ÞÏF•ŽCû1&uÞb½Êm:ù/³æœÎ[¬W¹MÇ!ÿeÖ6<þ—׊s2Á¼O­ÄŽ|ãj{o­dç%ç©û­íþöµ™@·ÑÛèeÐsã¶ÿJ­d—±æ¯u6%ÛS¼¥ÚåBi—mJ¶§ì¤Ú5|MNû`@XJ߈�0�ñî…~d•‡ýR<§ÚC;µ®�ÈcÈCJ¶§ì¤ÚÅNˆ#í²MÉÃö”�T»†¯Éi KÌ)?Kµ s¡I»lSò°=e'Õ®ákrÚÂý?åg©va.ô#i—mJ¶§ì¤Ú5|MNû`@X¢ÿ§ü,Õ.Ì…~$í²MÉÃö”�T»†¯Éi Kôÿ”Ÿ¥Ú…¹Ð�¤]¶)yØž²“j×ð59íƒa‰þŸò³T»0ú‘´Ë6%ÛSvRí¾&§}0 ,ÑÿS~–jæB?’vÙ¦äa{ÊNª]Ã×ä´„%úÊÏRíÂ\èGÒ.Û”_ÆGŸzþÃñ'ä/_çøÃñgSzÔJ*‹ø<’–â�ï/õtò²T^Ïëä÷ËÙ*/Ýpí¿3�^�žâÉÅjU ï(öw¯çv©ç:×J™!ÍÁBþÂzˆ˜’§Úi¿~Ȇ¼…uò_d ÅOª½£ù_‘�M¯–ºÎ©öŽvýSç™jçù3ÿæÿ  3Fè7a]Óyªý�þGÿ“()oø ëa�”<ÕÎøcü1þÂ(ÊêaÜ„õLÓï¥ä©vÆã�ñFQVã&¬gšŒ?0�â'ÕÎüÃüÃüf‘¬ÆMXÏ4ý^Jžjgü1þaeõ0nÂz¦Éø)~Ríí�dÞ±g­8×»V«–ÕqœY­õ{©óN!o¬ö;§NHÚåBW%Dú§¶V\«^ÊNªÝŠkÕ;ÂÓµâœlE.[+®UOp­[+®UÏjWô¬¸V=Áµn­¸V=«]ѳâZõ׺µâZõ¬vEÏŠkÕ\ëÖŠ›Òk©綯«ÕŽ£÷žZqîßjŹ-kÅ~~)^C«^ØO«[q­zš½PnÅµê…øZÝŠkÕÓì…r+®U/Ä×êV\«žf/”[q­z!¾V·âZõ4{¡ÜŠkÕ ñµºת§Ù åV\«^ˆ¯Õ­¸V=Í^(·âZõB|­nŵêiöB¹תâku+®UO³Ê­¸V½_«[q­zš½PnÅµê…øZÝŠkÕÓì…r+®U/Ä×êV\«žf/”[q­z!¾V·âZõ4{¡ÜŠkÕ ñµºת§Ù åV\«^ˆ¯Õ­¸V=Í^(·âZõB|­nŵêiöB¹תâku+®UO³Ê­¸V½_«[q­zš½PnÅµê…øZÝŠkÕÓì…r+®U/Ä×êV\«žf/”[q­z!¾V·âZõ4{¡ÜŠkÕ ñµºת§Ù åV\«^ˆ¯Õ­¸V=Í^(·âZõB|­nŵêiöB¹תâku+®UO³Ê­¸V½_«[q5½wÞ@O” á”\ÚÅ�Ôµ­תGû`@c=“[yµê‘ò¿)ùŸÄEU¿Ï"pãÞ Ï¿*Ò_cÁªGûÌ?›Rþ ã†þOÿ§ÿ‡Q‘®[Ç«ã�ñÇøKÇ[(±Æ•U�ñÇøcü…Q–®[ãÊªÇøcü1þÒñJ¬qeÕcü1þa”¥ëÖ¸²ê1þŒ¿t¼…k\YõÖWü©èቧê©­V)t½�öÁ@™'ò_%­•ù³¶Ðÿ6-ÿ«š°­~´±è…çOÿß´ü?ôS^^Þ„Q¡[ªÜ£±Æã�ñWŽþýÿÊ^Ñö-̿̿̿å¸bþeþ-{EÛ·0ÿ2ÿ2ÿ–ãŠù—ù·ìmßÂüËü»)æ_ÃzëPÜ­ª0íWa+Ô%ÿ±°YªW§ÿÕcG“uTÿÃyÁ³d«ñÐÑärÞ²M�ä)™­�ñgã)®Eþéqϰ¶2þ¬LÅôŒ¿˜_ØÛv®ÊšŒ?Æ_Ù+ª´0þª°ê2þ¡OT«3þªñUÔfü1þŠQµÆø«ÊX^ŸñÇøËûCõ}Æ_uβŒ?Æ_æ �ìÕ�¿ÍÂ7 Ë&â@ïWFеè8´ßo±^å6òʼd-ô¿Œ‹lO÷›L·ÞžŽ³aò¿Y­8×¹Vœ[U+õδcÈV׊s›×ŠsÂC£g·±^ý¸mŒè8¦ÿëÇÍó·0 óÈëãQç-֫ܦã�ÿ2kþÍúú÷M±^å6òʼd-ô¿Œ‹lO÷›L·ÞžŽCþcüé¼Åz•Ûtò_f�ùW÷›kå6‡þWf�þ§ûMŒµr›ŽCÿ+³FÿÓý&ÆZ¹MÇ¡ÿ•Y£ÿé~c­Ü¦ãÐÿʬÑÿt¿‰±VnÓqèeÖèâ7›á �˜‹ˆBŒ<´¥ú�ÚTŸX{ ‡öÁ@Œ1ß–â�ü×c­ÌgŠGúý¯ž'Ér—ZqnQ­”ý«£µü_­8'ç :wΟe=Öòz~Ÿñʼ0ÿ0ÿÔ‹¤TÜpü¯ÇZ9ÎR<2þõ<)å7Œ¿z¬1þBR~ÄüÃüS/’R~ÃüS�µ0úÒ¿c1þõ<‰ñÊñÄüSÏkÊ|¥üˆù‡ù§ž'¥ü†ñW�5Æ_È@Ê�˜˜êERÊo6µü“\Â=MP‚a=u[Uß!Ë(8‚°ÕR�÷ÒBˆÌó'ÿqO =%¬Ç{Ñÿ:VüK~�‰ägk¥ã¾‰.oØËyv­ÿT1èÿE>|�ñß±â?v�}ý?Æ ýŸþ_ï²Ðgd| Ûõ:ã/Æã�ñÇø‹EF¼�ù‡ÿÇG’¸¿d­ñ^̿̿̿Y”h{̿̿ñLª{NLƒù—ù—ù7ñ6æ_æ_æßxlä[;½R+URK¾;÷É ›.²¤ùKµâÜkµâÜ»jŹÝkŹ-keãáI&Ì_¨çþQ+Îu¯çzÕÊÆw^Ïà‘’2@È d€ �2@È d€ �2@È ë‹�Êèò$Wê MÞÚÕð59í·Ž�_MÞ:ëX E_z-埴ß:ÈÑÿ„�7kŹWkŹÖŠs+jÅ9™hýF¯‚ôOù·&×ì îµâܶµâ\·Zqn§ZÉ–p}Ám­}ÁIm5|MžÂµ¶køšÜj'¥§ákò®µ]Ã×äV;)= _“§p­í¾&·ÚIéiøš<…km×ð5¹ÕNJOÃ×ä)\k»†¯É­vRz¾&OáZÛ5|Mnµ“ÒÓð5y ×Ú®ákr«�”ž†¯ÉS¸Öv _“[í¤ô4|MžÂµ¶køšÜj'¥§ákò®µ]Ã×äV;)= _“§p­í¾&·ÚIéiøš<…km×ð5¹ÕNJOÃ×ä)\k»†¯É­vRz¾&OáZÛ5|Mnµ“ÒÓð5y ×Ú®ákr«�”ž†¯ÉS¸Öv _“[í¤ô4|MžÂµ¶køšÜj'¥§ákò®µ]Ã×äV;)= _“§p­í¾&·ÚIéiøš<…km×ð5¹ÕNJOÃ×ä)\k»†¯É­vRz¾&OáZÛ5|Mnµ“ÒÓð5y ×Ú®ákr«�”ž†¯ÉS¸Öv _“[í¤ô4|MžÂµ¶‡øïL ‡‚ PÞNoì…þ §þíƒ�ØÄ0ù÷žCÿ«A­“2þZkk%[½¥Vœ“íšZÉI]-™�–ë!zð~üC6È牲ÊvR¸‚/[Ñë\+Ùæ[×JV—oÀK¿Önå<Ä~†Çüç¹`þË|¢í÷è`€÷Ì?` _̿̿` èyi‹}æ_æ_Ž?9þrü-Ž4¼ÿðãk‘•¶só9þrüåøËñ—ãoq¤áøËñ ½"ïÐûëýÇ;èmAB£9·�VÚ÷Ü´o�ÿô¿MÉÿd � s™XïyXGtâ¼ÿÂYé'ía½ŒçoSze}"}žØ¬Vœ“­L¨‹}é¯oéÿž#æ_ÝWÚCƒþGÿŒ¿öˆ.“ñç9¢ÿé¾Òô?ú`üµGt阌?ÏýO÷•öРÿÑÿÀã¯=¢KÇdüyŽèº¯´‡ý�þí]:fÇŽ¿&L )Ö&tŠÚm_£}0€tâ'ØÚžáúˆäŸüÓÿÌ?Ì¿ëã––ãÇŽ?8þpüáøSÿoµö�rüåøËñ—ã/Ç_Ž¿Ûc„­�Éñ—ã/Ç_Ž¿9þrü­?VZ¤›••�^õâ‡!]/ÔЗöCÎbuòoó“�;úŸ6pØx¥ÿÙx¢ÿ`ü1þê߸ÙâŠùÇÆS1ú,8ÚpÉ¿�'ò_d€ùŸùŸù¿Åš-¯0ÿÚx*rËñ�ù—ù—ù7Ì ùº-¯0ÿÚxÊ3‹}æææŸ0*òu[\1ÿØxÊ3‹}æææŸ0*òu[\1ÿxž"èq÷ayjµ0Ì_’jû´ã‹üÓÿYd0ÿÄódÆP£{q\æææŸ,¦˜ây"c¨Ñ½8.óóóOSÌ?ñ<‘1Ôè^—ù‡ù‡ù'‹)æŸxžÈjt/ŽËüÃüÃü“ÅóO®•µÒ~Þ=2^d�üÓÿ ú–ùG˨E5mæææŸbÌÔ«1ÿh¥Èž¦ÍüÃüÃüSŒ™z5æ-£ÙÓ´™˜˜Š1S¯Æü£e”"{š6óóóO1fêÕ˜´ŒRdOÓfþaþaþ)ÆL½ó�–QŠìiÚÌ?Ì?bþiú7Ћaà d€ �2@È d€ �2@È d€ �2@È d€ �� ƒ�wÞ@ONÕ'iR8a»תâku+®UO³Ê­¸V½_«[q­zš½PnÅµê…øZÝŠkÕÓì…r+®U/Ä×êV\«žf/”[q­z!¾V·âZõ4{¡ÜŠkÕ ñµºת§Ù åV\«^ˆ¯Õ­¸V=Í^(·âZõB|­nŵêiöB¹תâku+®UO³Ê­¸V½_«[q­zš½PnÅµê…øZÝŠkÕÓì…r+®U/Ä×êV\«žf/”[q­z!¾V·âZõ4{¡ÜŠkÕ ñµºת§Ù åV\«^ˆ¯Õ­¸V=Í^(·âZõB|­nŵêiöB¹תâku+®UO³Ê­¸V½_«[q­zš½PnÅµê…øZÝŠkÕÓì…r+®U/Ä×êV\«žf/”[q­z!¾V·âZõ4{¡ÜŠkÕ ñµºת§Ù åV\«^ˆ¯Õ­¸V=Í^(·âZõB|­nŵêiöB¹תâku+®UO³Ê­¸V½_«[q­zš½PnÅµê…øZÝŠkÕÓì…r+®U/Ä×êV\«žf/”[q­z!¾V·âZõ4{¡ÜŠkÕ ñµºת§Ù åV\«^ˆ¯Õ­¸š^›½�.†ª.µ �¨UNû`À9ò_m© «izô?úã�ù‡ù—ù·ÊRCÚ¸b•süáøÃñ‡ãÇŽ?¬£fÛéqüåøËñ—ã/Ç_Ž¿Ûn\µ"qüåøËñ—ã/Ç_Ž¿ÍÛl=5Ðù´î;¥Óží´�a…ü¯Ÿ´âý�þÇøcþaþiæmMvGÁüËüËüËüËüËü›� ÍÛãøÃñ‡ãÇŽ?š7êd–8þpüáøÃñ‡ãÇŸlThÞÇŽ?yü1L {ÀÔ¼°Ë[¢}ÏùÏ{Eóöéô?0Àøk^Ìå-1þ<ô¿¼W4oŸþGÿŒ¿æÅ\ÞãϳAÿË{Eóöéô?0Àøk^Ìå-1þ<ô¿¼W4oŸþGÿŒ¿æÅ\ÞãϳAÿË{Eóöéô?0Àøk^Ìå-mØñ·ž‘CÌv¶w½_†PoOÇ¡ý:o±^å6‡ü—Yóo–×�›X¯rùe^²ú_ÆE¶§ûM¦[oOÇ!ÿ1þtÞb½Êm:ù/³Æü«ûMŒµr›ŽCÿ+³FÿÓý&ÆZ¹MÇ¡ÿ•Y£ÿé~c­Ü¦ãÐÿʬÑÿt¿‰±VnÓqèeÖèºßÄX+·é8ô¿2kô?Ýob¬•Ûtú_™5úŸî71ÖÊm:ý¯ÌýO÷›kå6‡þWf�þ§ûMŒµr›ŽCÿ+³–ù_ò t!KÄ)ŒÁ¢M¦Ãªõ Ñh à¹ò_Í“è>–ª±Æø+2ÀüÃüÃüËñ‡ã/ï?ª�¤¼ÿàý¨æ5Å»�Üh¼ÿ_Ç@ÈN½:ãϳS�µ�QÞÿòþ—÷¿¼ÿåý/ï«�$9þ‚�j^Ãû�"¼ÿâýï¿xÿÅû¯ ûþ+9�^Lç­¯5> ´Þ6h¿Ñ‰ü·ô?ú_c7Dmá}ÌŒ?Æ㯑?H˜Ú‚ææææŸê?ˆ´Eöáýó/ó/ó/ó/óoÕ¤9þ´8þpüáøÃñ‡ãOë-jl4âøÓ>ãOÓ&лììEÈ d€ �2@È d€ �2@È d€ �2@È d 9 lVÕŒ<É�ê§ÉSý¬í¾&·ÚIéiøš<…km×ð5¹ÕNJOÃ×ä)\k»†¯É­vRz¾&OáZÛ5|Mnµ“ÒÓð5y ×Ú®ákr«�”ž†¯ÉS¸Öv _“[í¤ô4|MžÂµ¶køšÜj'¥§ákò®µ]Ã×äV;)= _“§p­í¾&·ÚIéiøš<…km×ð5¹ÕNJOÃ×ä)\k»†¯É­vRz¾&OáZÛ5|Mnµ“ÒÓð5y ×Ú®ákr«�”ž†¯ÉS¸Öv _“[í¤ô4|MžÂµ¶køšÜj'¥§ákò®µ]Ã×äV;)= _“§p­í¾&·ÚIéiøš<…km×ð5¹ÕNJOÃ×ä)\k»†¯É­vRz¾&OáZÛ5|Mnµ“ÒÓð5y ×Ú®ákr«�”ž†¯ÉS¸Öv _“[í¤ô4|MžÂµ¶køšÜj'¥§ákò®µ]Ã×äV;)= _“§p­í¾&·ÚIéiøš<…km×ð5¹ÕNJOÃ×ä)\k»†¯É­vRz¾&OáZÛ5|Mnµ“ÒÓð5y ×Ú®ákr«�”ž†¯ÉS¸Öv _“[í¤ô4|MžÂµ¶køšÜj'¥â¿óºÊKL`á”ö]x€öÁ@l‰òOÿcü1ÿ0ÿú<Ð>ÿsüáøÃñ—÷¼ÿ —Xãý'ï?yÿÉûOÞ¶Ï�§Gåý'ï?yÿÉûOÞòþ³8Òòþ›÷ß¼ÿæýw1+´õ½(ï?yÿÉûÏê÷ŸïL ·u@fx͹Èì…{´ïiß²žÕÉ?ùô¿,&š¹ÇøólÓÿšéu™-úý 0þ²˜hæãϳMÿk¦×e¶èô?0ÀøËb¢™{Œ?Ï6ý¯™^—Ù¢ÿÑÿÀã/‹‰fî1þ<Ûô¿fz]f‹þGÿŒ¿,&š¹Çøól·�ÿU^½ú¥/¸<éR§Ñ´ŸgŽüû'�òœ´ï>ý/Ï/ý�þ'CzÞ/ÚoŸñ—ç–ñÇøcüå#¢½÷™ò 3ÿ0ÿ0ÿä#¢½÷™ò 3ÿ0ÿ0ÿä#¢½÷™ò 3ÿ0ÿ0ÿä#¢½÷™ò 3ÿ0ÿ0ÿä#¢½÷™ò w´ü™@·…W£i¨¼DQž^ìÓ~ÈH¬Nþm~rGÿ —È ²ñJÿ³ñ²Kÿ£ÿo©B±ùãÏÆSÈ.ã�ñÇø £"_·Åó��§<³Øgþaþaþ £"_·Åó��§<³Øgþaþaþ £"_·Åó��§<³Øgþaþaþ £"_·Åó��§<³Øgþaþaþ £"_·Åó�ç)2�w/–§V Ãü%©¶Oû1¾È?ý�ñ—EóOý�þÍ‹¹¼%ÆŸgƒþ—÷ŠæíÓÿè`€ñ×¼˜Ë[büy6èy¯hÞ>ý�þÍ‹¹¼%ÆŸgƒþ—÷ŠæíÓÿè`€ñ×¼˜Ë[büy6èy¯hÞ>ý�þÍ‹¹¼¥ ;þ6Ã"rˆùÃÎö㎣÷Ëêíé8´ãOç-֫ܦã�ÿ2kþÍòúqëUn#ÿ` ÌKÖBÿ˸Èöt¿Étëíé8ä?ÆŸÎ[¬W¹MÇ!ÿeÖ˜u¿‰±VnÓqèeÖèºßÄX+·é8ô¿2kô?Ýob¬•Ûtú_™5úŸî71ÖÊm:ý¯ÌýO÷›kå6‡þWf�þ§ûMŒµr›ŽCÿ+³FÿÓý&ÆZ¹MÇ¡ÿ•Y£ÿé~c­Ü¦ãÐÿʬÑÿt¿‰±VnÓqèeÖ2ÿK¾�.Äbé�8…1X´ÉtXµ^!íƒ<÷Bþ«yýÏÇR5ÖE˜˜˜9þpüåýGµ‘”÷¼ÿÕ¼¦x÷‘û�÷ÿëÙ©Wgüyvª±2Êû_Þÿòþ—÷¿¼ÿåýoµ‘„ã/Ç_0PÍkxÿQd€÷_¼ÿâýï¿xÿµaß%'Ћé¼õµÆ„ÖÛí7: ‘ÿ¶`€þGÿk솨-¼�ù�ñÇøcü5ò óO[0ÀüÃüÃüÃüSý‘¶È>¼ÿcþeþeþeþeþ­úƒ4ÇŸ¶`€ãÇŽ?8þpüiÝ£E��FÚgüiÚzc—�½È d€ �2@È d€ �2@È d€ �2@È d€ 4‡�ͪš‘'Rý4yªŸµ]Ã×äV;)= _“§p­í¾&·ÚIéiøš<…km×ð5¹ÕNJOÃ×ä)\k»†¯É­vRz¾&OáZÛ5|Mnµ“ÒÓð5y ×Ú®ákr«�”ž†¯ÉS¸Öv _“[í¤ô4|MžÂµ¶køšÜj'¥§ákò®µ]Ã×äV;)= _“§p­í¾&·ÚIéiøš<…km×ð5¹ÕNJOÃ×ä)\k»†¯É­vRz¾&OáZÛ5|Mnµ“ÒÓð5y ×Ú®ákr«�”ž†¯ÉS¸Öv _“[í¤ô4|MžÂµ¶køšÜj'¥§ákò®µ]Ã×äV;)= _“§p­í¾&·ÚIéiøš<…km×ð5¹ÕNJOÃ×ä)\k»†¯É­vRz¾&OáZÛ5|Mnµ“ÒÓð5y ×Ú®ákr«�”ž†¯ÉS¸Öv _“[í¤ô4|MžÂµ¶køšÜj'¥§ákò®µ]Ã×äV;)= _“§p­í¾&·ÚIéiøš<…km×ð5¹ÕNJOÃ×ä)\k»†¯É­vRz¾&OáZÛ5|Mnµ“ÒÓð5y ×Ú®ákr«�”ž†¯ÉS¸Öv _“[í¤ôBüwÞ@Ay‰ ,<‚Ò¾ Ð>ˆ-qBþéŒ?ææ_ŸÚçŽ?8þòþƒ÷¿ák¼ÿäý'ï?yÿÉûÏö¹óô¨¼ÿäý'ï?yÿÉûOÞGZÞóþ›÷ß¼ÿ.f…¶¾åý'ï?yÿYýþó� ô¶È ¯97™½p�ö=#훀CÖ³:ù'ÿ`€þ—ÅD3÷žmú_3½.³Eÿ£ÿ�Æ_ÍÜcüy¶éÍôºÌý�þYL4s�ñçÙ¦ÿ5Óë2[ô?ú`üe1ÑÌ=ÆŸg›þ×L¯ËlÑÿè`€ñ—ÅD3÷žíöñ¿ÊK¸W¿ôÅ—']ªã4ÚƒöóÌ‘ÿ¤Qž“öݧÿåù¥ÿÑÿdHÏûEûí3þòÜ2þŒ¿|D´÷>óOžaæææŸ|D´÷>óOžaæææŸ|D´÷>óOžaæææŸ|D´÷>óOžaæææŸ|D´÷>óOžáŽ–"è¶ðj4 •—(ÊÓ‹}Ú‰ÕÉ¿ÍOBîèáY!C6^é6žBvéô¿â-Uè!6¿büÙx Ùeü1þaTä붸bþ±ñ”gûÌ?Ì?Ì?aTä붸bþ±ñ”gûÌ?Ì?Ì?aTä붸bþ±ñ”gûÌ?Ì?Ì?aTä붸bþ±ñ”gûÌ?Ì?Ì?aTä붸bþñ<™—paè¢' üÅh»}Ú'ÿô?Æó�vÔv97�Äü»aä߇j%ed_n|Š·‡éë×4ÙJ©§ã/Ž'ýËýâúbG¶Ò_êe‘Äñ¤¹_\_Ðd+ý¥^ÆIOú—ûÅõM¶Ò_êe‘Äñ¤¹_\_Ðd+ý¥^ÆIOú—ûÅõM¶Ò_êe‘Äñ¤¹_\_Ðd+ý¥^ÆIOú—ûÅõM¶Ò_êe‘Äñ¤¹_\_Ðd+ý¥^ÆIOú—ûÅõM¶Ò_êe‘Äñ¤¹_\_Ðd+ý¥^ÆIOú—ûÅõM¶Ò_êe‘Äñ¤¹_\_Ðd+ý¥^ÆIOú—ûÅõM¶Ò_êe‘Äñ¤¹_\_Ðd+ý¥^ÆIOú—ûÅõM¶Ò_êe‘Äñ¤¹_\_Ðd+ý¥^ÆIOú—ûÅõM¶Ò_êe‘Äñ¤¹_\_Ðd+ý¥^ÆIOú—ûÅõM¶Ò_êe‘Äñ¤¹_\_Ðd+ý¥^ÆIOú—ûÅõM¶Ò_êe‘Äñ¤¹_\_Ðd+ý¥^ÆIOú—ûyýø?þãÃŒô6�“îÓ–Úüý¥ìÇméei,úý�ñÇüÃüÒy²½$̿̿̿åüÛYλ‡W�¶ü¶jâªp´ïÿ J¥GòŸb&ï¥Ù>ýÏG”ÕoŒ?DO*ʬ~$ÈøkŸø^?R+Âvy+zU¯[©±Ú¯výc9Ý‹ü“þÁSþƒ'1m+aü1þŒ?Þ¥þ¢hÛ|¢mèù÷þZÉŽÚgKþý•ò–ªqTõú“þþ�h¤ÿŧç)ÏÈrx~�ùÇgT«ß0ÿ2ÿ2ÿrüIeYk‘ܬüûÎzêÀ倪n«ž0íÇo\ªò.ú俚GUÓ–Ó[ò_�ÑjÚiÞEBþ«1ZM[XNoÉ5F­Ú!¯Ýj%}(!d€ �2@È d`ý1°¬VÊö­÷ÿåžñ–ðVÖJûüý-ó†ÖïÑÿªET5mýú�ÿjŒVÓ&ÿô¿jUM[c¿úƒ«´Ïñ_÷*»Æ¦ÿ‘o I’™übkëkV\«^Õ#²âZõh¿V^­zÕ¬;gŵêÑ~5¬¼ZõªYçõ·òjÕ#ÿÕ°òê…õjV©MÈ d€ �2@ÈÀú`ÀzoÕ«zV\«íWcÀÊ«U¯šuþþaåÕªGâ=s›@IDATþ«1`åÕªWÍ:ýßÊ«U�üWcÀÊ«U¯šuú¿•W«ù¯Æ€•W«^5ëmçÿêºõI‚ª'jŵêÑ>°»‘•W«ù'ÿô?ÆŸ•k^±êm*ùÇʇõ:P� �2@È d€ ��ögÀzoÕÛTþþI]ž?âïO©è(·[óŠU�ñÇøcü•ã,Õb�+«ã�ñÇøKE[¹ÝWšÞ;K¸—MTkI·†¼b5mÚ�3Lþ}Z‰³SÍÇêiÓÿâ Óÿ舛¸wÔ‹¨j²M%þOUn”ž©•j\R› �2@6=ú×ʦwÞ d€ �2@È üû§5W£õ-‘òß8ô¿ÖþZÁøkÜûÚbâŒü“ÿÆ`þcþkÜ{ÐsÃÎ?›á �ú‡w½Ÿ�6‡öcLê¼Åz•Ûtò_fÍþ …Xß|ùyFÂ}ú_ÈêºßÄz•Ûtò_f­ãð;7¶‘2@È d€ �2ж Èß]²M£óï¯7:o±^å6‡ü—Yë8ÿòúƒ�Ø–6ú¿0‘ßê~“×Nïë8ä?ÆžÎ[¬W¹MÇ!ÿeÖ˜ÿu¿‰±VnÓqèeÖ6ÿÛ OˆÄ.‘vaSýpj±Nµ¥ph ¤XóO–Å®ù¯ÇZ™Oú(óÂøcüÕ‹¤TÜ0ÿÔc­g)�¿² ¶�2@È d€ �2°~�û~Ù†GÓøýÿúþûƒöÃkY¯ÎëÊ ÑÿùûS½L’ŠþþT�µrœ¥xdü1þêyRÊoõXcü… ¤ühcÉ?É%ÜS'P®Çn‡VõRˆCû` dÅR�÷"ÿô¿*©�ñÇø‹g-Å{1ÿ4+ÿ¤®O•èOa´¦�ö[Ã^ëû’ÿÖsØòßöZß—ü·žC"�2@È@{3À¿¿ù÷wü/iÍóâ½ø÷w³þþ&ÿ1¥ÿÑÿªüÆñ�ã_<“ƲK¾-Þ‹ù‡ù§=òOr=ï’m±ßxBl ëõÞØn| …çß耠1k““òZmþÓZ-úýo}úFÀÖúpëúÓ~ëøkmoòßZ[ןü·Ž¿Öö&ÿ­e�ýÉ d õ TýA·µù÷'ÿþ\Ÿw@ô?úý¯µY¼ñþŒ?Æã¯ñøimOÆ_ÇŒ¿ÎUCnüS¡É«Ú õ5|MâU­køš¼ª½P_Ã×ä!^Õº†¯É«Ú õÓøk×.ZäÜí·_ý-·8÷ «Vµ´8׫׌ãÜG¼ÿý½z…hÕëiûK“W·Xì¡ákò"Zõš†¯É«[,öÐð5y-]{ùåÇ¿ývç~ö³ßþö… ·ÕV»ïîÜç>7nÜá‡;·ë®�;ÇnHÚÊ~êÈ4|MžÂµ¶køšÜj'¥§ákò®µ]Ã×äV;)=ÁOÉÛ¿]žã‹yû[Ï–ˆ¢ýf°]¶Áëï9¡ÿ•}£-ô¿õë͸ƴAÈè¸ ¤~?ÓÎXîÿSý5¹†¯É5|M®ákr _“køš\Ã×ä¾&×ð5¹†¯É5|M®ákr _“køš\Ã×ä¾&×ð5¹†¯É5|M®ákr _“køš\Ã×ä¾&×ð5¹†¯É5|M®ákr _“køš\Ã×ä¾&×ð5¹†¯É5|M®ákr _“køš\Ã×ä¾&×ð5¹†¯É5|M®ákr _“køš<Äg=d@ŬR7ÉE/Üvû˜°ýýﯼòœsœ;õÔ|ã çîÖ-®©ó\V+Îu[Wz÷vn¯½†=ð@ç9ä#ùð‡�ÛgŸ>}vÜ1ö&}µë“?–ü~ê¸Â íújò¼Íü~ëí·´,[æÜ\sÍOêÜý÷üï´Óˆù ô"_r )ûÅó]íü4¹Ø ·)ûÿþŒ:Êù¿öÚßþ6gŽs3ÖlQF<}ô'>á'Ð}kÑŸôó/ê{ŒìåþEý²\üV“µ³ýÏGz™¿ ‹ÿ슭¯½õ5q(çKûÂÄúÙ’ÿõûX%ÿÂÄúÙnêü¯Öi• �2ÐQ�ßä|ø÷ׯñ÷WùïC¹‚~«É‹ÚY�ן׿4”ýgÃúý¡||™cO“µ³ýŸþOÿ�Åãßg ÿw·–_4y–qŠ{Ì?Ì?�äŸw&ÐÓŽ×ÚŒŠ  è¶Y­#Ø_»Ö¹ÿû¿üãþûq^ àÿ¹sñµ‚žs×à̘1u*z0jÔ„ ÎMžüÕ¯q„sýúuéâQµë³©ð¿ùæàc›m|"ðÜ8×µ«ìÉ6ÎWÊÿÐ.=Ûn*ü§ØÙ8Ï¿sç-¶�“3ƒ/m±…Ôd[ß?Ês\?帥K�m7þÿõ¯W^A®¼d]ùÅ/œ[ºtÅ ððÁg­+Î}ìc}û†×ÃÆÇÆqþÖëŸÖ³±±¾µð˜ÓâÅÎ-\¸hÑ?ÿéÜêÕ�ÿß=Èš5ØÛa‡^½ðYϞݺm½u{íš5+V8·dÉK/á8–.}óÍÕ«3;[o½í¶=z8×§OïÞÝ»;çG•LÞQ÷À øxî¹_ÄuY³&;S\—m·ÝaðÒ»7®L&k»=ÿÜÂ…/¾øÊ+νñ<è«×çäºô^Wp]ÄkÚÎ~u$p´dÉóëŠs/¿ìýH|¶S§m¶Ùn;çºwße—ÝvÑ"©n§côhiyí5çžyæÙgÿïÿ¼ùkè£oë­wÞ+õíÛ~þõÌ3ÎÝpÃ�~4c†s/¾ØÒ?>ü˜cN8Á¹¡C{÷®…²¼�•Ž�7ò1²!úgÇðž d c1 w7rVéûúMãï?žè™gÈ^cÛŽõ÷ouxþž³úy„ñÇø‹{H¼Õ‡Œ?ƨïGÌ?Ì?q‰·n(ùçÿýxm?œêšEÊJÕ«õh®ý-·,Ú“ÄpØaŸûÜQGab`Ë-ýñ¯Zå·[m…mKËë¯ãìG½å–;ïÄ�> „¯ fΜ2Ź1cfμ÷^L4Ý|ó÷¿ïÜ�öéãÚ¹�Ÿ¶ÅÊ0�?~ÛmW_íÜÙgŸvÚe—97~h1¬4j”sßÿþ¹çžvšsŸúÔ`b¿õEF©¢_¤pŸ{N®ÇäÉÓ§cbyÇѳÑë‘]ÿµk_}Õ¹;ï¼òÊ /tnüøË.›5+uùv\ðrÆ'Ÿ ^öÛ¯ /™ý•+Ÿ{ιÛn»îºþÐ9\›}ç=Ô¹I“®½öÔS�ûìg‡ 8°ÊƒÕøÏŸ9ö_{íÉ'qvÁg�5~¼s³féž„~cÇžz*…<ùäNÀŠ8Út-úøÒÒ‚‰ßÉ“ÿ뿾úUçydÇušˆ¼Úöí·—.Eüuê4|øUW9÷“Ÿ|íkŒ””qÄC…±²FýL0Ï›wÛm?ø�sŸþôi§]qE}}H 9qÿÃNš„¸ßsÏÆ› --[ö׿Ξ ¿¹òÊë®Ë¤ï{ߨ±ãÆeõüžÏ·ÞêóÆé§[óÆÈ‘>oœ~z9odþ/ìæ-VÛ¿sæL�ú•¯8wÜq¿þõòåÎ ï@~ðYöä“ï¾×ù“ŸÜsO<Ø–ö«-µÉ ›6È¿�ާ�1WgÄ~øwicØ–^´Ÿg‰ü{ÿ§ÿ¥þÏ{K[ì3þò,2þ™˜Š™1Ÿ%Úr¿h…ù§cåŸÈºÜÞ/|èRž†ôñ¡¾ÔõĵqÛ^ä|ß~ûÀÏ>Û¹o|ãÔS±ôsì‡JÑÅöí·¿ö5üð6oÞ}÷aãä“Ï=÷†òþ­ö3Ï=úÒK�ûùÏçÌùú×ñæŽLÌuÃZGæ?æ±âMƒvþrý´áŪ've«Ù—l—~á–öý•Õ®SÈ›•á7ßþ%þ9öËx¢óƘ~Þöë÷mo½ãäßÍוüÛý5z×ñ»Å�;ÇÞy™a(¾Õõ7þåHãgoÅù%kÖàÍÐ[o½ì2LÐ�~ú•W¦&¸ñævþ­Ë"N±¶dÉ£�bÜúЇƌ™4©(³Ôy䦛ÐïðÃoºéž{œ›:ÕO�á'‚,q²d Þ8=ùä}gxì¬Jyúé™3ÁÇØ±ØÞÿ¤Iÿó?Î}ï{cÇî»/p„ý�O͆¦¿f &¶q=N9¥Þõxûm|"«ÞT)�:­\‰)ßï~÷³Ÿ=üp箼Ò6œÙÀ•Áq��-xÁÄ7xÙ{ïL+µ×©ÓÒ¥�>Šûš|`Ìçª^àÂ&N<î8lö³c�ÅÄôÿüÏÙgcbZ»¿BÆL[½öÿýß;ï¼à¬„1~|~¶^Ÿ¼ì¦›.» îØb‚õæ›çÎýÞ÷œÛo?ýÁ�·ÞŠ ó×çž~:�Úºý_tNOŠñ&^Õ Ž÷¾û¾÷=¼Ù}ÒIW\‘Ê'1ܧŸž5 qÿ±�Íšõç?×ãIŽÎv=Ÿzêw¿ó+CeVñÈàÁ{îž;dEÞÀ§“Ɉä l7ßìãc¿ýª�×ÙÑ÷–-{üqü}pÜq—]†8�rýÚkÅ7åËù_zrKÈ íÉ€üý!¿”mÙÆµŽö÷_ÆÏßsQÿ¾†×ßûIÕû‰¿ÌßÂ=úý 0þÂÈÈ×™˜|”Ô�“¼Ïˆ~ýÌ¿ž3�%úŸøSècõêm=þG&ÐãNnøåªÞ¸Ô;©¢lã¶_>ú+°Heñ}óâçk�:uî¼ýöøaõ°Ã¾øEü·÷ÞøámâÄÑ£ñ&œ|�}ðÃþ�ü«_}æ3x³oÔ¨þýóHõ÷׬Y¹òå—ñ¦ûSOá §… _}åJÿŸ?‡Î�±éî»ïµ×¿ý›sýû÷ì‰zë¯ÿÊ•X¢õ‰'žzêïÇÒ§Ë—ãWñ/,œ�óßc�ðfYß¾=zÀ®ÈëÙ—Ô[ÁЫWêŒåýÖŸÿò导âýУ½ýöæ›#.vÝuç��Ó©ÓªU¸¾Ï<óôÓ°ÿÒK¯¾úúë˜àôG¾Í6;í¾4qžeÑf¾Vä_$XÀ×aþ|ñë×_G^:wÞzkï×ûìóž÷àúl·]½GzÖ¬iiÁñ¿òÊòå˜|ã�çŸÇù†eÑ¢çžÃÉK—n¿=®{KËÚµ8®]wÜKþn·]ñê…ý«×ãç?®çÿÕí¤zÔ·/½„w©WÝ®XñÜsKÎ9çàƒ�;oÒjþüõ¥³—,îqÇ¥'Î1�8eÊ�7{,–Nîß—]œ{óÍ—^úË_ðÉ’ï~÷¤“œ»îºl*{ãÇìcxþÆÿðL ºÓNõŽøÑG¯¾¢Å&À rðn¹s#F Ò·/òÁòåð³_ýêÇ?>ï<ÿ¦|~²rÖ¬‰?ýiçÞÿþý÷ÇõcÇXþ‡ Tßþ/~¼7ßô8XBp:u0+7ÜwßôéXªö�!ç/|äq1e·zõ’%˜X›>ý‡?<æLHÙÎzذ£�¾è"ç¾õ­“OþèGñ@Añ*‹=ØÇyÿêWðç.½TÎ{ذ `÷¨£ð¦öyç�pÂäɘ¸Ïa|ÀüðÕUßý®sGñ¾÷aâgš×Îó%øõ¼ywÜ¿>é¤I“,~-˜£FM˜€{útLP|Á˜PÃû¾r˜¸�<ùÚkqwÜ�©ÒüñÉ~KË“O:wÍ5S¦H?‘༮½öþû¯¿Þ¹aÃz÷.Á.ëŠsãÆ}ï{x0màÀ]w…ßw\ñ�üéÓo» þŠ ô¸}±fÛΟÛmxùðÃSK\§®‡ _´^zéÎ;±õe—å ðRLhã�hä“òÑþÞýûOžŒóýÀöÚ Œ˜¾ËOdOœxã�<€%Õ'OÆ›àÙýŽ·±ví’%ü#>^|–ΛûûìSžJƃCŸúÔ‰'‚§}÷íß×]1Á~ÒIyÿ½òÊiÓ°D÷¿8l–˜/£Öíš5Xbþšk¾ð,A–1cð1øã§?{ó~—]vÝuÏ=ágÆpŽkð`L¤fo ß{/òù<ÿ<Æ¥#öØ#¼¯€Í+^|ñ©§ðAñ=ôÄñ ÃÑGë—ºÏ)¢T©iÙÏÇÝ´i&äýB,œzª�Ûñ㇠+NZwŸ<# ´÷ÝxdcÍüùàÿÆy÷gœ1t¨í ?άYóüóx0'\>~ԨĄxVÞzë‰'ÉÈe¸�ùÞ÷pÞƒí¶›ÏÅ7ïö³ÛooMÞ�ìûÐC?þñ9çäùÉ΀{d€ �2°10PO­÷ÿÖ3“¿0n-Åh¿ø÷È’•GéGþ½GYy£ÿÑÿ;©leõ#ÆŸg€ù‡ùÅ7̿̿̿ÕÇŸÍdÀI \"¯ºµ®àvû±?TÐVl/Öòç—x�í¶Ûo?üÐzúé˜f-üØøøãÏ>‹‰")yþñmÄ»îúÎwð8&x1%¬è‡Û|È,¸óN|s}̘áÃÏ: ßjå¿|¬O<±þ8žßüæ?8þølâ\ô¬ö,¸åo÷ÐCñ&×3Ï`z1Vâì…ç^�gŸ�=;6qŽ~˜x¼ðÂ3ðÃ|lâG‚Þ8?<�ðóŸ—�«lßëÈùßrË”)x0â ƒ.¾?®§ÎníÚ––üõKW_}晘P¾úêÇ‹1 ö»uÛrËâ„‘ ø-ôŠ-éÞž>ýÄ1! çb'ë5`]ÁtwyÆŒï|çË_vîÌ3o¼o •û{¤-¶(þÜŽwÆðfs6A“ö¿ü…8o¿½ÛnùžáQ†u &ÖN8aôhü@Nœ§Ž_Úç̹á†o|o®M˜pË-x£ÚŸŸüÚÛvÛÞ½óÇ�µ'àÿGŸ8;‚'[´ã õ)SN: òwßýüó˜K¾?|ð7¿ñ~m�8Ï÷ö̙ޯ?ò‘)Sî¾;ï×þ¬Þ~{‹-êMr…xáñ¦¼yéÒÇÇéèÑ'œ€¸8ûìóÎÑÇ?jÔ™gâAžX¥ÎЮµ®ˆý°-V¯Š›ÇX¶Ì¹ÇûÅ/ò�"?ôÐ ð€ÓOLŸ~Í5xpïW)--xƒû7¿¹îºpŠ߬F¼Ç'ÎË6à#F|ýëßþ¶Ÿ\ÍkÌŸå•X:üñÇe ŽL W¬xöY,ý. >dÈYga±æ\‡}hÀ<˜!+@`¢=Ô­’7ð`Û°a'œ€O/„yãé§ÿô§TÞ�c¨·]±ïö;wÔQ?øAñ”~|Ý}÷¯~…)ËÅ:²”{²… �2@ÚŸ�¶ÎÒUÿN ýâÝCk¯8ù¯æQÕ´õ«Cþ«1ZM›ük ÐÿªyT5m�ýôïÉ©ž´Ïñ/å�´3þ«ET5mýŠ4‹ÿw&ÐS‡$})y£íV\«^Õã°âZõ`??!'ǃ¶x;�E+½ÍÛÇÒÛûïÈ!±7ß°Àw oÑ¢Àðçž‹é¿r9úèóÏÇ„É=÷Ü?–@Å{‡ØÞvÛôéx““naÁ€ãÇ_|ñ­·bb,žx_~ùá‡1Qÿ�oÜtSì-Ù1c¾õ-Lädv|oxÏœyà —\‚èû÷Ï�Ÿÿü´i?lÿökˆ!ç"çcÆ|ó›ÙÛN^Š‰ß .¸é&,ûÑ�öí‹¥¸³âåüÐç—¿NèÚi—^ ÜûîûݺâþÇDüÏ~Ùex£¾¼Üþ-·ø7‹}4?¹šáb/;ŠpR`~ùË^^gÎüõº‚ëx˺âÜE�é§:|Oè×ÃüPoéÒ'ž¸ývL ¯êÛoï¿?&6®¼ræLL<<òÈôuí?ŒëzóÍ×\ƒ7ŽÃÇ?æÎ½ür¼9oó°|ù7_âþ—׈ï‡8¡–Îâð¢‹n¸‘uÿýþ:ß¿®àü¯¹æüó1aò'áW]5{6ÞàO•r¿¢æ°aãÆ]x!®ó=÷ ^Wàg¿þõÍ7ãú�ƒûËöÏ9gÆŒ‡ÂD,1Q{å•Gñqëý:¯‘÷ëÙ³÷;ä‰×øõŒ—^Š kèäËÛo{¿¾é¦¢_÷ïÿÉOâ‡ÿÙ³ÁÎcêTÿ<&'M*N»!‚ð†ÿðá}û†±ùãÄ‘ë]»â�ëï}oÁº‚•î¸ÛÛoŸ4 +…¤Šyûm¬DS½„öýÃS[nYn¶ÿà…ÅJ¼?zb’ö¡‡þû¿ñÀRX¾ó�1cðmìgiD¬|1v,Þ k?ÿ¾®à�ëÑ£ë àÅçÏÇŠ ù‚e×·Ûnë­³‡È¼´žý|ìëþöH×Á׃Þ|3D Ëç??z´‰Š’”ý®]÷Ùo¤ãóEÅ2kÖo ÞR�h”=¨üþ÷÷Þ[¼ó9ò#ÁýWñƒ*ÈÈcÇfyygÔ¨bÞ(S±æùßzkĻòFv·b½Zo¿�%诸âðñbAX¦N½ä¬¸€(Öîhò}Süçu¸OÈ mÏò¯e°êU=B+®U�ö«1`åÕªWͺ¿ÿ£ÿ鬑0 óTUÃÊ«U�ö«1`åÕªWÍ:ó�•W«ù¯Æ€•W«^5ëô+¯V½õÅgͰu&_NÔªßÖz‚}�˼¼ÑóïÞ}÷ÝñC;úcÉT9ïE‹–,ñoÅ (? b2ãŽ;®º*œ Æqœ~úUWa‚õ³ŸÝw_|»8,=zôï�ð¿þõ9sðÍÙ­·>è #�ÄD,Âþ`‚}öì ; KÐöï�‰f&6n»íòËÃe—acܸK/ÅšÇ?t¨_J:³Œ„{õ8ÐÛ�6íúëñ-íáÃ�9K�ç;c&Ô,øÒ—°´ýÀ�~:CxÈÐdϯÔ0qŽ7þdâ¨×O@ã�sLœÞ¯Ÿð(}ý¶S'LyÜu×å—c ü°œþŒx`á°Ãúõ —V^ß¾C†`)Ò«¯¾á¼±tðÁÇåø§M»î:Laákèí¸£?>Ïlf­vØ5>0u�7o¹K�ºë®±÷³ž~Oú‡ía=Ô[±bÉ\_i—ã7î‹_Ä„ñ~û•¿õ�+Ô§Ï>û`…o|ã’K0ô³ŸÍ�‹oÛ©GL¼„ÓþHäçÌž´�TŽCôŠÒ�=Hã8Ò/ü£Apaþ~ÕU÷ÜsÞyXpÖOãfö·Ú ? ï³Ïa‡aà¶ÛºwÇùò“ãÇãA)3g^{-&N8aøpÄ8¨WÄþþû�‡ ò‹/>î8|ÃVŠØßqÇ>}ðÆã©§N™‚7%ÿþ÷CÅDY¶LúsÏa _€_ßyçÔ©±¸ýö·þs¼¡ü±�õíN ¯÷ØãƒüÌgð ï×Ç}t~ê꫽_ÿ׉_wîŒøèÒÅ{ëæ›ï°Clòm»uS¯øf=ìÄc2‹Ÿ=öØo?ä”pqý#ŽÀHýúንÏÞ÷ ÿÞÃö°.ü[õÕ³ö �uðû‘�LžŒ¼5d®òçN;Å"¹©ZÙ|sÄLùÆ'Nqüí·ßn»2¦súÓSO-Z„èÞ=�Ô½;–Ìž<Ù?À“—ä÷5ûkÖ,Z„·¥ËËQ÷ì‰ LMòÌ3LJ¼Õ¿ñìÃ<ýÚk�>úË_"ÿ…ï²÷ë‡%øc¾ž»¯gÇ){r˜ˆ\¼øÙgÃ~ÈçÆõï/×ü<óÌã�cŃ'Ÿ\°o¯X±z5ðįèɹwïŽO�LšT?oˆvyëí¯YƒG¸Òy#;CûeD´<ùäŒø´Æü|Á1ðFúˆ~…¼¡. äõ°kÏó/GÓ ±X'd€ ��Ö1€ü+y·’U¯Y¤Ž•öÁ@vß•âIÚ­×ÕªGþÉ?ý�ñgÍm­ÇüÃüÃüÃüÓÖyÅŠ·¾ò�:�.7|Ú6u¢>­xÇÒ0Z#ßìÇ�ßú³”èÕÿ³ªK—vÀ„·8ŒØ|â‰çžÃR­Îx ¾ºví¢EX’òê«‹o ã'`¼ ü‰O„ç)û[n‰~ÇŒ¹øb|szÆŒ3ÏÄ„¼Øÿõ¯çÎÅôŸøÄ€˜ØÇÄ~Pž6­loÐŒ[ž8÷çÚïÒxgžyýõx³iĈ—_ÆÃ[lѹóÎ;ãìÙO‘蟺þÛl³ÃøIþÅ}€˜8ÏOâ?š0Zù’?»¬]Z'“÷¿Øê�mèÊêÕÃ(û#F|ë[Ç“Mœ FÊ~�ƒcbŸ^ÀzöÅï °’ÂÂ…Ë—û t?ŸáÉžßÂ>”7nôèüĹh•ío·Þ¨ûøÇýzsçÊtòc�áÓ/¼ÐÒ‚ eù‚nÞ¯ÛÁƒý„}lâ<¯'öá×xõÛß1"ôëGÅù–ý8þsyD¿�ó¶¼Uš·�óºçžÛoÇ„ä²eþ�Å­·Þi'äÅ=d «l«5-b?ÄÀñ£ òPÖHxÕ<¹h¥oßýöûЇŠm±ZõãÅ#˜@ Ñ^xrI{l2-ì!u¼ÙúÄ=TžÄF<û¢›Þ [vþq¬¿þõ5×àAª°œ|òÈ‘˜@n+/Úc�}÷•>B[źœG±U«½ð¼y�=VÖ4¨W/¬Äpß}S§ž{®s'�tÙeÅ©ÆrŸ|ËÈ‘g�…ñôœsN<¦[·¿rÜÛo� ÊSN9ë,LŒ>òÈÅûIô§ŸÆm‡6r$à™:õ O<ãY¿~Xqw8ΧžºûnÜw|á 'Æ–¼Ÿ:õÄÿã?âo†ç�;¶/Gèe+VàÁ ¬ÄSÔ9ùtùòùó1RŸsÎá‡cÅŒpÉïbŸb K‡_uÕ]wa¥™ƒîß¿¸&CQWj¯¿¾|ùâÅRó[ÄÓ/yÑE'ŸŒ‰Õ믷Þ¨þþ÷gμà|S~Ÿ}ŠžmØk9°4x‡úž÷à�ÈØã9:z÷î=zGDßgÕªÕ«ããAÑÿ^{íÉ'qóW÷“ýèþû÷î­Û¯®Ñ©òƯ~5mîÃòÅ/މ–äá‹PÖ×®]²–œuÖĉa\âºýëGÞðˆ–Ñ¢èÿá‘°NÈ 2Íúû#ÅíÇÿb’ñ7.M±Y½�üÇ&ÿþî.ÎNu?Kõ ÿŦÿÑÿ3qïHESõvÆ_œaÆã¯=ãÏ0�.?¯Ä~žÑ=îÖz¿Lc㲟Odâºþ\´óˆó&€U«ZZ0‘–½öÚm·ü²--Ë–e‹õfÚÆ úîwÇÞä¬o¿W¯Áƒ±.~,ÇÙ2×µkñݸU«–-{ýõÌžìÁî{ß³+qû=z ˆ܇ÇÏŸõJÈ”¯ßu×¹çb‚ò®»Š}q�°Ôïü÷ã�ñáÃûô‰MŠ„¨8¿Ø÷oçÎ�=ß½ûîw½ ?xã½K\qñàäëxGôÔSáƒ~b({Oü¦xüRÿõÞûÙtSœgÁ+ožï·ûîûî‹‚QòK£Î™3m¾1ýÀW_ ^GŽ<ê¨#ðæÝ¿ÿ;®û^{õïÿ®w9·ë®;ïŒ7´Ë?«W=. Úÿ8ÿ˜ZãÑ.K±üüˆC†ì¾»èè[ØÇùfŸ^ðSÙhÇÄÖüù/½„ ¢}÷ —$/ÛÇ›¯Ûl“y†n=~ŽøÆùš5Å)ë´_ÿæ7xSþî»÷Üß0v.–}à]âß>Äü½Ó¾Z>_è7Z¶Û®G�>}°Ô± ˆKݺ•~�®³ÕR\¯hx­EŒÛimk×®XQdð`Ÿ§ï½W¾„>>VƘ6í¾ûðÀз¾uðÁ}ûê¶^ýñÇ1Μ~zlúÜûµ�›–ÑOÜt&8O;í¦›ä ¼lÐ |ý¨£† ‹-Ï,ýÛo[í<ä8¶ØbË-c-\wÝ„ XIãéuEtóÛAµâå1�Y³°Þ´ýÓŸð)†¹s¯¸oçïA<^ñ¸8àÄ1ÞΘ±ÕVßü&h›4É_áùóq½Ç�ÿô§±µÜL�z÷Ý?þ1òò{ÄÆo NQ§sgD\öØšHg͇6kVŒhá ox?Þ@ŽéàjÁ‚ûïÏOCSÕ˜8�õ©×†~§Ÿ>j¶‹ûOyŒ÷þ÷ã�ïÆKK Qzá…£Jñúû6ýÿwì×+ '�u<ŒlO<1{¶<’èQü‹ÿþï={VA}oíɧŸ>cFqmŸ7Ž“ dç/-E^¥?uã‡ÿsÎùÆ7²¶l/´ŸIŠ{ÐÃÒüóæ=ÿ<~‚8pÐ ? ;«bßúµÆü/¼qÝ|ó^½>úQL€\r ~È3æÌ3óK“ƒW<€oÙO�ê·8®üùû7©Ï?ýÇŽýØÇð&U—.ШE©\A[?± 0‰ÞžQÙq¤5oQ;ìÐ¥ <rôÏãæuÃý-¶èÚ5ÿÆŸô—m¨ïÑ‹­þ¸}›ôÓìûsÌŽSpÅ‹Gi¼¬½¾_�0]®÷kÿ ò�ë ü:³ã�4´/õYú¥ä¡~èÇ"×qâ^©÷ õ·:N}ûõÑ-ÒÌCŠÚÒ^l­Wƒ~øi§{,¾å}ÒI×]—i_ýI'áÛÆ�:M™â'JGŽÄÉݺ‰'vê„7Îÿö·ûîÃóÿùŸ'�”ÿ@†ä÷„·°½zÝŸçÂ…<€|5j¦¨Š(˜½j]Á›ŸÙ$˜ð¿>E„z5+Žè �ýêÛpâ|̘‰ñFùW¿:z4¾ñ½Ë.~±ï5kZZ°²ÍÿøË_~ÿûþ ðâ÷=÷Lœˆ‰ì;ïÄÊgŸ=bDýɽeË^|KÄ¿ü²¬JPýè}¼±¾xñ?þ�O�¬Y³çž˜ˆn‹ÉÑÔ-NŠ8fŒs×^ûýïõ«Î}èCÂ7`¸¯¾úÌ3>ˆO«|õ«xÐ œV�8qäÈþýž~+žD�ÈØrËì �'¼Q>eÊ�7žvšs‡²ÿþXI§[·­¶Â1,[¶páã�c¢ F�Æ„{q~Ê”1c`øð'žÀáÙÂô¡­î�=¤¡õôrñâ"ëݺùCÒñ~`ÿ¹çðÀ×u×å¯>œƒÿŠ÷È@Oá¤-{‰ïW/oà~XòFú¡›¢ý%KæÌ¹æL”pî˜cðfûç?¿÷Þþ!•b¿ôѶ.O¤q)!d€ ��F�ûWÙ¦ÿŽ)Ž‹bKï'šõ·:íÇÔy‹õ*·é8ä¿ÌZö»A:nb½Êmä d¿•¢ÿ•9¡ÿéqc­Ü¦ãÐÿʬÑÿt¿‰±VnÓqèeÖèâ7�S7 ¢�’§ÚA­'<îxáÅHál¬öqÜås [²z•óÇ›£óçÏ›'oEú¯^-o”Šý"ÿÂçªUo½…‰ ¼e%ý}Kö¿ègòN�bo�л7–Z•i�µkÅ~†…½åëŠü`ž»+Ã/ê—íå±~8ã¸õ,àó(˜èýæ7ÇŒ¹è"ç~ò“Ù³Ï;Ϲ½÷öG—¶ËŠ‚Ç¢ä£Fí³OþGÚLÄX?ß.zo¾ùê«x“nÏ=»u ©Ïzg{ùcA«X^¦•Þ»¡pp¼)y¿~xüñÎ=øà�wâ‡ü‡úÝï0Aúàƒsæ<ô&ÎçÌÉ/,x°ƒ¥Þ¯¾úÜsýöá‡1�€/Šãé2]à­‡GåëþÌâg(ýBiÞ~ÅŸaÜNþzAÃÇ‹Ÿ0Hñ’¶¿jUø-[±j»R^[t­ö…‡ðüË8¾%ÔsnÀ¬:qÄï}oì9Žr?9^)¿–þ¸èâ„u�šöKèCGÎ[ôSÛÌ~QCì¦ä©ö, ÃEܰ–ÂiÜ~hA«Ç�3ô} Eä»ívðÁXÚzÒ¤CÁúĉť�ñæ3&±•>�mÁ\c=ó½^}uÞ<|Òã ƒŽ;Ÿ Ë)§üô§xcúàƒ{÷ö‘/maX)¹"—mf?lI•íÉ'_u–Š>ãŒpeo¿sç­¶Âx6tèØ±˜h�={—]ð ™áÃO:)¿”úu×�ó͘æ[°àk_s®¼LöŠO<�5ʯb'Þ(?õÔI“°bÌ?øÞ÷b‰-¶xóM¬èòÇ?Þ}7ð§L¹î:™ZÄÛ¹“&�tÒá‡cü˜0ûÓ§ã�ê¹-ëƒá“)÷Ý7s&Î35ñݽ{ÿþÈ›“'ßzëìÙxðjàÀáË߲¾þzïý÷ã�“³Ï†‡å�sÍ,Õþ׿ãX èÆÿ{ð?th>+gý»uëÝß^?ãŒéÓ1o¿ý‘GâY8šàkÆŒßþ²é>dØÅ=߉{ÓÆJÜ‹ßxãõ×_}5Žè{Äû½õÖ³Ïâ¾£ø�ì2+ã”KGËãZÞ8õÔoDþ+ç�ðÄ~K üyÊ”ãŽËÇ´quóͧ�†�²$ýB¼°Þ6y2De� �2@c@îûe¢4~ÿÞ7†ÈÅ:íÇÇGòÒg§üF»o*z_Ÿü“ú_:>ñ¼ÍüÃñß�1¶¿�SqÄñ‡ã�eüéÞÐH=åX"Oo㎫9dˆ·ñÚÏDRºwH?$–u–ðü[Z,À2ä“&¦*¾­9xð»Þå§~…ÿÕ«W­ Q�{øá?ÿyáBçŽ<2üzQ7´�wš°„s¸àøn»í±G�Ù7aW®”‰ü"Þܹý+~?þø÷¿ß0×JÙ~Ø#(üyËÙgÚøJ8~€¼øb,YûÇ?ž>¾Ñô¡ôÛ£a¯zu9Ú¸”{†zÒ_4ú´[·ƒá†ãŽ 'Î¥hß·ï±ÇÁc|<å”�1Ñ÷ƒd‹LãÞ@Þ+ïÝ»øNòÿxíµxP-œØÄÇ>ÀÿƒN™‚%àc lï³�sûíwÀ˜@üìgG�FþÒ—ü7Èÿ{\�<‚wª�»õÖáß|ßøîß¿¸¤»ð?/9k¼ËŽýX®Fû©§žwÞ1ÇÄ'Î!/—Í7ßcçŽ=ö§?=åL u>i å¯}ñEùÔNq½sgŒ§gžùç?cBø+_Y½ÚŸAçÎ`¶[·"¿‚ÛâÍøÏ}_Ÿ÷è_œi½øââÅo¼‘Õ«ïm¶ò3î‹ÉJ™$¾÷Ê+ üéOq™\ɘô™g~÷»ð‘øÕ>з¯�1 ÇýyãÖ[ÓycÌŸ7Æ�:4[­"¿Syõ�œ6 q®~ñÅ/^u>)±ß~õ�¾sg|¬¡ÌÈ–[âÝ~¹'[È d`}0€q">iGïÕ¼¿?h?v…È¿¿´úµU¯Ì5ý¯Ì‰å÷—b/òŠœØjñ^ŒÆ?þnµÆ•U¯ì“ô¿2'ÌÌ?í“6‹9[{´5žÚæhše?ž¾°°$Ž ;9³z¶þ<¸|9–¢¼ì²#�Œ-i;xðé§cB¸ÿâÏg]ºôê…7nðÝæ|™;÷®»ð£óË/‡vD+Þ>þo~sË-å tœUþÍô.]vÛmÏ=Ëv{ìòËñÃ&–oE±žÿÓOßu×ôé8ÿ+Ö箸âÚk1±ñòËáD}qذCÁ›m}út튉û#Ž8ï<¼qˆÉôb™;÷òËñùW<ü°_†µ(÷µ.]vÙ%v~÷ßÿ«_arËÊÆ xŠ_ÿµk±"ÀÊZÁ¶¥%¾¨|¾wf!ÄÍ$Å=«^±W¬¶v]q®¥eÕ*÷ªUáuð}ð³-–ÔíÕ«o_|ËôŸ8þøóÏÇ›é—\rôÑeÜyóþò——^*·ãKòE�œ3K´¾öZÜnaåÊçŸÇ~öÀ„× qË=Ñ­¼ýŸþtöl¿4lüzÄPàó÷Þ{é¥áà E|PÁ?ø"=½5±Z3¿îÆ«\löóÇžÇÛ»téÙ�`yý|IûµfíZýiÿI’²Nc-Õüµl#ìÖË=ЂéÖm¶)Ë9ä3Ÿ:4¶¤uY7lÁÄà�!ÿ8ÆÕ|�Ç”¯Éš5Ï<ƒ‰íü@&»¥&¼ï¸ã Sçÿ?{ï¦GU¥ W’έ;é\š�;IHB‚€r‡EQÑñÅãQ¼À�ñ GAQŸáˆÎ¨ggQ8âð Gtœ˜FGGeD�‹"$\BHB®äJ'éN:é$¿½ÿŮڵ÷·V}ÝßÂ[Ï“ìÚk­ý®ª·ÖZUýíºˆ]¾7nÁ‚×¾Áî•úyÖøÃÿú¯ð&?gcã ïÒÁ„pì¹n<ùýÊWydLnGØïèX¸OƇœ§™ÃQ¸1±µçÑqý‹›8�ßPT›—ŒwÔQ¯x…{š9/x–�…7wž“Î/ÿñ8ŸoÙâ®f$ÿòµÖwïÞµ+µm©#‰'Öï¾ûg?+N ¿ó�ögY6{ö¨QµüiºýûׯGÝxÇ;Î;ïc+[KÝøüçãu#µÿ¨G¸!dÉ’¿û»°ÆáÓóçwtàšréÒ?ô-Y†ÿóíC-í[²ìÞ¾%vÃÁÒ¥>ø_ÿ•eË–=ô>ýtß}øòß­çBÈ Íg ýw]c¶çŸÔy³1‹¨ôOþÅœhf�ùÇücþ53㊾˜Ì?æ_1'šÙkTþUž@×.ü5ý@IÓð5}ãý‡ÚÚð£rqz»Ö“€C†`jpÕªûïÇ„õ%—œs^ñ‰õpÁÜG>òú×c‚R¿ÿãÇyd–ýùŸÃÊ/C†¬X�o,^wÝ?þãCÅ&Š‹iÞݽbÅOŠ …k® '19ÿ¶·�u&Þd9xpÌüð÷Æ7âgîâ‚§Ïþæonº ?îÝ[ôã-�¼·wãF¼üóŸÿ«¿ÂÄö­·ÞÜ·dÙÍ7ßpÃÃgYWWy<$å]÷î-NH·¶bbäÊ+ðƒÏ}.ïÕø'Ÿ¼ùfL¬|ík¿ø…Lö{+à�ÔQe^ñbòk¯Å7/ï¸#ÿíÍüØüú�!»váÙ½/~ñ´ÓÎ: ¯úÄ‚Wãžu¾Å»vmq«c{¼pýñÏ{œu<•wÇŸú¾‘{Vÿ’egžyÚixòþž{6ovÛƒ-¨å¯|Ü`=yòa‡áSùOf·µáëèy©{Šñ§?½ÿ~¼â6\òû�‰×ßþöûßÇ·}ñ#5_HCT§—ÿe`•·|òÉnøð‡1Qó‡?hþ‘Ç÷ßË-øÖ¬]áÎyËsÎyÙËpƒDñ9ñ¼El]ø?ä�3ŠOl;ë1cÄ"6Ú"s‹…Âø ¢h×®ðÌ\D-3}oïîÝ��Å7(Ç…½Þ^L/]zß‚‰ÏûîÃ�}�<²z5pÒKÜ–á¥èþÆôxM“Â/�Cý½ï¾Õ««NÖnÛ–e¿ûÝm·'ÂÝäÿâųgËg^Š·nÅDòm·§¡/ºè5¯A>ÇÞòRŸêmÛþ/¹äÌ3Q7Âk;Ô |ZÀ× ;?ðØÓó쳩›.áëc{ë[ñ†©óÏkß’eø?ß¾å-ç÷-x“Äg?+×ù=¹õÖÏ~Û�ñ¸aeÉ’·¾õ¯þ û!TÊ[s� �2@Í€üVÕ®nj�a4}U¡½†¯éC¼ª} _ÓWõÚkøš>Ä«Ú×ð5}U¡½†¯éC¼ª} _ÓWõÚkøš>Ä«Ú×ð5}U¡½†¯éC¼ª} _ÓWõÚkøš>Ä«Ú×ð5}U¡½†¯éC¼ª} _ÓWõÚkøš>Ä«Ú×ð5}U¡½†¯éC¼ª} _ÓWõÚkøš>Ä«Ú×ð5}U¡½†¯éC¼ª} _ÓWõÚ‡øÏM ‡ ?°x¹®]økz�[\{ñúÿõ¯üã,ûÞ÷~Ø·dÙúßþð‡ÿÒ· ÿíoãÇ+®¸àLP¾ó�—^Š'ÎñÜâÀW‰ñmÙ›oÆ+n,(>_–çSsgŸý¡å¿6+<ÿä'×\ƒÖÞûÞ«®ÂÞ÷ßÿØcxrkE߂Ʌ»îú—ÁÄÙÙg¿ûÝx…døT×¼yï}ïûߟe'žXœö„ü$þÊW¾ï}ؾpyà�n¸ì2LÀ^~9¾-{Ï=K—Âßc} ¾‘z×]·ÝN?ýMoúÄ'œßüþŸyæG?Šo¨ÎžÿI4¿ÿ¡o×wh#GΚõš×ø'¢…së­W^‰*ï¸ãÉ'ó¯s¾ãõ ñjâp¹ýö/|7<\rÉW¿ŠãúÈ#Oö-ŽWLàÝÿ/~ñƒ¸#ð„%žvÄ"þÏ:듟üó?ÇÄ‚þ82'Ëžè[ðÊÝï~÷ª«p|/½ôºëbþ?úÑ÷¿ÿŒ3ÜwÕ�gñï"Ìc„,þø@’?.b‘oÅOq”ó�JröÙŸ†þÝvÛç?ïöçïþ1»t©Û_D7âq�úvé¥çž‹ø—¸ß×Ó§}îœ#:´#FŒ‡'-Ãå�®¹¯¶½þú;ïÄÔž·ÃDÉ–-ù¬ô£Ö¯¿ë®nÀ«�¯¹qvÛm?ù ¶åšk>ñ‰w¿3›7Ç&À„�$kE¦4~5½ †­Õ8nðúÅýLábÿR:ܰr×]×]‡oC_pÁÅ} Ú .øÌg˜¾«µ„þ·n½ï¾,»é¦ï|'œ´úïÿí³gǧ^ÃísßÞþìgO: HòýlÙ’sÎqßÎþÚ×þÛ[¼X¤é¶Öþ§GY4áþ‡cÂý õñ~[یǃ ´¢þ±Ç�Q¨[ò~Í¿?dHOêÜþgù¸` Ë7¨¸óXyëŸ~Äâ=^e‹ÛŒžðßÛ·ä?¥"–»v‰…Hª·xYö±ÇžuVÈêÏí·ßuÞ€’^Ê{ Û§Ÿ¾çœ—Â%n ^Ö­ƒýù翳oÁÄç’%xuþ›Þô÷�oš—yä8âúõ�<‚ód˜KÕ_ß^Æ_§œò¶·!ßÃå¶Û~þsÜð¨/.þöïúiì÷—¿\¾ÅçóùóÛÚÊ[�eë×ÿáØ¿ü(<íÚi‹É 9µ·!Œÿ®.œg>ó™W¼ü‡“ù¾n¼÷½øÖ¼_b[çµå5¹Î+k%Á[šïµQ{C\2@ÈÀŸ¸ÞÏo±õúW7µÎ0š>ï3¿NÿávŠÇIãWÓ jØ’ò_Œ4‰�¢T‹/M/¨aËøcü#M"¤(ÕâKÓ jØ2þÅH“)JµøÒô‚¶Œ?Æ_1Ò$BŠÒ0¾ZÄ,Tˆ?YúõzÖdjã¼Xü—_9í&Áo¸ášk0ÑXÿr晘Àúö·/¿Oð-ZtÈ!ñ)䢇ѣçÎÅ„ó÷¾÷×½qc–½ûÝW^™ŸÀ|òÉŸüO<_z©k‹£c½×¾ò˜@ _Ÿ·1bÖ¬óÎ÷ÇÿÏÿ�ß·¾õŸ¸ñƼů�þe—¹6¯‰¯Ÿy&ü~êSïxžpO-ÝÝ©B #Šq8eÊgà‡ß¯ýƒÄþ¥—Þxcþ8}þó\pÕU˜Ðþñ�ñíÐ㎛0HxŽÝñú¹Ïa‚·à )ĉÊvÛm×]wå•®Í[¥Ö±¿ØDq~Â8ô_<Ú þÊ'é-Ũä!ŽøOÅ5Æ`‘¸¾ðªqý†7¸¸ŽooKË”)x"õ’K¿×]çoÙÁÚÍ7#²üñ¿ôÒÿûñfŒ .8úè<�»w?û,&æRËÆ���nâ­o²ÿåqñí-Û¥$ƒ{þKogÊ¿UîgØ×qp>jiÙ³“t÷Üó³Ÿå'³®ºêk_{å+‘'Ÿþ4Þ´QÎuñ‡—gÙ�7þÏÿ‰ Ãðµß'Ÿ|ů}–v˜vös½û·o;êô÷¿_ÜþóÏ—'Gà °¢]õž{røç?ÿÞ÷þá²ì—¿üãñ„éüù¯{öçÝï~Õ«�éýOy”8JéSò¶6<�»dÉe—aBñöÛ¿úUyFü±�¹ãòÏÿüñ�ã¸ÄoJpØxfõç?¿î:ÜÐò‰3žÙž7/üVóÈ‘3gâÕåîåå?û™xüqœO¿ð…ýèÔSñï[ßZëÉ¿w½½ø$n�Âv„ËÂ…3foésx>¯àþÎw¾ÿý_þ2Ë:;'L˜?õãÀylÁ‚qãòÇdÑ¢sÏÅygáÂÏ~Ÿ�‰çÛoÿä'ñïë^÷ò—ã@|A¾g{ö¬^�(?ò‘+®(s†§ªO>yöìp/pp«š¿ñÁûöÛñFžŸýì#9ûl¼Ñ¡¶ì)^ùý•¯|øÃßùNÙÏyçÅýoÛæùúÏÿÄ�pãÇ£2¿ç=üà8¾ò8mÚÉ'#~p”q¤å{îùò—ñŠþú§ÓNÃuÕ[Þ²h>íP^† AÞãW^û´Â;ßyþùˆ“0º€ƒ›0þøÇ_þ²¸'ŸŒWîu”õ…ûRöìÁ "_ùÊ;Þ�(³Ü`×�¶¶ ÞüfœWï½7t¦®Gäzû+[ŠŠ€(áåô;w.]ú½ï!ßóžü7î/ºè¦›þýß³ìâ‹/Æ•+Þ€xíèˆ1 t.d€ �2ÐHpŸÇO_×íòclërÝX‡þÃ#"ìÖæM¬Ò-ùwÜÔæ‘ñÇø‹GH\šÎ·PÃücþ��ÚqÄúÃú��¸4¬2é>ë�ã¦6�ªù×’>ðƒ¥)'?¥ ,¿‚Ó\ÿ#F_É,û)û-[%mL�*Ï:ëÍoƤ¯ýyçᇵSN9úh|k2ÿ#¯`ÔjîÜ³ÏÆDñOzë­xb榛¾ñ ü‹çwñƒa¸}2r|ù’Kþú¯ñÊÝw¼ãì³1�¾’>µ 3fœqÆ…fÙ/~ñ£á ¿›oþû¿ÇTçÍ7ÿú×ð›÷#¥X�c‚þ’K®º Ûýqî¹ø�½ÈnÑ+~Ð .mm92ÿ]VÙOñ+'žxá…Ÿÿ<ÞðøãxüË_¾ë.Dì1!|ÑE7ߌW¨ÞsÏe—áÛ±²Ì�ûš×`bïÇ?>üplï 7¸ Ýù7 /~įŒC‹W\_zéç>‡ðÏ?ÿ5¯?ñדâ¤ãÇrˆÿ¶¼LòOœ8~|­¯{Šñ+ÛÊE¯·­­xeÿ'?ù«_ÝqG–�tÒí·ã ßþö5×àÇf?íé�Ä�ø�;×ÝrÑE^ø¶·eÙg,X€ýJ/Æ!î/¾øW¿Â«R§L¹þú¿ù›,ûÒ—n½U8ˆ��7ï„ðäØG?zå•h»»ÿõ_1áò‰OÜ|³7iâ"•O--#Fß퀷Bà†�›n ,[¶Üy'&Âÿöo¿ô%´á~Ë6aÿñäÜg>óÍobbàu¯;öXí‰8ÄñÔ© b\–ýú׿ú•C›81ËF�Jm±xô-pÆ�ïèpSÒ~N~úÃ�‘µ0®¿õ-<Ã� P<__{Áv_zéÿþߘ89ÿüsÏE½‘¸–8�¸È#áþw½ëúë10dÈ7¾�obýë’IyKÔŸáË•ÝéçÌ9㌿ø äÖ—¾„¼E»<>ã ðúésç†Çµˆ<ؽâVÖÚÿÁöÃÈ+1‹úeˆÌW¼âíoÇy"˾ùM¼š]–ÇûÎwÜ«„·m÷Ï?ó™÷¿ÿu¯Ë²¹s'MBlìÙ³y3žT½á†+®€Ý­·Ê”¥ ¸ÉÄO}ê]ï*>ñéõn _+Î…ž{.¶"?�ïm‘�>Љà›oƧLbO3{k·†‰º½}ËÔ©Èã÷½o ˜>½˜�O?ýÿ�7m|øÃW_]œ0½ývÔÇ9s~óìÙ™gNž\z+öóçÆ¢ÆÖ;ñÄw½ ç©“NúêWQÇ䯄Çÿæ7Á÷¢E+V@Ë-—]†ü™;wÂlßîÝÛ·ã<ý�ÿxíµ¸à›ß ŸÅuþ¿øÅÿñ?ðÑ–Ø´&LñFœÇ¯¾úž{0Á* &¤qƒÃ3Ï<ôÞXóñ�ðƒ8ÿ~¸;¯!^qК5=„‰ïë®{ÿûñæ—ðMÀÄç›ß|òÉÅW»ã™f¼©äüó±ŸÅc‚þž=‡ŽÚøéOã� ~™8çù«®ºürL ¿ó�_þ²ŸÆñ}Õ«ðjü‹/þÒ—n¹úÓOªâdÅ |DÎW\ñÍozT¿vþù¨o¸].Ʀ91�þž÷\~9nL¸ýö/Y˜Gü\z©óÿ¾÷]}5>QrÁgŸ û±c]]ܼù‘GpÃÀÕWãåÞ~BÛûõ«qƒßßúw7(\{mœ¯[oíé™3ÇñUüØG[òò²Ë®¸Âñõ¥/ _ðyÅçŸ�ëœ�;oºé+_Áq:áœ×÷ïïìĹóÿý¿Ë/Ë[²¬ü%pwÞ}ßûþìÏfÍò[ï×zzV­B<§º_ýjÜ€oÆ{K¬¥ëŸ«7Þø� n\}¹þ`|=uµucÊ”xÝÀõÛ¸qµ®ãà»ÖÒÚ:q¢œcóvÓ§wtÀo[Û¸qˆ³ÖÖ�V’<:×É dÀÊÎ?Í­ÀÏ÷ßôŸ� 9þ±¿óvƒ·Nþó\’W�ø$i²Îü&Ð2ÿ˜¸þaýaý)VÆ|•Ìõ¢—Á®?C¶ô/ùKzY/:wÉ•�FüOÿŽëæðßݽs'¾å¼cÇž=˜RkmmiÁS0Ýݽ½ø}„I“0±>e•DÛñëîÞ±ßEݱcï^øik6 ~÷ìéí…/øÅ“¥ÐÅ–´ÿ˜u™mûÓþÝøîîgŸu¼îß�ýim6 OÿàÇTü�9~ü„ ¸ Ü?k^Yíªì¹³­wÿ÷ïÇÄÁöíÛ¶¹—5�ê[€ØÓ· mmżØë0– õ‹ÍOÏŽx²sûö½{‘)?½½Ã†9?ííµýx�Å5›üÀÏöí;và Ía} ðº»Ý”Ü„ ‡ËŸ¢Ï|Ïî£û4¬ÅUw÷öíÈÛÎN—§cÆ Ž=íé9xñ<¾oqq]»~å÷8¿^ö¿¿oñœÃ†9~6 /ƒoi|ÜöÔÞþòvæ÷b ëµ�ÿoúLÀbq|Çž¸•-À‹ö1ZeAÿû]„z>ûY™¶;ùdÜ€òÐCßý.nŒˆOúy/+Vüë¿~á Yvî¹ûXñÉPoc]ÃDØ·¾õ‹_¸'~;Ìåuœ'¼°7´,^ü¦7ÅžP¶ú¬e‡íùÑ�ÀÞHRdâñÇÁ\–�wžg.�uõÕwÞ‰ û%K‰˼UqÝsË-˜½å–«¯Æ“üU—sιøb¼ùçW¿Zº4>q.ˆ£Fyd-¾>ðÇW:úð %K¾ò¼«ä[ߺürLØÛwƒÁ­·Þ}w~âõ¯ˆáü?úèÝwË-%¢Ç Ç7{v±^ˆ6Þ¶´à "®,i­º¡ùHí¿Œki5*Ã#F´ô-bÅ– �2@žopöŠŸAãÒØõcö�þc¼’ÿâHùïôkõÈ1ÖŒ¿ü_@Ì¿x�ˆåN5Y—ùÇücþùLbýquâ¹'Ð%=‹)8À‹—$0°Fÿ.=ml¹‹õÈ¿‹¨þðëûcU[Œ?ÄóÏR­µlrõÅü³E”µþüWÿ’eÖ¿àÕ¿XÒÇ£ž'ÐÓhU4r¹éã oغuݺU«²líÚ vír7¾`‚gãÆgžéîÆ'8fÍ«°,Àˇ«ø£í@èì|漩`åÊ5kðf�Ñ£q ”{…ûîÝ8NS§â[æ³f¹ã2Ø“r��ëÖ­^ ÿ6àüØÜ1|øîÝ;wfÙ¾}Ø¢,›9söl¼Êßpìm¨Æ_OžL_±bùò•+ñ’Þ^|¯P_»w<þfΜ3§1Ûëü¯^½jüoÞ¼{7nêÿ[·îÛ‡7ÀÌ�;g¾õ>yò¸qU&”«q³.æO϶mx•þÿøØck×â¸ámß¾mÛ6nÄ Q'âÓ0G�Ì/¿™'æOæýëç�‡'ó¿úU÷.…… /¾¯´¿ãŽ�}̽bÞןeEøz‘öÈ ƒÅ€<�þ«þ%ËNë_øû—õïëqÿþäßßüýap`þÙ`ýaýåù‡çž^ÜçŸçžM°í¦íä+kà"ýî}ä¿ZDU³–¨M·ä¿£Õ¬Ó¼‹†üWc´šµ°œnÉ5F­ÖUyM¡Á×ÈÌM�IÏûÁ“ÔÓ§c¢ ­×à›×�l�2u70´ê£ÿ”ý�7y2ŽÀqÇá9Ùú–�ìÿ¸qÓ§c¢ù¸ã\[Ï Äu#GâÆ•¹s�>ßþÆò|øŸ5kÁøwÍõïö9ÿÑ¿ôœÅÈ‘'vX–½üå§žŠ6¿h¯þÏÛÊzoïºu?ì'ÎEþÚמy&¾MïÙMã[Ùã—jýi<Ãô@Èxñ1`½þ·îyÕ¿è_ÎÞV†kÛ‘ÿjUͺ6÷Ð’ÿjŒV³&ÿŒ¿jUÍZcŸùÏø«QÕ¬/•ø‹¼Â½H�ÜIU”¼gŵÚUÝ"+®ÕŽþ«1`åÕjWÍ»BVGÿ`@c©ºÞʫծêXq­vô_�+¯V»jÞÿtóðøü¬®†XÍÚr|«!V³¦��jŒV³Ö½#§-VbSÍZFÕj«!V³®åWtÕ«Y‹�Zm5ÄjÖ¡ßuëxà—¿,JñŠþÓO?ê(Ë›+PG‹£Þ«†XÍÚ²uÕ«Y[üÓ† �2@t¬×ñV;ÝcÑŠkµ+¢ë=+®ÕN÷X´°âZíŠèzÏŠkµÓ=-¬¸V»"ºÞ³âZít�E +®Õ®ˆ®÷¬¸V;ÝcÑŠkµ+¢ë=+®ÕN÷X´°âZíŠèzÏŠkµÓ=-¬¸V»"ºÞ³âZít�E +®Õ®ˆ®÷¬¸V;ÝcÑŠkµ+¢ë=+®ÕN÷X´°âZíŠèzÏŠkµÓ=-¬¸V»"ºÞ³âZít�E +®f§N [ï$Ð7ß~‡ýÛî�!ÿ` Œ²tßWV;òOþé| 5Ö¼²Ú½TòÏÊGÈw¹ïŸ¸ðke«ÆI¼W¿Ö8oedïÕ¯•­'ñ^ýZ㼕‘½W¿V¶jœÄ{õk�óVFö^ýZÙªqïÕ¯5Î[Ù{õke«ÆI¼W¿fóÖÕ•e�>úðÃøÄ‚þ%Ë^ýê‹.zë[³lþüØ—À˸¨£ei3%Þ¿_{)ùoæ¾Ò dà…Àõ:Þj÷Rùû'u¹ÿüý…¿¿¤²£,·Ö«ó�ùÇü+çYJbÍ+«ó�ùÇüKe[YnÍ+Íî¹W¸—]T“¤IXC_ ±š5ýÇ&ÿ®¬ÄÙ©cµ¬q†Œ?äM<:jeT5ÝK%ÿ�OU.”,,6žÅgÞ†þól4�ü7Ÿó¼GòŸgC_Çùk_ûéO÷»huûºÅKýø¿Ð�·� �2ðBfà¥ò÷OêpÿãaË_‹qmŠÍêròg˜ü»«Û8;Õã,5‚ñg˜ñÇøCÎÄ£#•MÕåÌ¿8ÃÌ¿wþ©O W}1f˜zñ° ­jõöóýôÆò_+:5ã�ñ§ÅHm=ó¯6?µµ/¶üÃþ 4£j3F- d€ �2@È Ïüûo Üü¯%òOþëg€ñ7Ð_+˜õGß`Lœ’ò_?¬¬õGF¾°ëO î�À&"Ðã‡:.ÕÇÙhÓqè?ƤÎ[lTY¦ã�ÿ2kþÊ鼉�*ËÈ?`ýIÇó¯œ5Ì?©1nò²¹ýK^Âu2@È d€ �2@šÍ€\¿KË¿ÿÀ@ì(Ä¥:o1¬²LÇ¡ÿ2küû[�›ke™ŽÃø+³ÆøÓã&ÆZY¦ã0þʬ1þô¸‰±V–é8Œ¿2kŒ?=nb¬•e:NíøkI]¸kÀ©q8´n3ãŽÃ]HáÐ?HO,¦x#ÿŒ?æ`ý km¬Ÿª#¬¿õ·³‰Ù�É´ã?0t}4ý׎?�Á�Y�ò_ëús`Ñ¥�fü1þé¿ÿô ˜ó�ùÇük\þÉß]Ò†Ùªå_jÿáï?.–øûG˜S±~*�˜µÏ)ÞXXXÀëo¬Þ†²Taýeý­õ÷G*nš}þI~=½�a „ýxáТŒ‚-¥–~|ý×NÈ�YÆ_<“ÂH ûñQÌ?æ_­b9Š˜ñLrLýgÿâY ëu˜oÒ—š½ØIë¢×ý YU¼ªöâWZúw˜KVT峪½ð.-ù'ÿˆÆŸ«ÊU󩪽ä�´Ì?æó�õ‡õ÷ÅY¥ÎK^Ÿ‹\oã5ÈùÇŠkµ+oý—9ñ/YyµÚ•}‘ÿ2'äŸùï® ­yeµ+Çó¯Ì ó�ùÇüãïßîï·x…,V�?•ú;dKÿâ~œ(î{d€ �2@È d€ �2@È d€ �2@È d€ �2@^: ­º«r'Mjœ¦O�³Ê5|Moõ“²Óð5} ×*×ð5½ÕOÊNÃ×ô)\«\Ã×ôV?); _Ó§p­r _Ó[ý¤ì4|MŸÂµÊ5|Moõ“²Óð5} ×*×ð5½ÕOÊNÃ×ô)\«\Ã×ôV?); _Ó§p­r _Ó[ý¤ì4|MŸÂµÊ5|Moõ“²Óð5} ×*×ð5½ÕOÊNÃ×ô)\«\Ã×ôV?); _Ó§p­r _Ó[ý¤ì4|MŸÂµÊ5|Moõ“²Óð5} ×*×ð5½ÕOÊNÃ×ô)\«\Ã×ôV?); _Ó§p­r _Ó[ý¤ì4|MŸÂµÊ5|Moõ“²Óð5} ×*×ð5½ÕOÊNÃ×ô)\«\Ã×ôV?); _Ó§p­r _Ó[ý¤ì4|MŸÂµÊ5|Moõ“²Óð5} ×*×ð5½ÕOÊNÃ×ô)\«\Ã×ôV?); _Ó§p­r _Ó[ý¤ì4|MŸÂµÊ5|Moõ“²Óð5} ×*×ð5½ÕOÊNÃ×ô)\«\Ã×ôV?); _Ó§p­r _Ó[ý¤ì4|MŸÂµÊ5|Moõ“²Óð5} ×*×ð5½ÕOÊNÃ×ô)\«\Ã×ôV?)»ÿ¹'ÐEQ~t^žN·§XâuÂ3TïZ—õ‡õ‡õÇçëO¼Nx†ê]‹ã²þ°þ°þøœbý‰× ÏP½kq\ÖÖÖŸS¬?ñ:áªw-ŽËúÃúóB¬?ÏM O9øQ0â¡]¶…$ ø¸•—Ò><*š·Îøcü�æ_ór.ï‰ùçØ`ü壢yëŒ?Æ`þ5/çòž˜Ž Æ_>*š·Îøcü�æ_ór.ï‰ùçØ`ü壢yëŒ?Æ`þ5/çòž˜Ž Æ_>*š·Îøcü�æ_ór.ïé…�Cq‡ˆlb~³ýzr ñú¿����Z}æŸc§k!£¼þåõ/¯yýËë_^ÿV;“ðüËó/¨5¼þ(2Àë/^ñú‹×_¼þza_%'Ћå|à½úO÷ ú¯÷„DþƒÆ㯾 ¢Áˆ>Ö?æó�ùWÏ$¬?ƒÁëëëëOõD£úðú�õ—õ—õ—õ—õ·êÒ<ÿ <ÿðüÃóÏ?<ÿðü3°[‹ê;ñüÓ˜óOÓ&Ðë;ìEÈ d€ �2@È d€ �2@È d€ �2@È d 9 ­êFîdH�Óô©qV¹†¯é­~Rv¾¦OáZ徦·úIÙiøš>…k•køšÞê'e§ákú®U®ákz«Ÿ”�†¯éS¸V¹†¯é­~Rv¾¦OáZ徦·úIÙiøš>…k•køšÞê'e§ákú®U®ákz«Ÿ”�†¯éS¸V¹†¯é­~Rv¾¦OáZ徦·úIÙiøš>…k•køšÞê'e§ákú®U®ákz«Ÿ”�†¯éS¸V¹†¯é­~Rv¾¦OáZ徦·úIÙiøš>…k•køšÞê'e§ákú®U®ákz«Ÿ”�†¯éS¸V¹†¯é­~Rv¾¦OáZ徦·úIÙiøš>…k•køšÞê'e§ákú®U®ákz«Ÿ”�†¯éS¸V¹†¯é­~Rv¾¦OáZ徦·úIÙiøš>…k•køšÞê'e§ákú®U®ákz«Ÿ”�†¯éS¸V¹†¯é­~Rv¾¦OáZ徦·úIÙiøš>…k•køšÞê'e§ákú®U®ákz«Ÿ”�†¯éS¸V¹†¯é­~Rv¾¦OáZ徦·úIÙiøš>…k•køšÞê'eâ?÷º(ʯ˜À‹G°4öÅôb¯8!ÿŒ?æë믫�ùŸçžxþåõ¯ÃW¬ñú“ן¼þäõ'¯?såéPyýÉëO^òú“ן¼þ,žiyýÍëo^óú»XûZ”ן¼þäõgõëÏç&Ð;!=^s.¼¿p�þ#�-À!ë¾OþÉ?`üùœhæóÏ±ÍøkfÔy_Œ?Æ`þùœhæóÏ±ÍøkfÔy_Œ?Æ`þùœhæóÏ±ÍøkfÔy_Œ?Æ`þùœhæóÏ±ÍøkfÔy_Œ?Æ`þùœhæóϱݘø«ü ÷ꇾ¸ár§KuœzGО9òïî4ÊsÒØuÆ_ž_ÆãONéù¸hÜ:ó/Ï-ó�ùÇüËgD£×Yò ³þ°þ°þä3¢Ñë¬?y†YXXòÑèuÖŸ<ì?¬?¬?ùŒhô:ëOžaÖÖÖŸ|F4z�õ'Ïð‹­þD&ÐméUo*¿¢(O/Öé?d$Ö'ÿ¶8 ¹cü…¯È ²ñÊø³ñ²Ëøcü/©Â±ÅóÏÆSÈ.ó�ùÇü ³"ß·åë��§<³Xgýaýaý ³"ß·åë��§<³Xgýaýaý ³"ß·åë��§<³Xgýaýaý ³"ß·åë��§<³Xgýaýaý ³"ß·åë�ã)2�/–§VKÃü!©¶Nÿ1¾È?ã�ùç3ƒõ'^'=Cõ®ÅqYXX|N±þÄë„g¨Þµ8.ëëë�Ï)ÖŸx�ð Õ»Çeýaýaýñ9Åú¯ž¡z×⸬?¬?¬?>§XâuÂ3TïZ—õ‡õ‡õÇçëO¼Nx†ê]‹ã²þ°þ¼ëÏsèÅÃS~Œxh—m! >nå¥ôŸÏ‹¬‘ÆóO²AoY´ŠZäP³fýaýaý)æL­ë�VQŠìiÖ¬?¬?¬?Åœ©ÕcýÑ*J‘=Íšõ‡õ‡õ§˜3µz¬?ZE)²§Y³þ°þ°þs¦V�õG«(Eö4kÖÖÖŸbÎÔê±þh¥ÈžfÍúÃúóB¬?C¶ô/µ'o‹¡Î d€ �2@È d€ �2@È d€ �2@È d€ ��Ï=�žÚµªwÒ¤pB¹×jâk}+®ÕNóê­¸V»_ë[q­vš¿PoŵڅøZߊkµÓü…z+®Õ.Ä×úV\«�æ/Ô[q­v!¾Ö·âZí4¡ÞŠkµ ñµ¾×j§ù õV\«]ˆ¯õ­¸V;Í_¨·âZíB|­oŵÚiþB½×jâk}+®ÕNóê­¸V»_ë[q­vš¿PoŵڅøZߊkµÓü…z+®Õ.Ä×úV\«�æ/Ô[q­v!¾Ö·âZí4¡ÞŠkµ ñµ¾×j§ù õV\«]ˆ¯õ­¸V;Í_¨·âZíB|­oŵÚiþB½×jâk}+®ÕNóê­¸V»_ë[q­vš¿PoŵڅøZߊkµÓü…z+®Õ.Ä×úV\«�æ/Ô[q­v!¾Ö·âZí4¡ÞŠkµ ñµ¾×j§ù õV\«]ˆ¯õ­¸V;Í_¨·âZíB|­oŵÚiþB½×jâk}+®ÕNóê­¸V»_ë[q­vš¿PoŵڅøZߊkµÓü…z+®Õ.Ä×úV\«�æ/Ô[q­v!¾Ö·âZí4¡ÞŠkµ ñµ¾×j§ù õV\«]ˆ¯õ­¸šÝ =�.Žª¾jAÛQ«žþÁ@–‘ÿj¯º°Æ—fÇøcü1ÿXXY«¼jH;¯Xõ<ÿðüÃóÏ?<ÿðüÃó�õ¬9xv<ÿòüËó/Ï¿<ÿòüËóïà�W­H<ÿòüËó/Ï¿<ÿòüÛÌóï M §Nt®¬»ÄNÙ4RNÿ8­�ÿ秬dã�ñÇücýaýiæe�¿¢`ýeýeýeýeýeýõg…æ­ñüÃóÏ?<ÿðüÃóOóÎ:ÞÏ?<ÿðüÃóÏ?<ÿø³BóÖxþáùçÅ|þ1L »À)¨yi—÷DÿŽ òŸ�Šæ­3þ`€ù×¼œË{bþ96ù¨hÞ:ã�ñ˜Í˹¼'æŸcƒñ—�Šæ­3þ`€ù×¼œË{bþ96ù¨hÞ:ã�ñ˜Í˹¼'æŸcƒñ—�Šæ­3þ`€ù×¼œË{zaçßPÜ!"›˜ßl¿}œG¨µ¦ãÐŒ?�·Ø¨²LÇ!ÿeÖÜ“åµó&6ª,#ÿ` Ì‹—0þ<~M�o[kMÇ!ÿ1þtÞb£Ê2‡ü—YcýÕã&ÆZY¦ã0þʬ1þô¸‰±V–é8Œ¿2kŒ?=nb¬•e:ã¯ÌãO�›ke™ŽÃø+³ÆøÓã&ÆZY¦ã0þʬ1þô¸‰±V–é8Œ¿2kŒ?=nb¬•e:ã¯ÌãO�›ke™ŽÃø+³ÆøÓã&ÆZY¦ã0þʬùøK>�.ÄâÕq c°�ÉtXµQ!ýƒÜ÷Bþ«EãÏåR5Ö˜EXXXyþáù—×ÕΤ¼þàõ¨5Å«�Üh¼þïc d§VŸùçØ©ÆZÈ(¯yýËë_^ÿòú—׿ÕÎ$<ÿòü ªE ¯?Š ðú‹×_¼þâõ¯¿^Ø×_É ôb9x¯þÂÀ}�þë=!‘ÿÁ`€ñÇø«ï‚h0¢�õ�ùÇücþÕó ëÏ`0ÀúÃúÃúÃúSý‘Á¨>¼þcýeýeýeýeý­úƒ4Ï?ƒÁÏ?<ÿðüÃóÏ?<ÿ ìÖ¢úÎF<ÿ4æüÓ´ ôú;G‘2@È d€ �2@È d€ �2@È d€ �2@ÈhC«º‘;Rã4}jœU®ákz«Ÿ”�†¯éS¸V¹†¯é­~Rv¾¦OáZ徦·úIÙiøš>…k•køšÞê'e§ákú®U®ákz«Ÿ”�†¯éS¸V¹†¯é­~Rv¾¦OáZ徦·úIÙiøš>…k•køšÞê'e§ákú®U®ákz«Ÿ”�†¯éS¸V¹†¯é­~Rv¾¦OáZ徦·úIÙiøš>…k•køšÞê'e§ákú®U®ákz«Ÿ”�†¯éS¸V¹†¯é­~Rv¾¦OáZ徦·úIÙiøš>…k•køšÞê'e§ákú®U®ákz«Ÿ”�†¯éS¸V¹†¯é­~Rv¾¦OáZ徦·úIÙiøš>…k•køšÞê'e§ákú®U®ákz«Ÿ”�†¯éS¸V¹†¯é­~Rv¾¦OáZ徦·úIÙiøš>…k•køšÞê'e§ákú®U®ákz«Ÿ”�†¯éS¸V¹†¯é­~Rv¾¦OáZ徦·úIÙiøš>…k•køšÞê'e§ákú®U®ákz«Ÿ”�†¯éS¸V¹†¯é­~Rv¾¦OáZ徦·úIÙ…øÏ=�.Šò+&ðâ,�}ñýƒ�Ø+NÈ?ã�ùÇúÃúëê@cþçù‡çžyýÁëßðk¼þäõ'¯?yýÉëÏÆ\y:T^òú“ן¼þäõ'¯?‹gZ^óú›×ß¼þ.V…Á¾åõ'¯?yýYýúó¹ ôÁNH�ל ï/\£ÇHc pȺï“ò>'š¹Æüsl3þšuÞã�ñ˜>'š¹Æüsl3þšuÞã�ñ˜>'š¹Æüsl3þšuÞã�ñ˜>'š¹Æüsl3þšuÞã�ñ˜>'š¹Æüsl7&þ*¿Â½ú¡/n¸ÜéR§ÞôŸgŽü»;�òœ4v�ñ—ç—ñÇø“Sz>.·ÎüËsËücþ1ÿòÑèuÖŸ<ì?¬?¬?ùŒhô:ëOžaÖÖÖŸ|F4z�õ'Ï0ëëëO>#½Îú“g˜õ‡õ‡õ'Ÿ�^gýÉ3üb«?‘ t[zÕ[†Ê¯(ÊÓ‹uú‰õÉ¿-NBîá+²B†l¼2þl<…ì2þÅKª0BlqÅü³ñ²Ëücþ1ÿ¬È÷myÅúcã)Ï,ÖYXX¬È÷myÅúcã)Ï,ÖYXX¬È÷myÅúcã)Ï,ÖYXX¬È÷myÅúcã)Ï,ÖYXX¬È÷myÅúãxŠL Çà „å©ÕÒ0Hª­ÓŒ/òÏøcþùÌ`ý‰×IÏP½kq\ÖÖÖŸS¬?ñ:áªw-ŽËúÃúÃúãsŠõ'^'åWäUñªÚ‹ŸT[¯ª}ʯȫâUµ?©¶*^Uû”_‘WÅ«j/~ÂVp†ö/–o«ä|)8E­ïYíüÛš×jgóê­¬¸V;�l[³âZíl^½•×jç‘mkV\«�Í«·²âZí<²mÍŠkµ³yõVV\«�G¶­Yq­v6¯ÞÊŠkµóȶ5+®ÕÎæÕ[Yq­vÙ¶fŵÚÙ¼z++®ÕÎ#ÛÖ¬¸V;›WoeŵÚydÛš×jgóê­¬¸V;�l[³âZíl^½•×jç‘mkV\«�Í«·²âZí<²mÍŠ«Ù Úèš#ÛnÕoEÿ` úrõ3^IþÉ?ã�ù§ý T¬ƒ×cýaýaýaýaý庺¿ɲžþ%ˤ/mj"]ãSênÞ#üËVˆ^p¾Œ¹ô¥•qÒÛØ8ú'ÿŒ?W$?$�¾ä“È¥/­Œ“~ØÆÆ1ÿ˜/Öüs±�ã;t(Ö‡õ/¾Ñ¿dYKÿfKãú’‡Z¾6j è ¸¼w•·QLÇqÉ?ùgü1ÿXÿåÊ#^'%eýeýeý}éÕßA›@O&—VŽØ”M#åô�´&ÿÏÏiÕ=ÙEþŒ¿çãgæÏ<ÿñüóÒ;ÿ ïù2a¾·ñ?ô�ê_²ltÿâåá0‚#Àt…¨ò‹ŒóöêËÈÔ8Ñûñ8†Î7ý ;¾Mñèù+™'z?žü3þ˜¬¬ÿˆ¹ñlwÿ’e{ú/Ù¿d™L¨K�•ºÚ¬õ¾\õo–Wï‡þÉ?ã�ùÇúÃß¿üY¡yk<ÿðüÃóÏ?�:ÿ&Ð]ºŸOšWø¼'úw\«jÈ?ùŒ¿ª™38öÌ?Ç#ãopâ©* ã�ñ˜U3gpì_Øù7Tþ°Iïlì‹\Ú7"ÃyEì4œ”�6N|ÅZú'ÿ©¸y؆ñöCûX܉ŒñÇø“xÑâ(e§�“X‹µŒ¿æÇߘþ%ËÚúÿ9/‡ÇIŽ{(÷}^y.üšÎ›·­µ¦ã�ÿ:o±Qe™ŽCþˬùºÓU‘‘0P‹1Æ_Œ=nb£Ê2‡ü—Ycþëqc­,ÓqeÖ7É'П3èÿ .FaJ&§£xà¥F…rúú“!om'#ÿenìÆã�ùÇú#?`V©¬¿`€ç{Ì”-yþáù§žóOwÿ’eòMóCûÿOXÏÂ8“~‘Ú8±—ñõÚËxÁ“¶^</¸˜'@IDATŽØÉ8iµqb'ãëµ—ñ‚'m½x2^p5±“qÒjãÄNÆ×k/ãOÚzñd¼àj8b'ã¤ÕƉ�Œ¯×^Æ ž´õâÉxÁÕpÄNÆI«�;_¯½Œ…k•køšÞê'e§ákú®U®ákz«Ÿ”�†¯éS¸V¹†¯é­~Rv¾¦OáZ徦·úIÙiøš>…k•køšÞê'e§ákú®U®ákz«Ÿ”�†¯éS¸V¹†¯é­~Rv¾¦OáZ徦·úIÙiøš>…k•§ðE.?Ô·´ ÖÒRF•?$¥•qÒ—6”K_Z± =ˆÞJ¨h!ã¤{éKÊ¥/­ØÑý«êé?þ¼�ð&mÈgJ.vÒŠù/2 ü0þÅÈp=Éi%^¤/m(—¾´bú=ãï…Ãú—,“'ÐÃãUµï�o|¤¦��²K5|Mo÷·Ôð5}Õ.Õð5½ÝSÜRÃ×ôqT»TÃ×ôvOqK _ÓÇQíR _ÓÛ=Å-5|MGµK5|Mo÷·Ôð5}Õ.Õð5½ÝSÜRÃ×ôqT»TÃ×ôvOqK _ÓÇQíR _ÓÛ=Å-5|MGµK5|Mo÷·Ôð5}Õ.Õð5½ÝSÜRÃ×ôqT»TÃ×ôvOqK _ÓÇQíÒÿ¹ ôPá!‹ˆ¤þp{M/vaKÿ` dý¢TãWÓÇ<8/ô_dZ˜*J5~5½ †-ãŸñWŒ4‰�¢T‹/M/¨aËøcü#M"¤(ÕâKÓ jØ2þÅH“)JµøÒô‚¶/–øóû¿ßVöSZáKú~¼[¹ØizoGÿ!Wè ŸÒ _ÒLj\ì4½·#ÿ!Wè ŸÒ _ÒLj\ì4½·#ÿ!Wè ŸÒ _ÒLj\ì4½·#ÿ!Wè ŸÒ _ÒLj\ì4½·#ÿy®„Gió:¬§äÐäm=¿y©_×ôÞ²¸Fÿ` È‰ë¥¿š>æ2òOþ‹‘&‘R”jñ¥é5lŒ¿b¤I„¥Z|izA [Æã¯i!E©_š^PÖñÇø+FšDHQÆ×sϨ„ Ž—ŸûõzÖdjãÐ?ˆñ—Æ,ã2òïx©Í#ã�ñ��¸4žk1)ó�ùjÇëëO/riE/8"—¾èSòÐNúb޹´¢ÇI_ôbÊS}±Ç‹\ZÑ ŽÈ¥/ú”<´“¾Ø‡ãE.­èÃqҽ؋|ß¾]»¶lɲuë6mÚµ+Ë6¬µ5˦O?ì°CͲ‘#]ž…ãGZÑ ®È¥/ú”<´“¾Ø‡ãE.­èÃqҽ؋üÀ�}ûzz²¬§gïÞÞ^L|Àgw÷Ƈ‘}ˈY6l˜“Ëø°|Á½ôEŸ’‡vÒûp¼È¥}8Nú¢ûPžê‹}8^äÒŠ^pD.}ѧä¡�ôÅ>/riEŽ“¾èÅ>”§úb޹´¢‘K_ô)yh'}±Ç‹\Zчã¤/z±婾؇ãE.­èGäÒ}JÚI_ìÃñ"—Vôá8é‹^ìCyª/ö©ñ¢ÛÐÞëk_·x»Ô¯ÿ3µy$ÿ` CqiÌ2.cü1þÀ@í8bþ1ÿâ—ÆkMLÊúãX©Í#ó�ù��¸4–iqÙ‹;ÿž›@�ïü`H‹ üÃc0<ÔÆ ÿZ[q£Á¼y³gãÆÉÁ q¾ø{ékv¢—qÒ—ñ)yhÚK_³ƒþÀÇÇŠe>æÏŸ3gÒ$TX ª¯^âÖd{EŽQùq";чý”�Èeœô¥ékv¢—qÒ—3‘ÔIÁ+·²w±jã­�‹üx©¾&Û•¶¤ÇMm^É?ãqÂü«�'a�aýÑ"†õ—õ×U–0wò}žxþqQÂú›Ï m}°Ï?‘ ôøAÂ"de´Ó€¶#i=ýǸ!ÿŒ?æëë¯;óðü?OÆÎÕdq\žxþáùç…þ‘óC˜ó)¹f'y/v‚Ê¥/z±—6%½´¡�à†úP.ýÝ»·oÇ+Æ;;�„QÐÈhL$®Z…'¨wïž>è­­2µålê?/žSrÑKÚÉ~…úP.ýp|8Nú©6/¸b_>;xvóõAì¥ qE¶¡]Ù?,ÊnbŽü”\ôÒŠ]w÷–-k×âF ÑÀC–µµzèá‡gÙGÌ™3eJ–�ƒiñ,Û±cãÆ•+³ì¡‡ž|cgåÊ'Ÿ|æ<¹} 3gf^ï^k‘qb#û%}чré‹ÞÛËZ±=ôЙ3g͆ Á~åÇKFàUõ[·>ý4ö§« cëÖ•+y$˼¥åøã³ìÈ#§Likóûí-ÝZ¸]¡^ú¡�lW¨åÒLJ㤟jÃñ‚+ö¢ÏË1a¼{÷–-àiëV÷~‚!CöïÇ�s纑2NpRmh—÷ƒ1¢åÒ}ˆŸ’kv‚+v‚Ê¥=âd÷î­[7nÏ>ëâ¦ÈÞþ[_t‚+}чré‹^ì¥MÉE/mh'¸¡>”K?/ãpä°îrÍKËkå ëÆÁƒ?þðS;’8n¸ôçiàG ŽKþÿÌÖ?9¿°þÆë$ëï@ˆóÊóÏ?<ÿ”Ï?ÏýãÂ#�|R¸ÓE�$\QšîÑ?Â3½�ÿj— Œ?-£Š±¦Y3þñK«bI�ù§e”0åZÍšùÇücþs¦V�õ'^Q„­žÄì¡\úá±ÐäUýKì ®Œ—>üãuÓ[·®Yƒ‰¬¼<Ü6è·lÙµ ¯¸N-2^üXüç±d|^†u‘ n¨—~ÌîùäÛ%þeÑ⯖Ø_.²ýy[g�ÿC4ÔK_Æçyÿùñb'ã¤Õäy\#-âbÇŽíÛq£E~Á«ê?|îÜéÓ³lìØ‘#ñä=öÎííS§bbýÈ#§N…ÔûïêÂËÓ÷ìÙ¿?/¯å?e7û�gÇ�8ÂÝ€ ôÙýK±=ì°,›Õ·àô'œpƧžšeG=gž¨—-[–/_½:Ëvî,f“ßÿâ‘?_ûßÿØC÷¿¯æâÔ˰Öÿ/´üCœ"+ŠÛånËÀôz>‹ìø^Œ'à†réû‘nM“?_ñn§ô±½²kµí Ǥö?´“>ý“‰…XËø1fâ2æŸVQмiÖŒ?Æó¯˜3µz¬?ZE)²§Y³þ°þÄêÏsO W£§|±^Õ€£ÿØá‰1k“‘ÿjUÍZ?俣լɿÆã¯ZDU³ÖØ×'Búçù/Œ‰�ô™ÿÕ2ªšµ~dšÍè/ìËÔ"—¾ìI(OõaËÔZö#þB;è°„òT?æÛ!ìÙƒWU¯\Y|UõøñS§Î˜�W(oØ€'Šå»Ý«VmØ{<‡î^± �éí”íÿìÛ‡'t÷îÝ¿ßM †g‘GŒhi‘o«c»öîíîÆ+ãwíÚ³SŒÃ†áåÅn¦”ÆŒ;v̘,=zÄôS<‰`b|OÏž=ð/?û·´Œ9jð�«ð*é]»vîÄ7¼{{‡ Áv<¸·oߣFÁo{û˜1nœuÿ…øð‹lŸß~lösï^ì÷�n»0±†§°Á“m9þb {í¦jÝv€u|c|øðaÃbÇO|øí*î§èóÛÙСÎëàSzCû–Ðãø�è[0ÑŽñ¹³—ýw}ÙgéíDÞ?,�°Où�í¿à`œ‹ ¯øßí4µýc¿&Nœ9sþü,[°`ÇÜXðøã’I.§vît·ŒÛÒû¼_àç÷ ýžžînÜX°sgWâØ�pvè�ÑÚ:v,ò£µñ‚£+û--ìdy?y»ÞÞ½{wïÆ“ôÝ} ârß>Ä'Ø >bÄèÑx#E[[k«‹OÈSxÈþ={\ŒãÆÄ¥øs<»üìéÙ×· ÿô-Îø9²˜±í‡uOÏîÝ;wâ‰îînä-¶Úá»ã‰¼ÇvãõÈgÉÁ–p?dû]4ÀÂÕ/ÜâžÇËÿq# Ž�«WØþƒ‡ A�7nâÄqãÀ›ÛŽýûÝ~ãvï;>ÜÓ·`\ýéíÅ9 ð1jÔÈ‘ËÉeûÃív#ðq©eËGú‚’/v¢‡½gëd°(ûÉÛÔZw£kYTÓå·×2’þcGÕÂ\܆üW‹¨jÖqÎóRò_�ÑjÖy¦ãëä¿£Õ¬ãœç¥ä¿£Õ¬óLÇ×É5F«YÇ9ÏKÉ5F«Y癎¯¿Tø/üˆ£"öDÌ®ªÌŠkµ£ÿj XyµÚUónÿC“þÁ€ÿ!¢*Ï){+¯V»”Ÿ”ÜŠkµKùIÉ­¸V»”Ÿ”ÜŠkµKùIÉ­¸V»”Ÿ”ÜŠkµKùIÉ­¸V»”Ÿ”ÜŠkµKùIÉ­¸V»”Ÿ”ÜŠkµKùIÉ­¸V»”Ÿ”ÜŠkµKùIÉ­¸V»”Ÿ”ÜŠkµKùIÉ­¸V»”Ÿ”ÜŠ[ÕN쥭ç™ØOÉ‚îO _ìSúGú){Á;iÅ~ÇŽ-[6o©o§O?¬oÁõÓС۷c²oÝ:7žiÓúõ˜`ž;èãÆaú&}�•÷�‰ÜgžY¶ìÞ{³lùr÷Êæ,?~Á‚,;ùä… 1·fÍÃÿþ÷øpqBßoYqmêÔùó/Æ+Ÿ§NÅÄTx Äÿþý]]x5ò½÷>ø ¾¹,Ëüù'œpÒI˜pܵ 7 üþ÷�?¾n�hkµmmxfzñâE‹ðºéqãF�н^Yü£ ÑÂm…Û‰W—ßsOq;³lêÔ£ŽÊ²ÓOŸ7¯££¼Ÿrûøã˜0¾çL¬­_ßÝ]Ô}KOð7lX¾‹¿ÿ½Ûÿ„0,üD˜ØK+8Ë—?ð&ôeâ<Ô‹]ØÒÝ� ù‡úÝï°Ý[·º'‰kí?0òøˆûÐ~ذ1c0AŽï~— ð�úîîòû%ãÃ~ðïöíÏ<“Ÿ¬„dz£Ã}…\ÆAùf'úÖÖŽLpÊÓä2~õêGYº4˶ms<õôàëçYöàƒ÷ÞûÇ?ú7ˆýÌ™‹á…ѣݓë‚/ziE¶¢Oµš}¹&a„?~‚âH_ô¾uˆÒ÷Ç6ŽÛÛÛÝ�‰ößüæÞ{cçe�èÖÜ #�ž�2*e'8e»¸Lü0Žð´t©›Ðu’òÿÓ¦-Xð²—!®&Ná¢ûw#¼�ðoϿЧôÁ‹¼R?ÿjtèýþ;ë¼LÈ>û즾ÅÇ�`b$&–½ý�!ˆó5kî¿Âá‚÷à•ðG9{6rrÔ(yÿþý¸¡eãÆU«}OHoؾ÷±¾oX7îøãñf ‰Ùn<çŽ7<õTWW>^��ÈÃÅ‹�8Ÿthowß°Ç8ØíÞí^M�ÛX–/Ç~£›VÆ“Ø��S¦à íí--xÃÄ‚§ô-h‡ Á'Ö¯_ºOt¯\éÞ?pðà¸q³ggÙ+^±h‘{ÒÜá�ð$yÞpCÀ¦M+V<ñ„ç_ö÷ÐCçÌÁå³fMžŒxÄ‹Î]Ä»W¬?ûì3Ï<ý4&¾ÁÐÝòôÓ®?uªã)ŒAáFüÈ8á±µuÒ$lÿ¼y‡†<=φ»¸Áöã=‚>Ž<ò´¾ÅÅ&â$äü#�B>àûL,âßõüq‡oüƒOñ+6ùq²?!NÞë)»pœ·\ÿáö ´n·àaû±½ÈÑÒœaòÏøcþ±þÄ«ÃàUbÖß8쿬¿¬¿¬¿ñê0ðúûÿÿÙR (öçJ-û¢nàNÿEF«õÈÿ@ÿpdüU‹¸¢5ã�ñWŒˆª=æ_UÆòöÌ?æ_>ª¯3ÿªsæG<_ù—ÿá€>Ž$¶}ieK¥/v"÷­Ë#± ['rçÍû õb'øÒ;‘û¶ìº;6oÆ„¯,ÀÁ·€'Mš8;wÈ¼ÒøÐCgÎÄ“§"ÇÙŠøÏðSÕ¿ø•Þ1±wâ‰/{&ˆ'LpçEøj1žœž9sáÂ,;á„#ŽÀʲˆÿ+Ö¯ÇÄ>^·ì–âþ‹4lgÌ8ꨗ¿_îÕÓòMvàÂväH÷døÂ…§�vüñx¡z/*[·vuyß°ñþ‹#\O¶[x•>¼áÜáòôÓ›6áÛÎR]ÂqbßÕµ}{þ‘O™2y2^%-ß*yØæûõÄ?ž“w–â9ÝâF�cŽ9ñÄSOͲß4)gØ>ð¹}ûš5xõþ£�>ñ&ˆ—/_·S®ø¶4–ý({ñücMöKZWî‡H'5q.82 [�‰ðgžyê)L„¯X‘€³B¼wt´¶bTüïÝÛÙ‰‰ìâëºaï^áÿ²—ÍŸ�ØkmuÂø¶<Æ#?�§x…:&¬Ý‹þekÐvu­^�'ÑwîÄĵø“íÆ´2&pÃeÖ¬Ù³1�ŽOàc 2vð;zt{;âtþü£ŽBÞN�:½oɲ)S¦OÇ«üåËà2nذ–¾áîÛá2­-zh ‡ñƒÿÑbTž'øG\ŽuÈ!ؾiÓfÌÀ„ûôé³gãSsçΘ�OLŒí¾™.ñ.udâÄéÓçÍÃö”)ùxOxÕ|O�{Óƒð#Û'-üç—öö3-ʲã�w7þ´·��z5¢oA+ß*—ñ¾uÇ{ ~…�íö_øÂ_>že;ý8Y«ÿ)Û'¸Ò—Ö£C2¸ùó/þì­THûˆ¼¥Û«¼¤ê:ýWe,oOþ]Þæ9©¶Îø«ÆWÑšñÇø+FDÕó¯*cy{æó/Õ×™Õ9ó#�-áÞµ¬Å@'ãk·:ýÇÔy‹�*Ëtò_fÍÿ¡��3U–‘0àè(3gWç­Œ“è8ô_o±QeùŒÿteþ•³†ç½nÄX+Ëtœ?ÝøC]qÕÅ×Ùß2N"y(va?'úPŽ~cýïß� Ø�‹_Ç“Ÿxµw{»{65¿˜¸Â«Ü1Qv𠞉ö[�éjL8Mš4}:žØÎ�CH?Ü/�àÖfÍš;o£G»¸‘q“ôe\kë¡‡â‰ØéÓŸxO�®_KøÛ´ ßBîîž?OèŽëžøÄx[lÛÚð„çÌ™‡‚ H·Å~»Ëþ‡ńی˜z˲ }7"ˆÝ3Ï<û,¾m\DÊ¥/cÄ7Hà ë‡^º7hÈ¶Š½·ëí[p#ų}‹hËíœ9‹c"|äHï°€Ï�;·ô-Þ¸xþÑGÏž� deûÄÒû?x1uêœ9G‘eO>¹u+žÐ–eëÖ�;ñé†3ÚÛ1a+ >éP¼ñÃiººðõz|c|ÌÄ[ø?ztGòwÞ¼‰±mùíAß%±vúü>@ïún+¤âxL®ãF›iÓfÏβ‰aYýø�ÓÞŽ|>xpãÆ|¼ ϡٮüvà¸~øa‡�ÙÓp\Þë¢åaÈ�ýûóû•ç,o+x²}a?o‹uчrôóÇKì7fYhöÃq¢åèÇü‡v²=iŸWù±ú¸¼uz]Ç¡ÿ{:o±Qe™ŽCþˬ¹ê„üJçMlTYFþÁ@-å¨aüéyc­,ÓqeÖzÜÄX+ËtÆ_™5ÆŸÄMßk¹°”)ƒ”>%µ-†Zö“¡0�¾°IñFþÌ?0ÀúS®¶eIªŽ°þ²þòüÃóoª>¤ä¼þx~¯?RuÛ*;9SH?<Þ";Ñ‹\ú¢·ÊÅN·gOg'&`·mƒ'Xc$&¢§MÛá7Š·¥eìXè1 ‹ tyB¶³sÅ àíÞ=u*&ŒG�ò¨aÌ_YÈ~OxU;&%E®í°1ñzÈ!sæ`‚qÝ:y ´›Xƒ¯¼Ù[Á?'N™‚ñ-ý·DÛý�5~ÐÏ/²½b/}± åÒß¿ß>Ü@²{÷ž=h÷ïïíÅ”üþý€ß}û¤¿¿oÁ�6xg„ úVü ®ôÓÛ K?>'‘K_pC¹è!Ǻ؉±¹ôóã4þó¸2^ð¬8b/ã­ãÄ./}ѧڔ�lGJŸ’#2�/a8åY¬€T¶¡0àã5dˆüÇã†ñÇü“ÊæL¬ŸÊ#ÖÖÖ_žRõ!%çù‡çŸfžú~ê‰/é�Û{iìrÜÿÁiŵÚy¿²FÿÂD¾Õ.Hò¶X'ÿ` dÅÒ��"ÿµ/CfŒ¿x&…‘ö㣘Ì¿Z�•£ˆùϤ�©°Åüklþ�u÷ÏÅmŠïP.çÙPÕ”~ òzüciÛ6<{îþ®Èoëºu«Wã[ÕC‡vvbâ66ié¾Ñ+ù�=pÀÄî¬Y˜ˆ;6ÿtn~?óþD&‡wÏE‹\öOÆ„rÑãÇò=g±ÅóîÝ{÷â Ü1c€îÁë•SÛ›ÏH±¿xA9& CߘŽÃÓ˜ÆÄ+ñóL _"uuU¶Èµ¡Ÿ‘#Ç�ÇÄ7&¡ÏŽÿÕ«Ý«ÜgÎloÇ òŠê®®ÎNì¿l§àMš„gϽ/‘‹�h¬r·o_gçúõYöØcùiWçOX/^|ÒIxU6Þl>ñ¦ƒ“O†·ýûï¹7cÈttWnʸÿþ‡Æñ8é¤Å‹q³ÆˆîÉhL†b¿’·©íuÖŽýØù+5Nä)ùvòäéÓñêulcñ‰ípÜ×­sOþËv Þ‚'žxúéxSƒÄ#4~ÄG>æD†vݺåËñ*ø7o“_;‘Évlݺe Þ@ÑÛ;mâ_èv\މdN8ᨣ�Ç<°l^ùž_0ѼqãÚµ«Va’}Íš�!LÀÏž½p¡«‡ê>ßOÙžòþ:û¼_¬{{Ù^×<¸oÞø°~ýªUxÅ?¾`Ž ¶Œ ñªö=ŽÃuÛäQúÝõŸKŠ{$ãD/#RrÑç[ð,önÏÊûâËxê*¼Î`ù|ÁÓZÙ.Í®¬/7Ñ‹+®ÕNð}Kÿž ¿FþÁ€ÏwÏL|�ñâÜÔ–ÆG1þÌ?Ök]µÚ•këO™ÝkåÕjWöEþËœ4Žÿäzl#"«? âÕ�¥0àùhöù'ÿŒ¿fg�÷Çücþ1ÿ|>4{�ùÇükdþ¹É ÕoágÒ—Vìdd(ûb'­ŒOÙ…réK+ã/”—û==x"U^ì NñÏïW&^×®íîvr ºÞ®X±i&®¦MsOª»?½Ò?¼äýc²ÿœ ÿ—ÿp“ý‘Öïù…äî‰r';‡ê÷CüË©b'¡éK+ãÅ^ÚñãÝ7—ÃW@‹^Zïñ°¢Íïÿðáx²Ê÷Õõ­[7lpÇŽʽ«Ë¿Ê“Ì[·®_�)ià:´ñãçÎÅ“ìùwøã¢ûwÛ%vÒB ;vlê[üvËÚ¼yîIr™89ZÜ 1}ºûæ|oïƒÞwŸb~È�;0A{ï½Ë—ã íã�ïèÀÄ´ÿ‚8¶î‰gÁÍox ûb'-¶?eçäb)mGnȘ7ïðÃñæ�ðM°Âv�?tèïŸeK—?‘°fÍ3Ï`&Mš5 Ë)ÿ"<ïýÐC¸Ñ~òvÎÖñÊe<ž·Þ»Û=v,>Un¿Œkk;äL€Ÿ~úÉ'ãÆ�í} â OÀoßîêGêÕô�¯ZõØc®Ý¶ |�zêÂ…øÔAþ&l“øÃ¾ä//î�OiqŒ«Výö·÷ßï߈!Xb—eî ùŽŽQ} ö_%÷ß$ïì\µêé§}|Õòl�+ž\›—§â*?"åGä°uÜ@âGŠŸ¼�³…&Ïk±ïÜšŒ¯ŠWÕ^ü Ô8¾YýÔöÓs ÿ` 9\Ǽ�òÏø‹eFsdÌ?æó¯9¹óÂükLþUž@Oýá!MÓ‹]½­†¯éëõ+ã4|M/8õ¶¾¦¯×¯ŒÓð5½àÔÛjøš¾^¿2NÃ×ô‚So«ákúzýÊ8 _Ó N½­†¯éëõ+ã4|M/8õ¶¾¦¯×¯ŒÓð5½àÔÛjøš¾^¿2NÃ×ô‚So«ákúzýÊ8 _Ó N½­†¯éëõ+ã4|M/8õ¶¾¦¯×¯ŒÓð5½àÔÛjøš¾^¿2NÃ×ô‚So«á‹^¦-B?áRb¯ÉÅNðB{‘‹þXŽýÁŽóöЊŸà{±ëêÚº¯€Î¿®.mm˜˜?~Ô¨òT´ÇÍãáÉ[¼PÏcºþñ"îgžÁ·¹gÍÂÓÒxÝɱGZô°.}|“yß¾ýû]ßáyÏnMü‹¨˜tïééî[DêZ÷dxK övΗkÅRüïÝ ÏÞÛœçSìCÿÀs–áEäÎÞáµxÑ{qÿázlSÌ?dãÆM™‚W¶c ó©§Ðâ»à˜àìêš?|�•u»l/&Þñ„ú°a‚/Ûë0äÿ~÷ ÿ°¼¼=x!ÿîÛó­­˜4\—ÇÁDîa‡-^|üñ8ŽwßýàƒxÂÙm'öO\?ø {²]ÆA‹ èCEÄÆ·Ëñèö³–Ù&´b®1>\ð-j3E\Ù.Øcìĉ3fàômmë×ãÕç]]@FûôÓü#^…>y²{}ôhØË+w#Iooè|Ξ½`Žs[›{Øåý+”K_ü”í�Fì€îþ ŽãÓÑ1y2Þ í¼yîUè=={öà¸wvnÙ‚#ôøã«V!ÿe2dóf|3~óæ™3ñdû”)­­îïŽ?± [÷÷PZÞÏ}ûvìÀ·è×®<ìƵµá[ìÇþì} ¸U•nå&d „0„„@H ‘ñ)ÚÔÆVPû©øbkãC¥±‘n[Àéi7jÛ jK 6m?Ô'8pBšA#cBS�$„Ì Iî»ëîo¥ªVí]ÿªsÏ9„ä¯ïƒ]{­µÿUõ×ZkWî>Uuè¬Yò¦€qã†/.ÞÛó_¿~øpYˆ¿ýöûï—|RìØqªÏåá8t¼Êµ_µWIhÕNÛ\+¬åç®~~œêGíu¼Êµ¯z•k_[µÓë¯rmí¸Ü^4jU=.µS ‹£rµóú×qÞ6Ç/¯ŽGzµkµEøHߪ_‡ð‘^qZm>Ò·êWÇ!|¤WœV[„�ô­úÕqé§Õá#}«~uÂGzÅiµEøHߪ_‡ð‘^qZm>Ò·êWÇ!|¤WœV[„�ô­úÕqé§Õá#}«~uÂGzÅiµEøHߪ_‡ð‘^qZm>Ò·êWÇ!|¤WœV[„�ô­úÕqé§ÕÖâ÷ýi&lªÐ~Þ–ÿœú‡ƒÚ#½ÚÙ–þ…ËŠôËRÄ/ÒÇ</ô_fZ™*K¿H¯¨¶eü3þÊ‘¦R–¢øBzEµ-ã�ñWŽ4��²ÅÒ+ªmŒ¿r¤i„”¥(¾�^Qm»ãÅ_q9 ?[=Om•/íç–aOåj‡ô¹]ûýË“ÉÏ<óÐC²@”û ¯Ÿ>}æLY˜›Ö¿åíý[Þß¿Ë2Ë+¹:hÚ4Y(×ó”ó“'U—-[µJü©¼èOll_dòÄêÒ¥Ï>+ éb!ÿ·›âi;hÐÖ­kÖÈÚOH[ÜdÉI¢_þ³þlåÊE‹„ñ<ûü¯YóÌ3ñ·ž¾­ÉùË�3îðàQ£vÛM¾A]|äÈ_“'Ë“æ/ùìÙ²`­›Ú?÷\¨*×VõÚ×ã_-Ï�Sõj¯íÆ�k×J¼k_í¦M›1Cž ×…óW-B+ãä“«W¯XaëbÙ2·/3R–+:V�«Î¿½þ‚aq„¹n’Mboqµ¯~µUySÿ±#LÅÓVqµ¯~µU¹Ú©\[«Ïíª Èµ×ñÚ¦ä2Bm¤Íñ‹Ò|ésËòý eNB¯,Eü"}̃ÈÈ?ù/GšFJYŠâ éÕ¶Œ?Æ_9Ò4BÊR_H¯¨¶eü1þÊ‘¦R–¢øBzEµ-ã�ñWŽ4��²ÔÆ×¶t«Ðᩈäz´W>€”5ý 1vâÒ˜e\Fþã¼”¥Œ?Æ_<ÓâÒrôÔõ˜u쨎ùÇü‹gZ\ªqƒ[ææ¨î³äßÃ_Ú¦»ñ—þ‡`ùµÞZ{í«^[+OõU^öVíY\µÐñª×vóæ5kd�U¾/-›ÚÉB¤¼ŠzÔ¨ðJè\ìRÿWÜ‘#Ç��-v>þø“OÊ«ª·nËÜŸŽKùYºôþûëëÖÉ‚QjÑ/]ºp¡Øç¯ö#F�š2E^=fŒ¼¤Úç_ž ½ï¾GY¶Ì~׺z[¶„WÝ/X°h‘~½[­äã“&M˜ ­=_é‹]ñüsIY®xåvР‘#³lÏ=8 ¸À*_Ÿ??Ëî¸Ã~…|ï½÷ÙG¾/ÏžÇ�§ÈOñ¸Ê~˽âyÉÆŒÙuWù!Eq“…Í»îz䑨B±ú)âÈñõö" ²ûì³ÿþÅóÜr%Ø´©È›úµ¸õu¼âÛà_ª<ª�ŽW?»îžD·Üôö.]úÀ¿«WKë8mG�Þ}wyuzqÿ‹Ýu—|“|íÚ-[Š×Mít¼ú_»véRù&øM7ý¾o˲›û7ùFø3Ï„‹„ó‘q²�üÔSóçÿîwb/[–ýþ÷7Ý$O̯X¡_Ÿž_ý©ÿp&yO÷† O€Ûqy?Xæx+WÊ›6lÐ¥~E ­Žëé ?8(keÜÆ�Ï?_½N:NýlذbÅ’%Yž;ϯƒÅ³ý{Vš�W?Úª?ÔW»êY¯\)5Nù°8z$:^õÚZyª¯rÅKµWít¼êµµòT_åŠçmÕOÕ>u¥ª–qI¹êÄmò8«êé¿ÊI ù÷°ÅøbLÅ¥1˸Œñç¥,eü1þâ™—–£§®Çü«cGuÌ?æ_<ÓâR�Üv6ÿ¶- ãiÕ¢L@«ÿÀhÕ»üÓ 8–þ…�"#�Þ'ÿE†Œ?æ_1#:½ÏúSd˜õ‡õ‡õ§˜�Þïnýшjžkßž¥Õ«�¶j¯vÚG­Ž×qÚ·ã¬^í´U{µ[½ú™gd¡ÈnS§î±‡¼ [_Û®ãuœöí8Õ÷ôŒ! �ûï/ËÅù6hЊ‹ËÂöÆ�ÕÅ Ü.¶' E÷Ý÷‡?Ȃߣ�†oª¯Y³¶o“Wï^- Ö Þu×Í7gÙƒ.]j_.˜S§î½·œ—gÌOL¦ Ñ¿ÿý½÷.Z$OÅ‹gY°\»Vžp—o�Ë«ÓåE㲪¯®Ï±&M’Ww�'Ïûüë‰ò­Ç­ý?ìÉ+÷å)½Ê÷ßâÄâõµ8¶¯ã�«×ãÑ(P}ûÍ7ßu—ð¶|ùªUr½ä›ó²`ûüóòpyxåJyøá‡Ãîw,Z$ ð9Ž=ÒåËå÷ß¿d‰\µÓV­õ8µ�Z¯ã´Ÿ�M~]Uo[µïííé‘o×ï·ß�Æ~h"?ÿ�¼”§ÊeSœžž‘#å•çÓ§O˜P®€Â¨¼Ò^•ï+äü7öoò…5k$/~øaÑÏ›÷àƒáå÷_þ/‹ù{íµÛnòêûâž(3F¯¡èäxd!ûž{n½U^E/oˆþä¥ýòý¦M²/ËÐr}o»mþ|ù‘Žž‡`Þ¸q#G†ŒIy“óÛ¥o+ú Éó‡zàÁ“'ïå¼V¯^»¶øþðácÇJ|ÛmÉ© R'ž|RpÖ® ŸxX·níZÁyê)‰4yeû½÷>òˆ�÷‹ç‘Kåú‡^L_¼^Gűuû‚'µX¾Ð.|ñå<,�wä|¬Y³n]ñ‡E{ñÓŠ9~gñôØ­^í´µvÚG­Ž·øh\çôÅ«™óÒ9™þ‹Œh\e�Ý'ÿE~É¿0Pd¤ÓûŒ¿"ÃŒ?Æó¯˜�Þgý)2ÌúÓÞúùº¦w9ðŠAöõ0ä VW××`¤mè?pSÏ+ùqÂø«�›gÌ?1¬?¬?Â@}^±þ²þ†(©�“�KùÿYYë#f`ó�Ô%AÐ8Ó¾F`Jní¬½ö‘�êS~Rr§~´4¨·W¼ž~ú‰'ìB³,èí¾ûر²°%¸2FqR~br¿ûî“& Þ¢E>¨¯4¿O>¹b…,@�¿÷Þ²�¨øùñÏV®úÇ{à�»ïÎ2Y4JmzÅE¿ß~³fy¤ø:Túz¼²/›ø {áÿª¯ú_¾\îî¾;´Å1Åý|ܸqòÊè#�œ:U^Ý­ž_Lj÷â“õª1—ó“ËËG¬òžžáÃå‡ S§Ž'cÃr³z 8²À.×W˜�qzTeÂÅÕó±}ENˇ “o¬ÏêÛ„‡ÛoŸ?_ž”ÖM–ae¡øÞ{ï¸C~X¡[ Oõr<²@:iÒäɲà»xñã�?õ”jåS þéO²°8x°|CýÀ÷ܳ¸«ø:BÏOûÚª�êµ/¯2/ó%áWG†VÇ•¥yü�½÷Þòjó½÷ŸPÐEíAƒÖ­žžxbÙ2yâü€&LÐoºK^íµ×ôé‡.?ÔX¿^Îsñbɦ°É ,¸÷^‘£MÏgß}gÏž6-¼‘ 8FõãÆí³ÏAÉq>òˆ|‹þÉ'óó—ܼçiѦ|Lœ8}º¼Ú}üøaÊŸ4(Žùر{î~`ðÔSòÃÝÖ¬Y¶L¸ï¹GÞ !Û¨QrüÇsÄòf…]v ?4˜9sâDùA‹}’|ñba(Ë–,Ñë–Ÿ� éyëñЬ¸éõ×Qj¯? ²ã$.Â!BÔ^1­½ÊÕNýŒ3±o¬'Ÿ,ò±víòå/rB~•ù(~ç]°WýxüË‘ë8kŸ’[;õ§öÚGvª×qÚ׌“Ü •LmxÇVùõ±u}=®´ ýnÐU"ÿ“ÄS:–ªÆbŒù¢¦>®¤®ŠbÓF ã1Æøcü…̲¹Sì3ÿXB”Ô×éb̨}ýˆWýéû§ŸÝâ§—ÿC Ø£2lQý}ú�qEþµd3þ„æ_¼NÄr§™,ŽËücþéÔÎücýaý�×Éfµ6fÇeýõÕ_‰Ëƒ)¹½j§­ò®­Êí8¤O�³8j§í–-ë×Ë’ÛÒ¥åó5jòdY 92<{>Pÿ#Fì¶›àÙ×n/_þÜsâß~ë9?î|V�oZqÄQGÉøÌ™S¦È«åÑ6hШQ2nöì9sŽ9FÐ'L�o}ëùëyi+ò2fð?qâŒ/}©|Ãùˆ#fΔW¤�e-ËãBO^¥>{v–}ô¡‡Êéˆá•ñ)ÿƒï²KùÉßÞ^yòWìåHtœõ“‡.ìÙ·YkYfœ:U®‡p!¸Åó��ÒÇüW½Š¿ dý¸ãŽä�ð„X&×ãzòÉ”ßgžÙ°¡È£úÕVíÕ—¶)}øÒ·ZI;t¨ðãP´Š¯­âÊ1ɵ˜<¹ü�p]\¼xÉ’+äÇ2R�t ߆Ÿ6-Ä·,K¼ë¦~´o[yO�ðõ’—Ì™sôÑYß›"Æ�/Ç_¡Ç©ß¢Ÿ>ýøãÅþàƒ§M›4)âÐA{í%ß¶ÏñíùÔ]v;VüÌ™3{¶ï®»ÆídÉ\*V‘#ÉŸ=ö8è ÉÿC�>]pì¦þsù¨Q’ôÒ—u”ÄÙìÙ“'çZñ.‹ÑzÒ}./Ù/Ÿ¿üPeð`y©|.W¿ÚZõhõC‡Ž·ï¾RgÍ |¨e¹•ØùP|mW[•—QðõI�³8j§­úÕVåvÒëµÌŽ.ö‹W)—+¾Jä8t¿½m—þ…�œiò�“œ¡V÷⸌?Æó/Ï)ÖŸx�Èju/ŽËúÃúÃú“çëO¨ƒ–õoyyh1Š(xñ’”_ ÙÓôôY—ÇÆzôí§ßñO-òÊ#ãÏ“­±Œ+˘Ì?É(Ö_Eaýeý• ê‹–r­�õXw®ú+/”–WJ¯èßdáO¶<2´§âÂÊc}E+ÖuµS�õ“’«�êGå±~n›Ï+j§:;>%W;Õ+ŽÊc}µž—.�??¼‚=žU¤Ž8â¸ãdAZ¿É._Q—'¶åêh…“§?å?Y8“W‡§.Åcõ¼ŠÇ#þåÛåò$´¼‚]¾ ­Ûî»O›& è³gOšT|R~Ë–çû6ù÷UOß&~Cœ V©êìeŒÅѾèdK�W;ÕÛþ!¥ÿ©>f/†V®}I�W;Õ‹}³ó s²P-"RÅ GV•[;ík«Ç­­“ü§¸j7dˆ,µå²Ô›÷­=ê7?ÿp„wëÖ ä§ –Îå§òÄê…s;.Æ}8&9ãü¼ôü•‹£}Õ«½Êm_ž¼—ŒZ—²×ñÈNõjïÁ‹q�¯ø)\Õ§ÆÛqb‡"^@IDATßÿ²(, ÁÃú¶&ñ¯G\nSǯVr²¯þô¼d)[ÌSãÕNõ±s\ÕWíó…b9]8W;+[u|OOXÐ:´x|Áºúÿêx‘ävêÏÚ©…•§úb_ÄEãU¯þ{zÂ"´¯X)¹�X4m[ÚÔxµ±8ÚW}j¼Ú©>øÒQy«ú˜}n•Þ“ñims��w$ý“o¬xìÍ2ª™5¾ä¿£Í¬É?b€ñ×,¢šY#öóû!l,èŸó¿7V ¾0ãe „GþÉÿ‹3þB…ÖøÖ8.Gµçµ«Ž¬—xq½võÞªZ/®×®ê¡^âÅõÚÕ{«j½¸^»ª‡z‰×kWï­ªõâzíªê%^\¯]½·ªÖ‹ëµ«z¨—xq½võÞªZ/®×®ê¡^âÅõÚÕ{«j½¸^»ª‡z‰×kWï­ªõâzíªê%^\¯]½·ªÖ‹ëµ«z¨—xq½võÞªZ/®×®ê¡^âÅõÚÕ{«j½¸^»ª‡z‰×kWï­ªõâzíªê%^\d·í ô”;½áOéU®Ž¼öí¶£aÀÿË#ò/ hô¦[/OŒ?Æó�õÇ[/ÚmÇúÃúÃú³óÖ½ƒÑº¢­­ ¶¯ãT®}mGû¶µã¬½êUnûЧrík«ã´o[;ÎÚ«^嶯x*×¾¶:NûÒÊ}£¼øYïÃÒˆ¼¦]ƒ^Ɖ­â*Ží‹�l*½üÿ:N%ò¥ñbžë¸ «¯­½êUnûŠ«rík«ã´o[;ÎÚ÷önÞ,‹ä�<2þ}÷eYñ5í‚¥ö½½ãÇOŸže“&í¶[ù‰y±°^ó>ö/E?å¾"Y•ëñiß¶vœµW½Êm_ñT®}muœömkÇY{Õ«ÜöOåÚ×VÇiß¶vœµW½Êm_ñT®}muœömkÇY{Õ«ÜöOåÚ×VÇiß¶vœµW½Êm_ñT®}muœömkÇY{Õ«ÜöOåÚ×VÇiß¶vœµW½Êm_ñT®}muœömkÇY{Õ«ÜöOåÚ×VÇiß¶vœµÏõñùÀâپųzí«¯}»íè_Èç½.©–ü )vr¹—'Æã�ùÇúã­í¶cýaýaýÙùê\@Ïoeê÷R)¤U ¶a`Zúª’)kŒ¿xtTã¥U ó/Î0ó�ùÇúÃú¯­VÛê8Öß8Ã;[ýÕ8�/_Ë·~å…ÝÅo­jä/±ðéøª�äpX ]-B«ãR¸eë|ÁXÇ©Þös¼íÇ¿¼zzüø)SfΔW2Oœ(OXÔÓ3bD–�1x°ò»×óÌÏKÎX¥¡Nû¹]8ñ"ßÐ�9sútyµsø~s– >vìÈ‘i^sa/Çmæ_ÎMϯˆ©×­Š+Ì/£ú6ákøp‰Ç }›´{ì±oß–e{ï=qâØ±òäyùxr¼íçú7;ÿ"Kù~~^åóUÕ2·ãù³þ°þ6¯?šIå6Ï«Îæßæþ-|Ã^ê ÍïòQµÞKáÊy jù,[÷“Iÿq†É?ã�ùÇú¯©jÚ\Îúg˜õ—õ—õ—õ7^š×Y;bвþ-$™U†¾êŠÖ‰[vFJÿ�Wòß™øB¨Œ?ÆŸ0ÀüC™Ò=ó/ðÊøëL|!TÆãOؾóOþP ‘ú\ÿ–e£û·,Û¿µ¾°ª¸©?ÐhöX»p4ù?ܬ^ÇÙÖÚÙ¾µ×¾µ“¾èôNV¯ãlkílßÚkßÚI_tôòÆò£¼ÙÖÚÙ¾µ×¾µ“¾èÈ?ù—8°ñ!²Øfíl?6FdÖNú"güíÜñ·ºo[µJ>a![–íÚ¿…¸ðÝQ„8’OÝßè?pNþ»{â‘ñÇø˜!ºýæ_`œñ×íÈ þŒ?a`ûÌ¿ý‡_¸H±ÿÇ�‹aUe‡þ«¬åÿ`�éšÈÈ¿0PÇã/ÆŽ›Ø¨ª ã�ÿ*kÌ71Öª2ŒÃø«²ÆøÃqc­*Ã8Œ¿*kŒ?7²P#‘¢Oœ¯ëßržT¯ãR­µ³};.vmT&÷Uj�pRvhœúеôOþSq¥rÛÚx³}k‹;•1þ/(ŽRvhœÆZ¬eü½ðñ·¶“7kÈV]8×ë»~AÆû¿7˜·Ø¨ª ã�ÿ*ky^ÅtMdä_¨cŒñcÇMlTU†qÈ•5æ?Ž›kUÆaüUYcüḉ±V•aÆ_•µ<þzôhÖ›'Ы®ŸÂ¡a Í\Š7ò_ÇZ•Ï�Œ?Æ_]$¥â†ùWÇóÏ2�Š#ÖÖŸºLJÅ ëOk6ûªÐV‹kþéê7öoùéz>7Úêùj_íT®}Õk«zmUž²OÉSãUŽÆ©ý ’ý²åq�xIñ§òžêµE~ޝ¸hœÚÙñÚ×áX;ÅEãÔΎ׾¶ÇÚ).§vv¼öµE8ÖNqÑ8µ³ãµ¯-±vŠ‹Æ©�¯}m޵S\4Níìxík‹p¬�â¢qjgÇk_[„cí�S;;^ûÚ"k§¸hœÚÙñÚ×áX;ÅEãÔÎŽ×7Álêßòtµ×VÇi_[õ«}Û¦Æñþoç¾ÿãõçõ·µ¢®Ÿª#¬?Â@š¹oÌ¿:Öª|¦xdü1þê")7Ì¿:Ö˜–�TyëOßW™â[ 8n]”¶ç ô/ yõîÇG¡€°èäŸüÇ#ÉFŠíÇG1þêoˆª,2þâ‘d™²ýø(Æã¯É­%ç?ÖŸx%±õÆö㣺Ut}xÿ–/ ¯ìß䟗å: q®ríÛVõöl*W?Š£}ÛªžþË ”åYq´o[Õ—½WãIõ^{õ£öÚ·­ê_Û�ÊÕ�âhß¶ªW¿ÚT®~Gû¶U½úÕv rõ£8Ú·­êÕ¯¶•«ÅѾmU¯~µ¨\ý(Žöm«zõ«í@åêGq´o[Õ«_m*W?Š£}Ûª^ýj;P¹úQíÛVõêWÛ�ÊÕ�âhß¶ªW¿ÚZ¹Î³º€®ó°ÎË:µêÙUõ/ìýGêU›–§êq—%<a Ì‰¯Eþ…ƒbÅøcüÅ3 ÅP|ó�ùÇúƒr'׳þ²þÆ+i#ñ½ø¨NÕ_Ç7Ðã‡I) d€ �2@È Û›û·,ÓWÈ®ïß²lXÿ–e#û·ü[éúêw=ý¬þÃCûª·rÛGvªW\Ÿ’«�êÕ^å¶�ìToǧäj§zëÏö‘�êWǧäj§zµW¹í#;ÕÛñ)¹Ú©Þú³}d§zÅÕñ)¹Ú©^íUnûÈNõv|J®vª·þlÙ©^qu|J®vªW{•Û>²S½Ÿ’«�ê­?ÛGvªW\Ÿ’«�êÕ^å¶�ìToǧäj§zëÏö‘�êWǧäj§zµW¹í#;ÕÛñ)¹Ú©Þú³}d§zÅÕñ)¹Ú©^íUnûÈNõv|J®vª¾ËçW�gõÍ/:¿ŽèßÒO +[2@È d€ �2@¶/ §þ¡¢§Šôj×j‹ð‘¾U¿:á#½â´Ú"|¤oÕ¯ŽCøH¯8­¶é[õ«ã>Ò+N«-ÂGúVýê8„�ôŠÓj‹ð‘¾U¿:á#½â´Ú"|¤oÕ¯ŽCøH¯8­¶é[õ«ã>Ò+N«-ÂGúVýê8„�ôŠÓj‹ð‘¾U¿:á#½â´Ú"|¤oÕ¯ŽCøH¯8­¶é[õ«ã>Ò+N«-ÂW½âëBºþaß¶ªW{¯­.h_í´Ezµ“V~,öE™â*Žê¬\ûª×VÇ¥ôj'-ý“Æó¯X´nhQ�•k_õÚ긔^í¤eýyñ×½ÞÚêφöoùÔôÉsÕ«}1ZÙ×8Ká!}+>‹c>Ò±ZÙGøHߊÏâ„�ôE¬Vö>Ò·â³8á#}«•}„�ô­ø,ŽAøH_Äjeá#}+>‹c>Ò±ZÙGøHߊÏâ„�ôE¬Vö>Ò·â³8á#}«•}„�ô­ø,ŽAøH_Äjeá#}+>‹c>Ò±ZÙGøHߊÏâ„�ôE¬Vö>Ò·â³8á#}«•}„�ô­ø,ޱøÛЭ"¤/ž(ÿÃ;×·g�þ…�ðÌ2Óä?DX™•öD]ŽÂøcü1ÿXª˜býeý8ÿä³eû÷8ÿvfþU^·öoY¦ æÒnÙ’e"–Ví¼WV뤗’ ®f�VT¯¯˜]ÊOJNÿäŸñ2‰ù«(Íd©:“’³þì˜õ§§ËŸ0Ü¿e™Ê5PtéfúÜt6ÉŠÆãO`þ¥2¤³ræ_à—ñ×Ù8K¡3þÂÀö‘º�®ÿ`°­F±þ!Cõ*·­×®é8/®×ŽþË Þ�^Ѽvj¯-‡ô^µ³-ÂGzÅóÚ©½¶hÒ{qÔζéÏk§öÚ¢qHïÅQ;Û"|¤W<¯�Úk‹Æ!½Gíl‹ð‘^ñ¼vj¯-‡ô^µ³-Â÷êÕN[]8Ïýñþ/p±}Üÿä×¥[{¼þ¼þÂã¿[WöÃü |0þÊqÑ­ã�ñ' 0ÿº•qe?�Í¿!eg�è•Gÿ §ÿàè„Ç2&ýù ÿ€”3ÙŠÌtj¿ì…ü“Æó�õ‡õ·<3pþé e–wöùWëNõý�aߢvŸÿòзï¿È‘Æ㯻÷ÿÅèËß4¢ó@YÛùÞÎÿ¼ÿ(FU÷¯?ù'ÿ9Œ¿nϿ̿<ú^ˆù—ü“ÿœÖ?Ö¿îþûcÇ®?=yjéžÐ‹·†ØÎZà¸Ñ¿å,Ö'ÿ¾8±Ü1þ„ËJ±ïã•ñçã©È¬ì3þÌ?›ž/¯X|<™•}ÖÖÖ›ž/¯X|<™•}ÖÖÖ›ž/¯X|<™•}ÖÖÖ›ž/¯X|<™•}ÖÖÖ›ž/¯X|<™•}ÖÖÖ›ž/¯´þDÐãôÊ€"4 Ãâ!5Û§ÿ_äŸñÇüË3ƒõ'^'s†ZÝ‹ã²þ°þ°þä9Åú¯9C­îÅqYXXòœbý‰×‰œ¡V÷⸬?¬?¬?yN±þÄëDÎP«{q\ÖÖÖŸ<§Xâu"g¨Õ½8.ëëëOžS¬?ñ:‘3Ôê^—õ‡õg{¬?ÛÐË—§üR0â¡]µ‰ ø¸U.¥ÿbxä¼èùgü1ÿ4pËúƒ*j™CdÍúÃúÃúSΙºëª(eö�5ëëëO9gêz¬?¨¢”ÙCÖ¬?¬?¬?圩ë±þ ŠRfY³þ°þ°þ”s¦®Çúƒ*J™=dÍúÃúÃúSΙºëª(eö�5ëëÏöX-ëßêoˡΠd€ �2@È d€ �2@È d€ �2@È d€ ����mO §N­é/iR8VîÅõÚY|Ô÷âzí�?«÷âzí,>ê{q½vÈŸÕ{q½võ½¸^;äÏ꽸^;‹�ú^\¯ògõ^\¯�ÅG}/®×ù³z/®×Î⣾×k‡üY½×kgñQß‹ëµCþ¬Þ‹ëµ³ø¨ïÅõÚ!VïÅõÚY|Ô÷âzí�?«÷âzí,>ê{q½vÈŸÕ{q½võ½¸^;äÏ꽸^;‹�ú^\¯ògõ^\¯�ÅG}/®×ù³z/®×Î⣾×k‡üY½×kgñQß‹ëµCþ¬Þ‹ëµ³ø¨ïÅõÚ!VïÅõÚY|Ô÷âzí�?«÷âzí,>ê{q½vÈŸÕ{q½võ½¸^;äÏ꽸^;‹�ú^\¯ògõ^\¯�ÅG}/®×ù³z/®×Î⣾×k‡üY½×kgñQß‹ëµCþ¬Þ‹ëµ³ø¨ïÅõÚ!VïÅõÚY|Ô÷âzí�?«÷âzí,>ê{q½vÈŸÕ{q½võ½¸^;äÏ꽸^;‹�ú^\¯ògõ^\¯�ÅG}/®×ù³z/®×Î⣾×k‡üY½×kgñQß‹‹ìÚöº:júªt¢^=ý YFþ›½êÂ_ÈŽñÇøcþ±þ°þ²þ6yÕšW¼zÎ?œ8ÿpþáüÃù‡ó�wÖlŸç_οœ9ÿrþåüËù·}óª‰ó/ç_οœ9ÿrþíæüÛ¶ôÔDÊzHì”M'åô/Ó ùaÊJ–1þÌ?ÖÖŸnÞÖäw¬¿¬¿¬¿¬¿¬¿¬¿ù¬Ð½=Î?œ8ÿpþáüÃù§{³Nî‰óçÎ?œ8ÿpþÉg…îíqþáü³#Ï?Žô2u/튞è?°Aþ‹Qѽ}ÆãO`þu/犞˜� Æ_1*º·Ïøcü Ì¿îå\Ñó/°Áø+FE÷öŒ?a€ù×½œ+zbþ6ŨèÞ>ã�ñ' 0ÿº—sEOÌ¿Àã¯ÝÛgü1þ„æ_÷r®èiûοù…ˆbñ°óýxààq9BÝÆ¡ÿ˜·Ø¨ª ã�ÿ*káÉòú¼‰�ªÊÈ¿0På%—0þr.ò=7¹mÝÆ!ÿ1þ0o±QUÆ!ÿUÖXqÜÄX«Ê0ã¯ÊãÇMŒµª ã0þª¬1þpÜÄX«Ê0ã¯ÊãÇMŒµª ã0þª¬1þpÜÄX«Ê0ã¯ÊãÇMŒµª ã0þª¬1þpÜÄX«Ê0ã¯ÊãÇMŒµª ã0þª¬1þpÜÄX«Ê0ã¯ÊZÉ'ЕXyõGœÂ¬Èt9¬Ù(‹Fÿ€üî…ü7‹$Æ_È¥f¬1ÿÊ °þ°þ°þrþáüËû�f3)ï?xÿ! 4‹šòÝGáh¼ÿïcÀ²S×gþvš±fåý/ïyÿËû_Þÿòþ·ÙLÂù—ó¯0Ð,jxÿQf€÷_¼ÿâýï¿xÿµ}ß%ÐËå|à½Ö'„�ûúouB"ÿí`€ñÇøk톨ÑÇúÇücþ1ÿZù ëO;`ýaýaýaýiþ‘vTÞÿ±þ²þ²þ²þ²þ6ýƒ4çŸv0Àù‡óçÎ?œ8ÿ ì§E­ÍFœ:3ÿtm½µËÎQd€ �2@È d€ �2@È d€ �2@È d€ �2@ºÃ@OS7úK†Ô8¤O�óÊ>Ò{ý¤ì>Ò§p½r„�ô^?);„�ô)\¯á#½×OÊá#} ×+GøHïõ“²CøHŸÂõÊ>Ò{ý¤ì>Ò§p½r„�ô^?);„�ô)\¯á#½×OÊá#} ×+GøHïõ“²CøHŸÂõÊ>Ò{ý¤ì>Ò§p½r„�ô^?);„�ô)\¯á#½×OÊá#} ×+GøHïõ“²CøHŸÂõÊ>Ò{ý¤ì>Ò§p½r„�ô^?);„�ô)\¯á#½×OÊá#} ×+GøHïõ“²CøHŸÂõÊ>Ò{ý¤ì>Ò§p½r„�ô^?);„�ô)\¯á#½×OÊá#} ×+GøHïõ“²CøHŸÂõÊ>Ò{ý¤ì>Ò§p½r„�ô^?);„�ô)\¯á#½×OÊá#} ×+GøHïõ“²CøHŸÂõÊ>Ò{ý¤ì>Ò§p½r„�ô^?);„�ô)\¯á#½×OÊá#} ×+GøHïõ“²CøHŸÂõÊ>Ò{ý¤ì>Ò§p½r„�ô^?);„�ô)\¯á#½×OÊÎâo{]ÕWLÈ‹Gdëì‹è_ˆ½â„ü3þ˜¬?¬¿¡tæÿœ8ÿpþåýïí+ÖxÿÉûOÞòþ“÷Ÿ�¹ó ¨¼ÿäý'ï?yÿÉûOÞ–gZÞóþ›÷ß¼ÿ.W…vß‹òþ“÷Ÿ¼ÿl~ÿ¹m½Ý ™ãuç ÷g÷è?0ÒÙlYÏûäŸü Œ¿<'º¹Çü l3þºu¹/ÆãO`þå9ÑÍ=æ_`›ñ×ͨË}1þÂó/ωnî1ÿÛŒ¿nF]î‹ñÇø˜yNts�ùØfüu3êr_Œ?ÆŸ0ÀüËs¢›{Ì¿Àvgâ¯ñ+Ü›_úò�ë/]šã´:‚þ‹Ì‘ÿðK£"'�Ýgüùeü1þtJ/ÆEçö™En™Ì?æ_1#:½ÏúSd˜õ‡õ‡õ§˜�Þgý)2ÌúÃúÃúS̈Nï³þfýaýaý)fD§÷YŠ ³þ°þ°þ3¢Óû¬?E†w´úY@÷¥W«e¨úŠ¢"½²Oÿ–‘XŸüûâÄrÇø³¯È² ùxeüùx²ì2þå[*!¾¸bþùx²ì2ÿ˜Ì?›ž/¯X|<™•}ÖÖÖ›ž/¯X|<™•}ÖÖÖ›ž/¯X|<™•}ÖÖÖ›ž/¯X|<™•}ÖÖÖ›ž/¯XO‘ôxx aEjQ/I³}ú�ñEþÌ¿<3Xâu2g¨Õ½8.ëëëOžS¬?ñ:‘3Ôê^—õ‡õ‡õ'Ï)ÖŸx�Èju/ŽËúÃúÃú“çëO¼Nä µºÇeýaýaýÉsŠõ'^'r†ZÝ‹ã²þ°þ°þä9Åú¯9C­îÅqYX¶Çú³m½|yªÁ/#ÚU[‘Ø€�[åRú/†G΋î‘ÆóO³·¬?¨¢–9DÖ¬?¬?¬?圩ë±þ ŠRfY³þ°þ°þ”s¦®Çúƒ*J™=dÍúÃúÃúSΙºëª(eö�5ëëëO9gêz¬?¨¢”ÙCÖ¬?¬?¬?圩ë±þ ŠRfY³þ°þl�õgвþ­~ñ¶êì‘2@È d€ �2@È d€ �2@È d€ �2@ÈØñØözêÔšþ’&…cå^\¯�ÅG}/®×ù³z/®×Î⣾×k‡üY½×kgñQß‹ëµCþ¬Þ‹ëµ³ø¨ïÅõÚ!VïÅõÚY|Ô÷âzí�?«÷âzí,>ê{q½vÈŸÕ{q½võ½¸^;äÏ꽸^;‹�ú^\¯ògõ^\¯�ÅG}/®×ù³z/®×Î⣾×k‡üY½×kgñQß‹ëµCþ¬Þ‹ëµ³ø¨ïÅõÚ!VïÅõÚY|Ô÷âzí�?«÷âzí,>ê{q½vÈŸÕ{q½võ½¸^;äÏ꽸^;‹�ú^\¯ògõ^\¯�ÅG}/®×ù³z/®×Î⣾×k‡üY½×kgñQß‹ëµCþ¬Þ‹ëµ³ø¨ïÅõÚ!VïÅõÚY|Ô÷âzí�?«÷âzí,>ê{q½vÈŸÕ{q½võ½¸^;äÏ꽸^;‹�ú^\¯ògõ^\¯�ÅG}/®×ù³z/®×Î⣾×k‡üY½×kgñQß‹ëµCþ¬Þ‹ëµ³ø¨ïÅõÚ!VïÅõÚY|Ô÷âzí�?«÷âzí,>ê{q½vÈŸÕ{q½võ½¸È®mO «£¦¯Z@'êÕÓ¿0�eä¿Ù«.¼ñ…ìŒ?æëë/ëo“W ¡yÅ«çüÃù‡óçÎ?œ8ÿxgÍöÙqþåüËù—ó/ç_οœÛ7¯z‘8ÿrþåüËù—ó/çßnοm[@OMt¡¬‡ÄNÙtRNÿ2­�ÿ¦¬dã�ñÇücýaýéæmM~GÁúËúËúËúËúËú›Ï ÝÛãüÃù‡óçÎ?œº7ëäž8ÿpþáüÃù‡óçŸ|VèÞçÎ?;òüãX@ SP÷Ò®è‰þä¿ÝÛgü1þ„æ_÷r®è‰ùØ`ü£¢{ûŒ?ÆŸ0Àüë^Î=1ÿŒ¿bTtoŸñÇø˜Ý˹¢'æ_`ƒñWŒŠîí3þÂó¯{9WôÄü l0þŠQѽ}ÆãO`þu/犞¶ïüë‘_ˆè!;ß�—#Ôíaú�ñ‡y‹�ªÊ0ù¯²ž,¯Ï›Ø¨ªŒü U^r ã/ç"ßÃq“ÛÖíaòãóU•aò_e�õÇMŒµª ã0þª¬1þpÜÄX«Ê0ã¯ÊãÇMŒµª ã0þª¬1þpÜÄX«Ê0ã¯ÊãÇMŒµª ã0þª¬1þpÜÄX«Ê0ã¯ÊãÇMŒµª ã0þª¬1þpÜÄX«Ê0ã¯ÊãÇMŒµª ã0þª¬åñ—|]‰•WÄ)ŒÁŠL—Ú�²hô/ Èï^ȳHbü…\jÆó¯Ìëëë/çο¼ÿh6“òþƒ÷Â@³¨)ß}þ�Æûÿ>,;u}æ_`§k–QÞÿòþ—÷¿¼ÿåý/ï›Í$œ9ÿ Í¢†÷exÿÅû/Þñþ‹÷_Û÷ýWr½\ÎÞk}B¸oA ÿV'$òߌ¿ÖnˆÚ}¬Ì?æó¯•�°þ´ƒÖÖÖÖŸæiGõáýë/ë/ë/ë/ëoÓ?Hsþiœ8ÿpþáüÃù‡óÏÀ~ZÔÚlÄù§3óO×Ð[»ìEÈ d€ �2@È d€ �2@È d€ �2@È d ; ô4u£¿dH�CúÔ8¯á#½×OÊá#} ×+GøHïõ“²CøHŸÂõÊ>Ò{ý¤ì>Ò§p½r„�ô^?);„�ô)\¯á#½×OÊá#} ×+GøHïõ“²CøHŸÂõÊ>Ò{ý¤ì>Ò§p½r„�ô^?);„�ô)\¯á#½×OÊá#} ×+GøHïõ“²CøHŸÂõÊ>Ò{ý¤ì>Ò§p½r„�ô^?);„�ô)\¯á#½×OÊá#} ×+GøHïõ“²CøHŸÂõÊ>Ò{ý¤ì>Ò§p½r„�ô^?);„�ô)\¯á#½×OÊá#} ×+GøHïõ“²CøHŸÂõÊ>Ò{ý¤ì>Ò§p½r„�ô^?);„�ô)\¯á#½×OÊá#} ×+GøHïõ“²CøHŸÂõÊ>Ò{ý¤ì>Ò§p½r„�ô^?);„�ô)\¯á#½×OÊá#} ×+GøHïõ“²CøHŸÂõÊ>Ò{ý¤ì>Ò§p½r„�ô^?);„�ô)\¯á#½×OÊá#} ×+GøHïõ“²CøHŸÂõÊ>Ò{ý¤ì,þ¶'ÐUQ}Å„¼xD¶Î¾x€þ…�Ø+NÈ?ã�ùÇúÃúê@gþÏù‡óç_Þðþ×¾b�÷Ÿ¼ÿäý'ï?yÿÙ™;Ï€ÊûOÞòþ“÷Ÿ¼ÿäýgy¦åý7ï¿yÿÍûïrUh÷½(ï?yÿÉûÏæ÷ŸÛÐÛ��9^wnrv�þ#�-À–õ¼OþÉ¿0ÀøËs¢›{Ì¿À6㯛Q—ûbü1þ„æ_žÝÜcþ¶ÝŒºÜã�ñ' 0ÿòœèæó/°ÍøëfÔ後?a€ù—çD7÷˜�mÆ_7£.÷Åøcü Ì¿<'º¹Çü lw&þ¿Â½ù¥/¸þÒ¥9N«#è¿Èù¿4*rÒÙ}Æ_‘_ÆãO§ôb\tnŸùWä–ùÇücþ3¢Óû¬?E†YXXŠÑé}ÖŸ"ì?¬?¬?ÅŒèô>ëO‘aÖÖÖŸbFtzŸõ§È0ëëëO1#:½ÏúSdxG«?‘t_zµZ†ª¯(*Ò+ûôo‰õÉ¿/N,wŒ?ûŠ,Ë��WÆŸ�'Ë.ã�ñW¾¥²â‹+æŸ�'Ë.ó�ùÇü³YQìûòŠõÇÇS‘YÙgýaýaý±YQìûòŠõÇÇS‘YÙgýaýaý±YQìûòŠõÇÇS‘YÙgýaýaý±YQìûòŠõÇÇS‘YÙgýaýaý±YQìûòŠõ'ðY@�‡—V¤¥añ’4Û§ÿ_äŸñÇüË3ƒõ'^'s†ZÝ‹ã²þ°þ°þä9Åú¯9C­îÅqYXXòœbý‰×‰œ¡V÷⸬?¬?¬?yN±þÄëDÎP«{q\ÖÖÖŸ<§Xâu"g¨Õ½8.ëëëOžS¬?ñ:‘3Ôê^—õ‡õg{¬?ÛÐË—§üR0â¡]µ‰ ø¸U.¥ÿbxä¼èùgü1ÿ4pËúƒ*j™CdÍúÃúÃúSΙºëª(eö�5ëëëO9gêz¬?¨¢”ÙCÖ¬?¬?¬?圩ë±þ ŠRfY³þ°þ°þ”s¦®Çúƒ*J™=dÍúÃúÃúSΙºëª(eö�5ëëÏöX-ëßêoˡΠd€ �2@È d€ �2@È d€ �2@È d€ ����mO §N­é/iR8VîÅõÚY|Ô÷âzí�?«÷âzí,>ê{q½vÈŸÕ{q½võ½¸^;äÏ꽸^;‹�ú^\¯ògõ^\¯�ÅG}/®×ù³z/®×Î⣾×k‡üY½×kgñQß‹ëµCþ¬Þ‹ëµ³ø¨ïÅõÚ!VïÅõÚY|Ô÷âzí�?«÷âzí,>ê{q½vÈŸÕ{q½võ½¸^;äÏ꽸^;‹�ú^\¯ògõ^\¯�ÅG}/®×ù³z/®×Î⣾×k‡üY½×kgñQß‹ëµCþ¬Þ‹ëµ³ø¨ïÅõÚ!VïÅõÚY|Ô÷âzí�?«÷âzí,>ê{q½vÈŸÕ{q½võ½¸^;äÏ꽸^;‹�ú^\¯ògõ^\¯�ÅG}/®×ù³z/®×Î⣾×k‡üY½×kgñQß‹ëµCþ¬Þ‹ëµ³ø¨ïÅõÚ!VïÅõÚY|Ô÷âzí�?«÷âzí,>ê{q½vÈŸÕ{q½võ½¸^;äÏ꽸^;‹�ú^\¯ògõ^\¯�ÅG}/®×ù³z/®×Î⣾×k‡üY½×kgñQß‹‹ìÚöº:júªt¢^=ý YFþ›½êÂ_ÈŽñÇøcþ±þ°þ²þ6yÕšW¼zÎ?œ8ÿpþáüÃù‡ó�wÖlŸç_οœ9ÿrþåüËù·}óª‰ó/ç_οœ9ÿrþíæü;dMÿæ�¦šÛ…²»ùè�� ™VÈÿ SV²ŒñÇøcþ±þ°þtó¶&¿o`ýeýeýeýeýeýÍg…îíqþáüÃù‡óçÎ?Ý›urOœ8ÿpþáüÃù‡óO>+to�óçŸyþ�¯p—%À�¤ÛÀ 7ý“ÿÖ`ü ôÆ�ù×zôµãÆ�ü“ÿÖ`ýcýk=zd$ëÏ@øcþ1ÿ?Ì?ÖŸ�ÄëëÏ@â‡õ‡õg ñÃúÃú3�øaýaýHü°þ°þ $~XX?¬?;výé‘_ˆÔ§Hœ<Îv‡þcLbÞb£ª2ŒCþ«¬É´*[LÓL†qÈŒQÌ[lTU†qÈ•5Æ?Ž›kUÆaüUYcüḉ±V•aÆ_•5ÆŽ›kUÆaüUYcüḉ±V•aÆ_•5ÆŽ›kUÆaüUYcüḉ±V•aÆ_•5ÆŽ›kUÆaüUYcüḉ±V•aÆ_•5ÆŽ›kUÆaüUYcüḉ±V•aÆ_•µ<þ=Ò¿U—•XùEœÂ¬È«Ù(‹FÿÂ@x‚µ“ä?ÄR3Öe˜Ì?ÖÖ_Îÿ¼ÿi6“òþƒ÷Â@³¨)ß}þ�Ò_€¬¶®Ïø ì�ÿº(A:Þÿòþ—÷¿¼ÿåý/ï›Í¤¼ÿàý‡0Ð,jìýï?xÿÁûÞðþƒ÷ÍfÞtóþ#ù ÷扫·ñË­7j…ZúoZ8”Qò¯L[Æ_¸!-rR·ÏücþÅ+I]Ôˆ.>ŠùÇüÓ[;A!Š˜ñLBìÅG1ÿ˜Ì?”;¹ž÷?¬¿ñJšÇH|/>Šõ—õ—õ7ž11)ë/ëo¼’Æ¢¥(‹�býeýeý-æIý>ë/ëo¼’ÖÇ ÿþg�óçÎ?¨väúËü“|=?î‘2@È d€ �2@È d€ �2@È d€ �2@ÈØñH>�ž:uôK¤Oázåé½~RvéS¸^9ÂGz¯Ÿ”ÂGú®WŽð‘Þë'e‡ð‘>…ë•#|¤÷úIÙ!|¤Oázåé½~RvéS¸^9ÂGz¯Ÿ”ÂGú®WŽð‘Þë'e‡ð‘>…ë•#|¤÷úIÙ!|¤Oázåé½~RvéS¸^9ÂGz¯Ÿ”ÂGú®WŽð‘Þë'e‡ð‘>…ë•#|¤÷úIÙ!|¤Oázåé½~RvéS¸^9ÂGz¯Ÿ”ÂGú®WŽð‘Þë'e‡ð‘>…ë•#|¤÷úIÙ!|¤Oázåé½~RvéS¸^9ÂGz¯Ÿ”ÂGú®WŽð‘Þë'e‡ð‘>…ë•#|¤÷úIÙ!|¤Oázåé½~RvéS¸^9ÂGz¯Ÿ”ÂGú®WŽð‘Þë'e‡ð‘>…ë•#|¤÷úIÙ!|¤Oázåé½~RvéS¸^9ÂGz¯Ÿ”ÂGú®WŽð‘Þë'e‡ð‘>…ë•#|¤÷úIÙ!|¤Oázåé½~RvéS¸^9ÂGz¯Ÿ”ÂGú®WŽð‘Þë'egñ·=�®Šê£óúâ�ø«)RŽšÊé_ˆ}óƒü‡Xbü5Í©&öÌ?æëë/çûê6οœ…Þ4¹ŸhjËûÞðþƒ÷¼ÿàýGy¦åýW˜Kˬ4�_‘=ç_οœ9ÿrþåü[ži8ÿrþÊQ�î'šêyÿÁû�ãýǶô¦ï·ïNNýn:[ÉŠÆãO`þ¥2¤³ræ_à—ñ×Ù8K¡3þÂó/•!�•3ÿ¿Œ¿ÎÆY �ñÇø˜© 鬜ùøeüu6ÎRèŒ?ÆŸ0ÀüKeHgåÌ¿À/㯳q–Bgü1þ„æ_*C:+ïlþ5~…{ó“-ŽþÒ¤9N«#è¿Èù¿ô)rÒÙ}Æ_‘_ÆãO§´b\tnŸùWä–ùÇücþ3¢Óû¬?E†YXXŠÑé}ÖŸ"ì?¬?¬?ÅŒèô>ëO‘aÖÖÖŸbFtzŸõ§È0ëëëO1#:½ÏúSdxG«?‘t_zµZ†ª¯ˆ)Ò+ûôo‰õÉ¿/N,wŒ?ûŠ"Ë��WÆŸ�'Ë.ã�ñW¾¥²â‹+æŸ�'Ë.ó�ùÇü³YQìûòŠõÇÇS‘YÙgýaýaý±YQìûòŠõÇÇS‘YÙgýaýaý±YQìûòŠõÇÇS‘YÙgýaýaý±YQìûòŠõÇÇS‘YÙgýaýaý±YQìûòŠõ'ðY@�‡—V¤¥añ’4Û§ÿ_äŸñÇüË3ƒõ'^'s†ZÝ‹ã²þ°þ°þä9Åú¯9C­îÅqYXXòœbý‰×‰œ¡V÷⸬?¬?¬?yN±þÄëDÎP«{q\ÖÖÖŸ<§Xâu"g¨Õ½8.ëëëOžS¬?ñ:‘3Ôê^—õ‡õg{¬?ÛÐË—§üR0â¡]µ‰ ø¸U.¥ÿbxä¼èùgü1ÿ4pËúƒ*j™CdÍúÃúÃúSΙºëª(eö�5ëëëO9gêz¬?¨¢”ÙCÖ¬?¬?¬?圩ë±þ ŠRfY³þ°þ°þ”s¦®Çúƒ*J™=dÍúÃúÃúSΙºëª(eö�5ëëÏöX=Ò¿Õ/Þ–C�=2@È d€ �2@È d€ �2@È d€ �2@È ;Ûž@O�ZÓ_Ò¤p¬Ü‹ëµ³ø¨ïÅõÚ!VïÅõÚY|Ô÷âzí�?«÷âzí,>ê{q½vÈŸÕ{q½võ½¸^;äÏ꽸^;‹�ú^\¯ògõ^\¯�ÅG}/®×ù³z/®×Î⣾×k‡üY½×kgñQß‹ëµCþ¬Þ‹ëµ³ø¨ïÅõÚ!VïÅõÚY|Ô÷âzí�?«÷âzí,>ê{q½vÈŸÕ{q½võ½¸^;äÏ꽸^;‹�ú^\¯ògõ^\¯�ÅG}/®×ù³z/®×Î⣾×k‡üY½×kgñQß‹ëµCþ¬Þ‹ëµ³ø¨ïÅõÚ!VïÅõÚY|Ô÷âzí�?«÷âzí,>ê{q½vÈŸÕ{q½võ½¸^;äÏ꽸^;‹�ú^\¯ògõ^\¯�ÅG}/®×ù³z/®×Î⣾×k‡üY½×kgñQß‹ëµCþ¬Þ‹ëµ³ø¨ïÅõÚ!VïÅõÚY|Ô÷âzí�?«÷âzí,>ê{q½vÈŸÕ{q½võ½¸^;äÏ꽸^;‹�ú^\¯ògõ^\¯�ÅG}/®×ù³z/®×Î⣾Ùµí tuÔôU èD½zú²Œü7{Õ…7¾�ã�ñÇücýaýeýmòª!4¯xõœ8ÿpþáüÃù‡óçï¬Ù>;οœ9ÿrþåüËù—óoûæU/ç_οœ9ÿrþåüÛÍù>�î�ÀR�ʺ¥u;ú�'ù—iµóã�ñ+ÜÌ?æ_ç«OúÆ™ñÇøcüužÎÿœÿ9ÿWóŒóçŸjT´_ÂúËúËú[Í+Ö_ÖßjT´_ÂúËúËú[Í+Ö_ÖßjT´_ÂúËúËú[Í«N×_ÇúÀ `<¬«'š–К¬!ÿ±²‚yË-9Í÷Œ¿æQSÁü+²ÑtŸùÇük3e{æ_™�f=æó¯YÄXkæŸe¤IŸùÇük/U[æ_•¿„ùÇüóGKÌ’ùcÅ+cþ1ÿ¼±·cþÅyñI™Ì?_¤¤¬˜)fŠùÇücþ¡ÜÉõ¼ÿaý�WÒnø÷¿8kœ8ÿpþAµ#׿XæŸäèù©p� �2@È d€ �2@È d€ �2@È d€ �2@ÈÀŽÏ@ò ôÔ©£_Ò } ×+GøHïõ“²CøHŸÂõÊ>Ò{ý¤ì>Ò§p½r„�ô^?);„�ô)\¯á#½×OÊá#} ×+GøHïõ“²CøHŸÂõÊ>Ò{ý¤ì>Ò§p½r„�ô^?);„�ô)\¯á#½×OÊá#} ×+GøHïõ“²CøHŸÂõÊ>Ò{ý¤ì>Ò§p½r„�ô^?);„�ô)\¯á#½×OÊá#} ×+GøHïõ“²CøHŸÂõÊ>Ò{ý¤ì>Ò§p½r„�ô^?);„�ô)\¯á#½×OÊá#} ×+GøHïõ“²CøHŸÂõÊ>Ò{ý¤ì>Ò§p½r„�ô^?);„�ô)\¯á#½×OÊá#} ×+GøHïõ“²CøHŸÂõÊ>Ò{ý¤ì>Ò§p½r„�ô^?);„�ô)\¯á#½×OÊá#} ×+GøHïõ“²CøHŸÂõÊ>Ò{ý¤ì>Ò§p½r„�ô^?);„�ô)\¯á#½×OÊá#} ×+GøHïõ“²CøHŸÂõÊ>Ò{ý¤ì>Ò§p½r„�ô^?);‹¿í tUT�×Ä_M‘rÔTNÿÂ@ì›ä?Äã¯iN5±gþ1ÿXX9ÿÛW·qþåü+ ðþ£ÉýDS[Þðþƒ÷¼ÿàýï?Ê3-ï¿Â\Zf¥éüŠì9ÿrþåüËù—ó/çßòLÃù—ó¯0PŽ t?ÑTÏûÞ¼ï?¶- 7 x¿}w púxè?pÓÙHþS 0þÂó/•!�•3ÿ¿Œ¿ÎÆY �ñÇø˜© 鬜ùøeüu6ÎRèŒ?ÆŸ0ÀüKeHgåÌ¿À/㯳q–Bgü1þ„æ_*C:+gþ~��³:ã�ñ' 0ÿRÒYygó¯ñ+Ü›Ÿl9pô—&ÍqZAÿEæÈø¥O‘“Îî3þŠü2þ:¥ã¢sûÌ¿"·Ì?æó¯˜�Þgý)2ÌúÃúÃúS̈Nï³þfýaýaý)fD§÷YŠ ³þ°þ°þ3¢Óû¬?E†YXXŠÑé}ÖŸ"Ã;Zý‰<�®éU¾ðEd_Ë�}ትkÞ§álÕªÞÞU«²lÁ‚ x ËzhãÆ ²ìÙg·lY±"ËV¯Þ²eõêœÝ1c3&ËvÛmðàñã³ìÀ‡ ›>=˦O>ü ƒ²lìØžž±csûôùÜ0þÓ1Âügý u‚õ¿¾NÔåP\ÇúËú+ ÔÇëëOˆ’ú8 ¹Ôäÿ¬?�­z^™Ì?æŸÌRõyÒ¤ò[ÖÖŸ�Yu±ÃúËú¢„õ§.OšëXgõqÅúÃúÃúÃû?ÞÿÖ×IÎ?Màüû¢šéßô¢¥/¶Ü0ˆ•Œv§LÚk®ÙÑý¯Y³u«,ˆÿö·k×þæ7Yv×]ë×ßqG–mÝÚÛ»ukÎCÓ½žžAƒzúÞ3pè¡#F~x–½â£F½ò•Y6ztO�,¸{·�ÄÏ_`þ³þ±þsþCÕ²ýúí¯þnÞ¼aC–mذyó�!Y6¼o“¶SÛöwþ�:Ó8.Ï_¨›;�äñ�ÛvIÉ?ù¯ÏÿvEZ‡ñÇøcüÕÍ¿ñ¼i—”ùÇücþ1ÿø÷'þý‰j׬êÇáüËù—ó/ç_;ÿn{…{H�tA±Ó–A£Ù©~gõ¿`ÁÆ�>˜e—]¶lÙ¿üK–ÝqǺuóæ |á\yÕxÅU?êWívVþyþ��N_ÿžž­[—,ɲk¯ýêWÿ韲ìÒ¾íӟβÿüÏÛo_¶,¢]¯‡mYšýÃ�õEt9Â�5Š?ßÿÔ·}êSy|—½U{õoyý£eÆ�µ^ÿçŸôÑnȲSN9ðÀ™3³lfßvà�Yöþ÷ÿû¿ß}wŽIþ£9W²‡¬•ÿò¨togáß�i¦‚†üË?�ÓãOHóc5;KþÙóÖ>ÏUe*´ÈšùÇücý)çL]�õU”2{Èšõ‡õ‡õ§œ3u=ÖTQÊì!kÖÖÖŸrÎÔõXPE)³‡¬YâõgÛ3Squ™ä&½¦„ïlþÿð‡uën»-Ë~þóÕ«åòòç»ú?á5a?m»iSoï¦MYö½ï­\ùŸÿ™e'ž8fÌI'eÙË^6räË_ž×T³=^ybðÖ[/½ôÜs³ì­oæ³ìøãå…÷x[Ñ¿eÙø¾m¿ý²lÖ¬W¿úµ¯Í²×½î5¯9á„,;ì°}÷7.ÇÙÏ??ºê^§ó¯§gÓ¦gŸÍ²nø?ÿçË_βŸþ4ÃñÇï¹çÛÞ&×ãÈ#'L¨W«’�™‰óÛnûâ»ç©ë³³ñŸŽï½öúË¿ÄñÝéüK]'•Ó¿ïŸ'�=vÓM?üa–ÍŸ¯Ì…vîÜ�ü{ß˲‡~ë[_úÒ,;à€!C6o.ÛÔõÈ¿�ÿ:‹º�¥þ´+Œ¿bþ tgÉ¿O<ÿf¥™uŠõ\Nþ›1ÚÌ:ç9µGþ›1ÚÌ:Åz.'ÿÍmf�óœÚ#ÿÍmf�b=—“ÿfŒ6³ÎyNí‘ÿfŒ6³N±žËÉ3F›Yç<§öÈ3F›Y§XÏå俣ͬsžS{; ÿÛÐSDè/9š’ÂS¹×k§¸ÞÖ‹ëµóúÕ'¿»½pn�Oìõ8Æ�{„| ÿFz»Îßž…×k‡øWÿC‡ê^¹}ó›Ï:ëCʲI“†> Ú°AžIêí ý ž}vñbY8¿êªï_—ßsŒùó¯¼ò£ͲW¿úÊ+å Åo}ë÷¿¿òJéOš$ß ·›÷¼¼vÞó×ãðâzíšú×ã@m§ü{q½vMÏß‹ëµSÿÊg·ãüU¯ÚgÉïñ¶ÛNϿݸ^<åÝÛzq‘ݦMË–É'@®¼rnß–{?æ˜ .¾8ôc èW‘¼v/4ÿÝò?a‰'þïÿ�esç~÷»¯~u–­Zµy³Äý{rÈQGeÙØ±r$Ê^ºõòêµëÖù§ÎˆþÃu÷^¯vÙµ�íò¯ñÀëÿÂ\ò`ü1þ¿ۤ²iV¤[Ö¿öòÄücþ1ÿvÞÿ2ÿ™ÿÌæ»ï«¼x¬?¬?¬?¬?ÞzÑ.;¸€žþ'hY“: �Öá–G´··½ûÿío×®ýÍo²L_¡ÞÞ³8š—çÅótj@IDAT)§Œóú×ûq·wþÓgrÊ)ÿüÏYö©O]pÁÞ�eǧ-E3hÐ'?ù‰OdÙ�wÞpÃ7¿™eþç’¼¸ÉSíïyÏqÇ}ò“Yvã�=$ßBnúJß"žgÿÅË¿çì°Íö~þr|ø,Z·H�ŽøÂÄùÎRÿsž»»·Kß6lXÕç°a¢ O:‹ö…Š¿íúoíÛFŽÌ²ƒ>ºo«òn%;ÚùÛóÓ~ªþðüåŸu�Ë?�俳ü3þÌÿø Ëücþu²þ³þ°þh|Åþ…ÉúÃú£ñ¡µ¢-çÎÿ¬?ÕÌbýeýeýíÜß?4ã8ÿpþy!æÇz(€’¬MÚøem‚ðâö¿zuoïªUYv×]ë×ßqG“ó~alõ8�?~Ô¨W¼Bž¨4hìX9–õú¯Z%߄ߴ)DªûŒ- ‘(þÅ�¼ºyùòÅ‹—.ͲµkåeêY¶ûî'î³O–�ÕÓ#~ž|òÁÅï‚�?¾|y–­[÷|ß&¯~>è Y�›3gêÔqãòã ï‡Àþ‹#âû(ÎË£ò8íkç–ÿ²—p}„·gžyøaáE¢î©§$sKyš~„iÓfÍʲٳɯÇ_¶Lü�ßûî;uª¼’{ÆŒ}÷•xG×_ý ´­ÆwˆæÑ£÷ØCâ[rMâæ©§V®”ODlÚôðÃòf »-^üpß–eÏ>;ªo˲ Â%RybÇk<Ëu¹ÿþ,»ÿþGyâ ‰ëâ•ɲqãöÞ{Ú4ù„Å!‡LŸ.ù×ÓS—E?6dÙÓO/Y²bE–éç.F�Þk¯�ǧ˜¯R�Ö®2dı_Ö·É‹ó§L9ä�,;üðƒ–qöPöúýûöõlòùOŽ{ÅŠpܲ/Ûðá»îº×^Y6~üÈ‘Å7ޤüûãp¿ýBN™â0øóþ?åߎ×ë]­_{ìê×�!Mê׺u+VÈüµr¥FÞðá»í&õtüx¹~ÞMq¤zmܘe==C‡JþOœ8~|ì-éóuX®Ž|Êeåʧž’xzà�ùó%®W® u8ˆ•|Ùwß”¸š=Û—ÿØï AÍüNž®w5þ,wMã±nžjÎ�§=ªÐGñ'¬ÈýñCÝqÇ]wIûÌ3á~chß&õe÷Ýå“ 3fÌœ)Ÿ’«.ù<µÆ#ã¯5ÞòØdü1þ„�Öâˆù×oÌ?e€õ'0ÑZ1ÿZãM£o "ÿä?�¥VöXÿXÿ„�Öòˆõ§5ÞòLeþÕåßù3“P$�§:.ÅãòKP·‡q^Üþ,ذá�ä~½½ò‡¿í}ÓãÔãž3gäÈ#�¬5¾nÕ11 Æéìõ×c2Dã_ŽH¥Ò"ÿûìsüñYvé¥×^{á…²€~ê©—\’�Ÿ;÷£½úê,{øáÓNýä‹EbU<Y ¸ë®k¯ýêWåÉö}È>Ùž£V÷fÍ:í´OZ¾Á~É%gœ�¿Á®âýzY »îº¯}-ËN>¹©ß3Î~ÿæo‚ßÑ£u1L} ¬ ü?òÈܹâç„Þÿþ¯½Šxùå·Ý¶hQ–�tÒĉöŠÉØ…×ú§Àkl|1HÞùÎÏ^^Ùÿñ�Ÿ~úœ9ù]ñº‰¿­[/–WhqıÇ~ðƒ9Úyç}ûÛÿñòýo|ã/ÿ2Ë>ûYy?Au›5럸቟w¿»¼€nÏ&Œµþ«ˆq‰�sŒü4°8·G³eËòåü£üÀäCzó›³ì²Ëâ¼Øq²Tû®weÙw¿{Åò&ˆ£�ÞsÏâ‚eÕ>Hž|òöÛÿßÿ˲‹/>ýôsÏ-ÿÐ%5&È�?þì³Åßç>'?$8úèI“daóV�ªZÅyôÑ믗o–£ø>øà_üâœs²ì¯¸à‚:ƾüå3Ï<ñÄ,³5ä ò™�ÞûÞÙ³åÉuõß?ý÷Åqë×E®Œ|‹ýê«/¿\ð�=6þ­ðpæ[¶,ZtíµYöò—¿êU矯ldÙç>÷«_ÉÍŽ8âþû¥žxb<ßóºââû߿⊿ÿ{ù!Êž{¬ºtkÏ¿jYο!C6nþÎ9çØcO=U>éFHþþò—!å©­]qxÔQûì#?ìÑë–ò‡äzþ½½K–´£~]ý™gÊqÍ�ûŽwÈË>ò‘ùóÃ1Ìš%õû®»æÎ}ûÛóWÝ«{úƒÎ?þc–Ý{ïܹ§�&?L„ü,Suø¢‹~øÃŸý,ËvÝõ?�WðŸsΕWê‘士{³f�qƾ�eßüæ?üÃ[Þ"? ðö¸;ï7,Àëªÿ]vÙ´©IìÚkxà»ßͲÃ6Ìs¢<Úø ˆòÿrþ«�SËúãÐŒAÌ[lTU†qÈ•µê}CÌÆ##ÿÂ@Ý<Îø‹ÅŽ›Ø¨ª ã�ÿ*kÌ71Öª2ŒÃø«²ÆøÃqc­*Ã8Œ¿*kŒ?71Öª2ŒÃø«²ÆøÃqc­*Ã8Œ¿*kŒ?�›žÔŽÔ FžÈRã„ÚÔ˜˜<…³£øè¡�,ˆ�ùö-CÇ�ºn/¶ëŸº MãoĈ—¾ôMoʲOZþŒ[Þ.»,Ën¿}Ñ"Y ·›,ÈÓÔ7Üð‰OÌœÙ|á\ñæÏÿÞ÷.¸@þ°*OË&¯¾ç‰‹þç³Ï¶?…ýßýÝ~ Ç×t³ù§? ißS¦¼ñ�—^*qû`ß–eøÃ5×È›-ìvÞyßûž<áÿðÃ>(q}oÿ–eoyËŒÅלéÛ<˾ð…?û³Øu‘Šö±� �·Ürï½r]¤ îüù·Ý&Oæ_rÉ;ßi½ËÈŸü¤,dï{< ?p°ç_—è æÍ“L­Ö¿ÓO¯Ž“ó}Ï{>üayuÕ*‰äæþSñ_õf%åù¯ûqXö¯G×*ÿ:^Z_ýŠû—+QÄBûiþNÊîQbæòËô#‰ßûïè¡G y"õøºë¾ô%ùZu»æšw¿;Ë~ñ‹%KbóxÕ¾*y¡üÊ‘4¹þ;Î'ŸŒñ3xðóÏË“ò—\rúé±zœe§œ"oùÉOþð©¯�ôoy=¾ì²}(v_Ue9.irþ‚�Ž¿8~.�Çý 9Kh�ü ˆ¥˜>>ŠñÇøcþÅò%.cýaý‰WÒx¼äÒø(Ö_Ö_Öß"O¶?ô�|µXÏ_ý^}õÅÛ×;ËøóÎû�ÿ�…· .8õÔCÍýʳ]²ð6qâÌ™Áï~ð“ŸÈŸ½Ë^åeÜÿöo²0ñüóžW(ÛÑ‹ÿò—òªõ¦ ‹Š£ Vßÿ~üü¾ò•ßþVŽûŒ3Â+¦å›¯Â«üäÈ,›<ùØcåUô?úÑÏ~ö¹Ï)jÞ~þó_üâ(ß@ãrMzOb¿ó�Ûn“W´¿÷½'žxØaá[Àòƒ ù2¯|cØ~»=�¶}hRq¾xñSO=÷\õ×®½ãáí‹_´ºw½ëŠ+²ì?¸è"y%ó캫ÄÙàþ-|[Zž4ûÛ/¾XDÿñmÄÍŸÿÙÏÊÂ×Ýw물HXžD}ì±êË�e¡æì³ÿâ/äIgûÍî!CF�–W�ÿÅ_|ìcòdø%—œu–,ŸÕ·Iû¦7í»¯>klϤ®¯ù7ÐøÖ<92|#x�=&Lˆ=‘>fÌØ±ò)ùf´Äµ| ]¾í\\<—ã]µê–[ä‡2òcšòvÊ)òæ‡yó®¾ú¯þJ^‰¼×^2^¿-,Ù2q¢¼Òþï¸øbyó×¾[x<ÿüo|ã¿È²õëå‚–=ÔõÎ:ë_ÿõÖ[Ã+÷åÓ úmq[ÿ.½ôþû%Ÿ«?$ºé&y3Æ/¹p¡|»[ù¯óÙ Ýö‡9ÿ¥~Éy|÷»wÝõ¥/ɯ^ò‰ßáÃÃûR$O¤zè©§JÜ\ý'>[°]±bÍù†x“í…ò[óÌ-·È«ÖåG}åí”Sä•üóæ]vÙ™gÊ7ç'L(Ö(­Ç¯}í¹çÊ'f®¿þSŸŠ]—2fµç9ÿê¨öIè_hŸM‘È?ùgü5ÍšöÙ3ÿ˜Ì¿öåSS$æó�ù×4kÚgÏücþ1ÿÚ—OM‘˜Ì¿Nä_ßÒQ³Mþ€]÷K¤oæ­j�𑾊ØL‚𑾙·íÏ�ÒôŒ>ÒwÚÿÈ‘ãÇï¾{Õ˼y >óL.4è©§þô'ù&¶}þû”SäÛž§�vÄòJR»ÙóÛ¼yÈ�3d�磌b Xßÿþ-·<öXŽRçWþ�ýîwwÜ{äövOýoÞ<|øìÙ²ÀxýõßùŽ<ÑwEß–eßúÖUWÉ7š§M2¤üjm‹ú#Gî¾»,a,]ú‡?üË¿dÙqÇ�y¦]Ø—'åUíòäök^3eJý+âŸzêö۳쓟,ó*ÏÑÊ+ª_ÿú)S<…tÈ�ƒ’ÝË/·Ï¸ÞÔ·eÙã�¯_…rù<�?þŸø»¿“LœØt᥌zÊL'2¤O�óÊÔ¨ÝwŸ0¡:ªçƒÉyÏ›÷ÓŸÊBgq 6çŸÒIÕ…Ý¢�ì‹_ɇ·¾õoÿVžÀ¶Û¯}ç�O”•ÖåX�NÆËë¨çÍûùÏíuÝç>wÞyo}«,\Ë;D6ë_åS¦¼îuÿóÆ~ÈsÍ5’· øòEžs?p8ñDûštñeýkú«¿ú×�= oëŸo§Z{|òF†vÆáßömò† ù!ÎþûWÏ¢ê¿jÓDbëÂGú&¾[±Mù—ó�7)}ôرòƒ2´|ð }[ÕêξMÞ¤áÝÚí7u~ÞãIÙy�Sý{ù‘Ÿ™­['5÷ºëb?¼ôÒ�~T>åaëLê8gÏ~Ë[äSvVNÙ·[®çŸÂEúÔ8¯á#½×OÊá#} ×+GøHïõ“²CøHŸÂõÊ>Ò{ý¤ì>Ò§p½r„�ô^?);„�ô)\¯á#½×OÊá#} ×+GøHïõ“²CøHŸÂõÊ>Ò{ý¤ì>Ò§p½r„�ô^?);„�ô)\¯á#½×OÊá#} ×+GøHïõ“²CøHŸÂõÊ>Ò{ý¤ì>Ò§p½r„�ô^?);„�ô)\¯á#½×OÊá#} ×+GøHïõ“²CøHŸÂõÊ>Ò{ý¤ì>Ò§p½r„�ô^?);„�ô)\¯á#½×OÊá#} ×+GøHïõ“²³ø}KWaSEõ—º\–�ªzE-Ò—­óÞŽê̘Áƒå Á+^\¯r×ã–% ½²Ò¢ë‹ôù/ïm/׿|TÒkvþ6¬_ûý¬YS¦ìºk޾iÓʾ-ïëÞÉ'¿úÕò„òÈ‘ºpåó?qâË_þº×…'ÂåÕòºiÙÆŒ:T¤_ç÷È#‹~ÅZ6ÏÿñãgΔ…ГN’/¸7ß¾ÿý³Ï~å+³LžN³[X8¿ùfYà;é¤}öñ,|?ÿ|œ×›nºî:Y@ÿñ�8@^Ù+LXå~xÎøž{äÅÕÕÍû­Uá¿~Á?`o/ñ_Íßøõ_¿~ݺطÎmœ žØ-]úøãåŸ4ÈSËò­êŸüDX—-1ýÀ@®ÈàÁ+WÊ«–í6fLo¯ð¬Ç¿eË.»ì·Ÿ|K;<›üí¾MÇHn¼ï}ögÒΚuòÉòÆ�7½é„äÛÝ/}éœ9wÓ§O™" ¸cÇî²Kø¡D<þ3Õzãû5¯‰- jœÿ”?¯\¶da=!›<¹îÍ—“O~ûÛ_ñŠâ‚šïü÷Ý÷è£ßøFù¡J–]uUˆ-ñÝîü̺MãOm‡“'‡86LâÐâ«m‘^íl«õÇÊ-é-¾öÕ«ã'5^Îcĵª¶ÖêÇ'ëÖmÚ”ÒUQCüÕùÕ1ê?UÕoêü§Õ6ÍO<ÿRèqÚãX³¦úez©Ì³g‡ÄÉùÇßQö¯ùtÊ)¡®_sM^×­Ï&}å¿ÊoÙU_ö‚ôeë¼GÿÂ@¬¾‘ÿ%õó¯FãOP6ü-ó�ùÇúÃú[­Ÿœ8ÿœ õók5Bô ÿsþåüËù—óoµ~pþ µ“óÏö8ÿl[@¯®Ny­üsTÇJ[N€¢¦¸¿£úßm·ÁƒåÕ /¶t=n½q,^«fûÛËõ¯?ê<þÂ�LnÝ,þŸ~ú¾ûþë¿òѺ7mÚ”ŸØ-¹[íŽ9æÐCe!*ß¼þ–DY¬*nsçÞx£,\®[÷–·LŸžeÆyý*Š×¿ÚÛV¯¿•{ûògõ&[üüä«Ñòšê~0öœ~üðã„?þñ±Çä[è³g—¿)Ý )·Îã/—…½�òoñâý¦þýq®êµç_ÿúyç½ÿýñcj"�Û·Ýq‡Äù;ß)q.?@‘ñ'œð·+ßPÿØÇ.”O|ö³åWºÏŸ?wî•WJt„Öú<þøÓO—'WÏ=÷£•o Ï™³çžaaÙZ¶ÚñÝ”¿7Í¿xU¯Ë)§}t–í¿ÿС�ÁâóçØë�!á•ñEKymó=÷<ù¤¼jöìý÷¯{•ûäÉ{í5ztqtü¸‹²ßÛ;l˜¼úÙþ aîÜ»ï^¸Pž¶?í´)SÒo:èÿ½½[·Êù¾pqXý•Çôù«Eg[ú:Á±ïú§=ô¨Rõÿ”S^ö²,“bH…4hëÖ¸§ªTòü ƒæÌ‘'׳ìÛߎýø.?ßù§ã¯ê?ÇöìÑ`©žGòŸÊÿzÞp2þÂ@}1ÿ˜ñ‰KqÝQ ÖŸÀD=�Ì?æ_ÿ¼L%E]qÓ¦õëõÉ^Ï“Ëű±¥ãY³&OÞm7ùrx¢=åõêU«ô1ùvrû¶òõo‚+ ÿï{ß+_ù7“e×^ûÀòêîÃ6,õô[=ö¬Yòõìw¾sΜØ+öëÇæÚõë—-“oJϘ1n\uñ1·Kí)ÿé 35²=rõß*š7Îsüúëòɧ�&O€O˜0b„ÞjåcñÞú¾mÙ²,1âðçN•ˆÈæãäßò õ³ÏþÎwî¿?ËN>yÞ¼›oβ_üâ׿þÕ¯²ìW¿úò—‹O,ç#ÃÞM7]s�,üjû¹Ïýìg< ¯’Ÿ1c  éí�o{äÚ/ó�¯ÿª¾-¼Þ]$ÖºÉý»îž Fþ—/_»V^-ßʫǿ÷Þòæý®²úï^þþ5ß÷¾«®ºï>‰Ã?ýI~hÕù8Œ_ÿî�ùJ*ÿei÷zêÿ…>ÿîù�_ÿî1^öŸûýéOå‡-úo�Þä)ý¥K—,Yº4GKï•ýwÿúÓñÚ�a@þœ)[‘™Ní—½�òÏøcþ±þ°þ–gÎ?�a Ì2ç_οœ9ÿrþåü[ž:3ûØÎpþiïüY@×å‡úË#Â&—ŽËÿôéÇtP–ýüçkÖÜpC–mÝ*Ϥ5a¬»¶==ƒÉ«bõ¸SÞ_¬×?u>¹¼µøëí]¸ðG?ʲ¿þkyÞ²¼ÉËF�>ú€dGâ_€å…¥ºP^´þõ¯çÍ“o9¿÷½‡&q“Ú,ÿ==«V=ýt–ÙŽï·ßôéòT¦. mÙ²ys,³ÿë¿î¾û©§²ì˜3', Ç¬ò£±þsMÓ=ùúª|“ú›ß|òì¶Û>üay2í#Ñ—Ðg™0zê©gž) q·ÝvõÕgž™e{ì±eKxr­|œ)^O>ùì³/¼0Ë.¾øÏÿ¼ü„¿=Þf×ߎFýí§þé´G\þÞ8Ôçáà›6ɲly“W…Ÿ{î¾ðéOË‚½÷�%zôÂgU5e©ô$öÛïˆ#äIô3Ï í{ßû‘�üÃ?dÙªUË—Ë‚Ìc�Ýwß­·fÙ¿ýÛ§>uî¹{åÏŸþEýìgYöú×ÿû¿Ÿzª¼ñÕóÖâ{âDý„CõËÜ>ö�?/×§z]nºI¾ÿøãë×ÿ¯ÿ%¯R6,6_©å_ZYØZ±bñb»°%?lØwßñãe�[ìê~³téòå«Wçç�Ú³þ{{W¬X´(ÔŠâ˜1}ÛØ±¹Düۈɵ²WÿeÛæ=ñ.¯ôNÇá²e!ï¿ß‡oxÃÕWKæŸü¨?&ñ_þõãUkùWyº W!÷¯v„òoåå~jtÙªÚËýWuAÒÌS6Ûí?u)¹ß}”4å?öÁ©£?¼l™ü@nŸ}Æ�6ÊÜ¿ÿòåYvë­×]W~—HêŒËòvŸ¿à•=Ô÷è1Vý•]�?„¦öÚ’Äù±RŸ×Œ¿'(š4ï´eþ!ƘÌ?a€õGkF¬eýeý YRŸ'6v8ÿpþ©�ο!gK¬?¬?\ÿí[*µ[C°¬D¡€$RË«2/4°…%\àÛÇé83gΙû™wßWîy/™sÎóÌýÌÜçyž3î™9®o_ö{õª®–?t�¼#¾êmEbÏÓž·=¯í½ÿÛÚ¬ó¿šš–™´ž2åè£/¾Ø²ï‡ ¹öÚ/}I&kj’GݻﶛLÊ7{“›¼é*oƾþº¼ëKÿ+W67ß{¯,EcKÉ73»víßà@ŸÝ©S~X&Î:wöM¼…ì¯Z5oÞ~`̵×Îlߌ¹é¦ï_¾iýúë[¶$Ïßž‹»ol<ñÄáÃ�Ùc�®]e‰û1cnºI¾y.“«émÑ¢©S�9묛n’77Ý×S!^››ò“§ž’ ¾4¯iRsQÛÚä�Øõïl²Dø¦M¾‰û,N©-®ý'ÄQ+±Ÿ‡ŽôÛ/ÕÏå¼%ÿ}ô£CÚ·´My0báÂ¥K×­K¶ûí»×ÿöÛòvéÙâ7¦“HR–Þ“þ“e¿ysú W–Ø®««¯—+>ö±#Ž8é$cfÎ|≧Ÿ6fâDqÑ¢… �yå•·ß®¤ûÎ³Èø›\ɽ©Ëu‡úE]Y°`É’7ߌ�ý<û�:µ¶Êþ·ßÞÔäNlEŸ•ðe•ß–$ÊÅ/^zI¾›n[£óͳ¿|ù¼y�<ëÇ¥ÐG+b�tIçécpMìRÄ_~yÓ&�â3Ì×@ýï��0�?ÿO2æ�7иñ/ë¹È ÆR%m¤£8)éhÙßÿ.êŽf¿hÿ[¾ä1 y»|Р£�Ž–\·’è^å–[æÎýýïã¶ìøɬýÖÖçŸÿÙÏäS¾;�$N©eÿ[ûõ½îÚ,ûÅÿÇ=>•Øÿ>†èô?Æ_Ìÿþ<3TjÉ�ËüÃüÃüÇó�?OÄ •Zòã2ÿ0ÿ0ÿÄ1ÅüãÏ1C¥–ü¸Ì?ÛfþywŠ.}zÙΗ€ñwmVWZÜ÷kÅ­Û»ýaÃzô8òHcjk«ªJYú9fª2%{^ö<]+Ûoÿ÷ê%ýѹ³¬ à^u\·×/{yÓòÕWûÛ0æÔS<ð¸ãäKœ±®-É’á—^zòÉû˜m‰÷mm½{t�L‹Vr[±B–Œž>}Μ¥Kã ?k?©)å¶¶?ÿùÑGåÍ÷Ë.s—Ž— ËqãFŒ� s»½ýv�r>cÇf§¨åá—^úÝïÊ×î2Ê®ýêê×_—oKOœøÕ¯^s�1·Ývsûf̬Y×_¿d‰1--h¢Úž‘,nå i‘¥Žåü®¿~áÂï~×êÄû+ššÆŒ~ž|RÞ˜w·0¯‹Mž,£?¼j•{TlßJì„ñ•W¸ÿþ2±*›1 ûíwýõÒÿé >{\©ûrç¿ìyD~^[ë·ä¶vÔÏ/Op챲€»]sÍ 'ŸË—·´$'L]=ë«WÏ�{Åò@JCû&ýí§M[° ùæs[ÛK/Ý¿1Ò{Òò¯ì¿ð…™3Ÿ{ÎEÏö¿LüDßê+É­¡á#‘ì7“2_9òo+)Õ¿íõ[œx}C=®G¥§žZ¾<ɇ+·õý÷1Â�ØÙ¬Y§�võÕÆ<÷Üoȸ²/í²¶ÀOÌœ9i’1îtgCÃÅŸvšÄOú"kß·—\zÁMMòÀˆ Q Ù߸ñÅåÁŸ‹.š:ÕÍÒsnþóÙ“¶´·fµBö³šQË;îß>žlÞüòË2N ? Ù/Õ­ýÐù¹í!ûVO{ýr¾2¡ß³gôØ„=^ö2¾üìg¿ú•¼AìnIû2ö,^|ç�’ÿ³ë¹¸G–§ž´_Äb(ï·}t¶Úþ·8r=ÉüßÐ0|¸Ü'¹ÙT˜9öXc¦M‹°p²xëÖ­X!ÈœtÒ 'ÈýÚ\ûý<�Ž^¶ÈÒleµi_Èòjaÿ#�J3‡´éô?Æ_:fòjÌ?(£¤ÙCÚÌ?Ì?Ì?é˜É«1ÿ Œ’fi3ÿ0ÿ0ÿ¤c&¯Æüƒ2Jš=¤Íü³mæŸwßñ*vzéÎ÷ÕŠvøön¿gÏêêº:YŠz§�N>Ù˜‡Z»Vþ°.dLþ¡ÑÇe%ÛdP�ÿìyÙóì¨ÍNÿÏŸ/ýpÇ÷Ü#ß㬫sSY—öM¾!þÆû›1Ï<ó裳fÉDQø (ù#ñÌ™�?~ÓM2qÔµkòÍsË«L4È›Y#GNš4}ºL€ÏŸŸ|ƒý§?½ì2™p\¹òùçe‰ó)SÎ>{èPYR¹S'YúýŸÿ\ºTÞô;vÒ¤Ûn³¨ñ¾¡aâÄ‹.’¥ã{õrß”¥¬�=vÂyc\¦(d©j»-ZtÝu_ü¢L8.[vÉ%ÆÜsÏøñGÛ]³æX°À˜3ÏüÖ·„wklœ6M¾i-ß�ö]·«oënüWUí¹çç?oÌ’%wß-ÞŸøÄ™g&íÝvÛÙglÌüâ«WËÖ÷ÙG&`c^'Nôñ:gÎ…sŒ1/¿¼rå�73iÒ¨Qò ƒ|�[âpݺ¿üå׿6ææ›Ï9gÊùöµ=Ãhߨxà òèÁ{»¾4J¶æ^V££-‘Ÿÿð‡sæ¼~îÆMÍ>û46sã�#GŠŸ'—è— ÓãŽ;ð@ù&îôéwÝu饯 ºï¾;ï,KŒ¯[÷׿JÜÍ�+j“'ßr‹Û'òÊ©§qDÿþGâwÝ»÷é3`@͘qÚiƒIž�6mÎcN9eØ0‰Óêêµkå õG�=[⮩É}C{%¥é•óúK9ƒ÷Û~)çœwŒë›6Õ×˧3¦M»äy°ï¤“®».™1n¿ýüó?ûYYÁbÈ_ÇŽÝ{oñ£ÖÖ5kä�§‡jnNgâ<ëá~BG•›÷úCvm;íùó”e-¼'ÿÅ<ª˜v˜w+!ÿÅ-¦mYïÉ1F‹i‡y·ò_ŒÑbÚ–åðžüc´˜v˜w+!ÿÅ-¦mYïÉ1F‹i‡y·ò_ŒÑbÚ–åðžüc´˜v˜w+!ÿÅ-¦mYïÉ1F‹iǼ×ÄEI¦•äOÏE;Ä�·jqµz1²®¤ÅÕêé¬Ê·Å»t‘¥»�9¦gÏ#ŒyòÉ–ù¤pœÿ'~­�ž�8ÿìgëêdÅž—{t¹¯ßâkqµzíÝÉdÑ—?äΘqÅÉ?è"œ¬|äH™è™;÷ª«dBzР>}òúÓ^W§N{ï-oT?õÔ(ôGuöÙɉâ+zH&®N=õ¡‡²6}-£GËÄð�~}K<šRÎêmÝúáŸx¢|Kô®»þþwc7nÆŒ¤Þüùò&ügDû¤Ä_9RìN›6vì¾ûІLeg5ׯ϶åµì¼óСÂçÃ_r‰¼Ùîþáýë_ÿÌg&L0fÏ=—.½ývcä î2aÖ©Ó~ûE¼Îž-³G5~|r"gÑ¢[nùÆ7¤ïå½HÍÖÐ \qÅÉ'G×'W˜<Îÿ&pR#Y¶ý�òªV/‰-åmÅÏíyÉuÈ’ácÆ\½,Ñÿ§?½òм‘˜œ –ø»øâqã¤]»M˜ðãˉîƒ*›6õêuØaÆÌn߯Ž5æÈ#Ç�— ;»57ß|³ø�ìmÚËÄη¿}Î92�.›ï­Û~­¯6Lt)êßÑȘ±Ûn2A}å•Ñ»�S§ÆÓLRš5ë å p›S.¿|Þ¼_”oÀ74ÈÊö�ùt‚ŒC¯¾úÊ+2.55¥q®¹æœs²kVسÈî§Oä‘ûî“OEÔÕù&Îíõg�t[æÏojŠò�ìñ6dˆÄéÓOó›ò`D§NÑ·ÞÝã¬ýâñõº¶Ÿß/?t¯×­g¯¿XþrñÜzß¾C‡JÜɘ(y×í»Ûn»ì2‘'s²‹‘WŠBwÙëϳ¦‘éìZ¤òÙ/æ�Ƽ_ç]ù!‡œ¾ôùlÝ*ãï˜1Ó§§WŽ��Ø3gŽÿnL ¼õVy °Ñ8õÔI“’yÝò‹öZþµzÈž+×âjõ\|T×âjõ�=W®ÅÕê¹ø¨®ÅÕê!{®\‹«ÕsñQ]‹«ÕCö\¹W«ç⣺W«‡ì¹r-®VÏÅGu-®VÙsåZ\­ž‹�êZ\­²çʵ¸Z=Õµ¸Z=dÏ•kqµz.>ªkqµzÈž+×âjõ\|T×âjõ�=W®ÅÕê¹ø¨®ÅÕê!{®\‹«ÕsñQ]‹«ÕCö\¹W«ç⣺W«‡ì¹r-®VÏÅGu-®VÙsåZ\­ž‹�êZ\­²çʵ¸Z=Õµ¸Z=dÏ•kqµz.>ªkqµzÈž+×âjõ\|T×âjõ�=W®ÅÕê¹ø¨®ÅEzíïÜåoèÌöhkÈÖÑ^‹«Õû Ù?ôÐ=ä ÚSNéÝ[&úìꈷŽÊ­k÷“ŸìÞÝNù°·7þkk³KËú®;¯M¦ªÏdßž‡ÝgõºvíÖMرѾ{÷ºº¼B<?ÏÑ>°3xðøñ³gGã²Üw\qÅ„ 2Œzg‹öR?÷Ü /œ6Müà±Ç~óYùgâDyà³_¿ªª5kìY߇®ËEÒêYÿs�Õµ¸Z=ÚBlgÛµ¼jõÈ?ù§ÿeã,Ô¢�+­ã�ñÇø E[¶]WZ=Æã�ñ—�³P‹6®´zŒ?Æã/mÙvm\iõ;füU½òÎV$ô²Î˜×biGÌÓ«”ìƒb¿¥eË–ÿÛ˜… ׯÿå/å‹­­²”°|™Û7a§å«ººªJ–&>è nÝ>X–à�¾Å^®¥ÚÑy|PøG×Qª¼£×¿aÃ[o½þº1k×nÜ(4={FC--mmR¯¯ïÛW&Ð|“´rÎ¥ÚÙݸQ¦ÚŒÙe—]w•¥œå ϼìa¥ÛZüoØð曯mm2!&¼¶¶Fß~ïÙS®o—]äQ t}È/¶ÕëGç].¹öú««7mÚ°Á˜×^[³F–˜¯©éÙ¾É[ÞÛ7éŸÞ½ûô‘¥Ùkk%Ÿi·�}±öæ›W--‚Õµ}“½X“¸êÕ«o_yc>W¢«ÙBö5ÇvD§ªjsû&ß—DÐ’‘@kÚ7½_Ëã"Q¿¼öZº_ZÚ7A‹ú¥¾^z&{Æ¡ë·ßÿÈGŽ>:ùé ù„|"böìÓO—oÍÛMzKúKzGο­-²ßµkŸ>»í&ýå÷‹�}‹[é=²_i?Dößëëß´é­·¤׬‘¨ŽÇ3Ídº¾^z²|gµ­]ù®L‡´­]¿Íçö!¤Î�»µoEòQuµä£üÊWäá†ä''ä�·¹s_|QÞp4¨K±±­]¿®×ʧÅë�îN·µûÏòõp>ûŸý/Bÿçߟò3Ee¤Ì?Ì?Ì?Ì¿8þTf„ÉGåøÃñ‡ãÇŸJ�?íŠF[€ÒHÓ'ïø‰ïöí„öÈ‘uuòíç!Czô6L–:nm•%wW¯Þ´I¾ú¯mÞ,€þ÷¿7o– w»ÕÕuê$ßXßyçN�dBuàÀ.]d©é}÷íÚõ£• †êj™*¾íü‡yy¯_ÞlìÛW&Ó½—®…Ï¾Ôø{‘]ñ*Ù¢ø�íÚ[“Hú·Tû1^eøïÞ]=^cKr¥Ù뫌ýØ**íö·l©­•¾èÛ·_¿dŸSWõIyDZ&yR¾žì�^í[².S0Q½¼öÓ6òj¥ÙߺµSûfL·nòorÓÅ­=bË–ª*¿d™²Ç$÷åŠé-鯸·Þ[û6ÿ%¯MSF×�ý°´þ·ç†ì[½ð¾¼ökk{õ’~ì×Ï�³Ð”×~ÈJ¸�ö#n:–ÿ¶nýûß}TîK?ü‚ ’l�ý�ï³bÅ�7žp‚Ä·»‚Mšÿ V®”•6’çZCƒ|Êb�=ºu‹8�þÝÖü?yåºrúúuÇÄZ¼þÒü6f�üG\”Æ#ý¯4Þè–ÆãO(-Ž˜JãÍFßõÿíù³ÿÙÿÖJÛsü‰x+Í�¥ñû*ý�þ' ”æGŒ¿ÒxÓÆ_�ü9]BTˆö›ò·âãâSÈ+aœÓ¾�ð>ä�=äƒvo¹Ä¼YÍü=ÆÙ1ù�YãõÇ\Ä%ì7±n^ ã�˜7ßQÙ6ŒCþ³¬Eo6æ�›¾£²m;:ÿYFÜúŸËˆÔ±ßøŽÊ¶aòŸe�üc¿I³Ö¹sß¾òÆøèÑQ»|çÜ–¾ö5ù”Q·n²$ûäÉ£G˃£ûí׿ÿÎ;³yóúõÿø‡1/¼ðIJÔûøñW_íûæù¨Q&ÈÒîyŸ�±“{|ôÿ$_¶Œy³šù{ŒCþ} bÞ|GeÛ0ùϲÆü�ýÆÇZ¶ ãÐÿ²¬Ñÿ°ßøX˶aú_–5úökÙ6ŒCÿ˲FÿÃ~ãc-Û†qèYÖèØo|¬eÛ0ý/Ëýû��µlÆþZÂgO&jéØ3•ö…�¼,SîžüGŒøße+T§ÿÑÿÌ?áË™ƒùGÈÏ¿mm«VÝ}·¼‘:bÄ”)1— W^)o˜Î›wÖYòMvòz°1æ,]âøñ‘ïiβ5Žÿ•ÿ[Z–/—¸?ðÀãŽKÆ}¶´-ãÆÉìË–]uÕñÇË 2Ñ'+PþAèìÿÊô?âÝÊÉ?ùçý7ïxÿÇû¿bwr¼ÿ�ÆÐb¬Ùq×î9þrüåøËñ—ã/Çßb# Ç_Ž¿Â@1¯±÷vÿA¹ÿ¨ø7Ð;NˆEèØ¾ôé˜]{4í—zCjìØžü“ÿÒþ‡ c~g�¦ÿÑÿèñÿ�ÖÔlÜøê«ÆÌŸßÜü»ß³~})»ïþñ�Ë›¤‡6`@¼\»�¢Ò÷Œ?Æã/Ž¿Ò#©´#ÝøûÏ^{méRcî»ïÎ;o¹Å˜©So½µ¹Yƒ=dˆ¼Å>sæ…N˜`ÌñÇêS{¡îÚ×X*§í3ÿ0ÿl;ù§œ±­Ábü3þÿŒÿâRšì‚u˜˜˜˜˜ŠNˆãܪÑ`þeþeþÝþòï{6�®I2Ô!d€ �2@È d`Ç``Ë–M›6l0fMû¶v­155=Û7cÚÚZÚ7á gÏÞ½�éÛ·W¯r>X³c°Ë«$d€ �2@È d€ �2@È(•�ê¢Ú'iBÇ!yè8m;ÂGr­��ÂGò®¶á#¹ÖNHá#yWÛŽð‘\k'¤‡ð‘<„«mGøH®µÒCøHÂÕ¶#|$×Ú é!|$ájÛ>’kí„ô>’‡pµíɵvBzÉC¸Úv„�äZ;!=„�ä!\m;ÂGr­��ÂGò®¶á#¹ÖNHá#yWÛŽð‘\k'¤‡ð‘<„«mGøH®µÒCøH­®®­•‰ñ¾}ûµoò-ó^í[\·çÉCöµíɵvBzÉC¸Úv„�äZ;!=„�ä!\m;ÂGr­��ÂGò®¶á#¹ÖNHá#yWÛŽð‘\k'¤‡ð‘<„«mGøH®µÒCøHÂÕ¶#|$×Ú é!|$ájÛ>’kí„ô>’‡pµíɵvBzÉC¸Úv„�äZ;!=„�ä!\m;ÂGr­��ÂGò®¶á#¹ÖNHá#yWÛŽð‘\k'¤‡ð‘<„«mGøH®µÒCøHÂÕ¶#|$×Ú é!|$ájÛ>’kí„ô>’‡pµíɵvBzÉC¸Úv„�äZ;!=„�ä!\m»‹ÿîèV�]âC�­ckÚGái_ð-q@þ#¯¡ÿ…£§ãÆã�ù‡ù—ã¿»ÄÇ_Ž¿Âï?:~—Fàýï?xÿÁûÞðþ#=Òòþ+5Ó¬„GÒÒ$9þrüåøËñ—ãoz¤áøËñWH{Eiwá£xÿÁû�âýÇ»èa×î¨ä½IÀ᳤ýˆ›Ê&@òb€þGÿ¡©l;ã/â—þWY? ¡ÓÿèÂã/!•mgüEüÒÿ*ëg!túýO`ü…"¤²íŒ¿ˆ_ú_eý,„Nÿ£ÿ Œ¿P„T¶�ññKÿ«¬Ÿ…Ðéô?a€ñŠ�ʶW6þ /á^übÓŽcŸ4)ŽSê´ŸdŽüGOú$9©l™þ—ä—þGÿ³CZÒ/*Wfü%¹eü1þɈ¨t™ù'É0óóóO2"*]fþI2ÌüÃüÃü“ŒˆJ—™’ 3ÿ0ÿ0ÿ$#¢ÒeæŸ$ÃÌ?Ì?Ì?Ɉ¨t™ù'Éðö–<èºð*5 e—ˆIÒ+eÚwñÕÉ¿ÎO\îèîE.C:^é:ž\véô¿ô-•ë!:¿büéxrÙeü1þnT$뺸bþÑñ”dVÊÌ?Ì?Ì?nT$뺸bþÑñ”dVÊÌ?Ì?Ì?nT$뺸bþÑñ”dVÊÌ?Ì?Ì?nT$뺸bþÑñ”dVÊÌ?Ì?Ì?nT$뺸bþ‰xòL ûÝKKR‹Â0Ù%ÅÊ´ïã‹üÓÿqd0ÿøódÌP©%?.óóóOSÌ?þ<3TjÉ�ËüÃüÃüÇó�?OÄ •Zòã2ÿ0ÿ0ÿÄ1ÅüãÏ1C¥–ü¸Ì?Ì?Ì?qL1ÿøóDÌP©%?.óóóOSÌ?þ<3TjÉ�ËüÃü³-æŸw'ÐÓÝ“u~I~×ÎêJ‹ëð~­¸•ö“îóbKäŸþÇø³Ñ€÷Ì?(£¦9DÚÌ?Ì?Ì?é˜É«1ÿ Œ’fi3ÿ0ÿ0ÿ¤c&¯Æüƒ2Jš=¤ÍüÃüÃü“Ž™¼óÊ(iö�6óóóO:fòjÌ?(£¤ÙCÚÌ?Ì?Ì?é˜É«1ÿ Œ’fi3ÿ0ÿl‹ù§ê•w¶üÉÛ´«³FÈ d€ �2@È d€ �2@È d€ �2@È d`ûcàÝ7ÐC—VôIšŽÛ®ÅÕê¹ø¨®ÅÕê!{®\‹«ÕsñQ]‹«ÕCö\¹W«ç⣺W«‡ì¹r-®VÏÅGu-®VÙsåZ\­ž‹�êZ\­²çʵ¸Z=Õµ¸Z=dÏ•kqµz.>ªkqµzÈž+×âjõ\|T×âjõ�=W®ÅÕê¹ø¨®ÅÕê!{®\‹«ÕsñQ]‹«ÕCö\¹W«ç⣺W«‡ì¹r-®VÏÅGu-®VÙsåZ\­ž‹�êZ\­²çʵ¸Z=Õµ¸Z=dÏ•kqµz.>ªkqµzÈž+×âjõ\|T×âjõ�=W®ÅÕê¹ø¨®ÅÕê!{®\‹«ÕsñQ]‹«ÕCö\¹W«ç⣺W«‡ì¹r-®VÏÅGu-®VÙsåZ\­ž‹�êZ\­²çʵ¸Z=Õµ¸Z=dÏ•kqµz.>ªkqµzÈž+×âjõ\|T×âjõ�=W®ÅÕê¹ø¨®ÅÕê!{®\‹«ÕsñQ]‹«ÕCö\¹W«ç⣺W«‡ì¹r-®VÏÅGu-®VÙsåZ\­ž‹�êZ\­²çʵ¸Z=Õµ¸Z=dÏ•kqµz.>ªkq‘^ÙÞ@·†Š.µ€.T+§}aÀò_l© ­!=úý�ñÇüÃüËü[d©!4®hå8þpüáøÃñ‡ãÇí¨Y>=Ž¿9þrüåøËñ—ãoùÆU-Ç_Ž¿9þrüåøû^Ž¿ð tírÜ(­kQJ×£}à�V+¿Ñÿè¾ÄÍøcüU>û„oœéô?ú_åàøÏñŸã6Î8þpüÉzEù[˜™™³qÅüËü›õŠò·0ÿ2ÿ2ÿfãŠù—ù7ëåoaþeþeþÍÆU¥ó¯b½c ÐïÖÙ ·Ð~˜,!ÿ¾´‚y‹5è1ÅKô?ú_q¯IÁøK²Q´Ìøcüõ™´>ã/ÍG±ã�ñWÌc\mÆŸËH‘:ã�ñWÄ_²ºŒ¿,'úÆãOï->MÆŸ�mã�ñ§õ¿ãÏÏ‹®•ñÇøÓyJH‹ñbFÓÎøcüiü$¬“Õ[o•ßúõaÈÌ~>t1)Á÷¹^×IDAT8´ŸäË–1oV3�qÈ¿�AÌ›ï¨lÆ!ÿYÖŒÁ¼ùŽÊ¶aòŸe�üc¿ñ±–mÃ8ô¿,kô?ì7>Ö²m‡þ—e�þ‡ýÆÇZ¶ ãÐÿ²¬Ñÿ°ßøX˶aú_–5úökÙ6ŒCÿ˲FÿÃ~ãc-Û†qèYÖèØo|¬eÛ0ý/Ëýû��µlÆ¡ÿeY£ÿa¿ñ±–mÃ8ô¿,kô?ì7>Ö²m‡þ—e­Ýÿþ;o^õR­ü~ÿûêUò;ð@«l‰•'8üZMwo§Õ‹•E‘3/MëêÇuÚ�¸ ÿ±O/ÑÿÌ?Ì¿ÿ8þIyÿÁûa ˜×¸w(¼ÿàýï?xÿÁûÞIxÿÁûÞðþ«XÖàýgšÞóþ›÷ß¼ÿæý7ï¿‹�¤¼ÿÞî¿·ì'¿?ü¡úíAò[¶,}ûPJâ´~w³7$V í‹'.‹Hû–‰äžüG7„INòÊô¿¢§e“ñg™HîŒ?{k•ô‹P™ù‡ùÇŸICcÛýG1ÿ0ÿ0ÿØÁ{æ_æ_&E¾ã?Šù—ù—ùÅN,gþeþõgÒØGü%ÿQ̿̿̿þˆñµ2ÿ2ÿú3©Ï[’mþ£˜™™“q’_fþݶó¯�7¯n]+¿gžÉïÎŽKKwˆŽÛÚ/Õ!É9 ÿÑÿü·–åð.ŒAÿ£ÿÑÿpœTJƒñÇøcüU*º0.ã�ñÇøÃqR) Æã�ñW©è¸Œ?ÆãÇI¥4Œ?Æ_¥¢ ã2þŒ?'•ÒØÞâ¯åù=óLõó«ä·`Á–•ò{öYD z’É>’#|$GøHŽð‘á#9ÂGr„�äÉ>’#|$GøHŽð‘á#9ÂGr„�äÉ>’#|$GøHŽð‘á#9ÂGr„�äÉ>’#|$GøHŽð‘á#9ÂGr„�äÉ>’#|$GøHŽð‘á#9ÂGr„�äÉ>’#|$GøHŽð‘á#9ÂGr„�äÉ>’#|$GøHŽð‘á#9ÂGr„�äÉ>’#|$GøHŽð‘á#9ÂGr„�äÉ>’#|$GøHŽð‘á#9ÂGr„�äÉ>’#|$GøHŽð‘á#9ÂGr„�äÉ>’#|$GøHŽð‘á#9ÂGr„�äÉ>’#|$GøHŽð‘á#9ÂGr„�äÉ>’#|$GøHŽð‘á#9ÂGr„�äÉ>’#|$GøHŽð‘á#9ÂGr„�äÉ>’#|$GøHŽð‘á#9ÂGr„�äÉ>’#|$GøH¾¹I~Ï>»l˜ü,¨þŸ*ùýíok7ÈïÞ{³é…ГHžÅ�ZÂNûIοHžÄJ–É¿0�dÄ–Ó­ˆ_$·¨îžü“ÿ´§YI·"ÿBr‹êîéô¿´§YI·"ÿBr‹êîéô¿´§YI·"ÿBr‹êîéô¿´§YI·"ÿBr‹êîéô¿´§YI·"ÿBr‹êîéô¿´§YI·"ÿBr‹êîéô¿´§YI·"ÿBr‹êîéô¿´§YI·"ÿBr‹êîéô¿´§YI·"ÿBr‹êîéô¿´§YI·"ÿBr‹êîéô¿´§YI·"ÿBr‹êîµþ·n¨üî½×ΛW[ c~ ¿»îÚð–üššl»,~—K)¥ !„/œöCœéÚÉ¿†'úŸ0àcÊßêÓô·Ñÿü¼¤[éô?¤ù[ÓÞ“Wcüå±ceŒ?ÆŸ?Òü­Öoðžñ‡9ÊûÄù×ðÖ¡ÿ…¹‰%ÌÿÌÿþLão�=•ˆ!‘3þþHó·j|*Òaüi¸bü1þü‘æoÕøãO`þÑø óó�?Óø[5>é0þ4\1þòãoãù55ÙyrËi§¨Ð¥Këjù³Ç^ò{á…�ÿ”_UUÍ>ò;ì0{@ñ}:ìL¸ÃŠ[È?‚ö“ü�ÿèIú_(a$½¥eÆ_’EÆãOn阘ҙ1™%ÊYN[aþaþaþaþåøÃñ'=2”sÌIb¥­püáøÃñ‡ãÇŽ?é‘!9f”³œ¶Âñ‡ãÇŽ?8þ¤G†rŽ9I¬´Ž?¬ñÇNœß¶üfÎl^-¿ÖVÛÃÿ}ç´®Î6Ø}}£üªªþo�üÆ�«›+¿ÓO¯>@~ƒG4D‰ØSž½ o²¥/j‹ÿ¥ýˆ§ò§Aòyý/޶l‰ñÇø¯`þÉÏÙÈA-Ì¿Cù¼2ÿ0ÿˆŸ0ÿäÇ Ê6Y9óOÄI>¯Ì?Ì?â'Ì?ùq’Í/¨…ù'b(ŸWææñæŸü8AÙ&+gþ‰8Éç•ù‡ùGü„ù'?N²ùµ0ÿD åóÊüÃü#~Âü“'(Ûdå;vþ±ß8·KµÛ7Îßl–Ÿå&f-8�«D¥[ßÙú÷|ƒü†ïÖ[~‡^ÛU~Tõ9ùí½·9]~=z¸Çw´. SN_¦Ü.£97Ú'ÿô?Æóó/Ç͈Y^Ž¿9þrüåøËñ—ãoyÇV Ç_Ž¿9þrüåøËñW3b–W‡ã/Ç_Ž¿9þrüåøÛ�±õ^Óþ[¿~ËTù½üòÛƒä·lYëZù=óÌó«ä·`�ýÆ9²ôÿ˜è#õÿï\IEND®B`‚kubernetes-sigs-kind-49aeee6/site/content/docs/user/ingress.md000066400000000000000000000047471524365506300246200ustar00rootroot00000000000000--- title: "Ingress" menu: main: parent: "user" identifier: "user-ingress" weight: 3 description: |- This guide covers setting up [ingress](https://kubernetes.io/docs/concepts/services-networking/ingress/) on a kind cluster. --- ## Compatibility: This guide applies to [cloud-provider-kind](https://github.com/kubernetes-sigs/cloud-provider-kind) v0.9.0+. For older versions, refer to historical docs. ## Setting Up Ingress Ingress exposes HTTP and HTTPS routes from outside the cluster to services within the cluster. Since cloud-provider-kind v0.9.0, it natively supports Ingress. No third-party ingress controllers are required by default. For third-party ingress solutions (e.g., Ingress NGINX, Contour), please follow their official documentation. > **NOTE**: Gateway API is also natively supported (along with Ingress). See the official [Ingress migration guide](https://gateway-api.sigs.k8s.io/guides/getting-started/migrating-from-ingress/) for details. ## Create Cluster > **WARNING**: If you are using a [rootless container runtime], ensure your host is > properly configured before creating the KIND cluster. Most Ingress and Gateway controllers will > not work if these steps are skipped. Create a kind cluster and run [Cloud Provider KIND] that automatically enables LoadBalancer support for Ingress. Create a cluster as follows. {{< codeFromInline lang="bash" >}} kind create cluster {{< /codeFromInline >}} ## Using Ingress The following example creates simple http-echo services and an Ingress object to route to these services. ```yaml {{% readFile "static/examples/ingress/usage.yaml" %}} ``` Apply the configuration: {{< codeFromInline lang="bash" >}} kubectl apply -f {{< absURL "examples/ingress/usage.yaml" >}} {{< /codeFromInline >}} ### Verify Ingress Works Check the External IP assigned to the Ingress by the built-in LoadBalancer. {{< codeFromInline lang="bash" >}} kubectl get ingress NAME CLASS HOSTS ADDRESS PORTS AGE example-ingress example.com 172.18.0.5 80 10m {{< /codeFromInline >}} {{< codeFromInline lang="bash" >}} # get the Ingress IP INGRESS_IP=$(kubectl get ingress example-ingress -o jsonpath='{.status.loadBalancer.ingress[0].ip}') # should output "foo-app" curl ${INGRESS_IP}/foo # should output "bar-app" curl ${INGRESS_IP}/bar {{< /codeFromInline >}} [LoadBalancer]: /docs/user/loadbalancer/ [Cloud Provider KIND]: /docs/user/loadbalancer/ [rootless container runtime]: /docs/user/rootless/ kubernetes-sigs-kind-49aeee6/site/content/docs/user/kind-example-config.yaml000066400000000000000000000013671524365506300273240ustar00rootroot00000000000000# this config file contains all config fields with comments # NOTE: this is not a particularly useful config file kind: Cluster apiVersion: kind.x-k8s.io/v1alpha4 # patch the generated kubeadm config with some extra settings kubeadmConfigPatches: - | apiVersion: kubelet.config.k8s.io/v1beta1 kind: KubeletConfiguration evictionHard: nodefs.available: "0%" # patch it further using a JSON 6902 patch kubeadmConfigPatchesJSON6902: - group: kubeadm.k8s.io version: v1beta3 kind: ClusterConfiguration patch: | - op: add path: /apiServer/certSANs/- value: my-hostname # 1 control plane node and 3 workers nodes: # the control plane node config - role: control-plane # the three workers - role: worker - role: worker - role: worker kubernetes-sigs-kind-49aeee6/site/content/docs/user/known-issues.md000066400000000000000000000502751524365506300256100ustar00rootroot00000000000000--- title: "Known Issues" menu: main: parent: "user" identifier: "known-issues" weight: 2 description: |- Having problems with kind? This guide covers some known problems and solutions / workarounds. It may additionally be helpful to: - check our [issue tracker] - [file an issue][file an issue] (if there isn't one already) - reach out and ask for help in [#kind] on the [kubernetes slack] [issue tracker]: https://github.com/kubernetes-sigs/kind/issues [file an issue]: https://github.com/kubernetes-sigs/kind/issues/new [#kind]: https://kubernetes.slack.com/messages/CEKK1KTN2/ [kubernetes slack]: https://slack.k8s.io/ --- ## Contents * [Troubleshooting Kind](#troubleshooting-kind) * [Kubectl Version Skew](#kubectl-version-skew) (Kubernetes limits supported version skew) * [Docker Installed With Snap](#docker-installed-with-snap) (snap filesystem restrictions problematic) * [Failure to Build Node Image](#failure-to-build-node-image) (usually need to increase resources) * [Failing to Properly Start Cluster](#failing-to-properly-start-cluster) (various causes) * [Pod Errors Due to "too many open files"](#pod-errors-due-to-too-many-open-files) (likely [inotify] limits which are not namespaced) * [Docker Permission Denied](#docker-permission-denied) (ensure you have permission to use docker) * [Windows Containers](#windows-containers) (unsupported / infeasible) * [Unsupported Architectures](#unsupported-architectures) (images not pre-built yet) * [Unable to Pull Images](#unable-to-pull-images) (various) * [Chrome OS](#chrome-os) (needs KubeletInUserNamespace) * [AppArmor](#apparmor) (may break things, consider disabling) * [IPv6 Port Forwarding](#ipv6-port-forwarding) (docker doesn't seem to implement this correctly) * [Couldn't find an alternative telinit implementation to spawn](#docker-init-daemon-config) * [Fedora](#fedora) (various) * [Failed to get rootfs info](#failed-to-get-rootfs-info--stat-failed-on-dev) * [Docker Desktop for macOS and Windows](#docker-desktop-for-macos-and-windows) * [Older Linux Distributions](#older-linux-distributions) * [Failure to Create Cluster on WSL2](#failure-to-create-cluster-on-wsl2) * [Local Subnet Clashes](#local-subnet-clashes) ## Troubleshooting Kind If the cluster fails to create, try again with the `--retain` option (preserving the failed container), then run `kind export logs` to export the logs from the container to a temporary directory on the host. ## Kubectl Version Skew You may have problems interacting with your kind cluster if your client(s) are skewed too far from the kind node version. Kubernetes [only supports limited skew][version skew] between clients and the API server. This is a issue that frequently occurs when running `kind` alongside Docker For Mac. This problem is related to a bug in [docker on macOS][for-mac#3663] If you see something like the following error message: ```bash $ kubectl edit deploy -n kube-system kubernetes-dashboard error: SchemaError(io.k8s.api.autoscaling.v2beta1.ExternalMetricStatus): invalid object doesn't have additional properties ``` You can check your client and server versions by running: {{< codeFromInline lang="bash" >}} kubectl version {{< /codeFromInline >}} If there is a mismatch between the server and client versions, you should install a newer client version. If you are using Mac, you can install kubectl via homebrew by running: {{< codeFromInline lang="bash" >}} brew install kubernetes-cli {{< /codeFromInline >}} And overwrite the symlinks created by Docker For Mac by running: {{< codeFromInline lang="bash" >}} brew link --overwrite kubernetes-cli {{< /codeFromInline >}} [for-mac#3663]: https://github.com/docker/for-mac/issues/3663 ## Docker Installed with Snap If you installed Docker with [snap], it is likely that `docker` commands do not have access to `$TMPDIR`. This may break some kind commands which depend on using temp directories (`kind build ...`). Currently a workaround for this is setting the `TMPDIR` environment variable to a directory snap does have access to when working with kind. This can for example be some directory under `$HOME`. ## Failure to build node image Building kind's node image may fail due to running out of memory on Docker for Mac or Docker for Windows. See [kind#229][kind#229]. If you see something like this: ```txt cmd/kube-scheduler cmd/kube-proxy /usr/local/go/pkg/tool/linux_amd64/link: signal: killed !!! [0116 08:30:53] Call tree: !!! [0116 08:30:53] 1: /go/src/k8s.io/kubernetes/hack/lib/golang.sh:614 kube::golang::build_some_binaries(...) !!! [0116 08:30:53] 2: /go/src/k8s.io/kubernetes/hack/lib/golang.sh:758 kube::golang::build_binaries_for_platform(...) !!! [0116 08:30:53] 3: hack/make-rules/build.sh:27 kube::golang::build_binaries(...) !!! [0116 08:30:53] Call tree: !!! [0116 08:30:53] 1: hack/make-rules/build.sh:27 kube::golang::build_binaries(...) !!! [0116 08:30:53] Call tree: !!! [0116 08:30:53] 1: hack/make-rules/build.sh:27 kube::golang::build_binaries(...) make: *** [all] Error 1 Makefile:92: recipe for target 'all' failed !!! [0116 08:30:54] Call tree: !!! [0116 08:30:54] 1: build/../build/common.sh:518 kube::build::run_build_command_ex(...) !!! [0116 08:30:54] 2: build/release-images.sh:38 kube::build::run_build_command(...) make: *** [quick-release-images] Error 1 ERRO[08:30:54] Failed to build Kubernetes: failed to build images: exit status 2 Error: error building node image: failed to build kubernetes: failed to build images: exit status 2 Usage: kind build node-image [flags] Flags: --base-image string name:tag of the base image to use for the build (default "kindest/base:v20181203-d055041") -h, --help help for node-image --image string name:tag of the resulting image to be built (default "kindest/node:latest") --type string build type, default is docker (default "docker") Global Flags: -q, --quiet silence all stderr output -v, --verbosity int32 info log verbosity, higher value produces more output error building node image: failed to build kubernetes: failed to build images: exit status 2 ``` Then you may try increasing the resource limits for the Docker engine on Mac or Windows. It is recommended that you allocate at least 8GB of RAM to build Kubernetes. Open the **Preferences** (macOS) or **Settings** (Windows) menu. On macOS: Docker Preferences on macOS On Windows: Docker Preferences on Windows Go to the **Advanced** settings page, and change the settings there, see [changing Docker's resource limits][Docker resource lims]. On macOS: Setting 8Gb of memory in Docker for Mac On Windows: Setting 8Gb of memory in Docker for Windows ## Failing to properly start cluster This issue is similar to a [failure while building the node image](#failure-to-build-node-image). If the cluster creation process was successful but you are unable to see any Kubernetes resources running, for example: ```txt $ docker ps CONTAINER ID IMAGE COMMAND CREATED STATUS PORTS NAMES c0261f7512fd kindest/node:v1.12.2 "/usr/local/bin/entr…" About a minute ago Up About a minute 0.0.0.0:64907->64907/tcp kind-1-control-plane $ docker exec -it c0261f7512fd /bin/sh # docker ps -a CONTAINER ID IMAGE COMMAND CREATED STATUS PORTS NAMES # ``` or `kubectl` being unable to connect to the cluster, ```txt $ kind export kubeconfig $ kubectl cluster-info To further debug and diagnose cluster problems, use 'kubectl cluster-info dump'. Unable to connect to the server: EOF ``` Then as in [kind#156][kind#156], you may solve this issue by claiming back some space on your machine by removing unused data or images left by the Docker engine by running: {{< codeFromInline lang="bash" >}} docker system prune {{< /codeFromInline >}} And / or: {{< codeFromInline lang="bash" >}} docker image prune {{< /codeFromInline >}} You can verify the issue by exporting the logs (`kind export logs`) and looking at the kubelet logs, which may have something like the following: ```txt Dec 07 00:37:53 kind-1-control-plane kubelet[688]: I1207 00:37:53.229561 688 eviction_manager.go:340] eviction manager: must evict pod(s) to reclaim ephemeral-storage Dec 07 00:37:53 kind-1-control-plane kubelet[688]: E1207 00:37:53.229638 688 eviction_manager.go:351] eviction manager: eviction thresholds have been met, but no pods are active to evict ``` ## Pod errors due to "too many open files" This may be caused by running out of [inotify](https://linux.die.net/man/7/inotify) resources. Resource limits are defined by `fs.inotify.max_user_watches` and `fs.inotify.max_user_instances` system variables. For example, in Ubuntu these default to 8192 and 128 respectively, which is not enough to create a cluster with many nodes. To increase these limits temporarily run the following commands on the host: {{< codeFromInline lang="bash" >}} sudo sysctl fs.inotify.max_user_watches=524288 sudo sysctl fs.inotify.max_user_instances=512 {{< /codeFromInline >}} To make the changes persistent, edit the file `/etc/sysctl.conf` and add these lines: {{< codeFromInline lang="bash" >}} fs.inotify.max_user_watches = 524288 fs.inotify.max_user_instances = 512 {{< /codeFromInline >}} ## Docker permission denied When using `kind`, we assume that the user you are executing kind as has permission to use docker. If you initially ran Docker CLI commands using `sudo`, you may see the following error, which indicates that your `~/.docker/` directory was created with incorrect permissions due to the `sudo` commands. ```txt WARNING: Error loading config file: /home/user/.docker/config.json open /home/user/.docker/config.json: permission denied ``` To fix this problem, either follow the docker's docs [manage docker as a non root user][manage docker as a non root user], or try to use `sudo` before your commands (if you get `command not found` please check [this comment about sudo with kind][sudo with kind]). ## Docker init daemon config Please make sure that when you use `kind`, you can't have `"init": true` in your `/etc/docker/daemon.json` because that will cause `/sbin/init` to show the following cryptic message *Couldn't find an alternative telinit implementation to spawn*. This has to to with `/sbin/init` not running as process id 1. ## Windows Containers [Docker Desktop for Windows][docker desktop for windows] supports running both Linux (the default) and Windows Docker containers. `kind` for Windows requires Linux containers. To switch between Linux and Windows containers see [this page][switch between windows and linux containers]. Windows containers are not like Linux containers and do not support running docker in docker and therefore cannot support kind. ## Unsupported Architectures KIND currently ships pre-built images for AMD64 and ARM64 architectures. In the future we may support others, but currently demand has been low and the cost to build has been high. To use kind on other architectures, you need to first build a base image and then build a node image. Run `images/base/build.sh` and then taking note of the built image name use `kind build node-image --base-image=kindest/base:tag-i-built`. There are more details about how to do this in the [Quick Start] guide. ## Unable to pull images When using named KIND instances you may sometimes see your images failing to pull correctly on pods. This will usually manifest itself with the following output when doing a `kubectl describe pod my-pod` ```txt Failed to pull image "docker.io/my-custom-image:tag": rpc error: code = Unknown desc = failed to resolve image "docker.io/library/my-custom-image:tag": no available registry endpoint: pull access denied, repository does not exist or may require authorization: server message: insufficient_scope: authorization failed ``` If this image has been loaded onto your kind cluster using the command `kind load docker-image my-custom-image` then you have likely not provided the name parameter. Re-run the command this time adding the `--name my-cluster-name` param: `kind load docker-image my-custom-image --name my-cluster-name` ## Chrome OS To run Kubernetes inside Chrome OS the LXC container must allow nesting. In Crosh session (ctrl+alt+t): ```txt crosh> vmc launch termina (termina) chronos@localhost ~ $ lxc config set penguin security.nesting true (termina) chronos@localhost ~ $ lxc restart penguin ``` Then KIND cluster must use KubeletInUserNamespace feature gate (available since Kubernetes 1.22): ```yaml kind: Cluster apiVersion: kind.x-k8s.io/v1alpha4 featureGates: KubeletInUserNamespace: true ``` ## AppArmor If your host has [AppArmor] enabled you may run into [moby/moby/issues/7512](https://github.com/moby/moby/issues/7512#issuecomment-51845976). You will likely need to disable apparmor on your host or at least any profile(s) related to applications you are trying to run in KIND. See Previous Discussion: [kind#1179] ## IPv6 Port Forwarding Docker assumes that all the IPv6 addresses should be reachable, hence doesn't implement port mapping using NAT [moby#17666]. You will likely need to use Kubernetes services like NodePort or LoadBalancer to access your workloads inside the cluster via the nodes IPv6 addresses. See Previous Discussion: [kind#1326] ## Failed to get rootfs info / "stat failed on /dev/..." On some systems, creating a cluster times out with these errors in kubelet.log (device varies): ```txt stat failed on /dev/nvme0n1p3 with error: no such file or directory "Failed to start ContainerManager" err="failed to get rootfs info: failed to get device for dir \"/var/lib/kubelet\": could not find device with major: 0, minor: 40 in cached partitions map" ``` Kubernetes needs access to storage device nodes in order to do some stuff, e.g. tracking free disk space. Therefore, Kind needs to mount the necessary device nodes from the host into the control-plane container — however, it cannot always determine which device Kubernetes requires, since this varies with the host OS and filesystem. For example, the error above occurred with a BTRFS filesystem on Fedora Desktop 35. This can be worked around by including the necessary device as an extra mount in the cluster configuration file. ```yaml kind: Cluster apiVersion: kind.x-k8s.io/v1alpha4 nodes: - role: control-plane extraMounts: - hostPath: /dev/nvme0n1p3 containerPath: /dev/nvme0n1p3 propagation: HostToContainer ``` To identify the device that must be listed, two variations have been observed. * The device reported in the error message is a symlink (e.g. `/dev/mapper/luks-903aad3d-...`) — in this case, the config file should refer to the target of that symlink (e.g. `/dev/dm-0`). * The device reported in the error message is a regular block device (e.g. `/dev/nvme0n1p3`) — in this case, use the device reported. See Previous Discussion: [kind#2411] ## Fedora ### Firewalld On Fedora 32 [firewalld] moved to nftables backend by default. This seems to be incompatible with Docker, leading to KIND cluster nodes not being able to reach each other. You can work around this by changing the `FirewallBackend` in the `/etc/firewalld/firewalld.conf` file from `nftables` to `iptables` and restarting firewalld. ```console sed -i /etc/firewalld/firewalld.conf 's/FirewallBackend=.*/FirewallBackend=iptables/' systemctl restart firewalld ``` See [#1547 (comment)](https://github.com/kubernetes-sigs/kind/issues/1547#issuecomment-623756313) and [Docker and Fedora 32 article](https://fedoramagazine.org/docker-and-fedora-32/) ### SELinux On Fedora 33 an update to the SELinux policy causes `kind create cluster` to fail with an error like ```sh docker: Error response from daemon: open /dev/dma_heap: permission denied. ``` Although the policy has been fixed in Fedora 34, the fix has not been backported to Fedora 33 as of June 28, 2021. Putting SELinux in permissive mode (`setenforce 0`) is one known workaround. This disables SELinux until the next boot. For more details, see [kind#2296]. ## Docker Desktop for macOS and Windows Docker containers cannot be executed natively on macOS and Windows, therefore Docker Desktop runs them in a Linux VM. As a consequence, the container networks are not exposed to the host and you cannot reach the kind nodes via IP. You may be able to work around this limitation by configuring [extra port mappings](https://kind.sigs.k8s.io/docs/user/configuration/#extra-port-mappings), leveraging [cloud-provider-kind](https://github.com/kubernetes-sigs/cloud-provider-kind), using a network proxy, or other solution specific to your environment. ## Older Linux Distributions KIND uses a cgroup setting of `cgroupns=private`. The cgroup namespace functionality was added in 2016, so some of the older Linux distributions, using older kernels, do not have the required functionality for KIND to work. Notably, distros like Red Hat Enterprise Linux 7 and its clones. Attempting to create a KIND cluster on a system with an older kernel will result in a failure, with an error message similar to: ```txt Command Output: WARNING: Your kernel does not support cgroup namespaces. Cgroup namespace setting discarded. ``` Using KIND in these environments will require upgrading your OS to a more recent version that supports cgroup namespaces. Another option is to run a virtual machine using a newer kernel. ## Failure to Create Cluster on WSL2 Some Linux kernel options for WSL2 do not have cgroup configured in a way that KIND and other Linux-focused tools may expect. This may result in a failure message when attempting to create a cluster, similar to: ```txt unable to start container process: error adding pid 655569 to cgroups ``` The KIND development team is not able to provide support with Windows and WSL, so the project relies on community support and feedback. It has been noted that the steps detailed in [https://github.com/spurin/wsl-cgroupsv2](https://github.com/spurin/wsl-cgroupsv2) have been necessary to resolve this issue. ## Local Subnet Clashes KIND creates a separate docker network named `kind` that will be configured with default IPAM settings. If you are using the default IPAM configuration in your `daemon.json` you may have conflicts with existing networks (like VPNs, labs, etc) that route the 172.17.x.x networks. To resolve this you can reconfigure the daemon-wide IPAM so that all networks will be created in subnets that do not have these conflicts. An example configuration that you can add to your `daemon.json` is below. This would configure `10.253.0.0/16` as the defauld CIDR with each individual network receiving a /24 subnet to use for allocation. ```json "default-address-pools": [ { "base": "10.253.0.0/16", "size": 24 } ] ``` For more information on the Docker Engine config file check out [these docs](https://docs.docker.com/engine/daemon/). [kind#156]: https://github.com/kubernetes-sigs/kind/issues/156 [kind#229]: https://github.com/kubernetes-sigs/kind/issues/229 [kind#1179]: https://github.com/kubernetes-sigs/kind/issues/1179 [kind#1326]: https://github.com/kubernetes-sigs/kind/issues/1326 [kind#2296]: https://github.com/kubernetes-sigs/kind/issues/2296 [kind#2411]: https://github.com/kubernetes-sigs/kind/issues/2411 [moby#17666]: https://github.com/moby/moby/issues/17666 [Docker resource lims]: https://docs.docker.com/docker-for-mac/#advanced [snap]: https://snapcraft.io/ [manage docker as a non root user]: https://docs.docker.com/install/linux/linux-postinstall/#manage-docker-as-a-non-root-user [sudo with kind]: https://github.com/kubernetes-sigs/kind/issues/713#issuecomment-512665315 [docker desktop for windows]: https://hub.docker.com/editions/community/docker-ce-desktop-windows [switch between windows and linux containers]: https://docs.docker.com/docker-for-windows/#switch-between-windows-and-linux-containers [version skew]: https://kubernetes.io/docs/setup/release/version-skew-policy/#supported-version-skew [Quick Start]: /docs/user/quick-start [AppArmor]: https://en.wikipedia.org/wiki/AppArmor [firewalld]: https://firewalld.org/ [inotify]: https://en.wikipedia.org/wiki/Inotify kubernetes-sigs-kind-49aeee6/site/content/docs/user/loadbalancer.md000066400000000000000000000035651524365506300255520ustar00rootroot00000000000000--- title: "LoadBalancer" menu: main: parent: "user" identifier: "user-loadbalancer" weight: 3 description: |- This guide covers how to get service of type LoadBalancer working in a kind cluster using [Cloud Provider KIND]. This guide complements Cloud Provider KIND [installation docs]. [Cloud Provider KIND]: https://github.com/kubernetes-sigs/cloud-provider-kind [installation docs]: https://github.com/kubernetes-sigs/cloud-provider-kind?tab=readme-ov-file#install [Ingress Guide]: /docs/user/ingress [Configuration Guide]: /docs/user/configuration#extra-port-mappings --- ## Installing Cloud Provider KIND Cloud Provider KIND can be installed using golang {{< codeFromInline lang="bash" >}} go install sigs.k8s.io/cloud-provider-kind@latest {{< /codeFromInline >}} or downloading one of the [released binaries](https://github.com/kubernetes-sigs/cloud-provider-kind/releases). Cloud Provider KIND runs as a standalone binary in your host and connects to your KIND cluster and provisions new Load Balancer containers for your Services. It requires privileges to open ports on the system and to connect to the container runtime. ## Using LoadBalancer The following example creates a loadbalancer service that routes to two http-echo pods, one that outputs foo and the other outputs bar. ```yaml {{% readFile "static/examples/loadbalancer/usage.yaml" %}} ``` Apply the contents {{< codeFromInline lang="yaml" >}} kubectl apply -f https://kind.sigs.k8s.io/examples/loadbalancer/usage.yaml {{< /codeFromInline>}} Now verify that the loadbalancer works by sending traffic to it's external IP and port. {{< codeFromInline lang="bash" >}} LB_IP=$(kubectl get svc/foo-service -o=jsonpath='{.status.loadBalancer.ingress[0].ip}') {{< /codeFromInline >}} ```bash # should output foo and bar on separate lines for _ in {1..10}; do curl ${LB_IP}:5678 done ``` kubernetes-sigs-kind-49aeee6/site/content/docs/user/local-registry.md000066400000000000000000000053641524365506300261020ustar00rootroot00000000000000--- title: "Local Registry" menu: main: parent: "user" identifier: "user-local-registry" weight: 3 description: |- This guide covers how to configure KIND with a local container image registry. In the future this will be replaced by [a built-in feature](https://github.com/kubernetes-sigs/kind/issues/1213), and this guide will cover usage instead. --- ## Create A Cluster And Registry The following shell script will create a local docker registry and a kind cluster with it enabled. {{< codeFromFile file="static/examples/kind-with-registry.sh" >}} ## Using The Registry The registry can be used like this. 1. First we'll pull an image `docker pull gcr.io/google-samples/hello-app:1.0` 2. Then we'll tag the image to use the local registry `docker tag gcr.io/google-samples/hello-app:1.0 localhost:5001/hello-app:1.0` 3. Then we'll push it to the registry `docker push localhost:5001/hello-app:1.0` 4. And now we can use the image `kubectl create deployment hello-server --image=localhost:5001/hello-app:1.0` > **NOTE**: The example commands above use Docker. If you are using Podman > and see `http: server gave HTTP response to HTTPS client` when pushing to > `localhost:5001`, configure Podman to treat the local registry as insecure, > or push with `podman push --tls-verify=false localhost:5001/hello-app:1.0`. If you build your own image and tag it like `localhost:5001/image:foo` and then use it in kubernetes as `localhost:5001/image:foo`. If for some reason you have code running *inside* of a pod within the cluster that needs to use this registry directly (e.g. to build and push an image) then that code will need to use the `kind-registry:5000` HTTP endpoint directly, as the code running inside your pod will not see the containerd config. Pod manifests / pod specs / pod YAML should use `localhost:5001`, which will be rerouted to match the same name as the host via the containerd config. > **NOTE**: A bit about "localhost" and containers ... > "localhost" resolves to a loopback IP, which are network-namespace local. > Network-namespace local means that the `127.0.0.1` / `localhost` / `::1` > inside your container is NOT the same as the one on your host > (unless using `hostNetwork: true` / `--net=host`). > > KIND nodes are *not* `--net=host` and most pods are not, so really these > "`localhost`s" are local to your pod container, to your kind node, and to your > host machine in most cases. > > However we can tell containerd that `localhost:5001` should route to the > registry container such that the same name works on both the host and your machine. > > We do this so you can conveniently push and pull from a "local" > address on your host and in your pod YAML. kubernetes-sigs-kind-49aeee6/site/content/docs/user/private-registries.md000066400000000000000000000143321524365506300267650ustar00rootroot00000000000000--- title: "Private Registries" menu: main: parent: "user" identifier: "user-private-registries" weight: 3 toc: true description: |- This guide discusses how to use kind with image registries that require authentication. There are multiple ways to do this, which we try to cover here. --- ## Use ImagePullSecrets Kubernetes supports configuring pods to use `imagePullSecrets` for pulling images. If possible, this is the preferable and most portable route. See [the upstream kubernetes docs for this][imagePullSecrets], kind does not require any special handling to use this. If you already have the config file locally but would still like to use secrets, read through kubernetes' docs for [creating a secret from a file][imagePullFileSecrets]. ## Pull to the Host and Side-Load kind can [load an image][loading an image] from the host with the `kind load ...` commands. If you configure your host with credentials to pull the desired image(s) and then load them to the nodes you can avoid needing to authenticate on the nodes. ## Add Credentials to the Nodes Generally the upstream docs for [using a private registry] apply, with kind there are two options for this. ### Mount a Config File to Each Node If you pre-create a docker config.json containing credential(s) on the host you can mount it to each kind node. Assuming your file is at `/path/to/my/secret.json`, the kind config would be: {{< codeFromInline lang="yaml" >}} kind: Cluster apiVersion: kind.x-k8s.io/v1alpha4 nodes: - role: control-plane extraMounts: - containerPath: /var/lib/kubelet/config.json hostPath: /path/to/my/secret.json {{< /codeFromInline >}} **Important**: The mounted file must contain the actual base64-encoded credentials in the `auths` field. It cannot reference an external credential store or helper. Many systems store docker credentials outside of `config.json` using a credential helper (e.g. `"credsStore": "desktop"` on Docker Desktop, `"credsStore": "osxkeychain"` on macOS, or `"credsStore": "secretservice"` on Linux). If your `~/.docker/config.json` contains a `credsStore` or `credHelpers` key, the credentials themselves are **not** in the file and mounting it into a kind node will not work because the credential helper binary is not present inside the node. To check whether your config contains plain credentials or a credential store reference: ```sh cat ~/.docker/config.json ``` A config with plain credentials looks like: ```json { "auths": { "myregistry.example.com": { "auth": "dXNlcjpwYXNzd29yZA==" } } } ``` A config that uses an external credential store (which will **not** work when mounted) looks like: ```json { "auths": {}, "credsStore": "desktop" } ``` To generate a config file with plain credentials, create a temporary config that bypasses the credential store and log in with it: ```sh # Create a temp dir to hold the plain-credential config DOCKER_CONFIG=$(mktemp -d) export DOCKER_CONFIG # Seed an empty auths entry to disable the credential store cat <"${DOCKER_CONFIG}/config.json" { "auths": { "myregistry.example.com": {} } } EOF # Log in — credentials will be written as plain base64 auth in the file docker login myregistry.example.com # Use ${DOCKER_CONFIG}/config.json as your hostPath ``` For registries that use short-lived or token-based authentication (such as Azure Container Registry with OAuth tokens), the static mount approach may not be reliable once the token expires. For ACR, prefer logging in with a [service principal][acrServicePrincipal] whose credentials are long-lived: ```sh docker login myregistry.azurecr.io \ --username \ --password ``` [acrServicePrincipal]: https://learn.microsoft.com/en-us/azure/container-registry/container-registry-auth-service-principal #### Use an Access Token A credential can be programmatically added to the nodes at runtime. If you do this then kubelet must be restarted on each node to pick up the new credentials. An example shell snippet for generating a [gcr.io][GCR] cred file on your host machine using Access Tokens: {{< codeFromFile file="static/examples/kind-gcr.sh" >}} #### Use a Service Account Access tokens are short lived, so you may prefer to use a Service Account and keyfile instead. First, either download the key from the console or generate one with gcloud: ``` gcloud iam service-accounts keys create --iam-account ``` Then, replace the `gcloud auth print-access-token | ...` line from the [access token snippet](#use-an-access-token) with: ``` cat | docker login -u _json_key --password-stdin https://gcr.io ``` See Google's [upstream docs][keyFileAuthentication] on key file authentication for more details. [keyFileAuthentication]: https://cloud.google.com/container-registry/docs/advanced-authentication#json_key_file [imagePullSecrets]: https://kubernetes.io/docs/concepts/containers/images/#specifying-imagepullsecrets-on-a-pod [imagePullFileSecrets]: https://kubernetes.io/docs/tasks/configure-pod-container/pull-image-private-registry/#registry-secret-existing-credentials [loading an image]: /docs/user/quick-start/#loading-an-image-into-your-cluster [using a private registry]: https://kubernetes.io/docs/concepts/containers/images/#using-a-private-registry [GCR]: https://cloud.google.com/container-registry/ #### Use a Certificate If you have a registry authenticated with certificates, and both certificates and keys reside on your host folder, it is possible to mount and use them into the `containerd` plugin patching the default configuration, like in the example: {{< codeFromInline lang="yaml" >}} kind: Cluster apiVersion: kind.x-k8s.io/v1alpha4 nodes: - role: control-plane # This option mounts the host docker registry folder into # the control-plane node, allowing containerd to access them. extraMounts: - containerPath: /etc/docker/certs.d/registry.dev.example.com hostPath: /etc/docker/certs.d/registry.dev.example.com # NOTE: the following patch is not necessary with images from kind v0.27.0+ # It may enable some older images to work similarly containerdConfigPatches: - |- [plugins."io.containerd.grpc.v1.cri".registry] config_path = "/etc/containerd/certs.d" {{< /codeFromInline >}} kubernetes-sigs-kind-49aeee6/site/content/docs/user/quick-start.md000066400000000000000000000477761524365506300254260ustar00rootroot00000000000000--- title: "Quick Start" menu: main: parent: "user" identifier: "user-quick-start" weight: 1 toc: true description: |- This guide covers getting started with the `kind` command. **If you are having problems please see the [known issues] guide.** [known issues]: /docs/user/known-issues --- ## Installation > **NOTE**: `kind` does not require [`kubectl`](https://kubernetes.io/docs/reference/kubectl/overview/), > but you will not be able to perform some of the examples in our docs without it. > To install `kubectl` see the upstream [kubectl installation docs](https://kubernetes.io/docs/tasks/tools/install-kubectl/). If you are a go developer you may find the [go install option](#installing-with-go-install) convenient. Otherwise we supply downloadable [release binaries](#installing-from-release-binaries), community-managed [packages](#installing-with-a-package-manager), and a [source installation guide](#installing-from-source). Stable tagged releases (currently {{< stableVersion >}}) are generally strongly recommended for CI usage in particular. You may need to install the latest code from source at HEAD if you are developing Kubernetes itself at HEAD / the latest sources. ### Installing From Release Binaries Pre-built binaries are available on our [releases page](https://github.com/kubernetes-sigs/kind/releases). To install, download the binary for your platform from "Assets", then rename it to `kind` (or perhaps `kind.exe` on Windows) and place this into your `$PATH` at your preferred binary installation directory. On Linux: {{< codeFromInline lang="bash" >}} # For AMD64 / x86_64 [ $(uname -m) = x86_64 ] && curl -Lo ./kind https://kind.sigs.k8s.io/dl/{{< stableVersion >}}/kind-linux-amd64 # For ARM64 [ $(uname -m) = aarch64 ] && curl -Lo ./kind https://kind.sigs.k8s.io/dl/{{< stableVersion >}}/kind-linux-arm64 chmod +x ./kind sudo mv ./kind /usr/local/bin/kind {{< /codeFromInline >}} On macOS: {{< codeFromInline lang="bash" >}} # For Intel Macs [ $(uname -m) = x86_64 ] && curl -Lo ./kind https://kind.sigs.k8s.io/dl/{{< stableVersion >}}/kind-darwin-amd64 # For M1 / ARM Macs [ $(uname -m) = arm64 ] && curl -Lo ./kind https://kind.sigs.k8s.io/dl/{{< stableVersion >}}/kind-darwin-arm64 chmod +x ./kind mv ./kind /some-dir-in-your-PATH/kind {{< /codeFromInline >}} On Windows in [PowerShell](https://en.wikipedia.org/wiki/PowerShell): {{< codeFromInline lang="powershell" >}} curl.exe -Lo kind-windows-amd64.exe https://kind.sigs.k8s.io/dl/{{< stableVersion >}}/kind-windows-amd64 Move-Item .\kind-windows-amd64.exe c:\some-dir-in-your-PATH\kind.exe {{< /codeFromInline >}} ### Installing From Source In addition to the pre-built binary + package manager installation options listed above you can install kind from source with `go install sigs.k8s.io/kind@{{< stableVersion >}}` or clone this repo and run `make build` from the repository. #### Installing With `make` Using `make build` does not require installing Go and will build kind reproducibly, the binary will be in `bin/kind` inside your clone of the repo. You should only need `make` and standard userspace utilities to run this build, it will automatically obtain the correct go version with our vendored copy of [`gimme`](https://github.com/travis-ci/gimme). You can then call `./bin/kind` to use it, or copy `bin/kind` into some directory in your system `PATH` to use it as `kind` from the command line. `make install` will attempt to mimic `go install` and has the same path requirements as `go install` below. #### Installing with `go install` When installing with [Go](https://golang.org/) please use the latest stable Go release. To install use: `go install sigs.k8s.io/kind@{{< stableVersion >}}`. If you are building from a local source clone, use `go install .` from the top-level directory of the clone. `go install` will typically put the `kind` binary inside the `bin` directory under `go env GOPATH`, see Go's ["Compile and install packages and dependencies"](https://golang.org/cmd/go/#hdr-Compile_and_install_packages_and_dependencies) for more on this. You may need to add that directory to your `$PATH` if you encounter the error `kind: command not found` after installation, you can find a guide for adding a directory to your `PATH` at https://gist.github.com/nex3/c395b2f8fd4b02068be37c961301caa7#file-path-md. ### Installing With A Package Manager The kind community has enabled installation via the following package managers. > **NOTE**: The following are community supported efforts. The `kind` maintainers are not involved in the creation > of these packages, and the upstream community makes no claims on the validity, safety, or content of them. On macOS via Homebrew: {{< codeFromInline lang="bash" >}} brew install kind {{< /codeFromInline >}} On macOS via MacPorts: {{< codeFromInline lang="bash" >}} sudo port selfupdate && sudo port install kind {{< /codeFromInline >}} On Windows via Chocolatey (https://chocolatey.org/packages/kind) {{< codeFromInline lang="powershell" >}} choco install kind {{< /codeFromInline >}} On Windows via Scoop (https://scoop.sh/#/apps?q=kind&id=faec311bb7c6b4a174169c8c02358c74a78a10c2) {{< codeFromInline lang="powershell" >}} scoop bucket add main scoop install main/kind {{< /codeFromInline >}} On Windows via Winget (https://github.com/microsoft/winget-pkgs/tree/master/manifests/k/Kubernetes/kind) {{< codeFromInline lang="powershell" >}} winget install Kubernetes.kind {{< /codeFromInline >}} On Arch Linux via pacman (https://archlinux.org/packages/extra/x86_64/kind/) {{< codeFromInline lang="bash" >}} sudo pacman -Syu kind {{< /codeFromInline >}} ## Discovering Additional Command Options kind provides built-in help for all commands and subcommands. You can explore available flags and usage details by running: kind help kind --help kind --help This applies to commands such as `kind load image-archive` ## Creating a Cluster Creating a Kubernetes cluster is as simple as `kind create cluster`. This will bootstrap a Kubernetes cluster using a pre-built [node image][node image]. Prebuilt images are hosted at[`kindest/node`][kindest/node], but to find images suitable for a given release currently you should check the [release notes] for your given kind version (check with `kind version`) where you'll find a complete listing of images created for a kind release. To specify another image use the `--image` flag -- `kind create cluster --image=...`. Using a different image allows you to change the Kubernetes version of the created cluster. If you desire to build the node image yourself with a custom version see the [building images](#building-images) section. By default, the cluster will be given the name `kind`. Use the `--name` flag to assign the cluster a different context name. If you want the `create cluster` command to block until the control plane reaches a ready status, you can use the `--wait` flag and specify a timeout. To use `--wait` you must specify the units of the time to wait. For example, to wait for 30 seconds, do `--wait 30s`, for 5 minutes do `--wait 5m`, etc. More usage can be discovered with `kind create cluster --help`. kind can auto-detect the [docker], [podman], or [nerdctl] installed and choose the available one. If you want to turn off the auto-detect, use the environment variable `KIND_EXPERIMENTAL_PROVIDER=docker`, `KIND_EXPERIMENTAL_PROVIDER=podman` or `KIND_EXPERIMENTAL_PROVIDER=nerdctl` to select the runtime. > **NOTE**: podman and nerdctl operate in [rootless mode](/docs/user/rootless) by default. Extra > setup is needed for KIND clusters to be fully functional. ## Interacting With Your Cluster After [creating a cluster](#creating-a-cluster), you can use [kubectl][kubectl] to interact with it by using the [configuration file generated by kind][access multiple clusters]. By default, the cluster access configuration is stored in ${HOME}/.kube/config if $KUBECONFIG environment variable is not set. If $KUBECONFIG environment variable is set, then it is used as a list of paths (normal path delimiting rules for your system). These paths are merged. When a value is modified, it is modified in the file that defines the stanza. When a value is created, it is created in the first file that exists. If no files in the chain exist, then it creates the last file in the list. You can use the `--kubeconfig` flag when creating the cluster, then only that file is loaded. The flag may only be set once and no merging takes place. To see all the clusters you have created, you can use the `get clusters` command. For example, let's say you create two clusters: ``` kind create cluster # Default cluster context name is `kind`. ... kind create cluster --name kind-2 ``` When you list your kind clusters, you will see something like the following: ``` kind get clusters kind kind-2 ``` In order to interact with a specific cluster, you only need to specify the cluster name as a context in kubectl: ``` kubectl cluster-info --context kind-kind kubectl cluster-info --context kind-kind-2 ``` ## Deleting a Cluster If you created a cluster with `kind create cluster` then deleting is equally simple: ``` kind delete cluster ``` If the flag `--name` is not specified, kind will use the default cluster context name `kind` and delete that cluster. > **Note**: By design, requesting to delete a cluster that does not exist > will not return an error. This is intentional and is a means to have an > idempotent way of cleaning up resources. ## Loading an Image Into Your Cluster You can load one or more images into your kind cluster: ```bash kind load docker-image my-app:latest ``` ```bash kind load docker-image my-app:latest my-db:latest my-cache:latest ``` Note: If using a named cluster you will need to specify the name of the cluster: ```bash kind load docker-image my-app:latest --name test-cluster ``` Additionally, image archives can be loaded with: `kind load image-archive /my-image-archive.tar` This allows a workflow like: ``` docker build -t my-custom-image:unique-tag ./my-image-dir kind load docker-image my-custom-image:unique-tag kubectl apply -f my-manifest-using-my-image.yaml ``` > **NOTE**: You can get a list of images present on a cluster node by using `docker exec`: > ``` > docker exec -it my-node-name crictl images > ``` > Where `my-node-name` is the name of the Docker container (e.g. `kind-control-plane`). > **NOTE**: The Kubernetes default pull policy is `IfNotPresent` unless the image tag is `:latest` or omitted (and implicitly `:latest`) in which case the default policy is `Always`. `IfNotPresent` causes the Kubelet to skip pulling an image if it already exists. > If you want those images loaded into node to work as expected, please: > > - don't use a `:latest` tag > > and / or: > > - specify `imagePullPolicy: IfNotPresent` or `imagePullPolicy: Never` on your container(s). > > See [Kubernetes imagePullPolicy][Kubernetes imagePullPolicy] for more information. See also: [Using kind with Private Registries][Private Registries]. ## Building Images > **NOTE**: If you're using Docker Desktop, be sure to read [Settings for Docker Desktop](#settings-for-docker-desktop) first. kind runs a local Kubernetes cluster by using Docker containers as "nodes". kind uses the [`node-image`][node image] to run Kubernetes artifacts, such as `kubeadm` or `kubelet`. The `node-image` in turn is built off the [`base-image`][base image], which installs all the dependencies needed for Docker and Kubernetes to run in a container. Currently, kind supports one default way to build a `node-image` if you have the [Kubernetes][kubernetes] source in your host machine (`$GOPATH/src/k8s.io/kubernetes`), by using `source`. You can also specify a different path to kubernetes source using ``` kind build node-image /path/to/kubernetes/source ``` > **NOTE**: Building Kubernetes node-images requires everything building upstream > Kubernetes requires, we wrap the upstream build. This includes Docker with buildx. > See: https://git.k8s.io/community/contributors/devel/development.md#building-kubernetes-with-docker One shortcut to use a kubernetes release is to specify the version directly to pick up the official tar-gzipped files: ``` kind build node-image v1.30.0 ``` If you prefer to use existing tar-gzipped files like the ones from the kubernetes release, you can specify those as well from a URL or local directory, for example: ``` kind build node-image https://dl.k8s.io/v1.30.0/kubernetes-server-linux-arm64.tar.gz kind build node-image $HOME/Downloads/kubernetes-server-linux-amd64.tar.gz ``` To clear any confusion, you can specify the type of build explicitly using `--type` parameter, please see the following examples: ``` kind build node-image --type url https://dl.k8s.io/v1.30.0/kubernetes-server-linux-arm64.tar.gz kind build node-image --type file $HOME/Downloads/kubernetes-server-linux-amd64.tar.gz kind build node-image --type release v1.30.0 kind build node-image --type source $HOME/go/src/k8s.io/kubernetes/ ``` > **NOTE**: modes other than source directory namely `url`, `file` and `release` are only > available in kind v0.24 and above. ### Settings for Docker Desktop If you are building Kubernetes (for example - `kind build node-image`) on MacOS or Windows then you need a minimum of 6GB of RAM dedicated to the virtual machine (VM) running the Docker engine. 8GB is recommended. To change the resource limits for the Docker on Mac, you'll need to open the **Preferences** menu. Now, go to the **Advanced** settings page, and change the settings there, see [changing Docker's resource limits][Docker resource lims]. Setting 8Gb of memory in Docker for Mac To change the resource limits for the Docker on Windows, you'll need to right-click the Moby icon on the taskbar, and choose "Settings". If you see "Switch to Linux Containers", then you'll need to do that first before opening "Settings" Now, go to the **Advanced** settings page, and change the settings there, see [changing Docker's resource limits][Docker resource lims]. Setting 8Gb of memory in Docker for Windows You may also try removing any unused data left by the Docker engine - e.g., `docker system prune`. ## Advanced ### Configuring Your kind Cluster For a sample kind configuration file see [kind-example-config][kind-example-config]. To specify a configuration file when creating a cluster, use the `--config` flag: ``` kind create cluster --config kind-example-config.yaml ``` #### Multi-node clusters In particular, many users may be interested in multi-node clusters. A simple configuration for this can be achieved with the following config file contents: ```yaml # three node (two workers) cluster config kind: Cluster apiVersion: kind.x-k8s.io/v1alpha4 nodes: - role: control-plane - role: worker - role: worker ``` #### Control-plane HA You can also have a cluster with multiple control-plane nodes: ```yaml # a cluster with 3 control-plane nodes and 3 workers kind: Cluster apiVersion: kind.x-k8s.io/v1alpha4 nodes: - role: control-plane - role: control-plane - role: control-plane - role: worker - role: worker - role: worker ``` #### Mapping ports to the host machine You can map extra ports from the nodes to the host machine with `extraPortMappings`: ```yaml kind: Cluster apiVersion: kind.x-k8s.io/v1alpha4 nodes: - role: control-plane extraPortMappings: - containerPort: 80 hostPort: 80 listenAddress: "0.0.0.0" # Optional, defaults to "0.0.0.0" protocol: udp # Optional, defaults to tcp ``` This can be useful if using `NodePort` services or daemonsets exposing host ports. Note: binding the `listenAddress` to `127.0.0.1` may affect your ability to access the service. You may want to see the [Ingress Guide] and [LoadBalancer Guide]. [Ingress Guide]: /docs/user/ingress [LoadBalancer Guide]: /docs/user/loadbalancer #### Setting Kubernetes version You can also set a specific Kubernetes version by setting the `node`'s container image. You can find available image tags on the [releases page](https://github.com/kubernetes-sigs/kind/releases). Please use the `sha256` shasum for your desired kubernetes version, as seen in this example: ```yaml kind: Cluster apiVersion: kind.x-k8s.io/v1alpha4 nodes: - role: control-plane image: kindest/node:v1.16.4@sha256:b91a2c2317a000f3a783489dfb755064177dbc3a0b2f4147d50f04825d016f55 - role: worker image: kindest/node:v1.16.4@sha256:b91a2c2317a000f3a783489dfb755064177dbc3a0b2f4147d50f04825d016f55 ``` ### Enable Feature Gates in Your Cluster Feature gates are a set of key=value pairs that describe alpha or experimental features. In order to enable a gate you have to [customize your kubeadm configuration][customize control plane with kubeadm], and it will depend on what gate and component you want to enable. An example kind config can be: {{< codeFromInline lang="yaml" >}} kind: Cluster apiVersion: kind.x-k8s.io/v1alpha4 featureGates: FeatureGateName: true {{< /codeFromInline >}} ### Configure kind to use a proxy If you are running kind in an environment that requires a proxy, you may need to configure kind to use it. You can configure kind to use a proxy using one or more of the following [environment variables][proxy environment variables] (uppercase takes precedence): * `HTTP_PROXY` or `http_proxy` * `HTTPS_PROXY` or `https_proxy` * `NO_PROXY` or `no_proxy` > **NOTE**: If you set a proxy it would be passed along to everything in the kind nodes. `kind` will automatically append certain addresses into `NO_PROXY` before passing it to the nodes so that Kubernetes components connect to each other directly, but you may need to configure > additional addresses depending on your usage. ### Exporting Cluster Logs kind has the ability to export all kind related logs for you to explore. To export all logs from the default cluster (context name `kind`): ``` kind export logs Exported logs to: /tmp/396758314 ``` Like all other commands, if you want to perform the action on a cluster with a different context name use the `--name` flag. As you can see, kind placed all the logs for the cluster `kind` in a temporary directory. If you want to specify a location then simply add the path to the directory after the command: ``` kind export logs ./somedir Exported logs to: ./somedir ``` The structure of the logs will look more or less like this: ``` . ├── docker-info.txt └── kind-control-plane/ ├── containers ├── docker.log ├── inspect.json ├── journal.log ├── kubelet.log ├── kubernetes-version.txt └── pods/ ``` The logs contain information about the Docker host, the containers running kind, the Kubernetes cluster itself, etc. [modules]: https://github.com/golang/go/wiki/Modules [go-supported]: https://golang.org/doc/devel/release.html#policy [docker]: https://www.docker.com/ [podman]: https://podman.io/ [nerdctl]: https://github.com/containerd/nerdctl [known issues]: /docs/user/known-issues [releases]: https://github.com/kubernetes-sigs/kind/releases [node image]: /docs/design/node-image [base image]: /docs/design/base-image [kind-example-config]: https://raw.githubusercontent.com/kubernetes-sigs/kind/main/site/content/docs/user/kind-example-config.yaml [kubernetes]: https://github.com/kubernetes/kubernetes [kindest/node]: https://hub.docker.com/r/kindest/node/ [kubectl]: https://kubernetes.io/docs/reference/kubectl/overview/ [Docker resource lims]: https://docs.docker.com/docker-for-mac/#advanced [install docker]: https://docs.docker.com/install/ [proxy environment variables]: https://docs.docker.com/network/proxy/#use-environment-variables [CGO]: https://golang.org/cmd/cgo/ [Kubernetes imagePullPolicy]: https://kubernetes.io/docs/concepts/containers/images/#updating-images [Private Registries]: /docs/user/private-registries [customize control plane with kubeadm]: https://kubernetes.io/docs/setup/independent/control-plane-flags/ [access multiple clusters]: https://kubernetes.io/docs/tasks/access-application-cluster/configure-access-multiple-clusters/ [release notes]: https://github.com/kubernetes-sigs/kind/releases kubernetes-sigs-kind-49aeee6/site/content/docs/user/resources.md000066400000000000000000000105161524365506300251470ustar00rootroot00000000000000--- title: "Resources" menu: main: parent: "user" identifier: "resources" weight: 4 toc: true description: |- This page contains references to additional external resources for learning about KIND and how to use it. --- ## Using KIND in CI The [kind-ci/examples] project is a work-in-progress project to give working examples of using KIND in various continuous integration environments / platforms. ## Tutorials and Guides Here are a useful external guides / tutorials covering things not yet covered in our docs: ### How to use KIND with MetallLB > **NOTE**: We now have a kind integrated loadbalancer solution, see [the loadbalancer page](/docs/user/loadbalancer/). https://mauilion.dev/posts/kind-metallb/ ### How to Test a Kubernetes PR with KIND https://mauilion.dev/posts/kind-k8s-testing/ ### Using Contour Ingress with KIND https://projectcontour.io/kindly-running-contour/ ### Local Ingress Domains for your Kind Cluster https://mjpitz.com/blog/2020/10/21/local-ingress-domains-kind/ ### Connect directly to Docker-for-Mac containers via IP address https://golangexample.com/connect-directly-to-docker-for-mac-containers-via-ip-address/ ### Developing for Kubernetes with KinD https://docs.gitlab.com/charts/development/kind/ ### Using CRI-O with KIND > **NOTE**: Depending on implementation details of the node image is not supported, only that the node images contain what kind needs to run Kubernetes at a given version. > > Installing CRI-O is possible but not supported. https://github.com/cri-o/cri-o/blob/release-1.31/tutorials/crio-in-kind.md#cri-o-in-kind ## KubeCon Talks The authors have given the following talks relating to KIND: ### Keep Calm and Load Balance on KIND - Benjamin Elder & Antonio Ojea At KubeCon EU 2024 we spoke about [Cloud Provider KIND and how to use Load Balancers Services with KIND](https://sched.co/1YhhY) {{< youtube id="U6_-y24rJnI" class="video-wrapper" >}} ### Deep Dive: KIND - Benjamin Elder & Antonio Ojea At KubeCon US 2019 we spoke about [KIND internals and the challenges ahead on the road to 1.0][kind-deep-dive]. {{< youtube id="tT-GiZAr6eQ" class="video-wrapper" >}} ### A Kind Workflow for Contributing to Kubernetes - Benjamin Elder & Duffie Cooley & James Munnelly & Patrick Lang At KubeCon US 2019 we provided a hands on tutorial [for contributing and testing your Kubernetes code with KIND][kind-workflow-for-contributing-to-kubernetes]. {{< youtube id="BPVO2mcfjJk" class="video-wrapper" >}} ### Testing your K8s apps with KIND - Benjamin Elder & James Munnelly At KubeCon EU 2019 we spoke about [KIND and testing your Kubernetes Applications][testing-k8s-apps-with-kind]. {{< youtube id="8KtmevMFfxA" class="video-wrapper" >}} ### Deep Dive: Testing SIG - Benjamin Elder & James Munnelly At KubeCon EU 2019 we spoke about KIND and how we use it to test Kubernetes for the [SIG Testing Deep Dive][sig-testing-deep-dive-kind]. {{< youtube id="6m9frvTxK0o" class="video-wrapper" >}} ### Behind Your PR: How Kubernetes Uses Kubernetes to Run Kubernetes CI - Sen Lu & Benjamin Elder At KubeCon NA 2018 we spoke with [Sen Lu][@krzyzacy] about The Kubernetes Project's testing tools and infrastructure, including a brief discussion of KIND and running it on Kubernetes's Kubernetes-based CI infrastructure. {{< youtube id="pz0lpl6h-Gc" class="video-wrapper" >}} [@krzyzacy]: https://github.com/krzyzacy [kind-ci/examples]: https://github.com/kind-ci/examples [testing-k8s-apps-with-kind]: https://kccnceu19.sched.com/event/MPYy/testing-your-k8s-apps-with-kind-benjamin-elder-google-james-munnelly-jetstackio [sig-testing-deep-dive-kind]: https://kccnceu19.sched.com/event/MPkC/deep-dive-testing-sig-benjamin-elder-google-james-munnelly-jetstack [kind-deep-dive]: https://kccncna19.sched.com/event/Uah7/deep-dive-kind-benjamin-elder-google-antonio-ojea-garcia-suse [kind-workflow-for-contributing-to-kubernetes]: https://kccncna19.sched.com/event/Uaek/tutorial-a-kind-workflow-for-contributing-to-kubernetes-benjamin-elder-google-duffie-cooley-vmware-james-munnelly-jetstack-patrick-lang-microsoft-limited-available-seating-first-come-first-served-basis kubernetes-sigs-kind-49aeee6/site/content/docs/user/rootless.md000066400000000000000000000220171524365506300250060ustar00rootroot00000000000000--- title: "Rootless" menu: main: parent: "user" identifier: "rootless" weight: 3 --- Starting with kind 0.11.0, [Rootless Docker](https://docs.docker.com/go/rootless/), [Rootless Podman](https://github.com/containers/podman/blob/master/docs/tutorials/rootless_tutorial.md) and [Rootless nerdctl](https://github.com/containerd/nerdctl/blob/main/docs/rootless.md) can be used as the node provider of kind. ## Provider requirements - Docker: 20.10 or later - Podman: 3.0 or later - nerdctl: 1.7 or later ## Host requirements ### cgroup v2 The host needs to be running with cgroup v2, which is the default for many Linux disributions: - Ubuntu: 21.10 and later. - Fedora: 31 and later. - Arch: April 2021 release and later. You can verify the cgroup version used by your controller runtime with the following procedure: - `docker`: Run `docker info` and look for `Cgroup Version: 2` in the output. - `podman`: Run `podman info` and look for `cgroupVersion: v2` in the output. - `nerdctl`: Run `nerdctl info` and look for `Cgroup Version: 2` in the output. If the `info` output prints `Cgroup Version: 1` or equivalent, try the following to enable cgroup v2: 1. In `/etc/default/grub`, add the line `GRUB_CMDLINE_LINUX="systemd.unified_cgroup_hierarchy=1"` 2. Run `sudo update-grub` to enable cgroup v2. Your host will also need to enable [cgroup delegation](https://systemd.io/CGROUP_DELEGATION/) of the `cpu` controller for user services. This is enabled by default for distributions running `systemd` version 252 and higher. To enable cgroup delegation for all the controllers, do the following: 1. Check your version of `systemd` by running `systemctl --version`. If the output prints `systemd 252` or higher, no further action is needed. Example output below from a Fedora host: ```sh $ systemctl --version systemd 257 (257.9-2.fc42) ``` 2. For systems with older versions of `systemd`, first create the directory `/etc/systemd/system/user@.service.d/` if it is not present. ```sh sudo mkdir -p /etc/systemd/system/user@.service.d/ ``` 3. Next, create the file `/etc/systemd/system/user@.service.d/delegate.conf` with the following content: ```ini [Service] Delegate=yes ``` 4. Reload systemd for these changes to take effect: ```sh sudo systemctl daemon-reload ``` 5. If using docker, reload the user docker daemon: ```sh systemctl --user restart docker ``` ### Networking Containers running in rootless mode may not loaded with host-level iptable modules. This breaks the behavior of most networking components, such as Ingress and Gateway controllers. To load the iptable modules, do the following: 1. First, use `lsmod` to check which kernel modules are loaded by default for user processes on your system. Use `grep` to find which iptable modules are loaded: ```sh lsmod | grep "ip.*table" ``` 2. Check the output for the following kernel modules: - `ip6_tables` - `ip6table_nat` - `ip_tables` - `iptable_nat` 3. If one or more of the kernel modules above are not present, your system needs to load these at startup for each process. First, run the following command to add these missing modules: ```sh sudo tee /etc/modules-load.d/iptables.conf > /dev/null <<'EOF' ip6_tables ip6table_nat ip_tables iptable_nat EOF ``` 4. Check that the new module loading configuration is correct. You should see the following output: ```sh $ cat /etc/modules-load.d/iptables.conf ip6_tables ip6table_nat ip_tables iptable_nat ``` 5. Next, restart the `systemd-modules-load` service to make these changes effective immediately: ```sh sudo systemctl restart systemd-modules-load.service ``` Alternatively, restart your system to ensure these changes take effect. ### Increase PID Limits KIND nodes are represented as individual containers on their hosts. Runtimes such as podman set default [process id limits](https://docs.podman.io/en/v4.3/markdown/options/pids-limit.html#pids-limit-limit) that may be too low for the node or for a pod running on the node. The Ingress NGINX Controller is [particularly susceptible](https://github.com/kubernetes-sigs/kind/issues/3451) to this issue. To increase the PID limit, do the following: 1. If using podman, edit your `containers.conf` file (generally located in `/etc/containers/containers.conf` or `~/.config/containers/containers.conf`) to increase the PIDs limit to a desired value (default 4096 on most systems): ```ini [containers] pids_limit = 65536 ``` 2. Re-recreate the KIND cluster for these changes to take effect: ```sh kind delete cluster && kind create cluster ``` ### Increase inotify Limits As documented in [known issues](/docs/user/known-issues/#pod-errors-due-to-too-many-open-files), pods may fail by reaching inotify watch and instance limits. Ingress controllers such as NGINX and Contour are particularly susceptible to this issue. To increase the inotify limits, do the following: 1. As root, create a `.conf` file in `/etc/sysctl.d` that increases the `fs.inotify` max user settings: ``` fs.inotify.max_user_watches = 524288 fs.inotify.max_user_instances = 512 ``` 2. Reload `sysctl` for these changes to take effect: ```sh sudo sysctl --system ``` Alternatively, restart your system for these changes to take effect. ### Allow Binding to Privileged Ports If you use the `extraPortMappings` method to provide ingress to your KIND cluster, you can allow the KIND node container to bind to ports 80 and 443 on the host. User containers cannot bind to ports below 1024 by default as they are considered privileged. You can avoid this issue by binding the node to a non-privileged host port, such as 8080 or 8443: ```yaml # kind config.yaml kind: Cluster apiVersion: kind.x-k8s.io/v1alpha4 nodes: - role: control-plane extraPortMappings: - containerPort: 80 hostPort: 8080 protocol: TCP - containerPort: 443 hostPort: 8443 protocol: TCP ``` Note that with this configuration, requests to your cluster ingress will need to add the appropriate port number. In the example above, HTTP requests must use `localhost:8080` in the URL. To allow a KIND node to bind to ports 80 and/or 443 on the host, do the following: 1. As root, create a `.conf` file in `/etc/sysctl.d` that lowers the privileged port start number: ``` # Allow unprivileged binding to HTTP port 80 # Use 443 if you only need binding to the default HTTPS port net.ipv4.ip_unprivileged_port_start=80 ``` 2. Reload `sysctl` for these changes to take effect: ```sh sudo sysctl --system ``` Alternatively, restart your system for these changes to take effect. ## Restrictions The restrictions of Rootless Docker apply to kind clusters as well. e.g. - OverlayFS cannot be used unless the host is using kernel >= 5.11, or Ubuntu/Debian kernel - Cannot mount block storage - Cannot mount NFS ## Creating a kind cluster with Rootless Docker To create a kind cluster with Rootless Docker, just run: ```console $ export DOCKER_HOST=unix://${XDG_RUNTIME_DIR}/docker.sock $ kind create cluster ``` ## Creating a kind cluster with Rootless Podman To create a kind cluster with Rootless Podman, just run: ```console $ KIND_EXPERIMENTAL_PROVIDER=podman kind create cluster ``` On some distributions, you might need to use systemd-run to start kind into its own cgroup scope: ```console $ systemd-run --scope --user kind create cluster ``` or ```console $ systemd-run --scope --user -p "Delegate=yes" kind create cluster ``` If you still get the error `running kind with rootless provider requires setting systemd property "Delegate=yes"` even with [host requirements](#host-requirements) configured. ### Podman Log Driver When using rootless Podman, kind may fail with the following error even though the cluster appears to have started successfully: ``` ERROR: failed to create cluster: could not find a log line that matches "Reached target .*Multi-User System.*|detected cgroup v1" ``` This failure can have many different root causes, but if it looks like the node container has initialized, it may be caused by an architectural issue with rootless Podman's log handling. kind monitors cluster startup by tailing `podman logs`, but in rootless mode, by default Podman uses a userspace log relay that may not connect until after systemd has already emitted the expected boot message. As a result, kind's log watcher never sees the line and times out. A workaround to this is to configure Podman to use a different log driver so kind can reliably tail the logs. One option is to use the `k8s-file` log driver: ```sh mkdir -p ~/.config/containers cat >> ~/.config/containers/containers.conf <}} Enable-WindowsOptionalFeature -Online -FeatureName VirtualMachinePlatform, Microsoft-Windows-Subsystem-Linux {{< /codeFromInline >}} 1. Reboot when prompted. 1. After the reboot, set WSL to default to WSL2. Open an admin PowerShell window and run {{< codeFromInline lang="powershell" >}} wsl --set-default-version 2 {{< /codeFromInline >}} 1. Now, you can install your Linux distro of choice by searching the Windows Store. If you don't want to use the Windows Store, then follow the steps in the WSL docs for [manual install](https://docs.microsoft.com/en-us/windows/wsl/install-manual). 1. Start up your distro with the shortcut added to the start menu ## Setting up Docker in WSL2 with Docker Desktop Install Docker with WSL2 backend here: https://docs.docker.com/docker-for-windows/wsl/ ## Setting up Docker in WSL2 without Docker Desktop Alternatively, docker can be installed in WSL2 without using Docker Desktop. See for example: https://dev.to/bowmanjd/install-docker-on-windows-wsl-without-docker-desktop-34m9 Now, move on to the [Quick Start](/docs/user/quick-start) to set up your cluster with kind. ## Accessing a Kubernetes Service running in WSL2 1. prepare cluster config with exported node port {{< codeFromInline lang="yaml" >}} # cluster-config.yml kind: Cluster apiVersion: kind.x-k8s.io/v1alpha4 nodes: - role: control-plane extraPortMappings: - containerPort: 30000 hostPort: 30000 protocol: TCP {{< /codeFromInline >}} 1. create cluster `kind create cluster --config=cluster-config.yml` 1. create deployment `kubectl create deployment nginx --image=nginx --port=80` 1. create service `kubectl create service nodeport nginx --tcp=80:80 --node-port=30000` 1. access service `curl localhost:30000` Alternatively, see [Helpful Tips for WSL2](#helpful-tips-for-wsl2) ## Kubernetes Service with Session Affinity If you want to create a Kubernetes Service with `sessionAffinity: ClientIP` it will not be accessible (and neither will any Service created afterwards). WSL2 kernel is missing `xt_recent` kernel module, which is used by Kube Proxy to implement session affinity. You need to compile a custom kernel to enable this feature. 1. Build a kernel with `xt_recent` kernel module enabled {{< codeFromInline lang="bash" >}} docker run --name wsl-kernel-builder --rm -it ubuntu:latest bash WSL_COMMIT_REF=linux-msft-wsl-6.6.87.2-1 # change this line to the version you want to build # Install dependencies apt update apt install -y git build-essential flex bison libssl-dev libelf-dev bc dwarves python3 cpio # Checkout WSL2 Kernel repo mkdir src cd src git init git remote add origin https://github.com/microsoft/WSL2-Linux-Kernel.git git config --local gc.auto 0 git -c protocol.version=2 fetch --no-tags --prune --progress --no-recurse-submodules --depth=1 origin +${WSL_COMMIT_REF}:refs/remotes/origin/build/linux-msft-wsl-5.15.y git checkout --progress --force -B build/linux-msft-wsl-5.15.y refs/remotes/origin/build/linux-msft-wsl-5.15.y # Enable xt_recent kernel module sed -i 's/# CONFIG_NETFILTER_XT_MATCH_RECENT is not set/CONFIG_NETFILTER_XT_MATCH_RECENT=y/' Microsoft/config-wsl # Compile the kernel make -j2 KCONFIG_CONFIG=Microsoft/config-wsl # From the host terminal copy the newly built kernel docker cp wsl-kernel-builder:/src/arch/x86/boot/bzImage . {{< /codeFromInline >}} 1. Configure WSL to use newly built kernel: https://docs.microsoft.com/en-us/windows/wsl/wsl-config#configure-global-options-with-wslconfig Create a `.wslconfig` file in `C:\Users\\`: {{< codeFromInline lang="toml" >}} [wsl2] kernel=c:\\path\\to\\your\\kernel\\bzImage {{< /codeFromInline >}} ## Helpful Tips for WSL2 - If you want to terminate the WSL2 instance to save memory or "reboot", open an admin PowerShell prompt and run `wsl --terminate `. Closing a WSL2 window doesn't shut it down automatically. - You can check the status of all installed distros with `wsl --list --verbose`. - If you had a distro installed with WSL1, you can convert it to WSL2 with `wsl --set-version 2` - Alternative of [Accessing a Kubernetes Service running in WSL2](#accessing-a-kubernetes-service-running-in-wsl2) or [Setting Up An Ingress Controller](/docs/user/ingress/#setting-up-an-ingress-controller) for accessing workloads is using `kubectl port-forward --address=0.0.0.0`. - See the [Known Issues](/docs/user/known-issues/) page for additional Windows-related issues and concerns. kubernetes-sigs-kind-49aeee6/site/content/docs/user/working-offline.md000066400000000000000000000142061524365506300262350ustar00rootroot00000000000000--- title: "Working Offline" menu: main: parent: "user" identifier: "working-offline" weight: 3 description: |- This guide covers how to work with KIND in an offline / airgapped environment. You should first [install kind][installation documentation] before continuing. [installation documentation]: https://kind.sigs.k8s.io/docs/user/quick-start#installation --- ## Using a pre-built [node image][node image] KIND provides some pre-built images, these images contain everything necessary to create a cluster and can be used in an offline environment. You can find available image tags on the [releases page][releases page]. Please include the `@sha256:` [image digest][image digest] from the image in the release notes. You can pull it when you have network access, or pull it on another machine and then transfer it to the target machine. ``` âžœ ~ docker pull kindest/node:v1.17.0@sha256:9512edae126da271b66b990b6fff768fbb7cd786c7d39e86bdf55906352fdf62 sha256:9512edae126da271b66b990b6fff768fbb7cd786c7d39e86bdf55906352fdf62: Pulling from kindest/node cc5a81c29aab: Pull complete 81c62728355f: Pull complete ed9cffdd962a: Pull complete 6a46f000fce2: Pull complete 6bd890da28be: Pull complete 0d88bd219ffe: Pull complete af5240f230f0: Pull complete Digest: sha256:9512edae126da271b66b990b6fff768fbb7cd786c7d39e86bdf55906352fdf62 Status: Downloaded newer image for kindest/node@sha256:9512edae126da271b66b990b6fff768fbb7cd786c7d39e86bdf55906352fdf62 docker.io/kindest/node:v1.17.0@sha256:9512edae126da271b66b990b6fff768fbb7cd786c7d39e86bdf55906352fdf62 ``` You can [save node image][docker save] to a tarball. ``` âžœ ~ docker save -o kind.v1.17.0.tar kindest/node:v1.17.0@sha256:9512edae126da271b66b990b6fff768fbb7cd786c7d39e86bdf55906352fdf62 # or âžœ ~ docker save kindest/node:v1.17.0@sha256:9512edae126da271b66b990b6fff768fbb7cd786c7d39e86bdf55906352fdf62 | gzip > kind.v1.17.0.tar.gz ``` When you transport image tarball to the machine, you can load the node image by [`docker load`][docker load] command. ``` âžœ ~ docker load -i kind.v1.17.0.tar Loaded image ID: sha256:ec6ab22d89efc045f4da4fc862f6a13c64c0670fa7656fbecdec5307380f9cb0 # or âžœ ~ docker load -i kind.v1.17.0.tar.gz Loaded image ID: sha256:ec6ab22d89efc045f4da4fc862f6a13c64c0670fa7656fbecdec5307380f9cb0 ``` And [create a tag][docker tag] for it. ``` âžœ ~ docker image tag kindest/node:v1.17.0@sha256:9512edae126da271b66b990b6fff768fbb7cd786c7d39e86bdf55906352fdf62 kindest/node:v1.17.0 âžœ ~ docker image ls kindest/node REPOSITORY TAG IMAGE ID CREATED SIZE kindest/node v1.17.0 ec6ab22d89ef 3 weeks ago 1.23GB ``` Finally, you can create a cluster by specifying the `--image` flag. ``` âžœ ~ kind create cluster --image kindest/node:v1.17.0 Creating cluster "kind" ... ✓ Ensuring node image (kindest/node:v1.17.0) 🖼 ✓ Preparing nodes 📦 ✓ Writing configuration 📜 ✓ Starting control-plane 🕹ï¸� ✓ Installing CNI 🔌 ✓ Installing StorageClass 💾 Set kubectl context to "kind-kind" You can now use your cluster with: kubectl cluster-info --context kind-kind Have a question, bug, or feature request? Let us know! https://kind.sigs.k8s.io/#community 🙂 ``` ## Building the [node image][node image] In addition to using pre-built node image, KIND also provides the ability to build [node image][node image] from Kubernetes source code. Please note that during the image building process, you need to download many dependencies. It is recommended that you build at least once online to ensure that these dependencies are downloaded to your local. See [building the node image][building the node image] for more detail. The node-image in turn is built off the [base image][base image]. ### Prepare Kubernetes source code You can clone Kubernetes source code. ```sh âžœ ~ mkdir -p $GOPATH/src/k8s.io âžœ ~ cd $GOPATH/src/k8s.io âžœ ~ git clone https://github.com/kubernetes/kubernetes ``` ### Building image ```sh âžœ ~ kind build node-image --image kindest/node:main $GOPATH/src/k8s.io/kubernetes Starting to build Kubernetes ... Image build completed. ``` When the image build is complete, you can create a cluster by passing the `--image` flag. ```sh âžœ ~ kind create cluster --image kindest/node:main Creating cluster "kind" ... ✓ Ensuring node image (kindest/node:main) 🖼 ✓ Preparing nodes 📦 ✓ Writing configuration 📜 ✓ Starting control-plane 🕹ï¸� ✓ Installing CNI 🔌 ✓ Installing StorageClass 💾 Set kubectl context to "kind-kind" You can now use your cluster with: kubectl cluster-info --context kind-kind Have a question, bug, or feature request? Let us know! https://kind.sigs.k8s.io/#community 🙂 ``` ## HA cluster If you want to create a control-plane HA cluster then you need to create a config file and use this file to start the cluster. ```sh âžœ ~ cat << EOF | kind create cluster --config=- kind: Cluster apiVersion: kind.x-k8s.io/v1alpha4 # 3 control plane node and 1 workers nodes: - role: control-plane - role: control-plane - role: control-plane - role: worker EOF ``` Note that in an offline environment, in addition to preparing the node image, you also need to prepare HAProxy image in advance. You can find the specific tag currently in use at [loadbalancer source code][loadbalancer source code]. [installation documentation]: https://kind.sigs.k8s.io/docs/user/quick-start#installation [node image]: https://kind.sigs.k8s.io/docs/design/node-image [releases page]: https://github.com/kubernetes-sigs/kind/releases [image digest]: https://docs.docker.com/engine/reference/commandline/pull/#pull-an-image-by-digest-immutable-identifier [docker save]: https://docs.docker.com/engine/reference/commandline/save/ [docker load]: https://docs.docker.com/engine/reference/commandline/load/ [docker tag]: https://docs.docker.com/engine/reference/commandline/tag/ [base image]: https://kind.sigs.k8s.io/docs/design/base-image/ [building the node image]: https://kind.sigs.k8s.io/docs/user/quick-start/#building-images [loadbalancer source code]: https://github.com/kubernetes-sigs/kind/blob/main/pkg/cluster/internal/loadbalancer/const.go#L20 kubernetes-sigs-kind-49aeee6/site/data/000077500000000000000000000000001524365506300201415ustar00rootroot00000000000000kubernetes-sigs-kind-49aeee6/site/data/apiVersions.yaml000066400000000000000000000000131524365506300233210ustar00rootroot00000000000000- v1alpha4 kubernetes-sigs-kind-49aeee6/site/go.mod000066400000000000000000000236211524365506300203420ustar00rootroot00000000000000module sigs.k8s.io/kind/site go 1.25.0 require github.com/gohugoio/hugo v0.162.0 require ( cel.dev/expr v0.25.1 // indirect cloud.google.com/go v0.123.0 // indirect cloud.google.com/go/auth v0.20.0 // indirect cloud.google.com/go/auth/oauth2adapt v0.2.8 // indirect cloud.google.com/go/compute/metadata v0.9.0 // indirect cloud.google.com/go/iam v1.5.3 // indirect cloud.google.com/go/monitoring v1.24.3 // indirect cloud.google.com/go/storage v1.57.2 // indirect github.com/Azure/azure-sdk-for-go/sdk/azcore v1.20.0 // indirect github.com/Azure/azure-sdk-for-go/sdk/azidentity v1.13.1 // indirect github.com/Azure/azure-sdk-for-go/sdk/internal v1.11.2 // indirect github.com/Azure/azure-sdk-for-go/sdk/storage/azblob v1.6.3 // indirect github.com/Azure/go-autorest v14.2.0+incompatible // indirect github.com/Azure/go-autorest/autorest/to v0.4.1 // indirect github.com/AzureAD/microsoft-authentication-library-for-go v1.6.0 // indirect github.com/BurntSushi/locker v0.0.0-20171006230638-a6e239ea1c69 // indirect github.com/GoogleCloudPlatform/opentelemetry-operations-go/detectors/gcp v1.31.0 // indirect github.com/GoogleCloudPlatform/opentelemetry-operations-go/exporter/metric v0.54.0 // indirect github.com/GoogleCloudPlatform/opentelemetry-operations-go/internal/resourcemapping v0.54.0 // indirect github.com/JohannesKaufmann/dom v0.2.0 // indirect github.com/JohannesKaufmann/html-to-markdown/v2 v2.5.1 // indirect github.com/alecthomas/chroma/v2 v2.24.1 // indirect github.com/aws/aws-sdk-go-v2 v1.41.6 // indirect github.com/aws/aws-sdk-go-v2/aws/protocol/eventstream v1.7.8 // indirect github.com/aws/aws-sdk-go-v2/config v1.32.2 // indirect github.com/aws/aws-sdk-go-v2/credentials v1.19.2 // indirect github.com/aws/aws-sdk-go-v2/feature/ec2/imds v1.18.14 // indirect github.com/aws/aws-sdk-go-v2/feature/s3/manager v1.20.12 // indirect github.com/aws/aws-sdk-go-v2/internal/configsources v1.4.22 // indirect github.com/aws/aws-sdk-go-v2/internal/endpoints/v2 v2.7.22 // indirect github.com/aws/aws-sdk-go-v2/internal/ini v1.8.4 // indirect github.com/aws/aws-sdk-go-v2/internal/v4a v1.4.22 // indirect github.com/aws/aws-sdk-go-v2/service/cloudfront v1.61.1 // indirect github.com/aws/aws-sdk-go-v2/service/internal/accept-encoding v1.13.7 // indirect github.com/aws/aws-sdk-go-v2/service/internal/checksum v1.9.13 // indirect github.com/aws/aws-sdk-go-v2/service/internal/presigned-url v1.13.21 // indirect github.com/aws/aws-sdk-go-v2/service/internal/s3shared v1.19.21 // indirect github.com/aws/aws-sdk-go-v2/service/s3 v1.97.3 // indirect github.com/aws/aws-sdk-go-v2/service/signin v1.0.2 // indirect github.com/aws/aws-sdk-go-v2/service/sso v1.30.5 // indirect github.com/aws/aws-sdk-go-v2/service/ssooidc v1.35.10 // indirect github.com/aws/aws-sdk-go-v2/service/sts v1.41.2 // indirect github.com/aws/smithy-go v1.25.0 // indirect github.com/aymerick/douceur v0.2.0 // indirect github.com/bep/clocks v0.5.0 // indirect github.com/bep/debounce v1.2.0 // indirect github.com/bep/gitmap v1.9.0 // indirect github.com/bep/goat v0.5.0 // indirect github.com/bep/godartsass/v2 v2.5.0 // indirect github.com/bep/golibsass v1.2.0 // indirect github.com/bep/golocales v0.1.0 // indirect github.com/bep/goportabletext v0.2.0 // indirect github.com/bep/helpers v0.12.0 // indirect github.com/bep/imagemeta v0.17.2 // indirect github.com/bep/lazycache v0.8.1 // indirect github.com/bep/logg v0.4.0 // indirect github.com/bep/mclib v1.20401.20400 // indirect github.com/bep/overlayfs v0.10.0 // indirect github.com/bep/simplecobra v0.7.0 // indirect github.com/bep/textandbinarywriter v0.1.0 // indirect github.com/bep/tmc v0.6.0 // indirect github.com/bits-and-blooms/bitset v1.24.4 // indirect github.com/cespare/xxhash/v2 v2.3.0 // indirect github.com/clbanning/mxj/v2 v2.7.0 // indirect github.com/clipperhouse/displaywidth v0.10.0 // indirect github.com/clipperhouse/uax29/v2 v2.6.0 // indirect github.com/cncf/xds/go v0.0.0-20251210132809-ee656c7534f5 // indirect github.com/cpuguy83/go-md2man/v2 v2.0.6 // indirect github.com/dlclark/regexp2 v1.12.0 // indirect github.com/dustin/go-humanize v1.0.1 // indirect github.com/envoyproxy/go-control-plane/envoy v1.36.0 // indirect github.com/envoyproxy/protoc-gen-validate v1.3.0 // indirect github.com/evanw/esbuild v0.28.0 // indirect github.com/fatih/color v1.18.0 // indirect github.com/felixge/httpsnoop v1.0.4 // indirect github.com/frankban/quicktest v1.14.6 // indirect github.com/fsnotify/fsnotify v1.9.0 // indirect github.com/getkin/kin-openapi v0.138.0 // indirect github.com/go-jose/go-jose/v4 v4.1.4 // indirect github.com/go-logr/logr v1.4.3 // indirect github.com/go-logr/stdr v1.2.2 // indirect github.com/go-openapi/jsonpointer v0.21.0 // indirect github.com/go-openapi/swag v0.23.0 // indirect github.com/gobuffalo/flect v1.0.3 // indirect github.com/gobwas/glob v0.2.3 // indirect github.com/goccy/go-yaml v1.19.2 // indirect github.com/gohugoio/gift v0.2.0 // indirect github.com/gohugoio/go-i18n/v2 v2.1.3-0.20251018145728-cfcc22d823c6 // indirect github.com/gohugoio/go-radix v1.2.0 // indirect github.com/gohugoio/hashstructure v0.6.0 // indirect github.com/gohugoio/httpcache v0.8.0 // indirect github.com/gohugoio/hugo-goldmark-extensions/extras v0.7.0 // indirect github.com/gohugoio/hugo-goldmark-extensions/passthrough v0.5.0 // indirect github.com/golang-jwt/jwt/v5 v5.3.0 // indirect github.com/google/go-cmp v0.7.0 // indirect github.com/google/s2a-go v0.1.9 // indirect github.com/google/uuid v1.6.0 // indirect github.com/google/wire v0.7.0 // indirect github.com/googleapis/enterprise-certificate-proxy v0.3.14 // indirect github.com/googleapis/gax-go/v2 v2.21.0 // indirect github.com/gorilla/css v1.0.1 // indirect github.com/gorilla/websocket v1.5.3 // indirect github.com/hairyhenderson/go-codeowners v0.7.0 // indirect github.com/hashicorp/golang-lru/v2 v2.0.7 // indirect github.com/inconshreveable/mousetrap v1.1.0 // indirect github.com/jdkato/prose v1.2.1 // 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/kylelemons/godebug v1.1.0 // indirect github.com/kyokomi/emoji/v2 v2.2.13 // indirect github.com/magefile/mage v1.17.2 // indirect github.com/mailru/easyjson v0.7.7 // indirect github.com/makeworld-the-better-one/dither/v2 v2.4.0 // indirect github.com/marekm4/color-extractor v1.2.1 // indirect github.com/mattn/go-colorable v0.1.14 // indirect github.com/mattn/go-isatty v0.0.22 // indirect github.com/mattn/go-runewidth v0.0.19 // indirect github.com/microcosm-cc/bluemonday v1.0.27 // indirect github.com/mitchellh/mapstructure v1.5.1-0.20231216201459-8508981c8b6c // indirect github.com/mohae/deepcopy v0.0.0-20170929034955-c48cc78d4826 // indirect github.com/muesli/smartcrop v0.3.0 // indirect github.com/niklasfasching/go-org v1.9.1 // indirect github.com/oasdiff/yaml v0.0.9 // indirect github.com/oasdiff/yaml3 v0.0.12 // indirect github.com/olekukonko/cat v0.0.0-20250911104152-50322a0618f6 // indirect github.com/olekukonko/errors v1.2.0 // indirect github.com/olekukonko/ll v0.1.6 // indirect github.com/olekukonko/tablewriter v1.1.4 // indirect github.com/pbnjay/memory v0.0.0-20210728143218-7b4eea64cf58 // indirect github.com/pelletier/go-toml/v2 v2.3.1 // 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/planetscale/vtprotobuf v0.6.1-0.20240319094008-0393e58bdf10 // indirect github.com/rogpeppe/go-internal v1.14.1 // indirect github.com/russross/blackfriday/v2 v2.1.0 // indirect github.com/santhosh-tekuri/jsonschema/v6 v6.0.2 // indirect github.com/spf13/afero v1.15.0 // indirect github.com/spf13/cast v1.10.0 // indirect github.com/spf13/cobra v1.10.2 // indirect github.com/spf13/fsync v0.10.1 // indirect github.com/spf13/pflag v1.0.10 // indirect github.com/spiffe/go-spiffe/v2 v2.6.0 // indirect github.com/tdewolff/minify/v2 v2.24.13 // indirect github.com/tdewolff/parse/v2 v2.8.12 // indirect github.com/tetratelabs/wazero v1.11.1-0.20260521072212-475a1f8f0dc3 // indirect github.com/woodsbury/decimal128 v1.3.0 // indirect github.com/yuin/goldmark v1.8.2 // indirect github.com/yuin/goldmark-emoji v1.0.6 // indirect go.opentelemetry.io/auto/sdk v1.2.1 // indirect go.opentelemetry.io/contrib/detectors/gcp v1.39.0 // indirect go.opentelemetry.io/contrib/instrumentation/google.golang.org/grpc/otelgrpc v0.67.0 // indirect go.opentelemetry.io/contrib/instrumentation/net/http/otelhttp v0.67.0 // indirect go.opentelemetry.io/otel v1.43.0 // indirect go.opentelemetry.io/otel/metric v1.43.0 // indirect go.opentelemetry.io/otel/sdk v1.43.0 // indirect go.opentelemetry.io/otel/sdk/metric v1.43.0 // indirect go.opentelemetry.io/otel/trace v1.43.0 // indirect go.uber.org/automaxprocs v1.5.3 // indirect go.yaml.in/yaml/v3 v3.0.4 // indirect gocloud.dev v0.45.0 // indirect golang.org/x/crypto v0.51.0 // indirect golang.org/x/image v0.41.0 // indirect golang.org/x/mod v0.36.0 // indirect golang.org/x/net v0.55.0 // indirect golang.org/x/oauth2 v0.36.0 // indirect golang.org/x/sync v0.20.0 // indirect golang.org/x/sys v0.45.0 // indirect golang.org/x/text v0.37.0 // indirect golang.org/x/time v0.15.0 // indirect golang.org/x/tools v0.45.0 // indirect golang.org/x/xerrors v0.0.0-20240903120638-7835f813f4da // indirect google.golang.org/api v0.276.0 // indirect google.golang.org/genproto v0.0.0-20260319201613-d00831a3d3e7 // indirect google.golang.org/genproto/googleapis/api v0.0.0-20260319201613-d00831a3d3e7 // indirect google.golang.org/genproto/googleapis/rpc v0.0.0-20260401024825-9d38bb4040a9 // indirect google.golang.org/grpc v1.80.0 // indirect google.golang.org/protobuf v1.36.11 // indirect gopkg.in/yaml.v3 v3.0.1 // indirect howett.net/plist v1.0.1 // indirect rsc.io/qr v0.2.0 // indirect software.sslmate.com/src/go-pkcs12 v0.7.0 // indirect ) kubernetes-sigs-kind-49aeee6/site/go.sum000066400000000000000000002515651524365506300204010ustar00rootroot00000000000000cel.dev/expr v0.25.1 h1:1KrZg61W6TWSxuNZ37Xy49ps13NUovb66QLprthtwi4= cel.dev/expr v0.25.1/go.mod h1:hrXvqGP6G6gyx8UAHSHJ5RGk//1Oj5nXQ2NI02Nrsg4= cloud.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.123.0 h1:2NAUJwPR47q+E35uaJeYoNhuNEM9kM8SjgRgdeOJUSE= cloud.google.com/go v0.123.0/go.mod h1:xBoMV08QcqUGuPW65Qfm1o9Y4zKZBpGS+7bImXLTAZU= cloud.google.com/go/auth v0.20.0 h1:kXTssoVb4azsVDoUiF8KvxAqrsQcQtB53DcSgta74CA= cloud.google.com/go/auth v0.20.0/go.mod h1:942/yi/itH1SsmpyrbnTMDgGfdy2BUqIKyd0cyYLc5Q= cloud.google.com/go/auth/oauth2adapt v0.2.8 h1:keo8NaayQZ6wimpNSmW5OPc283g65QNIiLpZnkHRbnc= cloud.google.com/go/auth/oauth2adapt v0.2.8/go.mod h1:XQ9y31RkqZCcwJWNSx2Xvric3RrU88hAYYbjDWYDL+c= 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.9.0 h1:pDUj4QMoPejqq20dK0Pg2N4yG9zIkYGdBtwLoEkH9Zs= cloud.google.com/go/compute/metadata v0.9.0/go.mod h1:E0bWwX5wTnLPedCKqk3pJmVgCBSM6qQI1yTBdEb3C10= 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.5.3 h1:+vMINPiDF2ognBJ97ABAYYwRgsaqxPbQDlMnbHMjolc= cloud.google.com/go/iam v1.5.3/go.mod h1:MR3v9oLkZCTlaqljW6Eb2d3HGDGK5/bDv93jhfISFvU= cloud.google.com/go/logging v1.13.2 h1:qqlHCBvieJT9Cdq4QqYx1KPadCQ2noD4FK02eNqHAjA= cloud.google.com/go/logging v1.13.2/go.mod h1:zaybliM3yun1J8mU2dVQ1/qDzjbOqEijZCn6hSBtKak= cloud.google.com/go/longrunning v0.8.0 h1:LiKK77J3bx5gDLi4SMViHixjD2ohlkwBi+mKA7EhfW8= cloud.google.com/go/longrunning v0.8.0/go.mod h1:UmErU2Onzi+fKDg2gR7dusz11Pe26aknR4kHmJJqIfk= cloud.google.com/go/monitoring v1.24.3 h1:dde+gMNc0UhPZD1Azu6at2e79bfdztVDS5lvhOdsgaE= cloud.google.com/go/monitoring v1.24.3/go.mod h1:nYP6W0tm3N9H/bOw8am7t62YTzZY+zUeQ+Bi6+2eonI= 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.57.2 h1:sVlym3cHGYhrp6XZKkKb+92I1V42ks2qKKpB0CF5Mb4= cloud.google.com/go/storage v1.57.2/go.mod h1:n5ijg4yiRXXpCu0sJTD6k+eMf7GRrJmPyr9YxLXGHOk= cloud.google.com/go/trace v1.11.7 h1:kDNDX8JkaAG3R2nq1lIdkb7FCSi1rCmsEtKVsty7p+U= cloud.google.com/go/trace v1.11.7/go.mod h1:TNn9d5V3fQVf6s4SCveVMIBS2LJUqo73GACmq/Tky0s= 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.20.0 h1:JXg2dwJUmPB9JmtVmdEB16APJ7jurfbY5jnfXpJoRMc= github.com/Azure/azure-sdk-for-go/sdk/azcore v1.20.0/go.mod h1:YD5h/ldMsG0XiIw7PdyNhLxaM317eFh5yNLccNfGdyw= github.com/Azure/azure-sdk-for-go/sdk/azidentity v1.13.1 h1:Hk5QBxZQC1jb2Fwj6mpzme37xbCDdNTxU7O9eb5+LB4= github.com/Azure/azure-sdk-for-go/sdk/azidentity v1.13.1/go.mod h1:IYus9qsFobWIc2YVwe/WPjcnyCkPKtnHAqUYeebc8z0= github.com/Azure/azure-sdk-for-go/sdk/azidentity/cache v0.3.2 h1:yz1bePFlP5Vws5+8ez6T3HWXPmwOK7Yvq8QxDBD3SKY= github.com/Azure/azure-sdk-for-go/sdk/azidentity/cache v0.3.2/go.mod h1:Pa9ZNPuoNu/GztvBSKk9J1cDJW6vk/n0zLtV4mgd8N8= github.com/Azure/azure-sdk-for-go/sdk/internal v1.11.2 h1:9iefClla7iYpfYWdzPCRDozdmndjTm8DXdpCzPajMgA= github.com/Azure/azure-sdk-for-go/sdk/internal v1.11.2/go.mod h1:XtLgD3ZD34DAaVIIAyG3objl5DynM3CQ/vMcbBNJZGI= github.com/Azure/azure-sdk-for-go/sdk/resourcemanager/storage/armstorage v1.8.1 h1:/Zt+cDPnpC3OVDm/JKLOs7M2DKmLRIIp3XIx9pHHiig= github.com/Azure/azure-sdk-for-go/sdk/resourcemanager/storage/armstorage v1.8.1/go.mod h1:Ng3urmn6dYe8gnbCMoHHVl5APYz2txho3koEkV2o2HA= github.com/Azure/azure-sdk-for-go/sdk/storage/azblob v1.6.3 h1:ZJJNFaQ86GVKQ9ehwqyAFE6pIfyicpuJ8IkVaPBc6/4= github.com/Azure/azure-sdk-for-go/sdk/storage/azblob v1.6.3/go.mod h1:URuDvhmATVKqHBH9/0nOiNKk0+YcwfQ3WkK5PqHKxc8= 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.1 h1:CxNHBqdzTr7rLtdrtb5CMjJcDut+WNGCVv7OmS5+lTc= github.com/Azure/go-autorest/autorest/to v0.4.1/go.mod h1:EtaofgU4zmtvn1zT2ARsjRFdq9vXx0YWtmElwL+GZ9M= github.com/AzureAD/microsoft-authentication-extensions-for-go/cache v0.1.1 h1:WJTmL004Abzc5wDB5VtZG2PJk5ndYDgVacGqfirKxjM= github.com/AzureAD/microsoft-authentication-extensions-for-go/cache v0.1.1/go.mod h1:tCcJZ0uHAmvjsVYzEFivsRTN00oz5BEsRgQHu5JZ9WE= github.com/AzureAD/microsoft-authentication-library-for-go v1.6.0 h1:XRzhVemXdgvJqCH0sFfrBUTnUJSBrBf7++ypk+twtRs= github.com/AzureAD/microsoft-authentication-library-for-go v1.6.0/go.mod h1:HKpQxkWaGLJ+D/5H8QRpyQXA1eKjxkFlOMwck5+33Jk= 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/go.mod h1:xHWCNGjB5oqiDr8zfno3MHue2Ht5sIBksp03qcyfWMU= github.com/BurntSushi/toml v1.5.0 h1:W5quZX/G/csjUnuI8SUYlsHs9M38FC7znL0lIO+DvMg= github.com/BurntSushi/toml v1.5.0/go.mod h1:ukJfTF/6rtPPRCnwkur4qwRxa8vTRFBF0uk2lLoLwho= github.com/BurntSushi/xgb v0.0.0-20160522181843-27f122750802/go.mod h1:IVnqGOEym/WlBOVXweHU+Q+/VP0lqqI8lqeDx9IjBqo= github.com/GoogleCloudPlatform/opentelemetry-operations-go/detectors/gcp v1.31.0 h1:DHa2U07rk8syqvCge0QIGMCE1WxGj9njT44GH7zNJLQ= github.com/GoogleCloudPlatform/opentelemetry-operations-go/detectors/gcp v1.31.0/go.mod h1:P4WPRUkOhJC13W//jWpyfJNDAIpvRbAUIYLX/4jtlE0= github.com/GoogleCloudPlatform/opentelemetry-operations-go/exporter/metric v0.54.0 h1:lhhYARPUu3LmHysQ/igznQphfzynnqI3D75oUyw1HXk= github.com/GoogleCloudPlatform/opentelemetry-operations-go/exporter/metric v0.54.0/go.mod h1:l9rva3ApbBpEJxSNYnwT9N4CDLrWgtq3u8736C5hyJw= github.com/GoogleCloudPlatform/opentelemetry-operations-go/internal/cloudmock v0.54.0 h1:xfK3bbi6F2RDtaZFtUdKO3osOBIhNb+xTs8lFW6yx9o= github.com/GoogleCloudPlatform/opentelemetry-operations-go/internal/cloudmock v0.54.0/go.mod h1:vB2GH9GAYYJTO3mEn8oYwzEdhlayZIdQz6zdzgUIRvA= github.com/GoogleCloudPlatform/opentelemetry-operations-go/internal/resourcemapping v0.54.0 h1:s0WlVbf9qpvkh1c/uDAPElam0WrL7fHRIidgZJ7UqZI= github.com/GoogleCloudPlatform/opentelemetry-operations-go/internal/resourcemapping v0.54.0/go.mod h1:Mf6O40IAyB9zR/1J8nGDDPirZQQPbYJni8Yisy7NTMc= github.com/JohannesKaufmann/dom v0.2.0 h1:1bragmEb19K8lHAqgFgqCpiPCFEZMTXzOIEjuxkUfLQ= github.com/JohannesKaufmann/dom v0.2.0/go.mod h1:57iSUl5RKric4bUkgos4zu6Xt5LMHUnw3TF1l5CbGZo= github.com/JohannesKaufmann/html-to-markdown/v2 v2.5.1 h1:IpUgup6ucCE4wB59wAP0Y2qSApYjFhSfGVjShUBoVSw= github.com/JohannesKaufmann/html-to-markdown/v2 v2.5.1/go.mod h1:KUwy/WLgv9kv2yeBZkPCgDokHzg0M6EdRc17thnbVFw= github.com/alecthomas/assert/v2 v2.11.0 h1:2Q9r3ki8+JYXvGsDyBXwH3LcJ+WK5D0gc5E8vS6K3D0= github.com/alecthomas/assert/v2 v2.11.0/go.mod h1:Bze95FyfUr7x34QZrjL+XP+0qgp/zg8yS+TtBj1WA3k= github.com/alecthomas/chroma/v2 v2.24.1 h1:m5ffpfZbIb++k8AqFEKy9uVgY12xIQtBsQlc6DfZJQM= github.com/alecthomas/chroma/v2 v2.24.1/go.mod h1:l+ohZ9xRXIbGe7cIW+YZgOGbvuVLjMps/FYN/CwuabI= github.com/alecthomas/repr v0.5.2 h1:SU73FTI9D1P5UNtvseffFSGmdNci/O6RsqzeXJtP0Qs= github.com/alecthomas/repr v0.5.2/go.mod h1:Fr0507jx4eOXV7AlPV6AVZLYrLIuIeSOWtW57eE/O/4= github.com/aws/aws-sdk-go-v2 v1.41.6 h1:1AX0AthnBQzMx1vbmir3Y4WsnJgiydmnJjiLu+LvXOg= github.com/aws/aws-sdk-go-v2 v1.41.6/go.mod h1:dy0UzBIfwSeot4grGvY1AqFWN5zgziMmWGzysDnHFcQ= github.com/aws/aws-sdk-go-v2/aws/protocol/eventstream v1.7.8 h1:eBMB84YGghSocM7PsjmmPffTa+1FBUeNvGvFou6V/4o= github.com/aws/aws-sdk-go-v2/aws/protocol/eventstream v1.7.8/go.mod h1:lyw7GFp3qENLh7kwzf7iMzAxDn+NzjXEAGjKS2UOKqI= github.com/aws/aws-sdk-go-v2/config v1.32.2 h1:4liUsdEpUUPZs5WVapsJLx5NPmQhQdez7nYFcovrytk= github.com/aws/aws-sdk-go-v2/config v1.32.2/go.mod h1:l0hs06IFz1eCT+jTacU/qZtC33nvcnLADAPL/XyrkZI= github.com/aws/aws-sdk-go-v2/credentials v1.19.2 h1:qZry8VUyTK4VIo5aEdUcBjPZHL2v4FyQ3QEOaWcFLu4= github.com/aws/aws-sdk-go-v2/credentials v1.19.2/go.mod h1:YUqm5a1/kBnoK+/NY5WEiMocZihKSo15/tJdmdXnM5g= github.com/aws/aws-sdk-go-v2/feature/ec2/imds v1.18.14 h1:WZVR5DbDgxzA0BJeudId89Kmgy6DIU4ORpxwsVHz0qA= github.com/aws/aws-sdk-go-v2/feature/ec2/imds v1.18.14/go.mod h1:Dadl9QO0kHgbrH1GRqGiZdYtW5w+IXXaBNCHTIaheM4= github.com/aws/aws-sdk-go-v2/feature/s3/manager v1.20.12 h1:Zy6Tme1AA13kX8x3CnkHx5cqdGWGaj/anwOiWGnA0Xo= github.com/aws/aws-sdk-go-v2/feature/s3/manager v1.20.12/go.mod h1:ql4uXYKoTM9WUAUSmthY4AtPVrlTBZOvnBJTiCUdPxI= github.com/aws/aws-sdk-go-v2/internal/configsources v1.4.22 h1:GmLa5Kw1ESqtFpXsx5MmC84QWa/ZrLZvlJGa2y+4kcQ= github.com/aws/aws-sdk-go-v2/internal/configsources v1.4.22/go.mod h1:6sW9iWm9DK9YRpRGga/qzrzNLgKpT2cIxb7Vo2eNOp0= github.com/aws/aws-sdk-go-v2/internal/endpoints/v2 v2.7.22 h1:dY4kWZiSaXIzxnKlj17nHnBcXXBfac6UlsAx2qL6XrU= github.com/aws/aws-sdk-go-v2/internal/endpoints/v2 v2.7.22/go.mod h1:KIpEUx0JuRZLO7U6cbV204cWAEco2iC3l061IxlwLtI= github.com/aws/aws-sdk-go-v2/internal/ini v1.8.4 h1:WKuaxf++XKWlHWu9ECbMlha8WOEGm0OUEZqm4K/Gcfk= github.com/aws/aws-sdk-go-v2/internal/ini v1.8.4/go.mod h1:ZWy7j6v1vWGmPReu0iSGvRiise4YI5SkR3OHKTZ6Wuc= github.com/aws/aws-sdk-go-v2/internal/v4a v1.4.22 h1:rWyie/PxDRIdhNf4DzRk0lvjVOqFJuNnO8WwaIRVxzQ= github.com/aws/aws-sdk-go-v2/internal/v4a v1.4.22/go.mod h1:zd/JsJ4P7oGfUhXn1VyLqaRZwPmZwg44Jf2dS84Dm3Y= github.com/aws/aws-sdk-go-v2/service/cloudfront v1.61.1 h1:LSv6jOIn/yEsGLeL4TLggsLA+I+XbuZ8sKmUIEWKrzI= github.com/aws/aws-sdk-go-v2/service/cloudfront v1.61.1/go.mod h1:XUduecWr236DyG8nZwJMewFbS4QcL8NZHxohdYDoPhM= github.com/aws/aws-sdk-go-v2/service/internal/accept-encoding v1.13.7 h1:5EniKhLZe4xzL7a+fU3C2tfUN4nWIqlLesfrjkuPFTY= github.com/aws/aws-sdk-go-v2/service/internal/accept-encoding v1.13.7/go.mod h1:x0nZssQ3qZSnIcePWLvcoFisRXJzcTVvYpAAdYX8+GI= github.com/aws/aws-sdk-go-v2/service/internal/checksum v1.9.13 h1:JRaIgADQS/U6uXDqlPiefP32yXTda7Kqfx+LgspooZM= github.com/aws/aws-sdk-go-v2/service/internal/checksum v1.9.13/go.mod h1:CEuVn5WqOMilYl+tbccq8+N2ieCy0gVn3OtRb0vBNNM= github.com/aws/aws-sdk-go-v2/service/internal/presigned-url v1.13.21 h1:c31//R3xgIJMSC8S6hEVq+38DcvUlgFY0FM6mSI5oto= github.com/aws/aws-sdk-go-v2/service/internal/presigned-url v1.13.21/go.mod h1:r6+pf23ouCB718FUxaqzZdbpYFyDtehyZcmP5KL9FkA= github.com/aws/aws-sdk-go-v2/service/internal/s3shared v1.19.21 h1:ZlvrNcHSFFWURB8avufQq9gFsheUgjVD9536obIknfM= github.com/aws/aws-sdk-go-v2/service/internal/s3shared v1.19.21/go.mod h1:cv3TNhVrssKR0O/xxLJVRfd2oazSnZnkUeTf6ctUwfQ= github.com/aws/aws-sdk-go-v2/service/s3 v1.97.3 h1:HwxWTbTrIHm5qY+CAEur0s/figc3qwvLWsNkF4RPToo= github.com/aws/aws-sdk-go-v2/service/s3 v1.97.3/go.mod h1:uoA43SdFwacedBfSgfFSjjCvYe8aYBS7EnU5GZ/YKMM= github.com/aws/aws-sdk-go-v2/service/signin v1.0.2 h1:MxMBdKTYBjPQChlJhi4qlEueqB1p1KcbTEa7tD5aqPs= github.com/aws/aws-sdk-go-v2/service/signin v1.0.2/go.mod h1:iS6EPmNeqCsGo+xQmXv0jIMjyYtQfnwg36zl2FwEouk= github.com/aws/aws-sdk-go-v2/service/sso v1.30.5 h1:ksUT5KtgpZd3SAiFJNJ0AFEJVva3gjBmN7eXUZjzUwQ= github.com/aws/aws-sdk-go-v2/service/sso v1.30.5/go.mod h1:av+ArJpoYf3pgyrj6tcehSFW+y9/QvAY8kMooR9bZCw= github.com/aws/aws-sdk-go-v2/service/ssooidc v1.35.10 h1:GtsxyiF3Nd3JahRBJbxLCCdYW9ltGQYrFWg8XdkGDd8= github.com/aws/aws-sdk-go-v2/service/ssooidc v1.35.10/go.mod h1:/j67Z5XBVDx8nZVp9EuFM9/BS5dvBznbqILGuu73hug= github.com/aws/aws-sdk-go-v2/service/sts v1.41.2 h1:a5UTtD4mHBU3t0o6aHQZFJTNKVfxFWfPX7J0Lr7G+uY= github.com/aws/aws-sdk-go-v2/service/sts v1.41.2/go.mod h1:6TxbXoDSgBQ225Qd8Q+MbxUxUh6TtNKwbRt/EPS9xso= github.com/aws/smithy-go v1.25.0 h1:Sz/XJ64rwuiKtB6j98nDIPyYrV1nVNJ4YU74gttcl5U= github.com/aws/smithy-go v1.25.0/go.mod h1:YE2RhdIuDbA5E5bTdciG9KrW3+TiEONeUWCqxX9i1Fc= github.com/aymerick/douceur v0.2.0 h1:Mv+mAeH1Q+n9Fr+oyamOlAkUNPWPlA8PPGR0QAaYuPk= github.com/aymerick/douceur v0.2.0/go.mod h1:wlT5vV2O3h55X9m7iVYN0TBM0NH/MmbLnd30/FjWUq4= 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.9.0 h1:2pyb1ex+cdwF6c4tsrhEgEKfyNfxE34d5K+s2sa9byc= github.com/bep/gitmap v1.9.0/go.mod h1:Juq6e1qqCRvc1W7nzgadPGI9IGV13ZncEebg5atj4Vo= 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/v2 v2.5.0 h1:tKRvwVdyjCIr48qgtLa4gHEdtRkPF8H1OeEhJAEv7xg= github.com/bep/godartsass/v2 v2.5.0/go.mod h1:rjsi1YSXAl/UbsGL85RLDEjRKdIKUlMQHr6ChUNYOFU= github.com/bep/golibsass v1.2.0 h1:nyZUkKP/0psr8nT6GR2cnmt99xS93Ji82ZD9AgOK6VI= github.com/bep/golibsass v1.2.0/go.mod h1:DL87K8Un/+pWUS75ggYv41bliGiolxzDKWJAq3eJ1MA= github.com/bep/golocales v0.1.0 h1:rjWf1S4basIje+G+je5WMW8G+yzaoz4gEDFolrFVdvA= github.com/bep/golocales v0.1.0/go.mod h1:Hl78nje8mNL3LzLeJvYN9NsIZgyFJGrGfvgO9r1+mwE= github.com/bep/goportabletext v0.2.0 h1:CZ9f8jADBWqHwBymQiJJPCTSV/tHSA+PYzlUf86Yze0= github.com/bep/goportabletext v0.2.0/go.mod h1:xDeA5+qcgKzJq6Q6XjAiBKtxLD3Yn7f6XP4joD3J3qU= github.com/bep/helpers v0.12.0 h1:tD6V2DQW0B+FUynF2etR/106S/TO9akm+vA/Hk24GxY= github.com/bep/helpers v0.12.0/go.mod h1:PfE7MGdA8sSQ19nyDh4tYbs5rAlStlJaDI21f/fnNps= github.com/bep/imagemeta v0.17.2 h1:fDyXM1eAqCfBeqGLqS6UsN4OfuLM0cdu70KuLCehjOg= github.com/bep/imagemeta v0.17.2/go.mod h1:+Hlp195TfZpzsqCxtDKTG6eWdyz2+F2V/oCYfr3CZKA= github.com/bep/lazycache v0.8.1 h1:ko6ASLjkPxyV5DMWoNNZ8B2M0weyjqXX8IZkjBoBtvg= github.com/bep/lazycache v0.8.1/go.mod h1:pbEiFsZoq7cLXvrTll0AHOPEurB1aGGxx4jKjOtlx9w= 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.20401.20400 h1:silTOMNlNI7yHBb+HxEE0THIVFVWo/0I4SCH69FxtmU= github.com/bep/mclib v1.20401.20400/go.mod h1:v5Hh3EIinPn7epigP28uf9JCkZlYzBS2vEOPe2wrHzM= github.com/bep/overlayfs v0.10.0 h1:wS3eQ6bRsLX+4AAmwGjvoFSAQoeheamxofFiJ2SthSE= github.com/bep/overlayfs v0.10.0/go.mod h1:ouu4nu6fFJaL0sPzNICzxYsBeWwrjiTdFZdK4lI3tro= github.com/bep/simplecobra v0.7.0 h1:kG8ZPwEc1o96hlIVGXcrrvwC8RornBqvMD3+pS0Z7y0= github.com/bep/simplecobra v0.7.0/go.mod h1:PDXvBWH1ZMX05DRQ25ub/C6kKUuq+jROPgjbVz8wO1g= github.com/bep/textandbinarywriter v0.1.0 h1:KXmXsRN2Uhwhm1G3e/snM8+5SPQBJrCEpIosdIBR3po= github.com/bep/textandbinarywriter v0.1.0/go.mod h1:dAcHveajlWWU7PXhp6Dn4PIAYDg2H13Huif9xMS2w8w= github.com/bep/tmc v0.6.0 h1:5zWy4L+3gS+Kk8czzLC4g7ETaC3wkX9ZtTRdAdL8V4s= github.com/bep/tmc v0.6.0/go.mod h1:SNHxc3o2WSNMAYqJcAO0rxFY+pbhZzMwjIHe5xaAue0= github.com/bits-and-blooms/bitset v1.24.4 h1:95H15Og1clikBrKr/DuzMXkQzECs1M6hhoGXLwLQOZE= github.com/bits-and-blooms/bitset v1.24.4/go.mod h1:7hO7Gc7Pp1vODcmWvKMRA9BNmbv6a/7QIWpPxHddWR8= 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/client9/misspell v0.3.4/go.mod h1:qj6jICC3Q7zFZvVWo7KLAzC3yx5G7kyvSDkc90ppPyw= github.com/clipperhouse/displaywidth v0.10.0 h1:GhBG8WuerxjFQQYeuZAeVTuyxuX+UraiZGD4HJQ3Y8g= github.com/clipperhouse/displaywidth v0.10.0/go.mod h1:XqJajYsaiEwkxOj4bowCTMcT1SgvHo9flfF3jQasdbs= github.com/clipperhouse/uax29/v2 v2.6.0 h1:z0cDbUV+aPASdFb2/ndFnS9ts/WNXgTNNGFoKXuhpos= github.com/clipperhouse/uax29/v2 v2.6.0/go.mod h1:Wn1g7MK6OoeDT0vL+Q0SQLDz/KpfsVRgg6W7ihQeh4g= 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/cncf/xds/go v0.0.0-20251210132809-ee656c7534f5 h1:6xNmx7iTtyBRev0+D/Tv1FZd4SCg8axKApyNyRsAt/w= github.com/cncf/xds/go v0.0.0-20251210132809-ee656c7534f5/go.mod h1:KdCmV+x/BuvyMxRnYBlmVaq4OLiKW6iRQfvC62cvdkI= github.com/cpuguy83/go-md2man/v2 v2.0.6 h1:XJtiaUW6dEEqVuZiMTn1ldk455QWwEIsMIJlo5vtkx0= github.com/cpuguy83/go-md2man/v2 v2.0.6/go.mod h1:oOW0eioCTA6cOiMLiUPZOpcVxMig6NIQQ7OS05n1F4g= github.com/creack/pty v1.1.9/go.mod h1:oKZEueFk5CKHvIhNR5MUki03XCEU+Q6VDXinZuGJ33E= github.com/davecgh/go-spew v1.1.0/go.mod h1:J7Y8YcW2NihsgmVo/mv3lAwl/skON4iLHjSsI+c5H38= github.com/davecgh/go-spew v1.1.1/go.mod h1:J7Y8YcW2NihsgmVo/mv3lAwl/skON4iLHjSsI+c5H38= github.com/davecgh/go-spew v1.1.2-0.20180830191138-d8f796af33cc h1:U9qPSI2PIWSS1VwoXQT9A3Wy9MM3WgvqSxFWenqJduM= github.com/davecgh/go-spew v1.1.2-0.20180830191138-d8f796af33cc/go.mod h1:J7Y8YcW2NihsgmVo/mv3lAwl/skON4iLHjSsI+c5H38= github.com/dlclark/regexp2 v1.12.0 h1:0j4c5qQmnC6XOWNjP3PIXURXN2gWx76rd3KvgdPkCz8= github.com/dlclark/regexp2 v1.12.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/go-control-plane v0.14.0 h1:hbG2kr4RuFj222B6+7T83thSPqLjwBIfQawTkC++2HA= github.com/envoyproxy/go-control-plane v0.14.0/go.mod h1:NcS5X47pLl/hfqxU70yPwL9ZMkUlwlKxtAohpi2wBEU= github.com/envoyproxy/go-control-plane/envoy v1.36.0 h1:yg/JjO5E7ubRyKX3m07GF3reDNEnfOboJ0QySbH736g= github.com/envoyproxy/go-control-plane/envoy v1.36.0/go.mod h1:ty89S1YCCVruQAm9OtKeEkQLTb+Lkz0k8v9W0Oxsv98= github.com/envoyproxy/go-control-plane/ratelimit v0.1.0 h1:/G9QYbddjL25KvtKTv3an9lx6VBE2cnb8wp1vEGNYGI= github.com/envoyproxy/go-control-plane/ratelimit v0.1.0/go.mod h1:Wk+tMFAFbCXaJPzVVHnPgRKdUdwW/KdbRt94AzgRee4= github.com/envoyproxy/protoc-gen-validate v0.1.0/go.mod h1:iSmxcyjqTsJpI2R4NaDN7+kN2VEUnK/pcBlmesArF7c= github.com/envoyproxy/protoc-gen-validate v1.3.0 h1:TvGH1wof4H33rezVKWSpqKz5NXWg5VPuZ0uONDT6eb4= github.com/envoyproxy/protoc-gen-validate v1.3.0/go.mod h1:HvYl7zwPa5mffgyeTUHA9zHIH36nmrm7oCbo4YKoSWA= github.com/evanw/esbuild v0.28.0 h1:V96ghtc5p5JnNUQIUsc5H3kr+AcFcMqOJll2ZmJW6Lo= github.com/evanw/esbuild v0.28.0/go.mod h1:D2vIQZqV/vIf/VRHtViaUtViZmG7o+kKmlBfVQuRi48= github.com/fatih/color v1.18.0 h1:S8gINlzdQ840/4pfAwic/ZE0djQEH3wM94VfqLTZcOM= github.com/fatih/color v1.18.0/go.mod h1:4FelSpRwEGDpQ12mAdzqdOukCy4u8WUtOY6lkT/6HfU= 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.7.2/go.mod h1:jaStnuzAqU1AJdCO0l53JDCJrVDKcS03DbaAcR7Ks/o= 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.9.0 h1:2Ml+OJNzbYCTzsxtv8vKSFD9PbJjmhYF14k/jKC7S9k= github.com/fsnotify/fsnotify v1.9.0/go.mod h1:8jBTzvmWwFyi3Pb8djgCCO5IBqzKJ/Jwo8TRcHyHii0= github.com/getkin/kin-openapi v0.138.0 h1:ebfE0JAmF6AqHrNBy1KO3Fs68K9tPs48HalvLPo7Rv4= github.com/getkin/kin-openapi v0.138.0/go.mod h1:vUYWaKyMqj7PfTybelXtLuLN9tReS12vxnzMRK+z2GY= 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-jose/go-jose/v4 v4.1.4 h1:moDMcTHmvE6Groj34emNPLs/qtYXRVcd6S7NHbHz3kA= github.com/go-jose/go-jose/v4 v4.1.4/go.mod h1:x4oUasVrzR7071A4TnHLGSPpNOm2a21K9Kf04k1rs08= github.com/go-logr/logr v1.2.2/go.mod h1:jdQByPbusPIv2/zmleS9BjJVeZ6kBagPoEUsqbVz/1A= github.com/go-logr/logr v1.4.3 h1:CjnDlHq8ikf6E492q6eKboGOC0T8CDaOvkHCIg8idEI= github.com/go-logr/logr v1.4.3/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.21.0 h1:YgdVicSA9vH5RiHs9TZW5oyafXZFc6+2Vc1rr/O9oNQ= github.com/go-openapi/jsonpointer v0.21.0/go.mod h1:IUyH9l/+uyhIYQ/PXVA41Rexl+kOkAPDdXEYns6fzUY= github.com/go-openapi/swag v0.23.0 h1:vsEVJDUo2hPJ2tu0/Xc+4noaxyEffXNIs3cOULZ+GrE= github.com/go-openapi/swag v0.23.0/go.mod h1:esZ8ITTYEsH1V2trKHjAN8Ai7xHb8RV+YSZ577vPjgQ= github.com/go-quicktest/qt v1.101.0 h1:O1K29Txy5P2OK0dGo59b7b0LR6wKfIhttaAhHUyn7eI= github.com/go-quicktest/qt v1.101.0/go.mod h1:14Bz/f7NwaXPtdYEgzsx46kqSxVwTbzVZsDC26tQJow= 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.3 h1:xeWBM2nui+qnVvNM4S3foBhCAL2XgPU+a7FdpelbTq4= github.com/gobuffalo/flect v1.0.3/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/goccy/go-yaml v1.19.2 h1:PmFC1S6h8ljIz6gMRBopkjP1TVT7xuwrButHID66PoM= github.com/goccy/go-yaml v1.19.2/go.mod h1:XBurs7gK8ATbW4ZPGKgcbrY1Br56PdM69F7LkFRi1kA= github.com/gohugoio/gift v0.2.0 h1:vA31pP0rTVmBxBrhpY3WEt+4zM4g+1sDqYeemwsYeqc= github.com/gohugoio/gift v0.2.0/go.mod h1:1Mrm5CjF33KpD749Dwj+UAjWZ3LC6cBXGuTMa5XwoP4= github.com/gohugoio/go-i18n/v2 v2.1.3-0.20251018145728-cfcc22d823c6 h1:pxlAea9eRwuAnt/zKbGqlFO2ZszpIe24YpOVLf+N+4I= github.com/gohugoio/go-i18n/v2 v2.1.3-0.20251018145728-cfcc22d823c6/go.mod h1:m5hu1im5Qc7LDycVLvee6MPobJiRLBYHklypFJR0/aE= github.com/gohugoio/go-radix v1.2.0 h1:D5GTk8jIoeXirBSc2P4E4NdHKDrenk9k9N0ctU5Yrhg= github.com/gohugoio/go-radix v1.2.0/go.mod h1:k6vDa0ebpbpgtzSj9lPGJcA4AZwJ9xUNObUy2vczPFM= github.com/gohugoio/hashstructure v0.6.0 h1:7wMB/2CfXoThFYhdWRGv3u3rUM761Cq29CxUW+NltUg= github.com/gohugoio/hashstructure v0.6.0/go.mod h1:lapVLk9XidheHG1IQ4ZSbyYrXcaILU1ZEP/+vno5rBQ= github.com/gohugoio/httpcache v0.8.0 h1:hNdsmGSELztetYCsPVgjA960zSa4dfEqqF/SficorCU= github.com/gohugoio/httpcache v0.8.0/go.mod h1:fMlPrdY/vVJhAriLZnrF5QpN3BNAcoBClgAyQd+lGFI= github.com/gohugoio/hugo v0.162.0 h1:53tmaVTc6KTo41YRi7tOMcpHDkPqT3soxt+k6xyLs/o= github.com/gohugoio/hugo v0.162.0/go.mod h1:jQRZLi5aiQKwX1wYg1sgz374QGxuzMgJR8XssWySUhQ= github.com/gohugoio/hugo-goldmark-extensions/extras v0.7.0 h1:I/n6v7VImJ3aISLnn73JAHXyjcQsMVvbguQPTk9Ehus= github.com/gohugoio/hugo-goldmark-extensions/extras v0.7.0/go.mod h1:9LJNfKWFmhEJ7HW0in5znezMwH+FYMBIhNZ3VWtRcRs= github.com/gohugoio/hugo-goldmark-extensions/passthrough v0.5.0 h1:p13Q0DBCrBRpJGtbtlgkYNCs4TnIlZJh8vHgnAiofrI= github.com/gohugoio/hugo-goldmark-extensions/passthrough v0.5.0/go.mod h1:ob9PCHy/ocsQhTz68uxhyInaYCbbVNpOOrJkIoSeD+8= github.com/golang-jwt/jwt/v5 v5.3.0 h1:pv4AsKCKKZuqlgs5sUmn4x8UlGa0kEVt/puTpKx9vvo= github.com/golang-jwt/jwt/v5 v5.3.0/go.mod h1:fxCRLWMO43lRc8nhHWY6LGqRcf+1gQWArsqaEUEa5bE= 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/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.4/go.mod h1:v8dTdLbMG2kIc/vJvl+f65V22dbkXbowE6jgT/gNBxE= github.com/google/go-cmp v0.5.9/go.mod h1:17dUlkBOakJ0+DkrSSNjCkIjxS6bF9zb3elmeNGIjoY= github.com/google/go-cmp v0.7.0 h1:wk8382ETsv4JYUZwIsn6YpYiWiBsYLSJiTsyBybVuN8= github.com/google/go-cmp v0.7.0/go.mod h1:pXiqmnSA92OHEEa9HXL2W4E7lf9JzCmGVUdgjX3N/iU= github.com/google/go-replayers/grpcreplay v1.3.0 h1:1Keyy0m1sIpqstQmgz307zhiJ1pV4uIlFds5weTmxbo= github.com/google/go-replayers/grpcreplay v1.3.0/go.mod h1:v6NgKtkijC0d3e3RW8il6Sy5sqRVUwoQa4mHOGEy8DI= 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.9 h1:LGD7gtMgezd8a/Xak7mEWL0PjoTQFvpRudN895yqKW0= github.com/google/s2a-go v0.1.9/go.mod h1:YA0Ei2ZQL3acow2O62kdp9UlnvMmU7kA6Eutn0dXayM= 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.7.0 h1:JxUKI6+CVBgCO2WToKy/nQk0sS+amI9z9EjVmdaocj4= github.com/google/wire v0.7.0/go.mod h1:n6YbUQD9cPKTnHXEBN2DXlOp/mVADhVErcMFb0v3J18= github.com/googleapis/enterprise-certificate-proxy v0.3.14 h1:yh8ncqsbUY4shRD5dA6RlzjJaT4hi3kII+zYw8wmLb8= github.com/googleapis/enterprise-certificate-proxy v0.3.14/go.mod h1:vqVt9yG9480NtzREnTlmGSBmFrA+bzb0yl0TxoBQXOg= 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.21.0 h1:h45NjjzEO3faG9Lg/cFrBh2PgegVVgzqKzuZl/wMbiI= github.com/googleapis/gax-go/v2 v2.21.0/go.mod h1:But/NJU6TnZsrLai/xBAQLLz+Hc7fHZJt/hsCz3Fih4= github.com/googleapis/google-cloud-go-testing v0.0.0-20200911160855-bcd43fbb19e8/go.mod h1:dvDLG8qkwmyD9a/MJJN3XJcT3xFxOKAvTZGvuZmac9g= github.com/gorilla/css v1.0.1 h1:ntNaBIghp6JmvWnxbZKANoLyuXTPZ4cAMlo6RyhlbO8= github.com/gorilla/css v1.0.1/go.mod h1:BvnYkspnSzMmwRK+b8/xgNPLiIuNZr6vbZBTPQ2A3b0= 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.7.0 h1:s0W4wF8bdsBEjTWzwzSlsatSthWtTAF2xLgo4a4RwAo= github.com/hairyhenderson/go-codeowners v0.7.0/go.mod h1:wUlNgQ3QjqC4z8DnM5nnCYVq/icpqXJyJOukKx5U8/Q= 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/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/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/keybase/go-keychain v0.0.1 h1:way+bWYa6lDppZoZcgMbYsvC7GxljxrskdNInRtuthU= github.com/keybase/go-keychain v0.0.1/go.mod h1:PdEILRW3i9D8JcdM+FmY6RwkHGnhHxXwkPPMeUgOK1k= 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.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.17.2 h1:fyXVu1eadI8Ap1HCCNgEhJ5McIWiYhLR8uol64ZZc40= github.com/magefile/mage v1.17.2/go.mod h1:Yj51kqllmsgFpvvSzgrZPK9WtluG3kUhFaBUVLo4feA= 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.14 h1:9A9LHSqF/7dyVVX6g0U9cwm9pG3kP9gSzcuIPHPsaIE= github.com/mattn/go-colorable v0.1.14/go.mod h1:6LmQG8QLFO4G5z1gPvYEzlUgJ2wF+stgPZH1UqBm1s8= github.com/mattn/go-isatty v0.0.22 h1:j8l17JJ9i6VGPUFUYoTUKPSgKe/83EYU2zBC7YNKMw4= github.com/mattn/go-isatty v0.0.22/go.mod h1:ZXfXG4SQHsB/w3ZeOYbR0PrPwLy+n6xiMrJlRFqopa4= github.com/mattn/go-runewidth v0.0.19 h1:v++JhqYnZuu5jSKrk9RbgF5v4CGUjqRfBm05byFGLdw= github.com/mattn/go-runewidth v0.0.19/go.mod h1:XBkDxAl56ILZc9knddidhrOlY5R/pDhgLpndooCuJAs= github.com/microcosm-cc/bluemonday v1.0.27 h1:MpEUotklkwCSLeH+Qdx1VJgNqLlpY2KXwXFM08ygZfk= github.com/microcosm-cc/bluemonday v1.0.27/go.mod h1:jFi9vgW+H7c3V0lb6nR74Ib/DIB5OBs92Dimizgw2cA= 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.9.1 h1:/3s4uTPOF06pImGa2Yvlp24yKXZoTYM+nsIlMzfpg/0= github.com/niklasfasching/go-org v1.9.1/go.mod h1:ZAGFFkWvUQcpazmi/8nHqwvARpr1xpb+Es67oUGX/48= github.com/oasdiff/yaml v0.0.9 h1:zQOvd2UKoozsSsAknnWoDJlSK4lC0mpmjfDsfqNwX48= github.com/oasdiff/yaml v0.0.9/go.mod h1:8lvhgJG4xiKPj3HN5lDow4jZHPlx1i7dIwzkdAo6oAM= github.com/oasdiff/yaml3 v0.0.12 h1:75urAtPeDg2/iDEWwzNrLOWxI9N/dCh81nTTJtokt2M= github.com/oasdiff/yaml3 v0.0.12/go.mod h1:y5+oSEHCPT/DGrS++Wc/479ERge0zTFxaF8PbGKcg2o= github.com/olekukonko/cat v0.0.0-20250911104152-50322a0618f6 h1:zrbMGy9YXpIeTnGj4EljqMiZsIcE09mmF8XsD5AYOJc= github.com/olekukonko/cat v0.0.0-20250911104152-50322a0618f6/go.mod h1:rEKTHC9roVVicUIfZK7DYrdIoM0EOr8mK1Hj5s3JjH0= github.com/olekukonko/errors v1.2.0 h1:10Zcn4GeV59t/EGqJc8fUjtFT/FuUh5bTMzZ1XwmCRo= github.com/olekukonko/errors v1.2.0/go.mod h1:ppzxA5jBKcO1vIpCXQ9ZqgDh8iwODz6OXIGKU8r5m4Y= github.com/olekukonko/ll v0.1.6 h1:lGVTHO+Qc4Qm+fce/2h2m5y9LvqaW+DCN7xW9hsU3uA= github.com/olekukonko/ll v0.1.6/go.mod h1:NVUmjBb/aCtUpjKk75BhWrOlARz3dqsM+OtszpY4o88= github.com/olekukonko/tablewriter v1.1.4 h1:ORUMI3dXbMnRlRggJX3+q7OzQFDdvgbN9nVWj1drm6I= github.com/olekukonko/tablewriter v1.1.4/go.mod h1:+kedxuyTtgoZLwif3P1Em4hARJs+mVnzKxmsCL/C5RY= 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.3.1 h1:MYEvvGnQjeNkRF1qUuGolNtNExTDwct51yp7olPtrEc= github.com/pelletier/go-toml/v2 v2.3.1/go.mod h1:2gIqNv+qfxSVS7cM2xJQKtLSTLUE9V8t9Stt+h56mCY= 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/planetscale/vtprotobuf v0.6.1-0.20240319094008-0393e58bdf10 h1:GFCKgmp0tecUJ0sJuv4pzYCqS9+RGSn52M3FUwPs+uo= github.com/planetscale/vtprotobuf v0.6.1-0.20240319094008-0393e58bdf10/go.mod h1:t/avpk3KcrXxUnYOhZhMXJlSEyie6gQbtLq5NM3loB8= github.com/pmezard/go-difflib v1.0.0/go.mod h1:iKH77koFhYxTK1pcRnkKkqfTogsbg7gZNVY4sRDYZ/4= github.com/pmezard/go-difflib v1.0.1-0.20181226105442-5d4384ee4fb2 h1:Jamvg5psRIccs7FGNTlIRMkT8wgtp5eCXdBlqhYGL6U= github.com/pmezard/go-difflib v1.0.1-0.20181226105442-5d4384ee4fb2/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.9.0/go.mod h1:WtVeX8xhTBvf0smdhujwtBcq4Qrzq/fJaraNFVN+nFs= github.com/rogpeppe/go-internal v1.14.1 h1:UQB4HGPB6osV0SQTLymcB4TgvyWu6ZyliaW0tI/otEQ= github.com/rogpeppe/go-internal v1.14.1/go.mod h1:MaRKkUm5W0goXpeCfT7UZI6fk/L7L7so1lCWt35ZSgc= 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/santhosh-tekuri/jsonschema/v6 v6.0.2 h1:KRzFb2m7YtdldCEkzs6KqmJw4nqEVZGK7IN2kJkjTuQ= github.com/santhosh-tekuri/jsonschema/v6 v6.0.2/go.mod h1:JXeL+ps8p7/KNMjDQk3TCwPpBy0wYklyWTfbkIzdIFU= github.com/sebdah/goldie/v2 v2.8.0 h1:dZb9wR8q5++oplmEiJT+U/5KyotVD+HNGCAc5gNr8rc= github.com/sebdah/goldie/v2 v2.8.0/go.mod h1:oZ9fp0+se1eapSRjfYbsV/0Hqhbuu3bJVvKI/NNtssI= github.com/sergi/go-diff v1.4.0 h1:n/SP9D5ad1fORl+llWyN+D6qoUETXNZARKjyY2/KVCw= github.com/sergi/go-diff v1.4.0/go.mod h1:A0bzQcvG0E7Rwjx0REVgAGH58e96+X0MeOfepqsbeW4= 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.15.0 h1:b/YBCLWAJdFWJTN9cLhiXXcD7mzKn9Dm86dNnfyQw1I= github.com/spf13/afero v1.15.0/go.mod h1:NC2ByUVxtQs4b3sIUphxK0NioZnmxgyCrfzeuq8lxMg= github.com/spf13/cast v1.10.0 h1:h2x0u2shc1QuLHfxi+cTJvs30+ZAHOGRic8uyGTDWxY= github.com/spf13/cast v1.10.0/go.mod h1:jNfB8QC9IA6ZuY2ZjDp0KtFO2LZZlg4S/7bzP6qqeHo= github.com/spf13/cobra v1.10.2 h1:DMTTonx5m65Ic0GOoRY2c16WCbHxOOw6xxezuLaBpcU= github.com/spf13/cobra v1.10.2/go.mod h1:7C1pvHqHw5A4vrJfjNwvOdzYu0Gml16OCs2GRiTUUS4= 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.9/go.mod h1:McXfInJRrz4CZXVZOBLb0bTZqETkiAhM9Iw0y3An2Bg= github.com/spf13/pflag v1.0.10 h1:4EBh2KAYBwaONj6b2Ye1GiHfwjqyROoF4RwYO+vPwFk= github.com/spf13/pflag v1.0.10/go.mod h1:McXfInJRrz4CZXVZOBLb0bTZqETkiAhM9Iw0y3An2Bg= github.com/spiffe/go-spiffe/v2 v2.6.0 h1:l+DolpxNWYgruGQVV0xsfeya3CsC7m8iBzDnMpsbLuo= github.com/spiffe/go-spiffe/v2 v2.6.0/go.mod h1:gm2SeUoMZEtpnzPNs2Csc0D/gX33k1xIx7lEzqblHEs= 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/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.11.1 h1:7s2iGBzp5EwR7/aIZr8ao5+dra3wiQyKjjFuvgVKu7U= github.com/stretchr/testify v1.11.1/go.mod h1:wZwfW3scLgRK+23gO65QZefKpKQRnfz6sD981Nm4B6U= github.com/tdewolff/minify/v2 v2.24.13 h1:xrcF7gKDnUszseEY9WX9mUlZII2v2Go/QAcAwRASw58= github.com/tdewolff/minify/v2 v2.24.13/go.mod h1:emvwoYeIl8bfAKqRU5ww95LX9Gpggpqv/naal9a8Yq0= github.com/tdewolff/parse/v2 v2.8.12 h1:5BBjfaCv482v3nltlS0u6wH1xJaxjR6ofDrWttNvROg= github.com/tdewolff/parse/v2 v2.8.12/go.mod h1:Hwlni2tiVNKyzR1o6nUs4FOF07URA+JLBLd6dlIXYqo= github.com/tdewolff/test v1.0.11/go.mod h1:XPuWBzvdUzhCuxWO1ojpXsyzsA5bFoS3tO/Q3kFuTG8= github.com/tdewolff/test v1.0.12 h1:7F21DqIajswxuche0geHdrUZRCWE4oko4b7bcmkkrxk= github.com/tdewolff/test v1.0.12/go.mod h1:XPuWBzvdUzhCuxWO1ojpXsyzsA5bFoS3tO/Q3kFuTG8= github.com/tetratelabs/wazero v1.11.1-0.20260521072212-475a1f8f0dc3 h1:0Jpp+tPkvALC9hcZUYOj/6yWYvUIV/kKoxRDj0a6zk4= github.com/tetratelabs/wazero v1.11.1-0.20260521072212-475a1f8f0dc3/go.mod h1:LvKtzl2RqO4gyF27BiXU+nKAjcV8f38U+kP/q2vgxh0= 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/woodsbury/decimal128 v1.3.0 h1:8pffMNWIlC0O5vbyHWFZAt5yWvWcrHA+3ovIIjVWss0= github.com/woodsbury/decimal128 v1.3.0/go.mod h1:C5UTmyTjW3JftjUFzOVhC20BEQa2a4ZKOB5I6Zjb+ds= 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.8.2 h1:kEGpgqJXdgbkhcOgBxkC0X0PmoPG1ZyoZ117rDVp4zE= github.com/yuin/goldmark v1.8.2/go.mod h1:ip/1k0VRfGynBgxOz0yCqHrbZXhcjxyuS66Brc7iBKg= github.com/yuin/goldmark-emoji v1.0.6 h1:QWfF2FYaXwL74tfGOW5izeiZepUDroDJfWubQI9HTHs= github.com/yuin/goldmark-emoji v1.0.6/go.mod h1:ukxJDKFpdFb5x0a5HqbdlcKtebh086iJpI31LTKmWuA= 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.opentelemetry.io/auto/sdk v1.2.1 h1:jXsnJ4Lmnqd11kwkBV2LgLoFMZKizbCi5fNZ/ipaZ64= go.opentelemetry.io/auto/sdk v1.2.1/go.mod h1:KRTj+aOaElaLi+wW1kO/DZRXwkF4C5xPbEe3ZiIhN7Y= go.opentelemetry.io/contrib/detectors/gcp v1.39.0 h1:kWRNZMsfBHZ+uHjiH4y7Etn2FK26LAGkNFw7RHv1DhE= go.opentelemetry.io/contrib/detectors/gcp v1.39.0/go.mod h1:t/OGqzHBa5v6RHZwrDBJ2OirWc+4q/w2fTbLZwAKjTk= go.opentelemetry.io/contrib/instrumentation/google.golang.org/grpc/otelgrpc v0.67.0 h1:yI1/OhfEPy7J9eoa6Sj051C7n5dvpj0QX8g4sRchg04= go.opentelemetry.io/contrib/instrumentation/google.golang.org/grpc/otelgrpc v0.67.0/go.mod h1:NoUCKYWK+3ecatC4HjkRktREheMeEtrXoQxrqYFeHSc= go.opentelemetry.io/contrib/instrumentation/net/http/otelhttp v0.67.0 h1:OyrsyzuttWTSur2qN/Lm0m2a8yqyIjUVBZcxFPuXq2o= go.opentelemetry.io/contrib/instrumentation/net/http/otelhttp v0.67.0/go.mod h1:C2NGBr+kAB4bk3xtMXfZ94gqFDtg/GkI7e9zqGh5Beg= go.opentelemetry.io/otel v1.43.0 h1:mYIM03dnh5zfN7HautFE4ieIig9amkNANT+xcVxAj9I= go.opentelemetry.io/otel v1.43.0/go.mod h1:JuG+u74mvjvcm8vj8pI5XiHy1zDeoCS2LB1spIq7Ay0= go.opentelemetry.io/otel/exporters/stdout/stdoutmetric v1.37.0 h1:6VjV6Et+1Hd2iLZEPtdV7vie80Yyqf7oikJLjQ/myi0= go.opentelemetry.io/otel/exporters/stdout/stdoutmetric v1.37.0/go.mod h1:u8hcp8ji5gaM/RfcOo8z9NMnf1pVLfVY7lBY2VOGuUU= go.opentelemetry.io/otel/metric v1.43.0 h1:d7638QeInOnuwOONPp4JAOGfbCEpYb+K6DVWvdxGzgM= go.opentelemetry.io/otel/metric v1.43.0/go.mod h1:RDnPtIxvqlgO8GRW18W6Z/4P462ldprJtfxHxyKd2PY= go.opentelemetry.io/otel/sdk v1.43.0 h1:pi5mE86i5rTeLXqoF/hhiBtUNcrAGHLKQdhg4h4V9Dg= go.opentelemetry.io/otel/sdk v1.43.0/go.mod h1:P+IkVU3iWukmiit/Yf9AWvpyRDlUeBaRg6Y+C58QHzg= go.opentelemetry.io/otel/sdk/metric v1.43.0 h1:S88dyqXjJkuBNLeMcVPRFXpRw2fuwdvfCGLEo89fDkw= go.opentelemetry.io/otel/sdk/metric v1.43.0/go.mod h1:C/RJtwSEJ5hzTiUz5pXF1kILHStzb9zFlIEe85bhj6A= go.opentelemetry.io/otel/trace v1.43.0 h1:BkNrHpup+4k4w+ZZ86CZoHHEkohws8AY+WTX09nk+3A= go.opentelemetry.io/otel/trace v1.43.0/go.mod h1:/QJhyVBUUswCphDVxq+8mld+AvhXZLhe+8WVFxiFff0= go.uber.org/automaxprocs v1.5.3 h1:kWazyxZUrS3Gs4qUpbwo5kEIMGe/DAvi5Z4tl2NW4j8= go.uber.org/automaxprocs v1.5.3/go.mod h1:eRbA25aqJrxAbsLO0xy5jVwPt7FQnRgjW+efnwa1WM0= go.yaml.in/yaml/v3 v3.0.4 h1:tfq32ie2Jv2UxXFdLJdh3jXuOzWiL1fo0bu/FbuKpbc= go.yaml.in/yaml/v3 v3.0.4/go.mod h1:DhzuOOF2ATzADvBadXxruRBLzYTpT36CKvDb3+aBEFg= gocloud.dev v0.45.0 h1:WknIK8IbRdmynDvara3Q7G6wQhmEiOGwpgJufbM39sY= gocloud.dev v0.45.0/go.mod h1:0kXKmkCLG6d31N7NyLZWzt7jDSQura9zD/mWgiB6THI= 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-20211108221036-ceb1ce70b4fa/go.mod h1:GvvjBRRGRdwPK5ydBHafDWAxML/pGHZbMvKqRZ5+Abc= golang.org/x/crypto v0.51.0 h1:IBPXwPfKxY7cWQZ38ZCIRPI50YLeevDLlLnyC5wRGTI= golang.org/x/crypto v0.51.0/go.mod h1:8AdwkbraGNABw2kOX6YFPs3WM22XqI4EXEd8g+x7Oc8= 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/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.41.0 h1:8wS72eGJMJaBxK6okTzd4WaXumUlTVlb753MlsSvTCo= golang.org/x/image v0.41.0/go.mod h1:uIc348UZMSvS5Z65CVZ7iDPaNobNFEPeJ4kbqTOszmA= 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.36.0 h1:JJjpVx6myfUsUdAzZuOSTTmRE0PfZeNWzzvKrP7amb4= golang.org/x/mod v0.36.0/go.mod h1:moc6ELqsWcOw5Ef3xVprK5ul/MvtVvkIXLziUOICjUQ= 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-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.55.0 h1:bcvxaJn3e1U6InsFWt1JUq1aSjnRxLzT2rtD2KfkDF8= golang.org/x/net v0.55.0/go.mod h1:L5U2KuzuOe1lY7Z+aWVIKK6qEeJXnXV9yzGA+WCHJww= 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.36.0 h1:peZ/1z27fi9hUOFCAZaHyrpWG5lwe0RJEEEeH0ThlIs= golang.org/x/oauth2 v0.36.0/go.mod h1:YDBUJMTkDnJS+A4BP4eZBjCqtokkg1hODuPjwiGPO7Q= 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.20.0 h1:e0PTpb7pjO8GAtTs2dQ6jYa5BWYlMuX047Dco/pItO4= golang.org/x/sync v0.20.0/go.mod h1:9xrNwdLfx4jkKbNva9FpL6vEN7evnE43NNNJQ2LF3+0= 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-20210423185535-09eb48e85fd7/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= golang.org/x/sys v0.0.0-20210615035016-665e8c7367d1/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg= golang.org/x/sys v0.0.0-20220715151400-c0bba94af5f8/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg= golang.org/x/sys v0.1.0/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg= golang.org/x/sys v0.45.0 h1:dO4czNzziLiiXplLQgBCEpCvXQ3dnkn0SdaZSYdQ+FY= golang.org/x/sys v0.45.0/go.mod h1:4GL1E5IUh+htKOUEOaiffhrAeqysfVGipDYzABqnCmw= golang.org/x/term v0.0.0-20201126162022-7de9c90e9dd1/go.mod h1:bj7SfCRtBDWHUb9snDiAeCFNEtKQo2Wmx5Cou7ajbmo= 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.37.0 h1:Cqjiwd9eSg8e0QAkyCaQTNHFIIzWtidPahFWR83rTrc= golang.org/x/text v0.37.0/go.mod h1:a5sjxXGs9hsn/AJVwuElvCAo9v8QYLzvavO5z2PiM38= 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.15.0 h1:bbrp8t3bGUeFOx08pvsMYRTCVSMk89u4tKbNOZbp88U= golang.org/x/time v0.15.0/go.mod h1:Y4YMaQmXwGQZoFaVFk4YpCt4FLQMYKZe9oeV/f4MSno= 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.45.0 h1:18qN3FAooORvApf5XjCXgsuayZOEtXf6JK18I3+ONa8= golang.org/x/tools v0.45.0/go.mod h1:LuUGqqaXcXMEFEruIVJVm5mgDD8vww/z/SR1gQ4uE/0= 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-20240903120638-7835f813f4da h1:noIWHXmPHxILtqtCOPIhSt0ABwskkZKjD3bXGnZGpNY= golang.org/x/xerrors v0.0.0-20240903120638-7835f813f4da/go.mod h1:NDW/Ps6MPRej6fsCIbMTohpP40sJ/P/vI1MoTEGwX90= gonum.org/v1/gonum v0.17.0 h1:VbpOemQlsSMrYmn7T2OUvQ4dqxQXU+ouZFQsZOx50z4= gonum.org/v1/gonum v0.17.0/go.mod h1:El3tOrEuMpv2UdMrbNlKEh9vd86bmQ6vqIcDwxEOc1E= 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.276.0 h1:nVArUtfLEihtW+b0DdcqRGK1xoEm2+ltAihyztq7MKY= google.golang.org/api v0.276.0/go.mod h1:Fnag/EWUPIcJXuIkP1pjoTgS5vdxlk3eeemL7Do6bvw= 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-20260319201613-d00831a3d3e7 h1:XzmzkmB14QhVhgnawEVsOn6OFsnpyxNPRY9QV01dNB0= google.golang.org/genproto v0.0.0-20260319201613-d00831a3d3e7/go.mod h1:L43LFes82YgSonw6iTXTxXUX1OlULt4AQtkik4ULL/I= google.golang.org/genproto/googleapis/api v0.0.0-20260319201613-d00831a3d3e7 h1:41r6JMbpzBMen0R/4TZeeAmGXSJC7DftGINUodzTkPI= google.golang.org/genproto/googleapis/api v0.0.0-20260319201613-d00831a3d3e7/go.mod h1:EIQZ5bFCfRQDV4MhRle7+OgjNtZ6P1PiZBgAKuxXu/Y= google.golang.org/genproto/googleapis/rpc v0.0.0-20260401024825-9d38bb4040a9 h1:m8qni9SQFH0tJc1X0vmnpw/0t+AImlSvp30sEupozUg= google.golang.org/genproto/googleapis/rpc v0.0.0-20260401024825-9d38bb4040a9/go.mod h1:4Hqkh8ycfw05ld/3BWL7rJOSfebL2Q+DVDeRgYgxUU8= 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.80.0 h1:Xr6m2WmWZLETvUNvIUmeD5OAagMw3FiKmMlTdViWsHM= google.golang.org/grpc v1.80.0/go.mod h1:ho/dLnxwi3EDJA4Zghp7k2Ec1+c2jqup0bFkw07bwF4= 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.36.11 h1:fV6ZwhNocDyBLK0dj+fg8ektcVegBBuEolpbTQyBNVE= google.golang.org/protobuf v1.36.11/go.mod h1:HTf+CrKn2C3g5S8VImy6tdcUvCska2kB7j23XfzDpco= 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.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.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.1 h1:37GdZ8tP09Q35o9ych3ehygcsL+HqKSwzctveSlarvM= howett.net/plist v1.0.1/go.mod h1:lqaXoTrLY4hg8tnEzNru53gicrbv7rrk+2xJA/7hw9g= rsc.io/binaryregexp v0.2.0/go.mod h1:qTv7/COck+e2FymRvadv62gMdZztPaShugOCi3I+8D8= rsc.io/qr v0.2.0 h1:6vBLea5/NRMVTz8V66gipeLycZMl/+UlFmk8DvqQ6WY= rsc.io/qr v0.2.0/go.mod h1:IF+uZjkb9fqyeF/4tlBoynqmQxUoPfWEKh921coOuXs= 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.7.0 h1:Db8W44cB54TWD7stUFFSWxdfpdn6fZVcDl0w3R4RVM0= software.sslmate.com/src/go-pkcs12 v0.7.0/go.mod h1:Qiz0EyvDRJjjxGyUQa2cCNZn/wMyzrRJ/qcDXOQazLI= kubernetes-sigs-kind-49aeee6/site/layouts/000077500000000000000000000000001524365506300207305ustar00rootroot00000000000000kubernetes-sigs-kind-49aeee6/site/layouts/docs/000077500000000000000000000000001524365506300216605ustar00rootroot00000000000000kubernetes-sigs-kind-49aeee6/site/layouts/docs/index.html000066400000000000000000000006061524365506300236570ustar00rootroot00000000000000 {{ partial "header.html" . }} {{ partial "sidebar.html" . }}
{{ partial "navbar.html" . }}
{{ partial "fancymarkdown.html" . }}
{{ partial "footer.html" . }}
kubernetes-sigs-kind-49aeee6/site/layouts/docs/section.html000066400000000000000000000006061524365506300242140ustar00rootroot00000000000000 {{ partial "header.html" . }} {{ partial "sidebar.html" . }}
{{ partial "navbar.html" . }}
{{ partial "fancymarkdown.html" . }}
{{ partial "footer.html" . }}
kubernetes-sigs-kind-49aeee6/site/layouts/docs/single.html000066400000000000000000000006061524365506300240310ustar00rootroot00000000000000 {{ partial "header.html" . }} {{ partial "sidebar.html" . }}
{{ partial "navbar.html" . }}
{{ partial "fancymarkdown.html" . }}
{{ partial "footer.html" . }}
kubernetes-sigs-kind-49aeee6/site/layouts/index.html000066400000000000000000000006061524365506300227270ustar00rootroot00000000000000 {{ partial "header.html" . }} {{ partial "sidebar.html" . }}
{{ partial "navbar.html" . }}
{{ partial "fancymarkdown.html" . }}
{{ partial "footer.html" . }}
kubernetes-sigs-kind-49aeee6/site/layouts/index.redirects000066400000000000000000000004401524365506300237430ustar00rootroot00000000000000{{- $apiVersions := site.Data.apiVersions -}} {{- range $apiVersions }} /{{ . }} https://godoc.org/sigs.k8s.io/kind/pkg/apis/config/{{ . }} {{- end }} /dl/v* https://github.com/kubernetes-sigs/kind/releases/download/v:splat /dl/* https://storage.googleapis.com/k8s-staging-kind/:splatkubernetes-sigs-kind-49aeee6/site/layouts/partials/000077500000000000000000000000001524365506300225475ustar00rootroot00000000000000kubernetes-sigs-kind-49aeee6/site/layouts/partials/fancymarkdown.html000066400000000000000000000010341524365506300262760ustar00rootroot00000000000000{{ if not (eq .Site.Title .Params.title) }}

{{ .Params.title }}

{{ end }} {{ if .Params.description }}
{{ .Params.description | markdownify }}
{{end}} {{ if .Params.toc }}

Contents 🔗︎

{{ end }} {{ .Content | replaceRE "()" `${1} 🔗︎ ${3}` | safeHTML }} kubernetes-sigs-kind-49aeee6/site/layouts/partials/footer.html000066400000000000000000000013041524365506300247310ustar00rootroot00000000000000kubernetes-sigs-kind-49aeee6/site/layouts/partials/header.html000066400000000000000000000015041524365506300246650ustar00rootroot00000000000000 {{ .Site.Title }}{{ if and .Params.title (not (eq .Site.Title .Params.Title)) }} – {{ .Params.title }}{{ end }} {{ partialCached "inlinecss.html" . }} {{ partialCached "inlinescript.html" . }} kubernetes-sigs-kind-49aeee6/site/layouts/partials/inlinecss.html000066400000000000000000000001561524365506300254260ustar00rootroot00000000000000{{ with resources.Get "css/inline.css" | resources.Minify }} {{ end }}kubernetes-sigs-kind-49aeee6/site/layouts/partials/inlinescript.html000066400000000000000000000001551524365506300261410ustar00rootroot00000000000000{{ with resources.Get "js/inline.js" | resources.Minify }} {{ end }}kubernetes-sigs-kind-49aeee6/site/layouts/partials/navbar.html000066400000000000000000000005341524365506300247100ustar00rootroot00000000000000 kubernetes-sigs-kind-49aeee6/site/layouts/partials/sidebar.html000066400000000000000000000017711524365506300250540ustar00rootroot00000000000000kubernetes-sigs-kind-49aeee6/site/layouts/robots.txt000066400000000000000000000001531524365506300230000ustar00rootroot00000000000000User-agent: * {{ if ne ( getenv "HUGO_ENV" ) "production" -}} Disallow: / {{- else -}} Allow: / {{- end -}}kubernetes-sigs-kind-49aeee6/site/layouts/shortcodes/000077500000000000000000000000001524365506300231055ustar00rootroot00000000000000kubernetes-sigs-kind-49aeee6/site/layouts/shortcodes/absURL.html000066400000000000000000000001101524365506300251130ustar00rootroot00000000000000{{/* the one input should be a relative url */}} {{- .Get 0 | absURL }} kubernetes-sigs-kind-49aeee6/site/layouts/shortcodes/codeFromFile.html000066400000000000000000000015711524365506300263350ustar00rootroot00000000000000{{ $file := .Get "file" }} {{ $lang := "" }} {{ $suffix := findRE "(\\.[^.]+)$" $file 1 }} {{ with $suffix }} {{ $lang = (index . 0 | strings.TrimPrefix ".") }} {{ end }} {{ with .Get "lang" }}{{ $lang = . }}{{ end }} {{ $virtualPath := strings.TrimPrefix `static/` $file }}
{{ $virtualPath }}
{{- highlight (trim ($file | readFile) "\n") $lang "" | -}}
kubernetes-sigs-kind-49aeee6/site/layouts/shortcodes/codeFromInline.html000066400000000000000000000011451524365506300266710ustar00rootroot00000000000000{{ $code := trim .Inner "\n" }} {{ $lang := "" }} {{ with .Get "lang" }}{{ $lang = . }}{{ end }} {{ $hash := md5 $code }}
{{ highlight $code $lang "" }}
kubernetes-sigs-kind-49aeee6/site/layouts/shortcodes/minify.html000066400000000000000000000002511524365506300252640ustar00rootroot00000000000000{{ $file := .Get "file" }} {{- $contents := readFile $file -}} {{ $res := $contents | resources.FromString $file }} {{- safeHTML (($res | resources.Minify).Content) -}} kubernetes-sigs-kind-49aeee6/site/layouts/shortcodes/readFile.html000066400000000000000000000001221524365506300255010ustar00rootroot00000000000000{{/* the one input should be a file path */}} {{- .Get 0 | readFile | safeHTML -}}kubernetes-sigs-kind-49aeee6/site/layouts/shortcodes/securitygoose.html000066400000000000000000000006011524365506300266740ustar00rootroot00000000000000
security goose says

Security Goose Says:

{{ .Inner | markdownify }}
kubernetes-sigs-kind-49aeee6/site/layouts/shortcodes/stableVersion.html000066400000000000000000000000331524365506300266070ustar00rootroot00000000000000{{- site.Params.stable -}} kubernetes-sigs-kind-49aeee6/site/static/000077500000000000000000000000001524365506300205175ustar00rootroot00000000000000kubernetes-sigs-kind-49aeee6/site/static/android-chrome-192x192.png000066400000000000000000000265661524365506300250740ustar00rootroot00000000000000‰PNG  IHDRÀÀRÜlgAMA±� üa cHRMz&€„ú€èu0ê`:˜pœºQ<bKGDÿÿÿ ½§“tIMEã !¶i�:,IDATxÚí�y˜Wuè·ªzŸîÙ53í»%K²dÉÆ–wlãoà¶  âÉËÆ <Âò ‚ü¼ ¶±1Þ°-[¶,ŒÙ–lY־̾õÌôôVË}TwOÏhº§GiÝß÷•ÔS]ÕUuëœ{Ï=÷ÜsA¡P( …B¡P( …B¡P( …B¡P( …B¡P( …B¡P( …B¡P( …B¡P( …B¡P( …B¡P( …B¡P( …B¡P( …B¡P( …B¡P( …B¡P( …B¡P( …B¡P( …B¡P( …B¡ÈCœè Þ´9:üú¢À穆,ò·,å¸ïn¨˜èg8é“ å o=°X T�Ì~™· @/°i%ü=•” ûÌN�ÏÇúw)¿ëdîEŒL9™¿µÌ1I hvïm€}²*_ÉB–~ ¸ø:°ðOô(Ž Ä�ƒÀFà.àeÀ:Ù¡$È«ùßÜ̘èWŒ+�ÀíÀp[‡“ÆÓÆplð7(៎Ô_î΂#újÓ–±(À©d g$ä8mS•ñzþñÜÆˆÎÅ5‡®´“A F5�ò á À�G:Æ« Ê<¿.04÷G‡¿�pÝùÕÇF‰}�ë€3&ú^�…R ŒÛÜšÁw”cŠ©…êCE[�Zà3€wªšA ï�"¸r…âÓQœH dê‹·×ÁÔì ”b¿…ÉëójÂíLŽÚ“5É‘€#Ç'NW3C:mq›kÄq� Ü¡—€ž‰~ö±RŠ„òÿЄ`:X@)Ûæ•¶,ó¸ôgF€¯÷™B¨2ü¬+«Ïöf†tv÷»¹øà¿oÚ�R%JQ€!aÐBLýšSÁ€™æŽÛ9ëC›€ç1gœÈø+R²2TËêP †0Æíçg†tÚ½ig¤ Ã| ؼ=•” ”NpÎ$3'L 5Q³tüº`nX/Öú/ÅM˜V6Ñ÷:JQ€a&�»)Ñ9¹ÈÊÍèÅÞý�ObªtˆGSÁ0HG; “×g·q{Ó>^ìé iONE0,,7zûû,,W«‡Ýiø8p)ððøM›£¯à®M��QÀM½2îÌÿÇqpŒ¦^†y�ô1Î�ÎÔ3]ÆJVðg†¼Áln\8_"ÌS›ÓlÜÖKg¯“IY8òùºŽ„·š¼s¸—ù/\±n?XYÏÎYÜÖ²�çºÚ°¬I§š€Æ�N…O£eÀ¦#a·$væµçÝm=nV‰�à®A°×¶?€r_,íþ\w|l¼ï¿’`ÌÙP&×ûW²¡sÂ!®_4‡ëæÍƒþ�?“âù·zéŽ9®Ó@éÜ¡Y±að¸=­ÿõH³_2¸lmÿ~Ú 4vqGË^~ßÙFŸ™žtŠPf•Ì.Ó‰™’ž”C4å·Ü,Õ¹4�CÂ\ÜíZÀÆ-ŠbÉZܶ®ù ׈)çÂWd&½òŠ07.žËU³ç’èðÐI¶ìˆÒ—®™Sà•z Áug9ÜiñÂ[©#d9ÛRì°¸ù‰~yYç’Ó"üÃÚõüEc”»Z÷ñh{3ÝéÔ¤Q„¬<øt7M~�_Ã’�´$iGâH2›ÄAÈî§úÍ[Ñ씞þ‘ ;9kAû³ß ¤{ú¿üµºü~ ¸ˆ7|»í¨î{̳y&GqORJj~þr定=—®Vw?œà•]QbÉâ‚ïž•e{oˆ7ö¦Ù²#E!+1«ÍÝ6·?ã±Wu.Zä‹ëÖð©Õ‹¸¹i÷·"-&ù yËH`¡ãÅ’$ˆ°#ôKÄðÔû ܵ hùZG£Sz:ÛDà3tþí=«yOhÿý@ŒWwGI¤%šV\ðóIš’�¤¤/î.`1Z%®ed¨£×æÞM<¹5Áå§ùöÅë0„àΦ}“¦%Έ©ò%H¦ððR|1‡Ì*6„ö0×ÛM6àZ )ø:æxq„µï<—ÄQ¤·:y±¥dIE„skùáoúxþ­iK–ìpÇ eJ)IÂqíãíI‘i]zbw?ãÑÒ|¸ac*Öc’”4Ø™šÁžt5‡Ì\òqRÒ Ý “’ƒÏ%�´˜î�žÆ}ѵìM×0‰ù§†Œcå¦!Ðh¹E›JGJXUSAW—ÆŽC&ú°ÐÈB¦Œ”à8ð æ×œwªŸÆ�Õ ¼¬_ìcF…ަ¹.ÑB5fþo‹L0â o'©§Œ™¾¹33­…&Dn›œmƒÀ/LÎ íã¬Ð>Nñ»æ‹)užé_½=§ótÿRÒRÏ=Ö!³’&³‚63ÌÞT5ã!Ç·ê§fù膎\¨I›û›8˜ê'aYDC&ާô5$°º±š½Íñ”âÖôy5�Ö+ÏmïHh¨Ô¹`•ŸsOõ±°Á <¤á5kyùÑçªh�ÚlÛoòôë ^Ù•&ž”9��” "÷·³Š  hê¶qb–‹0{ºûÜdeRÒ=çs'¡cÁ93gS NºÑt É +Ëi˽­¸ãeºš˜ãcºŠ¸ãŧǑÀlO3=½˜Rg¾¯‹ÁõØ�žã¦Žm‘êéBD©ŠDŽúw¼Ò¢¿i÷˜ŸS÷øñ•Wcø‡1$’g¢y®÷�+¡á:hEêËj*ØüG3ç ·æÞ°ÜÇW®�ðËMqîÞ#m�Ï—¬ ð±÷†X<Óƒ¦ LK’2%^Ãm¤„¹uóë=\²ÆÏ o¥¸õÉïv¯QW©qÓ å̪ÑùÊ-=4wÛnD®€þ„Cs»äto%�uÎõA:‰qgËv†ÁâÊ*fƒL¾$”ƒFLv-¬'95ÐÌ;É:–øÚ)sm}l4ê=ý|°b+6a-9ba¬pl‹XË^’½�€$è?–å’Ñö£:3Õ×I¸qž@„Á–@0‚wwt¤d¦/@� ±»%5äl!`o«ÅÁ‹O_V†×O¼’àª3ƒ|øÂAŸFG¯ÍóÛ“¼ðVІ*�/_¡­Çæ;¿ê¥®RçÂU~Ö.òrÉÚK ~ôp?-Ý6Ÿ½¢ŒÓûx`sœÞgHKhÙ°ó°ÅÊÕ•ø Ý�!Ê  W¸²á&“«î/PÄ@�d¹¯•µ�Ãøµ4°#YÏÛ©zÂd]ð uF?Î8vã¯B�îïÎ?Œ‹”¦”•Œ“èjÁÓX6.æØ²²VÌCKO|è–€}­_½5Ê çùð!®?;HeXG°ñ�·>cÇ!“dZr儿ÞÒîf‹g·%yì•ç¯ôóÉKËXØ`ð/)Çv ³ÏáoëaËŽÔÓ*ËÎÃ&矡Æï£e >e3n $=vˆ{Wã×Ln(‡Í žŠ-%æø�RÐïø¸¶|Û(nÓÒÿN°”˜‰�!1îBˆ1oãTªXÉ8Ž=>…µ&RIs›ë½~‹B@ï€Ãm¿�±eGŠºJ¯­Ý67?ã�½i¤C„üšpÄ>�® ’’ßý1Á}›H›’HP#Ô¸óéßLŽè.Õê´ðÚ>”—1¹FJAfUÝŽº!l"z’ˆ–D!$Ýv�¸ãEC¢ I—"áxÆÅÇ«�70#„ ÚeÏž=X¶=j{ ŸÏÇâÅ‹…BÇÜqsÏ?öÂòh:«Ê*yw«…eöù×Dtæ×¸€`fµÎW?ág�ÆøãÎŽ”}n)x ðz¶ã üµgùØE!¼�”î5–6zðbD“ÐÝïÐÙ-XU[ɦ¦ö)5Ri£±-1‹ƒf§øZXäëäšò7H á`J�:£Ÿr=A�íöå=½µô¸Øÿp‚ÂöíÛÇ‹/n)ùx]× ‡Ã,Z´ðØ=ãRN’¯—¹F˜'›ÍÂGI8o¥�Sæxh�Ú<µ5Ée뜶ÀÇ·þÌàž�<øbœº ×µçõê*tÒ¦‡Ï\^ÆE«x xë€É®f“«Ï rÉZ?ÿ!λMÖˆ1EiS²ë°Åêù•c^³a"¸µûó é³ýt[Afyz hiL©³± IipQÙ»\y›�É4“•þf¼Â·>Í Q€9sç°.•*iM ø}>êêfL·�„…¡0Þ¤�Cý£:>Áù+ý!xqGŠþ¦�mûM¾tm˜ºJ�Ï^æ’µ~f”» à÷¾r}Ä�¨¬q÷½ünšïüª—XB²jž— g,ó±³É*tkì� ¹ËæþâÔV¸v¿ß+8ÐnñŸôq¸ÃÂж»š-@ÒP­ôiG¸AÝ{ƒö¨MŸÎòªr¶¶÷Lª~@þ­8dGÅ%) â¾jÂZŒi$Arx¤ôK×§›Ä+½f¬O“ÖH¶çvà9à¨áà™@©dŠÎÎN’ÉdI)%}}}'âÖJ¢Üãa‰¯œ§‹6¿!¿†ÇôÄúâº3Êu–4\´ÚŸ³ÑØç–Çû 4æÕ¼g™�ª°Æ ‚lÙ‘b_«EW¿Cg¯�”ô ¼Þ”â)É�‡Ój«¸wçþ‰.®œÐ[–$f:ÄLIÂ’˜ŽÄ’ ­¹¼¼þgÃ2b )] ¤[ضñ ïÝö¯[“žòü´ÌÐt˽ŽY¬Ìì§R‘RRS[ÕW^A*�*éMhTVUMŠÚ)™±ìk‹�hþdk5Ó’8Râ÷ ®9+ÀìZƒås<4Téø2žp[ŠpP£*¬Qt›“ò�ƧÞWƇÎq¨ÃâÍ}fÎÓä8`9®™¥q¤;Ô‘n?କ„<qktoÛx“½žé@ÌtèN9ô$,IÚ–#¸h}^l�hR g18ÿ\�'›íåËwoYòùw¾wvxÜï{4°�!½¯¤åNn‹ÃAÓ4jgÔ–ìß—RNáϰ¢¬œ�¨N{¯=Dø$®/?è„‚õK¼èBPY&øÌåáÜó:Žþlèà3WŸ`^�A$$X<Óƒ”n-®knm¿l¶—e³½H)Â�?°a¹�Ww¥HI’yƒ¾`w‹ÅµÞ2êƒöôöŸð±˜)éHØt&úMÓ¼·¼ÿ%Ð�; òe¤ó ðGÜÚüN2˯#-ܸÿãÂh Ð ´â¦¸À–Cª‘ :7˜5ì»±õ¸¼@‰ó)4„¦!¤“¹/Æ42¼6RÉþ½‰”Ì�&%4Të|éš  ^A$¨‘}ì¶›×÷¦9Øas¨ÝâP§Íi ¼|þê0ŸàŒ¥ÞÜï·tÛüû/{1-·S<»Æ`n�κÅ>B~A8¨ñ·×Eˆ'%ñ”ä¹íIþçñfvº€æ. 'bIU„]½ýÃB5šÐ�£ •�µÒ@*“¥iÀ&iÉ\xÚ°ÒmÃÍï³ xxè‚!áIÏ1²tsŒfN1FS€TæFs8rpJ cÛô÷E�ðî ôt“ìëe2ôÆtoÙÙŽfxÜ9¼½}øbIôîÍ],Ng¥¿œ?4[8r0›ƒÄucV†5¶[lÚž¢©ÓâO/qáêM]6ß¾¯�ž˜[6¶#YPo¸cé`ù<‚²€ÀЭ=6;™hšk*­šïaå€`Yé&†â–ä�¨IgÂ)$ø1àÜ$YÛÉd�žÚ$“èVܤXg»Ô«¸³¾Ž £)€ć …Ä]ë÷­×^bã#‘öı-¤39b…Ó‹ý·¥Éê§J) 4¬8¡‡‡ô×4Ú,¾|s7iÓ�åå8ܱÔÇ©s=œ·ÒÇC[hÊB¯ñ£i‚¶‹º3ÊÒFsM„Úr� WùÙÝl!xt¸æ¬ Ua�w›,|1Nk�Í«»ÒürÓ23©f¸ kºÆ¢žNyùE4-;³Jðì«`³Vxag)%Uµ3¸ö㟡¢zô$dHÚ’=&�I§PhaðÀ@º„|>»pÓ§|7C¸¦Ï­€9ÚÉGK) 0d5ðl-"¥dÿ»;èhiB×õ!‘‡“AÞ‚g%`öÇÙ»g篜œ¯0�Ì3ƒ€XBæfjiš`ëž4›¶%¹|}�O]ZÆÞ‹×÷¦Y9ÏǪù^@òÛ—¼ünšw[œ·ÒÏú%>.\íç�Íqºú®>3ÈëØ<øbœö^#Óô$ÒG ¾ãÀ)s<,›épëS;1býhy¾Ú�QžQJIb Fo”ÊšÑ m {û,º’c2ûp“äÞ ÈÑ„?ïûw�oŒ×».…R‚ᆸn$n®iKW­¥¦~&þ`ˆ²H9š®UàÛ‰Üãf9¿|èQj|Í|ä¢ð1@ù:/€dZrÛïcìm5™3ÃÃ?~¨œ Ëý\ºÖOȯ±§Åâ¡-n£pøÅs$R‹Á³o$yô�ñ¡öü°—ãH¨Žh|áêÛ¶½Èæ—·"4mÈ3+ÃãÁ Ò0w>áòÊ’jÿÖ¸Mó@ÁÞþ ·æUø'š‚ËÝmøÔײßK^çÄ£¹ËåªfÔ³øÔÕ¬X{+N?“¦ý{ˆõE§DKP*Bzzûhmoã£W­¥7éãÝ&³`Zèìw8Üa³f¡—ùõ®`/žåÁÐàÖ'clÚHév€—Ìò°h¦Áй.X ÔxeWšïþº—ö^§ ÇMJ·ò…÷—SëÙÃo¾�hÉÉ‹¥”¬;÷".»á£¬9ë<"•UÅËè7]Ó'íìá=…›æ°² ?”60Äþ’y›‚šº÷e –­ õðÁÉš à¨Ñ4�—_߯¯~ók>uÝGiîòòúžôˆ#Âàö¶ìHñowGùâµN™íA0-X³Ð‹eôô;hš;PV›ß™Q¡cÙðôëI~ôP;ì¢îf!àç–qúœ¾õûhïìbúŒ†‚úÙó˜³p ¶m•dúìﳈ[c1›qM˜ãÖioÆ®/P69VÖg¯i:s-ãåMO—ô6ø{YWž(zÌx¶*¥\óH¿{ê9fͬç‹×\Æÿº#JSWa^Ú™æ_îŒòýÏT1»VÇÐáâ5.^ãÏu¨s3¶2>ÿMÛ’|ãž(}qYTø.Xàg9Ü|Û½¼³kϘ„ܨÛPY'»Cѧ‡Ž„M{¢à › üˆã˜ÊüxPŠä¤9'ô#$¥CÃì¹D*ªèîh+Y¸"á2tM'Z$ô! b;6©Tº¤ß�pY†¡í-=Ü­Á-îøÕC|½¾ž¿~ÿj¾õ‹ž\'xÄspmtC‡Ç_I°ý€ÉÊyfV„|® ÔwØßf±·Õâê3è:¤ÍâÃŽKg{øÜ•~~÷įynËËc~)%�P•µ3(el?åHÆl,YÐôyø9SÀîÏgL î µœ#gãK))+¯¤®q6]í-Q|5m)%Á`€¿ûܧ©,/çßÿ1]ÝCGJIC]-ÿWŸ¡­³‹ÿsËm$R©c]ðy½üíg>Amu5ÿö½ÑÙÝS²² !èíëç'·ÝÃ?¥†�¿·žŸ=Ö;dT6�7žIJáÿ>ÒÏÁv ŸGði¹ØždÚÍ”¶$½6ÿð'圿Òǯ%‹F�~éÚ;ßÚÄý�æÑOMÓ8ØÔÌß~¯Lpùºàˆ³µlVÎórÕ™A^Ý•¢¥ÛÎEyöǺúÜm åÖ¿†îºP»ú>rQ!íˆG•ÒÍ-ô—W–£'wò?÷üÚ­ŽÂ<B°pÙJ|%$,HÚ’¦˜Ulùà˜:¦O–RZ€!y�LÂÓBÌœ;¯Ï‡™Å\‘®ßÜõXwWH CϦÆþCM|ý[ß%žH2�çÜwš¦aYî=>�ëÙO™ffdtЮ–RâñxÐ4Í5¡rµåÑÏ=Ö4�Wß|‹_<ð+>qÃÇiêòñÚ®Ô�N±níþÇ�)~)�mfé²B@WŸÃ/6 °´Ñƒ3‚V 7žWÆÊÆ.¾õƒ»èèê³é“-—Šª-_9j}’u{ö›E;¾?aØxÑT¡èÆíàä²ø¦ì‘KMJIMÝL•tµµŽYÀÇaö¬FþüC7°ÿP÷<ð0å‘0¼ú ZÛ;¸çÁßbÛ67¾ÿ Ì™ÍÝ>ÌY§¯aýšUHÇ᯽Á£O?K<îÆNùý>Þ{ÎÙœ½~-¡`€Ýûðâ+[Ç'ÐN{æyf5Ôó7ᅵºÃæP§•ë¸jÞ9lò·EI[’Råô�ÍqtM`ÙCûŽžàº3m~úó{xwϾ£þÌ‹â”5ë¨mhD¸áÌMv±T¿ÄÍõ?åj(¢ßÝP‘�ÑhÁ’Î-€l:²@GXŠ”3£a�­Í£öòq‡Æú:nú«¿`ýi+y艧�R2wV#ï»ð\Ú::yä©�Ä .8ûLNY¼ˆ…óçR]YA2•¢¾¶–3Ö¬Æçõr÷ý¡ë¾îj>~ãõ ápK ³g6pÞ{Π¢<£ŒÞJ’2K«©åHd&ÂÜxnËë:øæ§çèí~Ü@Æy‹—1kÁ¢Qkÿ�¼Ú¿€Ü ¼3n…8A”:pÕe¼öævÞ|{gÑSóç! · bnÀYYYŸ×K2•rï-ÄëñbYÖ¸Ú*Bž|ö"á2>zå|`C�d:s�®SÊ¥#AA¼¿™ÿºõnvï;pLÂàõúXuæ9ø|þQmÿæ»XÈÃà.˜šß|J¢¶ãÆ…jD�L?àí­/�úãA"™â·O>ÍŽ]»Y¹|)—žýÀµ|ã{?.i”Òý�¼Ïš`ßÁCtõD™7k眹ŽÇ7n" pÉùçðûèë7Ç}¾Žå8Ü÷ðc¼øÊVª+Ê�Ù̲m‡¦Öv:»�­æ‡Œ“aÞ,]Q´‘ x+¡ö/^;MJQ›¼>€À5�,D‘_ãÜx}~ÌBáÅ ŸÞqlÛ&™Jó‹aõòelX¿–÷œ~ÑÞ¾Á˜#²ö±{ÕüNŽts�KéfšÜ¨‰§6mæO®¹’/|òcœwÖz¡õ3jI$Ý{ïyÇ"ó›5±ÿPÓ¸ü¦6N¹RuÝ`Õ–•­ýàPÌ"aOÿÚJÏ 1$ù�%%I[öŒ\DRJªë¨¨ª¦½åðˆýôõÇxûÝÝ”…‚´wvaè:ïîÝÇ]÷?Ä�W_�mÛ´´wðÎî½4µ´À4-¶í؉ßçãÀá¦Ü VSK;÷ìc×ÞýÄ“ lÛæŽûÄ4-Î;k=Ë-d÷¾|ûÇ?ã}œKMu%ÝÑÞãº}¬µõx#‡ºÙsX|êi£Öþ ‡ÖxѬw1Mjÿì3$3n|÷wò¿[Za07lé ;üæŽ[xý›Ð´ÂãᲚÐèíïÏí3t�Šò=½}ضMey„´i1wíú€ßO à§'Ú;ä…VV”“N§È „¹QªUåx=zzûˆ'DÂeºN´¯Ÿ“…÷^s#ç¾ïê‚ �5}¶u¥‹�úî®öN‡ÚFqƒæ=ä�Yù·°Šºn0wÑR4½x#Ó×;"Ô²m:ººs^ îh/±�Á‰}ñD‚®îž#^fÖã“Å�t"éìî¡©­�D*…¦iôÇèC$èTFJIeÍ –¯Y_ðô¦Þî6‹ ¿ Üì�ègOJm«[ë1`ÊLTèÈH qÞBBeáâÍn7ßðcŠ�ShþbqãºÁ¤GrÊi먪­;â=dõ[â6ÛºL¢é¢ë®¼„›áaZØþYJU€fò‚â²)1ЏÉ�ŽCUí êgOª$W'RJÂ啜ºî,wžp†ì¼ŽÞ´ÃŽ“·»Íb^à¾ûàæ÷™VŒ¥²P—éHÚ3ù` áõXxÊÊ“¨¶�\H)Y¼b5õ�³A:9^WÒü­�&M6¶Õ#|ð[˜^µ?”®]¸î¯!4 ¸Säò“" ߯XMye•;é";Ư8ŽÈŒ;Ø! qê0…NgÂaw¯ÅÖÎ4¯w¦9³IÛ%­³òðm†e™.”êMoWæïLÛ’·»-ªý¯ `|ºÀM€&lµ œúžóyíÅç°mi[HÛF:6R:9Å�äç\’|q„�#,þ,F8~Ò1ÚÈðHß?8ó|¹~Œ@hnúG4MÓºB£zÑ ºÊæÐÒš$iK²A¦Y�Ä^à&`L¿ÚÆ–z+î¨ð�sLGÒ·i‰»1ðº=£ÙÉ)¾Ó.eå‚3°LÛLãd6ÛLa§S8é$v:‰�Na›îÿŽeâX&Ò2qlDz�¶‰“Q¢lö9é8nºlB]™™à-åྌrI µ@rla"÷ÏÐ�YÙ$›“‡ÌÈМDn®RBCh:BÓÐt¡]GÓ 4݃0Üÿ5Ãfh†ÍãE÷úÐ<>t�/ï³ÍãËëE3 Œ@=¶Nv1º1V û€/ÏÃô~(±L2ãK€ßsJ9çˆ:\ˆÁzûˆÚz°æË iFx¥tÀqr­E¾Ð*°ýŽŽ�ûì8ö`«3DY2‰óL³#ö“/Ѓ‚œû?÷�æîÓ4·ÎÔÄBË ¹žöÁÿ3ŸucØqZ¦F׆^�ük(ÃÜÇŒ›úèLÎW€¿#³øÄt~[ °7éÑ'K9øÍÊš9PZm›Í^†–—¾KŒ`�d"�z7EíæÆá·†™8rÄï &òf.Ž+=¸q>ÿÉ46{ò‹˜¸®°µÀis»òÈŠîÈбáàzùžÆ�ݵ™Ò’ÙN J®ÎòÂ"VŸNf•@78tlf¦r�Ž/Å͉;š›Æ�îmÞÆøM¸‰iM˜þµ~>c–ÀŒ"h@¨fu@ƒŠ�Ýòsi ٤МÆ��^ê=tñDÂtÀ6|ÍK.ûI¢¬¾GH'ÿ½J\çEWð;q´Úq£|m8¹„>Ÿ ©‚Ÿüäéd¹­û~ƒà‚‰.„i�$.¤s£Ô´ß]vsé‹’Ÿìœpxì³çd?^…›R#8Ñ…0�¸×<µ.ÿÙ }/S‚‰ \÷7¢„¼¹×]­(‘‰R€€²ýÇŸÙdFëóZZEN¨佔뀆‰~øiʵ¸ž9E œPÈ j6 ¸¶Pðœ¢t ”áiRr¾W—Üòá 'ú'=c^)þXèKéXîH8Ä zœ�†&;(]ƪ7G£gc[IãèËyZÜÔ楩 :’Kϯ�ý¦mà„¾Þ)É -¡¦~Ì"ù)!øÖöŽÀ¦–öœ¨Öi*4<¹{ôêRî‹zý±´~?…ÍHÏ–Öñ±¬‡yrr« ^ /ΧK‰gEM‚ËöBi‹ùždüàƒ[�x‹æ;ÐëÕU†£0^ _‘ëj™ïÅÑ)^N~¦FË6áL6íÅ*\tFi˜8÷”b" ÉOaHµ¥a `\˜((Ô<‹Ì÷Šâx(^Qø(²ºb�‰ð“ÅpçgɸQ‹Šâ˜À€Ã I¨ŽÀüm¨Ù%1 ð™3ˆaÿŸ)ÛŽ�.à³YvÙÏÓ4‹ƒB¡P( …B¡P( …B¡P( …B¡P( …B¡P( …B¡P( …B¡P( …B¡P( …B¡P( …B¡P( …B¡P( …B¡P( …B¡P( …B¡P( …B¡PL2þ?R¼T¢dwp%tEXtdate:create2019-02-13T00:20:33+01:00Q§•%tEXtdate:modify2019-02-13T00:20:33+01:00 ")WzTXtRaw profile type iptcxœãò qV((ÊOËÌIåR# .c #K“ D€4Ãd#³T ËØÔÈÄÌÄÄË€H J.êtòB5•IEND®B`‚kubernetes-sigs-kind-49aeee6/site/static/android-chrome-512x512.png000066400000000000000000001030201524365506300250410ustar00rootroot00000000000000‰PNG  IHDRôxÔúgAMA±� üa cHRMz&€„ú€èu0ê`:˜pœºQ<bKGDÿÿÿ ½§“tIMEã "/`Þ€€IDATxÚìýw˜וØýoUuîÉ 3HƒœA�3)f‘•E¥•´Ò®´ÚõgÚk¿¯íÇéõÚZ{½^ÿ´AÒJZI”DJEŠ¢HŠbÎ �DÎÀ &‡ÎUuT÷`òL�fæ|ž§� ÝÕU=ÝuOÝp!„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!„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!„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!„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€*÷T’û^êŸìÇjŠïÕ¸›QàŸ‰¹Mçñ9ï;Ûí1Å÷Óû¤¾v}í¥¿ºi’ÏøLŸ5]î}¢X*²¡É~H}@P´U@ˆÑì×à}@].œÌ&û>wB2ÇÝŒ¾Ÿé~ƨ[>ßÏtߊü»ˆ¼é‹¼¹—ðØé¶IžÃ�a—ò{÷"ï;úk¸ð9µÆý?ÕדàH‰Q·a  8Ÿýb€– AÌ5ÓÐŒjôW××�E@-^ƒïcòFr6W%Ó{żB`êÏt>ŸõB~Æs�F¯Ñú�“À.à-àÐ�bŽ({×mø°ø"ðQ`à/÷¾ !Ä,h¼Fÿ °ø ð,pHK *UY€lãï>ü[à2¼.9!„˜«2À àWÀÀ›@BQiÊd ømà¿âuõ !Ä|¡ñ†þo˜ #�€¨e FÍÄýðu`I¹_!„(�×#ð¼@àÈÊQ~%F5þ+�ïוûEBˆÈ/_žFzD™ez^¯ëÿêr¿BQ">àVà[À?êî{©ªü#B]I{F½Ñ7?Íþ/„ Mïøß€wA†Dé•«àn¼eB±…�ÏáõÜ Ò J­@=ð~d¹Ÿba3€k�¿> ø%¥T²!€Qoìëñº¾ZÊ}ðBQ!ÎãMü[¼Lƒ2$ ŠÎ*Ãs^4–ûÀ/ÅÅä Pî�Rö|›gŽîö\Õ ü  øï@o¹wHÌ¥üÀ•°ûtclJe«y\âÙKeOêÂÆ”é½ýÑÏ7ö÷jLéÀ‘ÿÕ¸$åj\‰ÁQÛRr®8z¿ŒýZOñóÜ÷zªm޽ólÊðéQ_éIî4é6ô ÛœnÿÆ?FOO|}ò5þ5ÑÓü^3ýsÍ‘OQøÇx…ÏþÓ}/õwH/€(¦R�`æ¿Æû@[MEÈR„-ïK)LL¥0F5¬N`“œÕèF^M¬Ë;¾QÏÞmòF�‰Aãî§²ßLvrš#',‘5Û†nêFZO{¿+ãÌÔ¨�ûf¦ûèÉ~3EC<åöÕØçš©AŸêµ)¨õ¨¯/üïj�£ÁÑÛGCÆÕd\°Ýìï\ï÷®¾P1§Â>kAà+xÁÀÿ{ßKý'%ÅR’÷þ¨ñÿíÀÏ�Å—²½ ¥h4†L">…ÏP˜ªâ>È#dÈ@R¥¾ÏËm|p0¸^@�v5I[“t4I’Ž&åh2Ù ¡ÂFlàaà_GAæˆÂ+uÀ* îb¬4‡ –WYTû 5}W«ó‘¼Ï§6ºçÍT  ÌÜo.¼v¹ƒ” Ûe8£‰e41Û%i{C™øÞÈæ¿ŽÞ÷R¿¢ J¬Ã[ÿš7CÁ’¨ÉŠj‹€¡fóB˜üEÔgÒ2‰Û.½I—î¤Ë`Ú›;P"ðQ �×p¶Ü¯‘˜JÙP‡·Æ5¿TÐ5‰ú¤ñB”V®‡ÀPPå3XVe±¥ÁÇÖK¢&³dƒp/ðï�zé…PÊ ™<'j¼]sP² !Ê+wâ3 Aƒuµ%,à‹x+¢ˆKUÊ`)Éç h­ Y˜#„\è¨ Œ J0Lþ0{ H .EÑ€QoÐ¥xoÞYóŠú Q)ër…bŒñ�À¦z �¢Ÿ³ªð–Þ ( ÄÅ*U€ÂÿŸõçBaKµdì_QÙr�@SÈ`sƒ�•ÕÁâ 4áÍxÈÊqqJøñæä¥Ê¯ð•n’�B\�—ž|E�Åæ�ÅíÁ\ ü²Ë«%ùªØÀÀ[‚SÊI Bq©rµJêë},«2±Šw"»øw@C¹�[Ì=¥j_ƒ@}>0 ˆñS#„Å”ë XUãcM��€Y”áL|ø2`I/€ÈG©ZØ* z¶wÖ€ßP2û_1§i¼„BK¢&ëë,"Å9§�?n ³Wª š<€�¥$óŸbÞh™l¨ó+©Ù2àßdÿ— @ÌJ©€¼úÖ³¶¦Œ!æ‘úl¡*_Qzn¾ øÊ}œbn(UÛˆW hV´d bþ©¬­õ.üg ø°*0€B”šjý&õA³�½Ë�O>éÅÈ3 °ÏP’SG!ðzD[ÃF!³*à£À�J� ]±€&¼D@³¢ Ði0…bÎÒ@]À¤>Pй+ñòÌzy¶˜ŸŠÒÜŽŠ*›È# P¥¦BˆrñÐ)h�|œìŠéX¸Š}½ÝJ½4ÀÒü !DN® ¶°½íÀ𪵊ª˜€Â›8ëÝTªâê!D¹ù h ›X…½>ú(°¤`¡*f`àÕ˜•\À¹W@!ŠKõAƒºÂö,~›<†iÅüRÌÀ$� €à�ÿK@!„˜Èg(E Þ ð!àj�^€…¨˜€Ÿ<ŸéåB1QCÐ(ô\€V¼^€Y—lóG±€h> iÿ…br~C±¨ðsîÞÒ °Ð;ˆÌöÎ ˜²P!¦Ó4¨)l/@3ðû䙵UÌ}Å äÑ €BÌ,`*~.Àx«¤`)vœí�•’,€B1�7 À+"x½+A‚€…¢˜Mno`v;¢À” B1#¿¡X-hv@€+ð&Î:y›˜ÛŠ„Èã�¤P…îÒBˆyIõ£Ð5,¼`;H/ÀBPÌH/˜Ïö ’XŒ§€…\² G®nŽ =�Üg(G,úR2nÁŽoÞPÀ>`¸ÜÇ(Š«"� ˆ‰\­éO%ɸn¹w¥,´Öd´¦PͶa˜ 0ÊVJQgð«ù•g\uAƒ† Á¹¸SÈ`ñ£À£ÀÏî{©Ÿ¯]_[îCERÌ ¯!S!9Ä eÒüíž]ìga®Ñ8…¼v­VèÚ‚vÏ QÓǵncc¨wž½¥`IÔ¤/å’r vluÀ¯g%˜¿*(P,Ü.J1ŽR¸Zs>ãÔÐ Æ(×R8!Uàq… §!jùIºŽwÜóì£�¿Á¢°É‰!»�›¾ø]àÏ€‚nXTŽb¼z³b^W�£)†R€VjáͧPÞ{h>µ©`qĤ'é0”Ñ…:V?ð{À‹À³Ò 0?|À¨™£ò¸Ö0à¹I!.•">Å’¨Yè‰ÔË€‰—)PÌCÅÎ0û È;#„óYKØ,ô²@€Û�/>Y8ÿ;À¬SÍïn:!„(¦€¡XZeá/ìlêðÇx©‚%7ÀÇÏ�àõ�bv¦â??b"Cyƒ¦âè Mª°3³¢À'�÷¿¸ï¥þ�Kí0ñÆï uý¸>»= .Q”YÎ/@9sÙ™Žc—éÙó Gþó”› îšBAn^²ˆÏ®mçúÖfê‚ÞœZÛÑë´ùÍ®OïJr¼Ó&ãd—Ò¨ýÍõÄSš×ÞK±ûXšõKܹ=È�›ƒ´Ö›, EøÊ’U|¨y1Ouwpÿ¹ã¼Ü×Å sŽ‚!ËÇñA›Ž¸ƒ­ >/@á-Ëû<^ÁW€_¯ß÷Rÿa Èwž€AíÌ,4뀷Ê0@±€ª|¶m”y€—ÁOVQ>®Ö(­‘·/mãÓkÛ¹fQ#Õ~oÙgÆv9|Îæ©·’<óN’S]6Ž[؆¼\�@*£Ùu4Íþ“}-Áíۂܼ5ÈÒ&‹E�_X¼‚»›Zy¦÷<÷Ÿ=Îó}çéM§²-ˆsEÄR¬­µ¨ œvJ»¸å/X|¯û¾Ø�¼|ßKýû€ó@fìÐöÄÀ+t´`451#B>sÊ^HNR¢<\­QJ±´*ÂÝËó©5íìhn ìó>š©ŒË�Ӟܙ乽IÎö8¸º¸ ÿx¹Iº¶£Ù2ÃÁÓ{#Á-[ƒÜ~y�•­>ýA>¹hw4,âž.~pö8O÷vÐ�Nr¡ �¨d° E[Ĥ.`p&æÐwHØEËé–dowxYùÞ^»?Ä™ºw ÐWnk�pö9ç½böÌúýb)*zö½…–K×»²¦ŠfÓõ^ÖXGвM2í²÷D†'v&xq_Šóý¹œ<åLše(p59gs¼s˜'ßJpÓ– ï¿"ÄÚ%µ>?l^ÌMõͼÚßÍýçNðD÷9:R oîŠ|Îç„°¥XUcÑ6芻œO:Ä2z$o@þŠ ¨®ÌÞ~8¼¼ ì¿ï¥þÀÆb®ÎÞC�÷c)^û%ÀE2È30GUÜb>Ë¥ë]S[ÅGV.ãÞÕËÙX_“M×ëeí{çXšÇßLðê»)º½IY•�,k4Cy+Nv9üà™OïJrãæwn±a©�*¿Å�­\_×Ä›^vÁǺÎp*—@`È]ñWû ªj Z#&})—þ”Ë`Z“p\l—bVŽ«³·�á%èI.^Ï��<òÍä¡o%@gq«²#0ÉsM¦iÈù@Ìo®Öø ƒ�õµ||Õ2>¶jëêªG²ö ÆÞ>â5üoHÓ7|¡á¯d¹Þˆs½<ç™wR\¿!À];‚ln÷˜¼¯¾™«jøââü¨ã$�ž?ͱø°¤žrýë!K¶LZÃ&)W3œÖô§]Ò.±Œ&íhrëŠÔ;ÍÞŠ- 4”ày*B±†f½,C–ôˆyÊÕš€i²©¡ÖK×»ÂK×kÞº—�˜ÃÓüò�oN3wËžëbäö·«ßááWâ<¿7É5ë|àÊ—­ôÒ _]ÛÈåÕõüv[;vœâg�§8–ì‚sB.kkÐT„BŠÆ�AÆÕÄmÍ`ÚëÊh’ŽÆq§œ¯à¿v¯{A(V�³|Y€„(¸Ñéz·5Õñ©Õíܳb ˪"ٲךÞ!‡WßKñø vM3œÔÙ²ØEÜ/�Í ½qüb´¹¹mö¹<öF‚—÷§¸r�Ÿìqùj?ÕaƒË«ëÙ­åó­í<ÔyŠ;Oòîð€¤žCr�»ÏPÔúµ~ƒÅH9š˜­J»Äm/°]ァѸ:;uÌÿzäûÑÛF»à>Oñ ‚–“ªù/7-6þùŸ¶Ìz"{v·m€Ö?›;£ÈG^ÌÞ MñY\ÙÒȧ³ézÛ"^º^­5çûm^ÞŸâW;“ì9ž&žÔ(£øû°¹ÝÇ­ÛB$Óš'v&8Þi­½Íåè�¹<ùV’WßKsù*wíqÕÚõU«jX­æÓ­ËùùùÓ<Ðq‚ÝCý¤%Íðœ’k° åM [ŠÆ �«½@ØåBƒïê±�¿÷;=ò;W{A‚‹AøäsÔþE©�Æ×<°ï÷;ÿuÓ­ä×4¥ð–3þòÜŸ¶‡¹TD Ä\–kø«ý~®]ÔÈg֮ඥ­´DB(¼t½g{l^Ø—äÉ�IÞ=•!™Î6ü%èýÒ–4YüË{kØÒîCkXÓfñ_~4@ÿ°[Ô¶6 Å]ž{'Å›‡Òli÷s׎×oÐPm°&RÅ?o_Ͻ‹–òØù³ü¨ã;zIHšá9gt·¿·TõÂßoê¿äÄßheÒ˜›á©·“<³;É©îQézËx!£�Á¸&ck,¿wÒL¦5ÃI·l§P(Ò¶fϱ NÛ<öF‚;®rëeA–6Z4gÓ __×È<¼—ž;NF a-X °µÁ°ÀE5RøUE†…`#ðÓrïÈL$"O–R|iã*þõŽ-Tû}h­9Öaó³Wâ<ûNyÒõNG)èpNhBo‡b.½C%Ÿa=qßðÛѼ{2᳞x3ÉÝW†øÀ•!šj V†«øok/cȱùYç©r¿œ¢ Ðç„x#¾œS™:\­h¶†Ø>I›o äû¢g¾K¸\¯U>$"®Ölonà�·®§Úï­Ù}4Íÿ~xˆ=ÇÓÕðçäfãÇS.¹½C.ñ2öLÆ0¼U_Ng8Ú‘aÏñ4ò¡*–·X´Ãü«xk°—‰aʹˆ’Q@R[¼[ž䢑®ÿn'Â�äžê½Ô™‰¢÷äz l ,\,åVbïC^$">Ãà«–±²: hŽtØü¯Ÿ ²çx¦âþÑRM^¡1²7•çu{F¼_ΓƒØ›låxº�}ÉVžÚÀ+ñdt>ù‚*‹BÌ’Ú«#´W{¥.Nu9¼´/Å\˜—¦ÔØŒ› Uñû�[-ð›ÝIo¾°)RC“?@á«ÀŠJ¥�3IØH�™ù¯Ÿrh0cS>Vá �v5û’­ìM¶Ò‘©ÆÑƬ‚_…æd¦ž·KIjßHa Ii‹]ñ%œH×çTT ¥…Èúºêƒ^´÷DšónE_ýëlÚßõK|,kºðqß°ÔÇò‹CglŒ «48š¡àx§Í±›†jo‰àŠp”“‰XE_ˆÂÓ(¬[ƒgx-ÞNJ{ïc —u�N–ùú˜ìÍ�›;°3¾”=É6†]o™nÄH³9xŽí¡“„�Ì´M·‹âdºŽ¸ëŸÐÈ+4 íãDºŽU�®9ùv”@ˆY² ƒ- µLÛÑì?‘!mëŠ r ¾¡Àg)>ˆ ÞE�†jcäªÅ"‹Û·…èŽOiR�í0Rˆ¨R¥`0îràt†kýÔX>6Ejx®§r×V‹Â3qÙ>I�™äDºG´ùúYì$4E#î¢x'±˜W³Ýô¹|À ñZl9&.WGŽcL¸Z‘p§®8¬�„ö£½>µr¿Ly“@”�š"zWTN•H­¡6àcKCà5J‡ÏÚE-ˆžÏ¾i > ê¢Ë[,6.óÑÞl±¨Î¤&j°´ÑÓåoðÉÃܰ)@÷ ÃñN›CglŽvØœíqL¸h×[¢Wî¿�ãÀ�3^°å·¼É€>Ã$£ÝYoÃKI¬¦l²EiDåò+‡ÍÁs¬t¢K¹S.ÉSh� û“‹Æ4þ¹ßÙ˜ìO-bc°ƒZ3>eR!SijÍÄ”�»�¦ÎŒODT2 DYÙÚeÈIOøø( ßN‘1\°Ê?âëjMK4D{µW’ü\¯Ãéž‹+¦“+†’Ë“ñûäm£±Ú`s»ŸkÖûÙ´ÜÏâF“ê�1&ùÐdãýõUõUàã}›½¤<1—#çlÞ<”æ­ÃižÉx‹.±WàR�ùx§Í`LÓXë#ÕÔ>Χ’¨vJk�ÖšÁTš^3�;ÅÄ¥ êóc•3c“˜‘LåŽù~*17À�œâ^š˜ëgÐ RkƧ܆B³*ÐÍþÔ"ºì蘆ÞEÑ`ÆXèžMn€Š$Àœ4Wßnc(ާùFÇ;Ä\{ÂÚ®ælU ;d”½OZk—5­54‡½<ÿÇ:lã:ïÝÒÂAE4h0wI¤/nJÁ²F“·¹í² kûˆ„.ô˜äzfÚÎh~KÑ\kÒ\krõº=ƒ;§ùõ®$;¥é�¹Õ€k U!E(`0w½BHylD)èèsèèsh¬1Yˆ²"¦ç|s¦°U†tï!lø¦øÔh">_Ù´�5µS bn1•ƒÉÔ½D&KMß‹¤Q4YCÜ9ÂK±•tÛ\šfk˜ë"Çh±†æìÙx�^‰V´ÆP WUN—ó仫@k´ëP€RÙ+0ãâöGAÜÉp8ÑÏ�“ž¼e±”w+;ƒ�õµ„-k$ó_:“_C¦5¬n³ø�÷GYÕjqàT†ûŸ�sàtfÖÛq54Õܾ-㝠±ªÕ‡ÏÂëÂÖ—þ®Èµ}JAS­É];Bܰ)È›‡Rüìå8oL“HÏnÞƒÆj¸nC€{oˆ°¨Îd÷Ñ4ß~j˜s½Î¬�Ù› 9Ú‘as»�Æ`€õ¡*v&»™©VŒ*»œJ NûÚTùý^õA1O(ªÍ;!S{¼†}8{õ¯fج œ§ÁŒq:SË� ÊH±Ø×O£c.[ €ÆN%ÉÄq’1ìøuUUåÞ©YQÉAN(÷n`(Ãòc…¢øÂU˜þ`þÇ“—­”YgSˆ˜&[«j1”"–t9vÞ¹Ÿ-¿¥øÔû"ܽë°v±�‹|üχÙ}4=í¶´öå:?¿us„í«ýø}jVWúÓõM÷»Üv£AÅÍ[ƒl[éç©·“üðÙÇ;gþ0ÜyEˆ?þp‹ê¼µÒ+[-N÷ØüÃÓù�8SÍ¡3^m…€i°¥±ëÐñY}c„OÜ™Í?UßۆÖ^Žýt~5&xÅ‹2ŽXøF� ÆoWgÿ©�|â†0›–ûøÎSÃ<·'IÆž<R nÝiüsÛ4 ¨ Ín öø�8tÖ&žt© ›lm¬£Êïc �™ã§`Q,XæïãîêýìN,¦ËŽŠFk˜­Á3,õ÷Oú¸É&üyéƒÔ˜ïçƒØÉ8Ã�'H÷sáºg.þ!+dŸG;#Öy;1L¤yÙEõT²öP„EïÊýT—CWÿì»°!›Ô&­yi_Š«Öˆ†.\½oXæã¾OTó?~2È®£é1ÝëZC{‹Å| Ê-—ñ[jÚ†ßq¡wÀáh‡ÍþSŽœõz*þñGªhÕ+å5¨ßzb˜ê°Á†¥>6,³XÞlQ6r£MchíýÉ7.óñ§Ÿªay³Åƒ/ÄŒ»c‚Ó€Û¶ùÇ©Óø+gz^?�Yª8ûÎôØœð€öê(-áý©ôŒÅÂä­$Ò,õõ³È$¡½ “�Êà›$�¿½v„.»Š¤¶(›Fk˜3>/rÿ�·`'�d¸ãéXi+G-Þ|Šä@7ZkªZWΫž€­UuÔX>@sèlÆ›¼—ç64ð«� ‚~ÅoÝ¡­Þih7,óqß½ÕüÅÏyûH';7iórÿø#ÕìXãõPMÖø+ñ”æÝS^Ú—bç¡'º†ã.Ç[óïL2×)ckÞ>’¦oØå—o@MÄ`M›�kÖ¸fƒŸ-Þü‚É�ú*ƒ/ßeQ�Éß=>Dg¿—)èW¼ÿŠ pÏ…+¥¼¥|ïžÊð÷OóÖátÞ¹”ò �8o³ªÕÇ¢pˆuµÕ¼×'Ÿg1V®!O¹†Ò”�O¹ø”×sªaÒÆÐ ðVb)R- ¹\m`(—ˆ‘fM ‹í¡“%):TJ "ÐÚ%Þ{NÿI õb#DšS1½— `˜l�Öb©Œë�E;�ïŠ1$Rš^ˆ±ÿdšOÞáÆ-Aª²½—ùøw¿Uóï¤8|6Ã`Üå+wV±¹Ý7eßLkvMóèk ^?�¢gÐit•òö1PX“¤+ŸÂÈöô ºt¤xý`Ї^²¸å²÷\fÅ" Óhí5ö¹6L8 xäµ8–úY»Øâšõj£ÆÈ~tö9üâõ?5Îénç¢Þ H¤5ï�ÊpËÖ QŸÅ†ú=~ºŒï Qi0èØ•XÂéL->\Ö;Yè˜rÆî1¿^ÇÁT3î¨1~G 8!vÆ—Òk‡¹£ê½y,€@a'†I ô”{Gí’ìï"P]�˜e±§;ê|~6D½ñÿþa×ÿ¿HJy%owÉpøì¯¼—â ·FX³Økä—5YüömÉ´&™ÖÔDŒ)ÿçm~ü\œ'ßJÐ3äNžÅOCȯ°Ì‰ÍnÐï¹\F¹Çj 'ºlþái›ç÷¦øØuaî¹*D]Ô˜˜ÜqEˆk7¨ Þ<ƒì}2Žæ�i¾÷›oN‘q.­Z¢ëÂÁ36ñ”&4ØÚXGÈ4I8Tˆù'£ ^�­àíÄrÅ®Ïfª1qÙì˜ô1Š]ñ%L5�©6˜“ûþXº�7ã˸9zhÆåƒsÅ4éá\;]îY@N&I&60÷ KCaV„¼@gz:óÿŸŒa@,©yìõNgø�;¢Üvy_¶¡úAÿÄñ~¥¼Ê~/¿›â[O ±÷x=ÃxzЯðMÒà·þ)–Xæ¶w´Ãæÿ>:Ä®#i~÷Î(–NÖ1 F®øsWýCq—=çÁçct º)•¬œê²év‰ Ö×ÕÐ rbhXæš!7ȱt:»V ®ýN7²6p~L¡Ücú�0R-¸Ó¦óÕ(¥›Øâœe‘58/&Îû´WÚuÈ$†g^+% ËuÉ$†½< sܺH5u>? 9Úa34jÒÛ¥È]q–Æu™öŠ<˜¤ žö†‚¾éÆÕÞ}nÞäKwDX»x†« k[ܺ-ÈŸ-NšÔ#ç2 Ä\k 6ÖÕPðÓŸ¹0�˜Ûw}ô8’®�¨‘¢ÞŠPöÈx¼êÌ·D‘Ð> 4!#3m÷~ƒ£ÚHÒíDgœ1Ò4YÃå~) F€q†‡‡9tè==½¸®[â~EUukÖ¬¦¾¾¾Ü/…VGªXð’ï´é�¹ïLÒ¶¯ösóÖठxÆß×4àúM–5[üðÙ�½‘`0>ùX»‘ &cL;àjh­7ùÌM>rMhÊ cöø¹&ÌËï¦8Öa|àl¯ÃÙ^‡Æ‹ÕQ–D#tÆ“˜—¾yQÁNejy5ÖÎ9»[”M»¿—«ÃÇi´b#Mw®b`Õ¨uÿ9•͠¨5¬vòr,<íÄ>…© 0&‚cضÍÛo½ÍÞ½ûpÝò-óè:ßÅ­·ÝB$™û=s™RlŽÖ5-\×ËEŸÌö£¯µ—kÿCW‡',³Ëý~² [­ai“ÉŸ|¸Š�Ë|üÃÓÃ>ë¥'}w¥ ˜˜ÙO†¡&íÈ¥-¾rµŸß¹#Êö5oÁ4=jÜãW¶Zܵ=Ä7šõPÅ,ÿ$ Ä]Žž³ÙºÂO]ÐϺÚjvž—e¾ó•BÓeGyzhv5¹D¼im±'ÙJR[ÜYõ.QclYñÉÞvIm‘t}� Ae{Ÿ4ÛBgèu¼—œ¸ —ûu ‹í¡Só*#  že)¥ˆÇãœ:}Ú»òÏVº+Ç­££ƒÞžÞr¿$ ^È4ÙV]‡RŠDZs¤Ã¦Ðq¡Ö°i¹Ÿík&Ö¢p\xbg‚—ö§FÒðŽlȯ¸çªÿé µ¼{ˆ€¥Æ4¸ ˆ'Y&p5ÔF >wK„ÿð¹Z®^˜�(÷Ø´­yò­;¥&)¦·]di“UÐ cÃþ“l‚–WÀ’îÿyK£x/µˆN»jLFþÜ×ÇÓ œH×3Ó˜ã‰t=¿ÜÌO¶ñ‹ÁÍO×g·Q#Å-ÑC\9F£9Œ¥ å• ®7c\>ÁmÑÔΣ$@ =ch­Ñ…>[]ä~HMòrÓ4ú¬ÉŽÿ÷Ç\NwÍ\/_~Ÿâ–Ë‚ÔW�½úWÊrøÆ¯†If4ôÁ*ÞEhBjÞÜ—ë—úø7ŸªfÃR?zÎ[% �š¨ÁòæÉ?æ¦áÕð[ŠTZc°a‰�/½?ÂM[‚|jÊ$D±¤·ñ»¿Ž±¥ÝÇš6ßH.ðöqy‹Åµ—”8iŠ? GÎÙ %\ê¢&ëk‰ú} Ja y)£Mºìè˜*|Sý~2¹µþÏÇVs&Sƒºì(q×χÍ=#�z•‘âºÈ16;è±#$µ�€²i0cÔYqLô¼jüA€ZkÂá0Í-Íô÷÷—­ë]kM}}µµµå~I6 «ÃQ–½DFg{º ;'ÄÕ°¸ÁäêuþI÷Ì;INvy%pÿ÷à '\>rmxÒAZ{¹ü?wK„ K-z)Îé‡[¶ÙÜî›òâ覭ANuÙì=‘aýR½6̪VË›Ã9Eãß;äòí§†yè¥8ñ¤WOàõƒiÞÅØP– ×mð‹× % “;!·çz½‚LuQ“U5U, �Â@ó’BcâNjó{¥§œw¬€'B·I¤€nÛûY�YS` i0c4˜c'°ê³ÌMŒâóùؾý ~ÿÈ$ÀRRJ­Š²iãFª««dü¿Ì6FkG 8�a¸€�¶´ûh«7'\ýŸïsxaor¤æ@Ï Ë_?6Ì`\óÙ›##ÕÇl.;Aðªu6-÷O¹ÔDL|æä'F­¡±Úà?XE,¥‰ÕHµÁIO¤Ù†÷o9ÌãoÆÉØÞ¾ '4�¿‘àÚõ~ªÂc{2Ö.±ho±xçXº @ÌåX§ÍÚ%~Z#!V×Tó^ß`ÿ8¢Rø”C«o€©æ Wùoß"k¦ À§l,å’Ö*{%o)¿áLx¯Ï— ~³!À8uuu\Ãõ¤Óé24À ¿ß‡iÊ|æró&[¢5ø ƒtFsèŒ7æœo éø}pÙJ?þIºÚwIsäœ�Ê>ŸR0÷®¼â.¿ûþè„aƒ­!PD‚æÌ³ö5ø,E�ïByâÉ(Dzi�ŸÛ“Ä59Q)Ø{ÂÛßm«üc¶]5ÙÜîcÏñ¦âN¦5GÏÙh­‰ø,65Ôò˜š·ÖÏs"]ÏÑt#®õ&.ƒ,ó÷NÙp»(Z¬aÖ:Ù“lÃÖ&–rXè¤Å*Vƒ?'®Þ$˜„aƒÁ²t'ÊUe¨õùØ\U À@ÜÉfŸ+­¡&l°fñÄ�`ÆÖ¼z M<©Ç¹ê¾g(®ùƒ{¢´ÖOÞÈë‘f¿?ÓÙw"Ã_þ|��‡¼†|üJƒ¾a—ÝGÓl[9v8Ã4½ çg/ÇIe ÷ÞÖŽŸ·IÛš€Ïà²Æ:Â>‹„-…�æ�¢ÚHr[ÕAjã NfêH»ál™ÞËBg(gÚ·{@ÙÜ9J«5H¯¦ÞгÚß•Í!P„]†9QzV€)”k,q^$šë´fi0ÌòQãÿçz ›HkXTgÒZ7ö#˜kLž™<Û˜R^•½ÇÞˆ3wù“W±²Õ*Z© ¼y0Í_þ|�wOf¦| löžÈ�HkBã² ®h±¨‹…} œ8ïÐ7첨Î`Mm5 Á§†b2`Ò@½ç–è!b®Ÿ”¶"Fc“ó46Òl �™LXÄq}8Wî×l6$˜„ÖšD"A:]ú ‚J)‚Á ~¿ÿÒ7&.Ú†h þG³3Î m Uá‰Ýÿ§»§8rôžÛ›d8áòO?Vͦe¾Ofã·7SÐàjx~O’ÿóÈÇ;§O裀c�6݃.K›ÆN:¨¯2h¨6 šEQ½':mÕY,ކYQåäPq²ŠòË%ø©1“ŒMæ3ûÇ_HTÔ ±8Ðúg�—¸©â’`×u9tè0û÷í'�—¼Š 2 ¸bûå455•ûåX�L¥ØVUGÈ´°ÍÁ³Òö¥—³M)hk0GÊÿŽvâ¼M,©gl,ðæaïêü?~¾vÊᥠžÔì?™!‘ö&¶ÖD Ö/õMúü¹Çì=–æ?<ÈÉ®™ )åMT6D«ÎÒSO0¾(¦‚†jc’$;=ƒ.gv×( Øs,ÃþZë'Ÿ<š±5½ç;Oy9Ð^M�ò‘jn¿<8å¶ß:œæT÷,«fç'œïCãå:hª-üÄVÇ�ÃglRoÀæ†:|†�#ChsÆÌo­]«Ïb\U«K ñ]`øð߀¡J¿ú &èï ‹arº÷Eèíí!™Lâ÷ûeN@)iMk ĺ°œïw8Û]ø@¦©ˆN’¡Ïu½9ÚedÀ4»Š«½.ö¦ZcÊûüfw’ïþz˜ž¡ y bI‡¿ýåM5ÛVù'í9XÖlQ1èòê ¨†2ަghâÒYÓðÒü¢MÁÑ›�˜Ks­Á¦úZê‚R¨åþšìûp\�­ÁÑW{™/íýÌÖ.çC›8½ú÷ ñ¶Ñ†Î$”v§ì‚2ÝLby׋�Õ (@ÀÁ›ô·xè› �?H0�ÏçÃ0 lÛ.ÛIDk�å“å€å²*¥9[(7ѬÐMÂ�‰�vÆÑ ÄÝ)×íç~° Õk—øøàU!6,õMš®÷L·ÃwžŠÑ=àNXQpäœÍwŸŽ±b‘5¡Ð�ÖpýÆÿêÞj~õf‚Cg½ñýtF�Ôÿš8®W2y2Ÿ*FûϹ>‡Ž>‡æZ‹eUÚ"a) Tr õ\ W“r4q[“°5 G“²5il×kü] .z$m´tèrذ­P»¦šXeækÿÍŸßÐøæ©³èbÞª*Ì< ÆijjdÉ’%?~¼,�r“W¯ZE(’«ÿRSŠ­U^ ­5‡ÏfH¸xó |“|ú´öºìG¯µ× *7Xl\îã²>Ö-ñ±¤Ñš2×NÆÑ“^}k¼nû©‚›€Oqçö×o r¦ÛfÿÉ ïËðî© g{lâ)=RŠXeÏø‰Q?Í4UÁ{Q”ò’y…�4¬¯«áí.©£Qj¹?m®Á�Ûš¡Œf í2œqI9{=ÍãóùMž f¨}ã~矽<@ëŸu.˜“®£äÒ_Ãu,Yº„¡¡¡’7À¦iÒÔØÈÒeK¥³ ‚†ÉÖªZ ¥ˆ§\�õ ™ÒxWÌã)–éô ŠÚ*ƒö“ÍËý^ÎýÅ>šk |Ö…÷Æ”Uú4ÔW,m´F*Ž®U­áÀôe~«BŠõK}¬_êãƒWiº\�ͰïD†}'3ë°érI:Ó˜ªzaq>Gi[sø¬�ãjB>“- u<¨ŽÏ�,,s\îÏlkHØš¡´Ë@Úe(ãGãŽ»ïø¯+ˆ º|%`ˤ"€”£)ð«KR]]Í–-›Ëvõ-¹ÊEÓì°6;þß3èrò|á )å­›Ÿ¬»Ü4kÚ,>tuˆm+ýl\æcI£IUÈéŸ.cßxA¿bÍb‹çöxWg¹ÑM×õ®ð×-öM[ê7÷|9~K±¸Ñdq£Éû¶N¸œévØ2î£iÚ[|“ædO¦õ˜ç/ G:lbI—ê°É¦†">C) T ãýþ”KoÊe0í’r4Ž{¿9ô7p²·¥ì€†3ÛÕø ~v¸È}*sã[îç_°4¬EYŠpºÛ¦«À€r2¶f06ñïlðÉ#˜†×x�ìZ�þhpÏ•!’iͳ{’œév0 ïÊÿýW„¸nc ß—h¤uW@uØ z™Á†eÞ\„ɺx†âºà+)r;‘+ÔT6Y[[Í¢HˆÁ>) T(ãý�l£?�öz}ÜQï‡"½âomýžìmðàV`Kž#�½-(Å òz¤]/rô3G(‹yk}´šÚl Ãg½+ËBOÔšj½ä8“‰ÔÈ}/ùùðÊòþɇ«ùÀ•!žÛ“$èWÜ´%ÈÒ& Ó¸´çýØ€/—deâN,m4i¬6è̾žZ`(èt8yÞfå"M¡ +«£è›™X+šÂ›­Ÿ°5})—ždI}èö/Ï{ñ�\×™ |�‰ìmA)FàÃù< ·D¦îŠr² ƒË«ê° ƒTÆç¶�‹ÿwÇ]±Ê+� (V´X|éŽ(×mL�ÇjäŸq��¢8�eÂú¥>Ö.ö�òögª^…)=ý¾Mõ;À�ߦ¶Ê࿉q¦Ç!‘òƈGσPêâ†iÍÁ367oÕDý>¶6ÖñÄɳùoHÞÛÊÖ0˜véJ8ô$]âöØîý"4ú.0œÅ»Êx8ôî×®¯¹ó}/õçÓAŽ!@A¸xQ[ ¯‹fZ p4ØEéböj-?¢5 ƽÙåù¾#5^À°¸ÎdqƒEc�A4hPQ4Õ˜,i4io±h®5g�ègü]R¶f(¡ˆ¹tô9t:4V›\¾ÊO$ ¦\F˜kܧ«ú×5àðú�4©Œ¦µÞ¤¹Ö¤&l )|–š陃–€¥¸ó o^Ãén›s=ç]ú‡]†â.ç\Nœ·éìËÖuáЙ ‰”&0ØÜPKÐ4I:R(¹†¿/åÒsèI¹¤GÍÏ*ðk©ñÝsxíÅNà-à=¼ 0ºÑŸÂn¼!�šKÜŸN$¸4_»¾6™À‹æf5À˜Kh"DÙd µgÇÿÏôØtôåŸÈgÂG® óé÷Eh®1ø¦©&$Ò™m·{ÊÖ '4ýÙ†þ\¯Ãén‡3Ý6�ýÝ.CIo}~Èo𕻢|öæÈE]I+±¤æ¯æ—¯'pµ&èWT… « škM7˜,n´XTg²¨Î 6j *o�ÿ4Ï©³Ûo­7G2æz lG“²áäy›ï<5̳{’äµWyé“{‡\ Öf �–Â@ùL»œv8ŸpI»ºùlà<^ƒÿðð.^ƒô,|`L[óNv×\â¾�’…;Ô¹¡Xsú�ølï¬G%€¢\6D«iòÍ‘³6ƒñ™óñ�æjX»ØÇïÜÓÈMFkÆÌêM)èìsøù« ŽœËÐÙçÒ5è0w‰§5Žã=×H2žìxzß°Ë«ï¥øèµa¢Á‹«tÖ7ìòöaïêß0¼uöà ‡³=š †òJü†üŠhР¾Ú ¹ÆdÝŸº1L]•1éñèì0ŸeNü�ÏRø}°i¹�¯Þ]ÅÁ3™YÕÙp¾ßåT·ÍâF‹åUVTG95,…�f’»ê?³99ä·‹’i¿¯KÿWx�þ¼6Â�mƒ?�³ÀO€íx/F¯çAVH¯`VF2œM¶~HÌ_ô·VJ±9Z{¡Ð™ Gçw%�ͱ_òZöÑ]îŽ Ýý‡ÏÙì?‘¡gÈaU«�eÍ^·ýø¢€ÏœÝä¾ñ÷ÑÚKúsýÆ ¯¾—Æv¦~âÑÛŠ n¹,HuxÜÕ¿‚Cg3ü�épp]/H© ¬jµØ±ÖÏõƒ´·˜„©Œæ7»“œéÉ?÷‚í¡36|–ÉÖ¦zü¦™�[4Ó‹Z)”ʾW‹¸ Wk]1Ë|c¶æP†óÙ|üôÅ€'�¿Â»òOAá×Qç�ÿ ,Ö]Ħrsœb)òpõt'EwÇYN=”wz^mgˆ÷žÃµÓÈ$ÃRÒ˜þ ¡“(sò·™œ±ã´Ÿ£N—¯÷MkÍâªjVl󦬤m¯ÔlÞᦂ®—¯ýd�+×0 8Þi�ŒO»Ù? o¶»«áäy‡WßK³¼Ùš°­Û. òÄÎOÛÌT›JkXÝæcëŠÉÓ�+àD§Í‹ûRüŠ›·h¬™¼|ð޵~7˜ë´gìÑ.lXæã†M§û¸^y7E×€÷·ÍÃ`Üå­ÃivMóðË VµZ,n4étyûHšø,J!Ovü½Ã.i[ã³B~V ôKÍœ@kš&Gß|…x(LQÒÁi�?déÊÕÔ6”¿ÌwÜÖèËÐ�,øÑþø!Þ’½¢^U� žþðÿá- œí;h¯aAæ�.VàÀì‹� LzÕ¢8ö4¿|à{œ<|€üW|TF´½°M_F®)×P¦?•֚ŋZÝ|4x9úÃã¢vGá%¦yøå ño®Û~|#®€tFó›Ý n¿ÁG¯ ÑR;6˜P Ît9<¿'5!àHí¼çû�‘¿ÿèßåûºG‚ _vŽA4£mï.†cñY÷¾¹óÕ"¾5Ê0h]ÚÎÝŸü‹ÛW–¥' ×í¨¿(�ÿ›À¿žœRu§gƒ ü¯7à«ÀÀ"¼"@“½4Þ�Äw�Ÿå¶³Ð+pÉ#€©W8¶Í›/<ͱûdF¯( ­5v*…ãxWªA¿¢¥öâ“ÿçÓˆ)öžÈðê{)î¹*4æw†‚»¶‡xí½/ìKM¹MWÃ’F“6G&Ü�=>xêí¯¾—Fã¥!~â­$W® pÇÁ ÛóYpóÖOìLÌX ñ†ÍAnÞ:qZÃs{’혾aÌku oÀöf ¶F‚mÛ¸é Ú¶gýÇ(zs캜:r�w^‰EK——¥äxÆÕ´éJ¼ñï ü-(}c:*Ø�Ý�•À2¼å�“½\¼%ˆoà ±ñ‡ ”R ö÷q⢮ü…˜%¥ŠÅ8ßÝͪöeø-ÅŽ5ž|+I²•Ç<5Oj{=ÁµÔW�íh¨6øâQŽwÚœêž|f¼®Y }Ô<‚Q‡Æ‰N›G^M�²³“•× ÿÓ—â\¾ÚOcõÄ^ƒ Ë|l]éçÙw’“Ÿ=5¬i³øíÛ"ÆþU6=ï¯v&HÛyN¤¼ZC}•Á¶U¾‘SÄés¤2™Š»hÐhú{ºplÃï¿ô æù:�v8s ì¼ üs¼Æ´lWÒ£ž7‰·ÔpYvd)Vê’�ø1ëh=áM©”bx°ŸáÁ¤ñÅ¢€X<Á›»÷Žô\µ.À–v_Iêƒ)vMó›ÝÉI¯Þ/_éçKwD'N²Ëþ¾6êM›¬¼°ãÀ/ßHpèlfB7üîiž³*dpëeA‚¾‰Ÿ;WCs­ÉïÝUņ¥¾ �w\xüÍNgŠÞø{×o °i™PÄâ vîÞK&“×5Hé”éTÖ�t99ìà¶õ øg”¹ñ§X€&� ¦È\¦‰V×­®AÆòE±½ðÚ›8r P4×|á¶(-uFÑsT(¼t¶¾ãhÇÄð†‚\â·nŽ L³ßºÂǦå¯&•‚÷Ngøå›‰ ¥‡^…¾G^‰sº{ò„G;ÖøYÕj�9~WCC•ÁÞåÖË‚“?ç© �¼'S‚y�®†MË||á¶(á w;wïáí=û+îê¿\Þ¤¿cƒ6)§ =Z'ñÆü_iüç¢byöL²­©®«cùêuH€(&¥g::ùÁONO_à-©ûâíQ/©N‘ƒCÁá³6?|6FlÜ,x�7/ás·FøÂ­"A5Ru/èWÜrYˆªÐÄ}L¦5?{9îUœ"oÀ�3Ÿ$@ÐZjMnØÉ9àj¨�|õî(¸2„9IRŸþa—ïÿ&6åpE!iíå=øý»«XÝfŠã§N󃇡h¨2 ¦i¼Äôt2ŽÙ ¤ ZÙrøïÀ �ÿ\U1ÀTçWÓ´Ø~í¬X·qd íd7!.•^|}'?zø$’I,Sñ‘kÃ|ìº0–Yü>(­áWo&xôµø¤ r4¨øíÛ£üñ‡«i«7qXÙjqÕÚɯþß:œæÙw¦Ïnjg‡žÉLìy0à†MAkL×klÿøCU|ôÚ0>klÀ¡€Œ½Ÿñ9 õZ…ƒŠß¾-µ€¢·€oÿè§ì;p£ÿñç(×u©o^Ä–+¯Ãò•nü¿#æÐ+hwŒ|o}Éfû‹Â+xý½ë¿ü§à�n®›íãêõÁÉã‘hu mËWâ:©DŸ?@ " ­®cÝ–ËÑÚexp 2£~1g¸®Ëѧ©­©fíÊ|«Û,Nu9ïÈ?AM>”òrí°YÞdMÈ à·–úXÕjÑÑçpÃæ 7n NØÎ`Üå¯fÿÉÌŒ³ðã.>SqåZ?æ¨;+ *lpäœM8`ðO>RÍ—‡ð™“g|úíûø0C‰ü×ñçË4áã×Gøí[£üÉTŠ<ô�=õ×-ûyÀòù‰VU… CÃa–¯YÇ­ük6_V’ýS@ÊåЀMÊ-hê‹À¿ÎKã?·k@þCÓmLkš[s÷'?OoŽ}a}²åóQ[ßÈ;¯¿Ä/øìŒ$üO)Åp<Î÷ò0­ÍM\»ãršjL~ÿUtö;ì;Q܉m†‚s½ÿç‘AÂÁv¬ñOó7\³!À²f ¿é]©�ï{åÝ4¯HÍê“ 5<½;É­Û‚cž/7Äðå;£ø-E[£9iå?¥àÕ÷R|ý±aºÝ’tý_¿1Èo‹*\×åÉg_äáÇŸ$cÛeoüµë²jýfn¾çc¨ìR?¥Uµu„#Ñ’õX¦Íñ!›˜]Ðqÿsx]ÿÇJr¢¨ŠÕ ��›˜ek\ã7hN?"a˜&‘ªêìÄ@ïŽF1,‹P8ʱûêï+û @ÌmJ)††cœ>{Ž�k×P_WKCµAK­É®£i‹|…«ô¹9k³b‘E[ÃäÓê°A$8q ^×€Ë×1ıޙ3æ3œÔ¸.\½>0²–>§®Ê :lL9²óPšÿõ³!Žœ›9sà¥r5lXêã_|¼šöoÜÿÍÝ{øúw~@wo_YÖÖOfíæml»ö}DkjG&2ûüþ’WžŽ9œ)l×øKà;¦��(³b~ZòZƒ£g9Âê�§¹£níºT×Õ³rý&iüEA†Á»‡Žð­û¤«§P\³!À—îˆN:á®àϯàÝSþûƒƒ¼ú®×™6þ��+§;Þ;ÇÒ>ë�é;®W¼ÇÕ¹Úû�ãÚ[ŠxølfÂMö<¹Ä�¯¼—âüd $Kþ\ ­u&ÿèž*Ö/õŠc'Oñ�ü˜³ç+¦ñ7 ƒpU•·ºÉ{®*Å…Ò¾^ò÷à4þóC±zÀ«Ï|;³èÐx=�¡‹ßÓ4ql›ƒ{waW`1)Å™s8®Ë– ë ø}¬\d‘HiöϲHÏ%>=݃.{�g¨ ,o±°Ì™ß×Ñ�Á¦å~–µ˜ÔD ¢!EØoà³ÀïS^)ß�¢.j°´ÉbÛJ?·n ò‘kì[â#äS3îWÊÖüê�$õÈ Ç:K3ã?Tüþ¢ÜyEÃPôöõó×ß½Ÿ7Þ~§¢>ï†a°yû5´-_QÔÂBS±]Íá‡þTAgýîö¼ü÷Vòã…W¬9p™/%ן֚¦¶%Ô66ÑqòøÅ%b؎ãOþ†¶–f>ö�÷ ˜|îÖ(g{~½«ø³Ý 'ºlþçCƒœ8oóÉÃ4ךӶ+͵͵nØ ™Ö¤Òš¡„Ë@\“ÎxÃ>S (j#‘ "àWjT]Ž©^çû|!ÎO^ŒÓ+Á˜?^­ƒ�_æCW‡1ME2•âÇ?Œç_}£âr„¦I8ZU¶òç.]‰‚vý'�ÿðÈ’¿ù¤˜€Mïÿ‘b@ùIÎ% j[¶Â „(¥±D‚ïÿôç,ji憫¶ÓXmðÕTÑÑïòαtÑ@CÁ@Ì廿fßÉ ¿{G”+Vû§ŒqsÁ�Â~E8 ¨«š¦{\Ï®$·ë›‡R|÷×1Þ<”Âv(M¦? 7m ò…[£„ ÇuùÕožçá_=…]“þÆìªÖøü‚ápÉŸ[á•ø=5ì`ë‚E�á�ûË’¿y¦˜ƒfv>w.DO™eùXºrMIרŠùÏPŠóÝ=|ëþ8˜Í¸ªÕâÝeIƒYô¡ð®¼m^ÞŸâ×»’òL%×°O{›Íóãuû?ôrœ—ö§pÜÒt²¹6·ûøêªh¬1Åo¿Ã÷~òp^•þJÉï EJ~õïgcC…Møsø  [ÿù§àÀ¨7‰C=î,OD3i[¶‚hM�$e�ã[?|�óÝ=€âªµ~÷ÎÉsôƒÊÝ”ž0»_�*¥{)mâTÛÈuι%jøÁ;'´Õ›üÁ=U¬Éfú;rü$ß¼ÿÎ�ïªÈÆ­‰TU‰V•tü?7ñï\¼ …~ÒÀ7�×Jv ¢¤ŠÙ�× ”£g»`jMmC#Í­K$§”â•7ßæþ‡!žH`Š\â“7†'-ÄS ¦ uc¤V úc.ß{z˜_ˆsèŒÍpBOfsÓ†šÃgm~þJ‚‡_‰“H_Xòh ª’Œ·{‰¿{g”«×y™þº{ûøÖýðÞ¡#‘éo*M­‹ EK·ÞÀÖpzØ!iô9_ÄëúÏ«7WÌÅž0ëZj.Ù€ùR>×Z†X²r5‡öí.â¡ÍfW4>ËÂ0 Ò™ Zë‚]±ä–)¥F�è+÷„8ëãÒÃ0ðù,lÛÁqœŠ;.Çqxì×Ïж¨…�ßs'ŸÁoÝál�Ã;E}nWòF“›¶GÆÞOw;|ãWÃ<¹3�ãjškMV,²X¿ÄÇŠE­u&uUAŸÂg)|æ…á„TZ“Lkz†]Îv;ë´9x&ÉN›ó.ë°ùÒíQê« >Åí—‡x~oŠþa·h=ðYpï ¯æ€¡H$“üðg�òÒë;‹ú_*òh[¶Ëò•tÙ_OÒá|a'þuÿ82ño¾ª˜I€Ž næó†AÛ²B!’ñòŒ†ÁŽË6sÇM7 …x{ï~~õÌ  @‰ÖšP0Èå[6²fe;ƒC¼±kg;:K~œ…¤µ¦­¥™Ýy«–/ãlg'�>ù GOœ,÷®�¡”"žHòƒ‡¡µ¹‰®ÞA}•ÁïÝ¥£×áí£Å›h™p÷•aVµú/�ÿƒ/Äxôµ¸·oÀÙ‡3Ý/íKµä/4ø¼T†RdM"¥‰%]†Þ×i{lÏAƆ?§µÞä37EPÀöÕ~n¹,ÈÏ^Žï5nÞäó·FùŽãðøÓÏñè“¿Á®À 0GkM4ZÅâö•ºTJ íjÎ ;d —îW÷O�4þóY±€Y‡¤¶Ö¸šK^:£µ¦±¥•êÚz’±XÉ—º®fÝêvþéïýË–´põömîè\÷Ò Ìûý>>õáðÙ�}ˆªh×uy{Ï~þüo¾ÉÉÓg+öä8­5Á`€ÏßûQ>|çm#Çж¨…ÿö—MßÀ`E—RŠ®î¾yÿ45Ö³~õ*V,²øƒ{¢ü—¥ž«á²å~>tu+›.ãl¯ÍËï¦FÒ{ûvá-Ÿ¶5©Œ¦/àŒIã«FþÉÍ+˜8öïÕ&Ð<óN’;·‡¨¯2Ÿ¼!ÌÛGÒ^¦Ábç ?_½»Šú*oÒßkoíæ{?ý9±2ô³¦5‹–.§±¥µ¤ãÿÝ —¾Â®ùß|oùŸ˜Çн `VŸ…×%™¹´¶ð“Hu M‹—e ®a(®¹bÛHãðû¹ñêÔVW_R· ëº,mkåCï¿•ªh$û|Û¶läÚ——áh CkhildǶ-cNð›×¯eùÒÊœÏa‡��à[÷?HgW7 Ø±&À—ﬢ¦À“µ††*ƒ/ÜaqÃ…oÎpºË™6ÆUÊ  å�á›Ù›a\øùL�?pÚfÿ‰ÌȾ¬]âã³7Eˆ ›ÑÕ°¤ÑäÝeU«7éïÐÑã|óÐÙÕ]Ù�?Þúÿk7 GJöžM;š³qoÙ_¡6 ü=°äê¾+f�&�GkÒÊ[é÷h]ÖŽi<ÑáŒ,Ó¤µ¥yÂÏk««©®ºô‰AÑH„hdìcÓ0¨©ª*ù±ަ®¦šè¸µÓÁ@€šêªr$S›¥¯íÜÅ÷â]�†â®A>õ¾l¹Ü=�¡àî!®ß€l}"¥yåÝ$ÉtA ½LrŒ0wy彎saîÚâÆÍÁKÛø(Z{µ ¾üþ(W®½0éïïø Ž­èIÞþk"U5,_³¾¤½Ž] ·Ðÿ^ <9ŒD‰3H�ÇìQÇ…d�¥­K–ãK~õ¨ ƒphâ‰Ñ²L|—:U\):»º9}nìxÿp,Ρ£Ççô'Öç÷ašcߎ†RÙ ®r�Ìq]ÿÍs<òÄÓØ¶MÀ§øìÍn¿ì>š¦{ÐÚ® +îÞ"Z€ºÞ¤?ohá®^šßx"Áý=ÂËo¼UñWþ¹©”Ýÿ ï|y6^Ð|ÿƒÀß ÿŒbIò4�´/}) xÑxCË"jjÊ’‹»X'¬\Bš¿ÿჼ½g�]Ý=yŠûz„×ßÞMih•Xå¶ý€÷·ÎÍPñµ7Ñê¢Þ¤Àm+ý—œ$ÈÕÐÖ`²x\EÀ�‡Rtö? /€2àÄy›½'Æf÷^ÒdR1.ùO¤€[. ò[·Dú�ìJ‹gG&ýÍ^÷ÿ‚¡pI.:4Ðw,lҟdz7iüˆbNÌ«@ Ç›x©'5­!R]CckgNΫfQkÍ+o¾Í{‡�ÒX_G,ž ³«»âR¢.$J)º{ûùûý„–¦F6¬]M{‹Å?ú`ÿùþNv]üd¹\A ®—šìúÿŽ>¯AÚÖ¥ €XRó‹×l[é§¡Ú»nèèsN^ÚÄȤ¿»¢ÙIðÊηùÁC�K$*¾ë¼ÏdmC+×m*ÉìÄí Wÿz…:ð&þ ûõ•£ØCyJ;· �ß mi;Fæ\ô^k�뺸îÌ¥C{zûØð0§Îœ�±ñ×0ãv½´°ž6û0Ûc»]]‘“ú.•axYê¾ñƒs®³ P\±ÚÏïÝõ®’/ò� §»l¾ñ«!^?�âµ÷RüßG†Ø]‚£)¯¼›âë¿âµ)~³+Éß?1Ì@ìâó\˜ôWÅÊ줿‡�ò­<Èù®î9Ñø{¯�býeÛin[‚¾ÄU>³¡�ó ‡¡LA¯þ^¹ú_HŠÙ†óy@ÆÕ8º0;¥”bÑÒå‚Á²åȇ֚p(Ä’¶EhWs¦£ƒx"9å~75ÔÓÔPÏÐpŒŽ®.l{òõÑZk‚�m‹Zðû|œéè`h86r_¯�†P0@m�7QÑïóK$b`p۶󮵞käC¡ 5UUD#aLÃ$‘L2‹144LfžõZ(¥xc×¾÷“‡ùÃ/}Žh$ÌW9Óãðí§†G*ñåËÕðôÛI^?�`0^üFf2iGóóWã<½;‰ãhb©‹¿úÏMúûÝ÷G¹r­ÈÖ[øáƒ´.îß&Wðç\ÌY6]§�À»h H1€8ЗÏ2.#]Z—œXkšQS×P–|ùp]—¶E-|ñSçê+.CkÍËo¾Å·øzúú'4’WnÛÊ?ýq–´.bh8Æ/žú ?þ©tzÂkP�ð…O~Œ[®¿¿e±kß{|ãû?âô¹´†Úš*®¹b×Uíˉ„Cø|ÉTš¾því}—ç_}�w™uf>­5­-Í\wålߺ™¥m­„CA à •N304Ìþ‡xåͷؽï=â‰ù³ÜØu]žxæyÚZšùôGï!à³øôMaÎöØüâõ‹?¿j¼Š€P¾·²Âk¸/q?r™þ>yc˜»³“þbñ8ßÿéÏyuç®9®Ûr-‹—½ñïµëˆ; g ºúãaà �«ÿ…¦Øszf{g…×øÛnaª{kÈæh£ãtåÎp]ͲÅmüá—>Ï Wo¹ò¹çö[8pø(�<ñô˜«õúºZ>ïGضi�õu|þáØÉS¼ºsט+'­5Û·næcw¿deÂm7^ËÙÎN¾ñý³º}9Ÿ¿÷#\wåvBÁÀ„}kkifãÚÕÜrÃ5üøá_ðØ¯Ÿ%‘œºWBk�eYÜpõ>ó‘²~ÍJ|ÖÄ·ØR`óº5Üñ¾ëyò¹ùñÃ�•¤ë´”ºP«¾uQ3·^ µƒ¯ÜUEGŸÃë/¾ë¾RÚÅKÝܺ-ÈoÝìMú³m›_<õ ¿üõ³™þy*ZkªjêØxÅU˜>_Ñßà θtÄ\ võø�*î«%*Q1€$p6Ÿh­ —ÐBë‘|ûß~£"Ç�]×eI[+òåßæº+¯sâóY5ÕÕc~¦µfQS#«–/³�ºÚ6®]Ãko�­`«W,³,Q)ņի¸bë&¾úùϰiÝši÷Q)E[K3_ýÂgqµæáÇŸšòµ´,‹Üv3_ùÜ'i¨«›ñøëjkøä‡î¦mQ ;wï©ØõþùRJÑÓ×Ï·ø -� l^¿–¥M^U»®�Žu>ƒÞ\áj¸|¥Ÿ¯ÞU52éïå7Þò ,%“sfÜ?gåúM´.k/Iëq—xá®þ5ð° äê!*v5ÀãäSHƒSÀâêJ)-i' •e9à´Ç꺴¶4ó‡_úÜ„ÆàôÙv¾³wBc[�âóù&l¯*E©qëè ƒh$2á¾Ë—.æ�~çól\»zägZkœi&þEÂ!>õá°våŠIÓk­¹êò­|ù³÷NÙø;®K"™$•J�<�a\å|î!8I/Ä\eŠc'OóÍ<ÀÙŽó€bÛJ?_½Û›í^aoÇ’p5,kòVG¬XäMú{ïоõÃéêé�S�¿ÖšP$Âæ×à÷.!ÒTϸt&œÙŸPgvø>^Ò6±»ˆéI¼•³:³k(dJË‘yÕµõ$âóNÞu]šøƒßþ,ï»æÊ �®ìé�ÃG'L†2 cÒ.ØÑ%]Çþ|â�›hnl �óÖž}ìy÷ ƒƒÔ×ÖrÕå[Ù²a=–5vÅÒ¶Vn¹þj=6&PÐZÓÔPÏg?ö!ê'<_ƶygÿ{¼ðÚ›œë8�e™¬^ÑÎM×^ÅŠeK0 ƒ¦I7×)¥ØùÎ^þáÁ‡øÃ/}žêª(·n q¦Ç᛿&u‘“ç"­¡6bðå;£l_íMúëìêæ›÷?Èác'æÌ¤¿Ñ´lÕ:–®\Ca²—L/wõ+ÜÕ¿ <ì¹ú_¨Š|íúZî{©¼!€ y6�sµW P´†hu5Mm‹é>yC˜ÓÝ�¾_=¯ á§ßæÎíA C1‹ó½ÆëoϽIh�?dóök• ïÿè±ÿÂÌ�à ^Å?[ÿ…«Øa÷y¼ô’³f»…Œ§5>€Ö É µ¦¶¦Šßý­{¹óæ'Ô*èìêæëßþ¿|ú9l§¸cŠÉTŠïýäa~ñÔ3 że�¦a ”âlçyžxæyɉ³óëjª‰„C# —·|1ÈuW^A àŸpÿWÞx‹ïüø!ºzú¼Ô¾†�ih­9tô_ÿÎ8xäXùþ(E¦”"•JóࣿäÙ—^CkMuöJxÇÿ‚pÇA>sS„€O‘±myâiæyœ"¿Ï‹AkMÛ²¬X¿©$Ï72öoìêß~ ¼[’«ØÀPö6+šÂöÀè|¡²NÌ-Éûâ§?Á=·ß‚5nvüÉ3gùËo|‡'ž}!;º¸û³ïÀ!žyñU\×�p¦”Á¡£Ç³UîÆ øýÙ™ýÞk©�†º:Vµ/›pß�¡!yòiú0&™õfÇNžâ‘'ž&�É+gÔœ¢”¢·€ïüø§ìy÷ XÒèM \±ÈºätÁ•ÌÕpù*?_¹+JmÔ›ûðÒëoò£‡%™Lͽ«ÀòùØtÅÕTU×”äê?–qéÌ^ýÈ~àG€#Wÿ [±€8y,°³‰i EkMcó"ªëê)gbù@ Àg>úA>z×íøÇMâËØ6?ùůxî•×K¤ì?x˜þÁÁIOÀJÁP,FoÿĬ >Ÿ˺°ÿZkÚZ𩝭™pßc'NñÞá£Óg)Ôš�{ör®ó|IŽ»\ ÃàÄé3|ãû?æôÙ@eëÞGi˜§“] Ë›-þðƒU,oö&ýí?x˜oÝÿ ݽ}s²ñ×®KSëÖlÞV’ç+ÂÕ¿ üo@,pÅ@W>°ÝÂ6ÓZC¤ª†¦ÖÅe-,S[]ŵ;® œ8cØgYlÛ´¡ å‚göÎužŸt6ÿèûÄbñ ?7 kôÐ…ÖÔÕVðOœçyäøÉ1Y'£”AWO/ÇNž.úq—›RŠ·÷îç»<ÄàÐ0J)n½,Èçn‰ò_zU½Jâf‹"}å®(ÛVy“þÎ�ïâ›?x€£'NͽIY†i²aÛjëJ6ö_à«ÿ}ÀOW®þE±?…)òÌXØ9àÍð—½.€RjÚeN×]y·Ýx]I®Š\×ex’Æ}ô¾:ŽC2=En5ö¾áPhÒ.þîÞ>œª¹)™ŒMßÀ¨A¢µæ×/¼ÌC�=A:�Ág|òÆŸ|_˜ _Í‹á77ãÿýQî¸<ˆ¡C±ß{ðg¼¹{Ïœ¼òÐÚ¥®©…õ—mG• €q�ŽXÁ¯þ.ú΋9¡ØË5yV—²5¸Zcð$12 "‹Uä (ðñ{îdÏ»8tôĤ j¡¸Z“Îd¦½âÔÌ.u‚RÊÒ÷šj­‰'h=sæ8­5ñøÂHC®”"�NóÀ£¿dQKï¿éF¢!ÅW©Æä'/Æ9Ýec;ùuX•û�›�î³`ÃbŸ½9Âí— ø 2¶ÍÃ�?Åϼ0霓¹B)ƒµ›·ÑØÒZ’«ÿÁ´·î¿€3ÿåê_ŒQì fÿv´WÈOázì½|­ÔÔ5�ˆ ÏvWŠæÈñ“Äâq¶lX7æd¸rÙRîýàÝüå7¾3mÊݼ d26…x…µÖ$“©IOˆ�@`V“•bÒó•RŠþ�!¾ó£ŸÒÒØÈå[6 ÁgÞáêu^ÚŸâàé çÒ3%ÆÐcþ›=å7ÓÜoº;)ú͵&—­ôqý† ‹Íl^ Íó¯¼Î�þÉÔÜœôÞqT×Ö{iKPôÇÑp.æ�(üÕÿ‘¢¿XbÎ(E0€×›5«þwÇ¥àÝ Zk"ÕÕ4·.¡ãÔ‰²¶ÿï:Ì_~ã»üûñ'´µŒM‘pËõ×ðæî=üúù—ж v£µf8Çu\5Ä¢”¢®¦#»äo:†aR]UU´ã­D†¡8uöû½òÏ~ÿwX·j%¦ «Û,VµZ¤2šTFãŽNú®ÇFÒû,Fà3!àS|*ô)´Ö¼±ë¾yÿôöÌ©L“Yµa3­K–—¤âŸwõ_ÐçÙ�\ý‹qŠŒJ4€·îtÆ WÈÑìôÊòùü´._ÁÞ�ÅO°3•Ýûß㯾õì?p˲øå¯ŸáKŸ¹w̤ºh$̧>üÞ=t˜Óç:+þ¤©”¢»§—x"�ß?vuCûÒ%„CA†cS—cÖZSSUÅ’ÖEå>”’SJ±çÝüù׿Éîý(;¶m! ¡ýŠàîæ¹W_ç?}„SgÎVüûx:ZkÂÑ(›¶_�/(zÞGÃÙ˜CÊ)ØyJ®þŤJÑ0ˆ÷œÕéÌÕšbäQJѺd9ÁP˜xl¸ä]‘ýƒ|÷Ç?eß�C˜†�í8üòéç¸rÛV.ËVöËÙ°f½ëþîû?ƶí’îg¾”òfww÷öQ[S=æwkV¶Ó¾t {Þ=0m°vU;Ë·•ûPÊB)oiÜÿ¿ÇŽË6sÕ—ÑÒØ87»Ê8ŽÃ©3çxeçÛìÞ÷±DbN7þhÍòUëYºbMÑkŠ( /åÒUØ«û“*Eë žÍ�]íå(4­5õÍ-ÔÔ7*ymÕT:MoÿÀH¿†¡¼\è?ùůX¹|UÑ E{ Ãà®[obç;ûxåÍ·*{É”RôñÞᣬ^±|̯ëë¸çŽ[8rüä¤s\×¥¶ºš{n¿…hdVo�yI)Eÿà O=ÿϽúÁ@ ûZ͵% ­½‚O™Œ=ãÊ—¹@kM bÓŽ« †ÃEï≠š31‡”[бÿ‡Šþb‰9§TÀ¬§xk íÌöÞ³§µ&­¦eñÎ�*OêÙÉ®ê^yómžåuî¹ã–1?¯¯­áÓ¹‡ÃÇŽWtÒ¤R)^~c'·\5‘ð؆ü¶®ã\çyzì ††cÀ…qìÚšj>û±qíŽËË}e§”B)…mÛ Íñ¬ˆJ©ÊZó¡5mËW²bíÆ’<]wÒ¥'ér4wõ¯åê_ŒWq€«!å§¾–åóѺlï¼ñJIêwÏD)E<‘à¡_>ÁÖMëYÚÖ:æ÷—oÞÀ7ÝÀ�þXYÓÏæ8vï{�]ûÞåú+·�ù]$â ÷~ŒÕíËyöå×8ÛyC)–-nã–ë¯áÊË·ðÏáÁî"¨Ô`o!²ü~6]q5ѤýM9šÓ÷`3 rWÿ²î_Lªâ¯@ríëˆÑóE˜ò<1ÉÏ ÃààÑã<úÄÓüÞç?�oTš`ŸÏÇÝ·ÞÄ ¯½Á©3ÙmO7m[Oò£ÉU÷òdÛ›äÇJ)úyð‘ÇY³¢}¤ÔpN8䶯ãú«¶‹'PJ ‡G& :ŽCWO u5cŽÊMˆЮKsÛVoÚZ’çëˆ;ô§ÝBž÷ö?AÆþÅJÑO—« 0kIG%#šÖšº¦jšŠÍ»®K<>ñp“©ô¤Õõr�yâÙx{ïÄâ\-M�,i]4Rs<–H`ÛÇHbñ8î¸cò2þÅ&Ü7•N“H¦¦ €lÛ&6Iržt:Mz’ �†¡x{ï>¾÷àà M^ÿ)ÐPWK}mÍHãïº./¼úß¼ÿÇ �{ÝlÇ!•N—|¾†à¥ýݸíJjë‹zõï¥üÕœ�9…<ïeðÊýÊÌ1¥Riò, œt4v"o9O‹/-ÚÁڎñS§qÆ 1œ×1ãk•L¥øÕ3Ïó¾õ¼õÎ^zzûÇü¾pˆóÝ=eÏr'oÒð"Öm½¥Š{š´5œ¶ÎlâÀ;ÀƒÈÕ¿˜FQ“ã_ÿå?Í=ÇÝÀ¬gÑ(šÂA³ð§~Ó²èçÈ»{‹ÕkMÿÀ Ë—,¦¥±€c'OñÝ~ʱS§§lt•Rttu“L¥Ù¸v5Á@€X<ÁcO?Ë3/½Šã¸J‘H&ÐZ³nÕJBÁ ÉTЧ_|™GžxšT:=aû}ƒ45Ô³tq+†aÐÝÛÇ�þoíÙ?ãɦ·¯Ÿ¶E-´¶4c(ŹÎó|ÿ§?Ÿ²Â_®†À¡£ÇÙ஫ ‡‚øý>LÃ@)E&c384ÄÞ÷rÿC�ðà£�ÓÓ×O2•FŠu«Wf�=ΣO>Íó¯¼1¡gCˆbSJqùµïcÓökŠÞÕw8>dòê?ü9ðÀËÿgÅ=1gõ­�Mä¾|y¶�3lmðÑ2 >¬ ƒ³Ç�ðÿù û‹7»~Qs[7¬Ãï÷óîÁÓ^¡�§5ü>.ËNìèêf÷¾÷U¿@~ŸÅ¦µkh_º„Þþ~vï{oÊÒ¾Zkêjkضi5ÕU;yšw&mÛ3þñµÖ46Ô³mÓ"á‡��àÀ‘c3ø/ŸCÀç£mQ3Ë–,¦¾Öߎq¦£““§ÏÒ?èu )¥ÐxǾeýZ–.n£³«‡ÝûÞ%�ˤ8QRZkjêøÔïý KV®)Ú„a ¤]öõf*ìÕÿKÀg€Óà%eb2¥þ'ðÏóÙ©5µíUVá¥HĆyà›ÅÑw÷­ª—ÖzTƒ¯ò*î3ºLonyØÅÜgò}!¯%Z—rã÷s´B—Å µæŠëoæŸþm,Ëwéœ„â¶æÝ¾ =É‚ àßiüÅôŠ:¸5ê͗׈eŠ70ް¤}uQÇörk¡½[~�Ø…ÇS6€³¹Ïäû’ß1_ÊqŒßÏB—…–›'´éŠ«ñùEy…·äïÈ€]èÆàeàÑ"¿Lbž(U¶Ž~¼z³³uQ2‚×È,Y± 0ˆ,3B\ i_³ž¥+V%í¯Â›ä|xÀ¦#^ðŒgƒÀ7€N�«1³R=xI)f-ikRNAÇÅFh­in[JmCc±S{ !æ ­ ÃlÚ~ �"¤ýÍuûì·9sŠqéñ8Ù‰Òø‹Ù(UÐ�·pV^Nìx‘êàh­©ª©eÑ’åE/î!„˜4šÅí+Y±vCQÎ i—÷ú2tÄ‹ÒøŸþ¯·UˆY)UÐ åóGÃpÆ-Z½åó±tåL«É…•ÎòùÙ´ýj"UÕ½ú×Ú[ê·¯7CwáÇüÁÇü Þø¿\ý‹Y+UÐ äóMñ& mËVüÃ.„˜{´viY¼”Õ —ö77ÞdÐæ½>›¡LÑÎ3�oáU]bÖJ âÍÈËPÚ%Y¤yhM]S3�‹K Äg˜/¿’šº†K>(¼¢fç{{2´I®¼ïxà;À�«‘ŸR1àD>ÈEÏCéâ$áÐZ Gh_³~þ”.BäMkMCó"ÖmÝ~IKƒ^Ïå@Úå@†ý½zSÅÆÌzøÞêi!òRªð$p4ßÙúR.Í!³(é8•aоf=áh±¡AYw.Ĥ”bÝ–ËihjAëüÛQÅ…Ü%çâq‡„­G~WD]Àÿ΀\ý‹üýÒwÔ›ò8y¬ÈéK¹$Š8 ÐÔº˜–¶¥2 Ää¥ý­gãåWaä9!8×Õ?�v92`³»'ÍñA›¸]’s‰‹WíïI�Æ_\œRö}†óy€ÂKÔ•(ʲo eź�fQë" !*Ôê�[iY¼tV9ÿs"WÓ�ôºúw÷d86èUóÓýª?çUàÿâ¥þ⢔28E6CU>\ gcC·(,¥ VmØBuM�ô±€h­‰TU³iûÕX~ÿ”÷Ë�w ƒi—C6ïôdØÓ“æôpɺûG;| 8 rõ/.^)€óÀ±|¤€áŒæØ S”Ì€Z»4µ.fÙêµ’HˆEÓ¾v‹ÛW¡G­7V\hÌm×kôO ÛìëM³»'á~/‡ƽpÿJ‹—õOqIJ™'ì>p1>w°¬ª±šª Cþ@�õ—mçàž·I'“½¸¢¼´& ³eû5Ca´ëÍÖwµW¨'f» ¦5i—á´—–<7@0:@(ƒŸãuý§¤ñ—ª”€ ¼‹7Пïƒ5ÞP@ÚÕ,�ZÔø–¡Æ|/>(Ь\·‰å«×qpÏ.Y Ä<§µ¦­}5­«Ö1”vˆe\†3šá´fØvI9Ûe̘~œ^þ3^oª—¬Ôypàåªn¾˜k +á2�ÊPíWDýK²Sá3ÀT CÍîÚ r%@¯¸þfN;L|xx$ÙŽó�bNЮ 4Ãç§jí%ƒ$†Ód�3ê®Ôèçþ_`/H׿(Œ’½¿ï{©`ðpÙ¥n/™Êkô}øMEÐô‚�€ Sá7¦áÝÏ@¡”×ßëÆËµëŠL&Å«O?ÎÞ�¯‘I§qlÛÎàØ¶·>Xk¯«P» ]oÒàøn5ö5áwtJ¢b�ýléQÿŽûáʛԋR(exA¼ax_Ê´0L eš„›–°òŽÏ௪GS´,}…rø'ÀÏ-�¿(”R÷tá-¼ä ÷�u5¸Z“v½%ƒ£Ÿë 0²½æèÆ_]hž/üLÞv›V^E:�ƶ3Ø™ v&�“I㦓8™n&�“Nf–Êþ,…3òu×Π×±/üoÛÙ±Æl0¡uöwêñ‹éŠ1÷©ðS˜˜‡ôm²žô®“Q#¹Ê~í5ÜÊ0PÆ…ûBãmaø|˜¾†åÇðù½¯}~L¿à ŒýÙÈÿ~ï±–eZXÁ0¾p*¿ñ?‡wåÿs¤ñVê ¼|¼ÐžìCœ›Øëè©NK“�•LT´ÓûŠ W=úK¯' Û+páÇkôí n&ƒk{�÷½$8éÔHðओ^P‘Ieïg£�±ÿ»Žím×u¼çq]й¯´ãd—1fƒ ¸°ªAko¯';Ü©#Š©=á®~ �—ôŒ“^ô$_Ms§ rÁqn.ŒÊž¹a1exWÖ†™m¨³ÿ«±?3, eú.üoZc¿Î5侦Ï�á `ø³_[~ Ë7ró¶“ÝVö9Æ Ù}u#ÿ2î3<ò ®üU?g€‹—ðÇ‘Æ_Z9jᾊ7 ¶ÔO<ëfjäÄ g>G(å]¡�K$4vÂT'¢ '¡ÜrÃ Ž·$I� *pݱ½ Ž�ë8Ù!p8™ �†�AÛ£¿„äo_ؖήë€;êyGz(Æ÷X\øþÂpˆûÿ¤­Ëd]»c¿*vòô’Q““_/޹J¾ð¿1éUóÄï³]ß“5Ö†éÝLó•uö Ù°|¨Q�¯aúÆ5ÆÖ˜Ç¨Ñ_[Fv»#�Âøîxå�É�äÝ3ßFMh°ÇÝã~>†ÿnÒ“ÞmŽ8ü?ÀHã/ФÀ>¼;Ê}ðÅ1ÍØåt'¢‰1wõï¸N\ŒÚ/�mÀµëB®7!÷}¶!×¹F=ä‚‚\ï†;ªçaÔ}&þï\è�õ¿;úg#· ½z,F0¶‡cäkïØ´{U7þ÷Sý<÷°‘®è1_çUF}}áªøBã<®ÕhOÚp�nÔs�±iz §‘íòÎ5¢¹†zºF|Êßãömt`0j¿G_ÁçÆÃFOƒ‰_G²ÞËSvþOò^ÿ;=v s³Á.¤�x�ÿ¯‘Æ_QIûn³-à/�?,÷Á‹™‚Œé2Ý��±ÁŒír�ÕI¦>îQÛŒÙæ¨Ü÷_ •íþup“v‰O·ÔDMóí$ó8F/;õõ”Ï1c9«ÎÿQw�·Bd€'€ÿ¼2Û_W9zl¼Èö @U¹_€…mê«­ÙÍ—àâÛŽ©º}/fS—rÏ ÝÍ—rP0¦[®†�óÀß_Ç›ø'�¿(ºr/o·”û Éìg§ Q"àà¿ÂKõ+�¿(‰’Oß΀×ðu ZîA!JLã-‰þ6ð=¼biÒð‹’*Ëú­lPüðEJ[”H!ÊÅNâ­ëÿ>° °¥áåP®!€àÏ€ÀÍå~!„¢ˆÒÀQà—À�€ÝÙŸÉU¿(›²ep5°øsà}HO€bþp�nàmàQ¼ÉÏG�Œ4ú¢”5…Û¨ `-ðGÀÇ€6Y /„sI oFÿ>àyà¼2è}H*_QaÊžÃuT¶7›€5Àb á•.ûþ !Þ$¾ ûÊ?‰—æüm¼Æÿ^ÆSiôEŪ¨uT0àÇ˰¯G  hÇ«&Ø ´u@>¼ù cR˜M¨ê™ïñδHlªìúõº 1ÿ)÷×tŽJ™9r³ñÆéS@¯A?Ÿ½�ÇñfðwCHæ>1‡Ì‰†*(¼F>„×ð×âQ ’ýY˜ Á@îk’ïMÆ~Ð/å–{)µ•µþõg}©Á•å~Í„X0”rš6<ܽäÊ·”v/f‘ƒ×ØgFýËÞ†³·¼ ŽWÔ,ƒ7Æ/“øÄœ5'€‹1ª7!wœ³éÐ÷;Ågÿs�îl¿þj´þ °¤ÜÇ/Äó׎þ§ü¿O¤ï{yà¢{ú¤1 ɼ J鉯\ hÃ5ýÿ ¯|§¼®B”Öеÿî¿}±Üû"Äœ Ëî.Ñã¿®éÃ5ýË�{�Æ_ˆrX êvð>“Bˆ™IP8·ʽB,P>àƒ@C¹wDˆ¹B€Â¨ÃËa(÷ޱ€m®éb6$(Œ«€kʽB,põÀ‡ð– !f À%È^eøñ®þë˽?Bnd®³ À¥[Ü^î�B^ã/“…˜ .Ò¨“Ëð² !ÊO& 1K\š6àÃHñ"!*É•x¥@ˆiHpF�TnÂ+`$„¨¹É€¾rL€‹Å›ü)÷Ž!&¸ XUî�¢’Ipñ.n,÷N!&µ/�a!¦ @žˆœÌ¥IDAT²' ø^¹b!DåÉM”å¹BLA€‹³¸«Ü;!„˜Öd2 S’ £N"ïÖ–{„Ój>hÚRR¢Kˆ $È“Ö4Ef Qñ´æžž¸uÝ�_<Äÿü„äëb4 f)wõ¯7W*¼º¿—zBL® Ÿ/Å*¿©?ú?¾¶Ål Ûå>$!*ŠUî˜+”‚¦HF�ô¯É8*¨ ³Yí3ô¿©O�h­ ¦cƒ.Ð[¥hÛØ�ò»�(Ð11/H�‡'×èê óšãª> ¥›Ô†Òÿ°¶>õW®®˜F¢TÏ1ß·U¬¿Ç¼þ;[†vÏ ùW¥�ïâÕÙ(ÄÄB>mgœB¾DBÌ}ÌÒ]ó"qïíd¥)\ê_åj¥ö†mWñÏ~òër¦eõ÷ÞŽ†Uà@'�R2ä&Ä82  8) h»rj"Gy%¶ýܤ_ɹNˆ äC‘??…]àGæ 1š�ÂÆä\'Ä8ò¡ÈŸ�ÂVÿ+䕎ó��Â~.HÅN!&� …¾b !F+t@!‡í„˜7¤á™¥¿¸w$‰H „(&?…ïe“!Æ‘†'A ûºz{BÌI£‚ìB�ÙË€“�†'A¤@ˆb*ôgBz„˜„4<ù“@ˆâ*t¯˜ô1 ixòWŒ@NNB\PèϘô1 òWŒ@òqA1†d€ãH�…wr*$éb¬B˜Hùn!&� ? ïäTH2@ˆ± ý™0‘„[BL O~ŠÑ`!W'BŒVèa¶‘`ÔRC!< òc"€ÅVŒÏ˜ô1Žù1(ü‰¤ÐiO…˜ËŠ1Ì&CBLB€ü˜þä$=B\`¡oÓ¢ð½ BÌy²4&?0œ.ŒSÎöÿñ?3€ˆ 1Únà¡Qß«Q7¦øzªï ô—û „¨4ä'üg௲ßO×àÏöw)àd¹Lˆ áß¾?ÅïÕ ßOõóD¹L!„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!„B!„B!„B!„B!„B!„B!„B!„B!„B!„B!„B!„B!„Bñÿo ýí À#!u$¡ ‡K%tEXtdate:create2019-02-13T00:20:34+01:00”Ø™%tEXtdate:modify2019-02-13T00:20:34+01:00å…!§WzTXtRaw profile type iptcxœãò qV((ÊOËÌIåR# .c #K“ D€4Ãd#³T ËØÔÈÄÌÄÄË€H J.êtòB5•IEND®B`‚kubernetes-sigs-kind-49aeee6/site/static/apple-touch-icon.png000066400000000000000000000241711524365506300244010ustar00rootroot00000000000000‰PNG  IHDR´´²¯‘egAMA±� üa cHRMz&€„ú€èu0ê`:˜pœºQ<bKGDÿÿÿ ½§“tIMEã !¶i�:'IDATxÚí�yt\Çu§ï­zKï�ÆbHŠû*ŠIQŽLk³D[–ÅŽÇIFñØIœI&“ÌÉÉdâs|â,v+ñ"ljÉŒíD–-Y–µX¢IQMRÜÅ$ˆ}m ÷~ïUÝù£Ñ@£Ñ@ ê¼ïà�îׯ«Þûõ­[·nU!�ƒC!X± à°xqÄá`‹#[q8ØâˆÃÁG¶8âp°Å‡ƒ-Ž8lqÄá`‹#[q8ØâˆÃÁG¶8âp°Å‡ƒ-Ž8lqÄá`‹#[q8ØâˆÃÁG¶8âp°Å‡ƒ-Ž8lqÄá`‹#[q8ØâˆÃÁG¶8âp°Å‡ƒ-Ž8lqÄá`‹#[q8ØâˆÃÁG¶8âp°Å‡ƒ-Ž8lqÄá`‹#[q8ØâˆÃÁeVGÀø& ˆ9ÿŽï½�y†€²Æ^*îî ™ÒŽ=Îù=å%´{L~WÞ1ã•Í…a�ão ®.LÊ‹«?!Yrìr`öUI@€ˆ&ÿ›y•(û¸ˆ L*6"Žÿ‹¹ÏO<žxqì›d¶Ê2»G GÔø5VîbK¼¼ÊÃt~ƒIå*â €£æ‹©pJ:û²Ì p)Xëå7Wj«J×�#œ~3žö¨xòl"bÈb—ó½€Â`E‰ú�½ÆÃ‹]–™xš×àp¿1geÜ@–fa¾Ë–„“Ãf_RÜ×èZUª.~2�8¢†l‹XyOCàS�­¼öxÒãì3 Íd_‡ò_œxªÀK9� =sîŒ;5ö;÷RØ0�”O]LÞcÒ–J�-n�L'Žá”5&]�c�‡—è¨qäYWž²—cܹ( (Ž6lþ�rË <žÚË=†Æ¤% �%É””°(aQZ�%�lª7é§—SiAÛkµ“:�8ú“ÒÄÅqu©ZæšuhdQµ/ów/ œ)cBLI ‹F 9œ’£†4e�CS‚^êHÀbÖÇtâœÜC©óñ2[Twz\ïò#‚ÆQçÒY½"†ì‰‹þ¤4$åiÀôrGZ㸵J[œò°Œ¤'\Q�a¹ûÆð±ÙP”ê¬Dg5iy9b M ¤½x%åWqu©Zì"À¶�°$Å̉Æ×£¢›ã�n6žŒÛQª³µejKPQX¾éŠ›ô³öTOB»¤°‡)!iMTÄ£ âŒÃÌP¶”å%êÔ.JR¾Ü‘N‰E÷Õ³½á† ¤˜$ŽÅÙ.ÞXÔzùÒ 2Õ}wØ<9d»tùØŠ#%h¼«’ ÏätccŽ�ì©õñ:_¾«'Þì5ÆÛñE‚­8Ò̬?Êf¯9uøíg¿û�îöKŽ>ì`�~Ôòû}]qqzxq[q$-²²Î5GTgàpX–yä�_Ü÷òÙï8â°ƒ\ü<¯q‘‡ú�øb2¶÷~x#¢2¬õò¼ kI8Øg$‡ñ(,A“‚:GGó”» �ËëÝÅÑm),K‚1YŽ6®ZÆxL~R¼Õ·(b…Þ�!'"`ÚbTÆë×K¾¶ÛA³O°'€ 7+ÑÙpZæVêJTî7î¨Õ¯SEgHaqX’¬¬?Š3 r, ’h(™0¥¼}P6UgñF� ÈuŸõàªÆ°ÎÇG ™;bKoõ+BJUQ³Mm-Ç„8I«‚ Ë|ôè¡öÈ(»†"Q~ö € 1œû9%ѯU¬Ü]Ö*gi> ÂÍË\¢?9IñC)ùZ�ñáfwÇ;mÅ!r*É‘們tj0•`óP±¼L^‹H��ÖÜʤ 4ú•‘´iNÎ÷8:h¶•�åEKõ(,SÒx9À¢JòA@¼ŽGfÀpînÒœ D%:«ñ²+ÑIY† W:RÕV¬© ¶½•ñÎ â\ú±‹¢š ¹™è hô+�)ÝÚþ¤|þr*b§dv☰0“‰$cÈ9G)„”ù?`›�]LG¬v¹Ê5�Aq&õ€›ãÒ ¢³üt»s#ÖóíÉ¢„Ålz+4á²!ÂUµ!„5Øu)2ÜßÐX[Qôºù…ãoNíè_UýRÝí[ é™y¼.ηU•}ò¦æµe‚˱¾=Ý—OEGÑÕ«=ßå)s±– rnÄÌë¹4ð¾&—ß~&tÅÄ¥ˆeH ¯‚ëËUÏ̲p츊ϑ™Ât•fq¸çJWÛi’Òï÷ùý>"ê+päpŸ0�Æ•›+¦“‘…GQ¶-©øÔò–›ôÊwÞ¥o½�Ö¼c]ãwnª{Ëìy²çÒÑѰ)åK¤ÎËMI—"–  + Ž QSÞÓàªõ:4Ÿ»œŸžˆ¦¤�K®)Rb'Ž ãÊpÚoºÖÈP/I‰81óÖÎaŒ� ©„Ë(–õ’ºú¾ÚÊO.om`åoß'Þ=,2_†CÒ­Õê}[j¿±ªöh]ïÝ—Ž ¥…X0‰ B“_á—""w6œ±’‰[«µ åj‰>é 7iw:wâ*œ¶n©Ò®eÞvaq9Y¼šå�BXFz†u—RJ!pÁÛ"�@!]ÛÕPýðÒÖJYºÿë;Çb}#pl‚g†ó=æ£?1ßRîÚTõÕµÕgkžì¹t`x )¬…‘Chô+^•]ŠX£i™¹á™§å í©CýFk@i *õ>Ô˜ÂÀ�45Kh )FÓÒu =�ÂâÈÍ„æˆ3Xƒ¤ø>„mɈ$@…[¿§©ö-;tÉ«o™ûNF#’!06~ØØÌÍÌ7ár¿õí¢KÞæ»6”}icå•Ú¡'{ÛööÇ,sa$RábAMHÊ�¤Œš2%&úþ¤ìOû�€Æª½J‰ÆâÅ,$œÔ½HJPå™{ìÂç�ù ;^ŸYG¥Æë~ ¹î¡æf%æiŸqàtd$.æGöfIJ¦ÇTž©rOX<ñjì…#üÎuÁ?Ù|Ë#5á=}—^è1�ë-ÊŽé×xxJPÄ�#†Œ›cSp%š¦ÑÝÕÙC<Se�t©ã7ÝAæ μ W_ÙçÆH¢ZŸç¡¥ »šÌaïÏ^J¿}v4’¤©²]Å?þX 7,¾ñ“h® ÌôÔFÅ÷öÇ_z‡í\íý–M¿±vôû—Ò×5l¤@"ˆàQУð*—rlf?H`Úð•ú}¿«¦ÃPhB.¸²ÁñV…H©\øÐ_ò²æ~úìÖ»Q�DÛj*þâÖÍñ>ïSÏ¥_�§ ˲y� • gˆXÀQFŽŽÉ½•Ø{"µ}¥û·nÛð±5�pöðùxdZ™ñe{Ž™… ˜ E Õ3±"Òݬ i8e½ D1÷ÅôhwºíuόűhFMæðªÊn\Ýö®çÏŸÝ*•4‰3Û›ˆi“ÂQ9–ý¬DDà " ùÓC‰?{|Tï,ýÝÆeEM²'J�þRlå3‘umf9"2B&‘2B€‚ØñTíÞØòAË‹`¦fþ7Œ8�!›Éø0Õû¼5jðé7â)ƒ¸ý�$B©Ÿ½Xæg~€�¶íŒD†¢òé7âëÝå!MË}‰!r¼Ž 'S‹£¢¬R¢UJ4ÀÒ�”êÞØ²"+‡„h@øöÆ–½o>”l˜m¯áš›•Ù\‹lf¶ãxÔ`ÀLôšñ¸i&T‹Ü8ÍRTÁMU�؈Ò7"Æ;#Œgh˜”»2d}9ߺBß´Tk®RZk”¥KÔšR~¡Û:x.}ø¼1‘˜è*šb¬œA[ŸåIy›˜g8™bÈ$Aïhü’¥.w�×w­v&—@q§ÿœEÜÍL¸b†~™h´ˆxj‡÷"èhy™aHÅÇfn˜àZÅ!Ít:v+ ÷xfÒú2ÆÍè`ÂLL¿P"SÜ>ÕíÍ´¯ q¤óñþSh… Loðh]SYÇe™4(Óé�¼Ù}ÇZ×cÏGÏuYô±ßæ~p›§¾BaÙØ�Âa]³¶¾Eß}›çL‡ù½_Ä_=šJ[·®ÔíW¼O¾{ûŒÁ B8&G‡Ùz<Ö=¤0 ¯ôµíÃËBÒ½M-Ÿ]³aa:÷ ¡ÐPf� ñd™OIµ\‰e‚I¥<ñ¡ÀñˆtÕª£³=ù5‰ÃJ%¢=ÍDÌ£)Í?Ãw¥Ã}3Ñ0㊧¢ÎSV“чE2� CáUzP㫽%G:-ÊæK¦iC‹öÿ>Uò×ÿ9KÑvûïXë"‚³æ�Óédš¹ÇMÈÇ_Ž5V*ÛVékÕ?ûÕàªõ»¯ÆWÔ+ôP0mR<5Ó6LjëjC{@X M�BJS.èâ‹ãÕÀ\hîœ@ 2%‘®S©š”TW¸z—jƒröýÎkQb¨Ë¼nîºfb°KówVv3úªÔ\5è»ØcŽÎ^=–êÿã>ÿW &5T*}añݽñŸJö�ˆ -Ú#÷ø„„}ÇÓ½#‰ú þÑÞoó<|‡wÛJ=àeûO¤þíåXç ùÀ™ëî•!¯ªÆ-+gÙÚ⸨ è²QöbtÅFw筞˰×ã-G“uà’Qú‘à± OÍÖ˜ÍÝ!•²’ññ†3`–Ÿ€Ò2­tbvŠ'XæõALë ‹¼Sh z\í}â±ç£N§-5jç õµg¢“Nˆ—ûÍRî­ñ¹©¨Kw#BÆ q” Ž ©ô˜Aà@ÃÂ;*ÝsHdº–f…Æ/ŠišçΞ‹D£v÷‘ÊËÊZ—¶26;9ÒìMôú@¨·¢I™'Dh¬äA/“ˆð‘íž´EÿõZb8*\2†ŠBª‚BP]¹òëðí\ã"Dª òê‹$dÞÙúGD*¦¬ÎGŠDFìh¢¡Û*Ùèî¬W×ÖP$IUQÔ«á~Ë'+•hˆ'hA›•‰Ë„‰xâðá#‘HÄÎ<QUUU}CƒË5ËAäYÖˆ![ï ]8&„Ìy¹5Ü}«Çëb/JÁݛݟ¿Ï¿¶Qýö ±ÆJ…3p©Ø\¥”ùÙçîó¯mVSý`|Ùuó2ýÞ›Ý绣yåJ¤©½G®/=ÛÖyí—qNWžÂÂóf¼)"Ý‚°68âeF—YòóØò�îÎíÞ¶2%ž"e©6àgé9·yùü¾ÛwÞ�Ǧ¹™¡P‰®k³9ñ\©j³x½;?WXJ¨¯àZ´XRþ`âb�9š�m÷ޱε¦IS8 ‚KÅ?úh@áð`,Ißy1ºgoüîMî�Kµ[WèO¾Ç&Y#Ip¾ËZw[ÈÅù;¡Ù+n4*•¨°Xµe@ MR,âflrwÀX¶ýxó? Ë=?ásÎyuuU<>]ç^U¯5Q“ÇëN¹® Äóì<´Ö¨¥~v²Ýlëµ¢ úÇg¢£qúÌ.oY€@"M ¡ÔÏ “�>}îí„)àd»90"êÊ•ºr>•¹Ùp±×ºÇå/wë]±ÄµÌ–˜-@ˆˆàÇäþc1é*SâŒÖ+C¿<èB“òÆi�«Ì_9óO™q!^ÛÿZ{û•iš�ÇsϽw———_W÷m­¿$<ÄÂ11µ Õ!Žˆ]ƒV<) –¢gÞJìÚàj]¢\è¶þáÇ‘ ‡ýþƒ�Š {÷ŠùÊѤ)†"¢D®nâA0É !B×�)k‰¯3–¸~•‚œ L2«%›ˆ¨ð`Åv%€Ž¬m`™t^À+ÜyN”÷š7í(,Ž Î8B&:›`¹ùÃ06vE×}&ʤ‰­Ó™/Xé¤F”�ѱ8¦”ÐX©üéÃAEÁÓíæá ÆŽU.� ÿåÅØKGR£qMÊÚ2euƒZ]ʵì÷¡sP|å©HÒ ŸK¼ìã·{>q‡·D¹h,]¢<°ÕÝ=$~ÿ±á�Q™É®½2`y„·1àîO�Gúì¾Hy×° ’ +..E¬L²æøh�Êð¦ec…Zïã~�åºÆn×—«�11žÞ©0¨t_ë�{aqè¢ÈîAˆØÝÑ~øÀ«–9–DIR±×w�"Õs˜ënè5¢7¥G¦̵¤Üº3�ªÂtÖº"ƒ+Ö÷Œ Gå•~Aþ)¸o‹§¾\é´LD°¶I-rKÀöÇC>vßwS•²¼V9xÎ0L2-jªVð'o'¿þ“¨KÖjEUp$žíÓ"ÄR-~óÈÀèéÓœ1Šw´?süÈÔQmc˦íïãÜ6é—Ú£VÛä© ÔØÝ úúrUµ ·m©ÔRN š¦$¨óñFÿµ:”…ßÏs¦@ŽïÝwüà�·^}q"Ĺ`»ë"VLûqBŠt¨ª~õ®Š ï ‹ÌÎŒ)ƒÞ:c c $<ófbÇj}×FסóîgÞLzt¼{³[áxè|úÛÏGƒ^¶ªAmªRwmt¾` ÂÃwx·,Ó»†¬% eÒ©v“r|)¡©J-õÖÙseím™‹“ :BS’’¨ã⹕6ûƒ¡‚özâRÄ’“ßÐØƒ-®UÓ.ž¯s¼³V¿­JDèâó°ªJaËÃ'OG "@¬¨©óø|\QTMcœ3ÆÙÂÀ9ã#†Óü ço=9Ð}â3»üzNÏ‚³±sÎà�‹Æ�ÞH¸4ü�ØäZߢmhÑR†üÁ¾øh‚:ÅÓ¯'ˆhû*½µFùèÏgvùÁ÷öÆ/öXµ16¡ "(õ±Gîö>òúÙKíÈ9!bÆ÷flò犢JB\)|� bRÛ¨•7ñQexW½¾jÛ*0¯Š�4œ—õvø¿øÅ©ÏÆM:2hfV0f5^®s(¯^Rß¼léêu�ËV\i;/®ö¬@ÄT:}ñò•‡v­VõЩvcê1RÂÙN«:Ä×5k[–ë[µêß{<ýøËqK€$ê›–ê­K”Õ�ÚÝ›Ý. Ÿ:ÿ÷ŸÇ­)Óš@Uðó÷Ëø»ÿô¯OƉiF‰hÝ-ÛvÞû¡MÛÞ•<Æ’pnÄ ù³õo©ÔÞWë*ÊØMáf…åV4³œ�¢¨KW­EÄT2qêÈÁKgO/dLp&0Æ.wt~ç»{~û‘Ïwº÷ŸHæ óe’t¾òT$ž¢Þânõ)@àÕñ¾-@„Š Ï¸™«ÕxŠž|%ö¯/Å’¨(ÁƒÛ¼ëþòk{†Ã#Ó("bËŠ5ë·î–e× ô&Ä@2Å¢Z/_­^¬õ[ìʼn ãÝk)%hº«±õ¦ËgOOjÊú _šCÞÃ4'œ(9c¿¼ã–›ÿâkß8{¡mæé ñ3ŸøÈÍë×þé_ý]GW³o„Á´¬'þëÇÿçw«>{ïÚ¿{z4mRÞhêÖåúík\_{&òã7š‚ºŠ™8GÚ¤´IB‚ÏÅ>|›{ÿÉTÆÍ©”úÙïíö½{âÕg_|u&+ŽQu]cIYQ�‘[5dOBä�¥ÌÅv{o@›Þ ›˜X,'O�…±1ú`å’º‚µðû¼­M Í õ~¯—²ïʼ*„LF¦…"šÈ’’¦~·ˆHJIDŠ¢´4Ö××Ö„‚ºZR"ŽF¢ßzâ?VTô|l§/OÀ*‡‡¶{’¹`d6ÆI›IÈHBe|Ž×N¥‚^vïÍî¼zi*þÖ½–8õo?ø‘aš3ic­«ÖjzáD Ði‘?>²µJ«òyâHá�Wsƒ-™î¤Tµ¶±íFq0›7@Ä9¯®,WEJù£ç_üëzìÒ•NDô¸Ý•åe kZݒꪊrÆØ¸Dˆ(è÷××.)- â,—ÜaŒ]éìþç'¿{ÿ¦ÔεîÜt I°ïdêÏEûF&rBsרa .tYÿølôÈ…üˆøG¶{×Öô}óß÷„GGg¢ " •W.[½ÞÎÛMËþ©~¨�oª(þ–€…›•�;gxÅ(´î’ÆfM×Mc:·ˆ@Q”O>øÀýwÝù÷�ýë¿<òñ}pû–Í_úû:{¡í£÷ßóþ�Ûþã‡Ï¾oûÖÕ7-OÆÞo=ñ_OÇâ ÎùîØþÑûï­*/‹Äb/ïÝíÒg•É;|üÔÓÏ>õ[|ºwØ:Ó1æœÁO&¦› n úáë‰ÜæUJ¸}�ëÁ-æ7ÿeÏ¥+�3oWoÞZZQ]P’ 3&òve[*µ€Vüùf6–ƒa0g<ÏšâeQYÕ’@I©]Ë2~˜Âù'>ôÁßxø£©Tº·@SÕå-Í­M 5••ˆØÜP¿´©ñw~óÓD°ïÍ·Ý.ýáß¿óÖ[,!6¯[ó?ùõ憺·�{ëðÑ{ï¼cåò¥r¶ Wˆ?{õµ#‡^þ½Ý¾Š>±DâU—+Êxå9ÊXV«~öý™çŸ~û�ã3TJJ×l¾µà’{0bÈ�T¾·QçãkËŠo6`šÞJPŸ¨¿%AR~ÌÔçT.©èíš&öÃ{ð¾»øÀ��=½ùè7ÛÚ;\ºŽš�=xÏÒæF…ó_ÙqkÀï{úù—¾öÏ�†yêìùÿû¿3Ûx=X–õÝ>ûÇÕUŸ»oÃW8š*´˜IP`_Øí;yìçϽ¼wæo$¢åk7T.©+˜&-:c"o¿jްµJó]ó€ê¼`û È]›LÉ)]QÕÚ¦V´O‘D¥¡’�Üw—ÛíŠÆbݽýS"cç<ñîÙx")¥ìéMSu]¯«®&¢CG�§ “1vìÔ™¾þÁ9DG1�}ë‰ïµ†º>ý~¿KC!aV?A/ûíûƒ2zâ‰ÿü‘iZ3,y|þu·l/8Ì–1ƒSÌFƒ_Y<ÛÜeö ÍÜ=A� ÊÈ’†fMw™vk> âÙ‹—ˆhݪ»ï~ÿ“Oý¸ Ï�6Æü>!%ŒÍ£ïBf³¡¤˜k/c¬³»÷±'žü_ŸûÜÚ¦òs]fÁÙô4åÐUX׬*Æ¥¿ztÏH$:sWƒˆZV¬®ml‘³1·T^ë€óˆ­8\|l± ̬v-ó2&¢òêš`¨t ·« ýÈ|eÿáÛ�kªúå?ýßÝÏ¡ã'Ï·].tóŸ1 ³³»wóº5ëV­8pð�e‰ÖƆÊò²9'’elÏ—ÿák·oÝìu»f~4à—¯Gö¾~°£§wV“nt—kýÖª¦M ¥ä`2ßlÔû•âF½ò°‡‚1³Ì»�dÊüþ yý�ÊÚúþžÎ|C›q*SéôÈh¤§àùŸÿâW|à“>ð7_ÿöØ žø5餙¿Bˆ}o|ÿíÛvßý~D �ÜuÇ]×Lcîë“#â™ mg.´]myÄÂï�Õ@’”²¾eYÓ²×É7%\‰Y-j³Óø:lj8AÁÍ´E­+äv @<™ììíH$SBʧž{áÔ™óÕ•ª¢v÷ö ‡‡Âa"êîí‹DcCC€€}ƒCÑX¼§¿?ù�=?ˆ'{àÞO}d÷/�ß{àÍáÑÑh,6çë—MÀÙf ÌÖ×Quý-;\nÏT«˜IÚ§òc�~e&ãò ‰mÖZR~ëd,³_, *­%ïPÆXû…³{¾þÕt21uxª¡v‰$ÙÙÝ ™$¨ê*USÛ;ºÊB%¥¡’Kí¦e•Õ•—Ú; Ó]Óšêºzû2wD\R]UY^‰\éê•C�@Û•ŽYwh)e]óÒOýözý�¼Ë‹ÃiyrÈLŠI± …ÁÇ—z6oƒ„‚Ø6+�#dW·Œ™$§ÄÁˆ¨¼ª¦´²ªërÛT«{¹£3ƒ ˆØÙÛDŒ±ÁáðÀÐpæë82 �ŒŽ·åiÃ8}îÂø¬k"êèê¹ÒÙ�I šílÛ…‡1¶vËmÞ@0¯‹á´<ÎW, *+B‹n}¶éš•Üö/nJSøp{}uMKí®QîðCÌÜWÌ>È{<þ®\ÎrΦ¾qÑB$Ë«jV¬ßœÛ `6møÄ°5ó•áVp{�~-K _'l¯µÆq<‚‹I‹¦Ž)c¬ù¦•Ež”°¸ÀU›n •UŒeŸA8-O ›ï†Íd¡k¸¡\m .:³Ó4+¡<'ÍÄ"èKˆ¼%·€ˆêš––VTõwwâ¢ÿZ_oˆ(*[³ùÖÌCÒhšúb0%3(S•Qãá·/)òмÓ ¶ÚÃÆû|Û«²S&ù…nZ·±¯«2MlÆÇ\ì:^'r»ä™?$[×lt—ÕôÄÌpzlÍáÌ$ƒ‚WÁ£à] zyñr½¦g:qTº¹Îq¼›É€í‰3¯Šn]‘1lÚ¼órï`t$,LSZ†´Li™$,),’‚¤)‰dæ"æìå2iµàIŸ�“Í£¾òÃ+TèõÜBŒk}l÷0†Œ!2ägŠ‚\eÊØ�âò¨7ÝvdÈ2¬‰íí ¯qÜU¯¯ -Þyº X1“þùT¼'1)Ôœ3iÆWÌGD)„°,’B ‹„%-KZ¦´ iÂL 3-MCZ†4ͱç-3ûcd¦¬’HJ’‚HBæ_’$%eGx2 *ð:~mR 8?øT\S¦n¯Ö‹ž8®2¯—Þ0Þ‘ §¥˜ÕeBœÃ e7(8mƸ,w±e%ÊšRµÆËsS2¹^W $€‘´ìMÈÁ”§(bÈTfñ"™�µ�õ<²'EL�¦{‹]»…@õŠL"Sú&DÒ2ßk–ùö9,sª8„°„u}W¤\Hˆ¤5eú8 Ó˜Óù/ó,aYrŠ‘�B̳å(*$ X Žå˜a™T¨Y™n7ß ’² ¬÷œå˜oŸÃ²¦N*‘R¼—ˆ2“Û–M…§lfÉ{©éÌ0ë�·é‰ \<ô¦´,Èfâ�¢ªËnÛé †Š]ÙùA «ûÌ©T, c•$ Iå�Í¥µ Å.Ý|2Ïâpx/qä#9 G¶8âp°Å‡ƒ-Ž8lqÄá`‹#[q8ØâˆÃÁG¶8âp°Å‡ƒ-Ž8lqÄá`‹#[q8ØâˆÃÁG¶8âp°Å‡ƒ-Ž8lqÄá`‹#[q8ØâˆÃÁG¶8âp°Å‡ƒ-Ž8lqÄá`‹#[q8ØâˆÃÁG¶8âp°Å‡ƒ-ÿîœSÕœ.4%tEXtdate:create2019-02-13T00:20:33+01:00Q§•%tEXtdate:modify2019-02-13T00:20:33+01:00 ")WzTXtRaw profile type iptcxœãò qV((ÊOËÌIåR# .c #K“ D€4Ãd#³T ËØÔÈÄÌÄÄË€H J.êtòB5•IEND®B`‚kubernetes-sigs-kind-49aeee6/site/static/browserconfig.xml000066400000000000000000000003661524365506300241170ustar00rootroot00000000000000 #2d89ef kubernetes-sigs-kind-49aeee6/site/static/copycode.svg000066400000000000000000000003711524365506300230460ustar00rootroot00000000000000 kubernetes-sigs-kind-49aeee6/site/static/examples/000077500000000000000000000000001524365506300223355ustar00rootroot00000000000000kubernetes-sigs-kind-49aeee6/site/static/examples/LICENSE000066400000000000000000000261351524365506300233510ustar00rootroot00000000000000 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. kubernetes-sigs-kind-49aeee6/site/static/examples/config-with-mounts.yaml000066400000000000000000000022331524365506300267620ustar00rootroot00000000000000kind: Cluster apiVersion: kind.x-k8s.io/v1alpha4 nodes: - role: control-plane # add a mount from /path/to/my/files on the host to /files on the node extraMounts: - hostPath: /path/to/my/files containerPath: /files # # add an additional mount leveraging *all* of the config fields # # generally you only need the two fields above ... # - hostPath: /path/to/my/other-files/ containerPath: /other-files # optional: if set, the mount is read-only. # default false readOnly: true # optional: if set, the mount needs SELinux relabeling. # default false selinuxRelabel: false # optional: set propagation mode (None, HostToContainer or Bidirectional) # see https://kubernetes.io/docs/concepts/storage/volumes/#mount-propagation # default None # # WARNING: You very likely do not need this field. # # This field controls propagation of *additional* mounts created # *at runtime* underneath this mount. # # On MacOS with Docker Desktop, if the mount is from macOS and not the # docker desktop VM, you cannot use this field. You can use it for # mounts to the linux VM. propagation: None kubernetes-sigs-kind-49aeee6/site/static/examples/config-with-port-mapping.yaml000066400000000000000000000006301524365506300300510ustar00rootroot00000000000000kind: Cluster apiVersion: kind.x-k8s.io/v1alpha4 nodes: - role: control-plane # port forward 80 on the host to 80 on this node extraPortMappings: - containerPort: 80 hostPort: 80 # optional: set the bind address on the host # 0.0.0.0 is the current default listenAddress: "127.0.0.1" # optional: set the protocol to one of TCP, UDP, SCTP. # TCP is the default protocol: TCP kubernetes-sigs-kind-49aeee6/site/static/examples/ingress/000077500000000000000000000000001524365506300240075ustar00rootroot00000000000000kubernetes-sigs-kind-49aeee6/site/static/examples/ingress/deploy-ingress-nginx.yaml000066400000000000000000000401051524365506300307600ustar00rootroot00000000000000apiVersion: v1 kind: Namespace metadata: labels: app.kubernetes.io/instance: ingress-nginx app.kubernetes.io/name: ingress-nginx name: ingress-nginx --- apiVersion: v1 automountServiceAccountToken: true kind: ServiceAccount metadata: labels: app.kubernetes.io/component: controller app.kubernetes.io/instance: ingress-nginx app.kubernetes.io/name: ingress-nginx app.kubernetes.io/part-of: ingress-nginx app.kubernetes.io/version: 1.12.1 name: ingress-nginx namespace: ingress-nginx --- apiVersion: v1 automountServiceAccountToken: true kind: ServiceAccount metadata: labels: app.kubernetes.io/component: admission-webhook app.kubernetes.io/instance: ingress-nginx app.kubernetes.io/name: ingress-nginx app.kubernetes.io/part-of: ingress-nginx app.kubernetes.io/version: 1.12.1 name: ingress-nginx-admission namespace: ingress-nginx --- apiVersion: rbac.authorization.k8s.io/v1 kind: Role metadata: labels: app.kubernetes.io/component: controller app.kubernetes.io/instance: ingress-nginx app.kubernetes.io/name: ingress-nginx app.kubernetes.io/part-of: ingress-nginx app.kubernetes.io/version: 1.12.1 name: ingress-nginx namespace: ingress-nginx rules: - apiGroups: - "" resources: - namespaces verbs: - get - apiGroups: - "" resources: - configmaps - pods - secrets - endpoints verbs: - get - list - watch - apiGroups: - "" resources: - services verbs: - get - list - watch - apiGroups: - networking.k8s.io resources: - ingresses verbs: - get - list - watch - apiGroups: - networking.k8s.io resources: - ingresses/status verbs: - update - apiGroups: - networking.k8s.io resources: - ingressclasses verbs: - get - list - watch - apiGroups: - coordination.k8s.io resourceNames: - ingress-nginx-leader resources: - leases verbs: - get - update - apiGroups: - coordination.k8s.io resources: - leases verbs: - create - apiGroups: - "" resources: - events verbs: - create - patch - apiGroups: - discovery.k8s.io resources: - endpointslices verbs: - list - watch - get --- apiVersion: rbac.authorization.k8s.io/v1 kind: Role metadata: labels: app.kubernetes.io/component: admission-webhook app.kubernetes.io/instance: ingress-nginx app.kubernetes.io/name: ingress-nginx app.kubernetes.io/part-of: ingress-nginx app.kubernetes.io/version: 1.12.1 name: ingress-nginx-admission namespace: ingress-nginx rules: - apiGroups: - "" resources: - secrets verbs: - get - create --- apiVersion: rbac.authorization.k8s.io/v1 kind: ClusterRole metadata: labels: app.kubernetes.io/instance: ingress-nginx app.kubernetes.io/name: ingress-nginx app.kubernetes.io/part-of: ingress-nginx app.kubernetes.io/version: 1.12.1 name: ingress-nginx rules: - apiGroups: - "" resources: - configmaps - endpoints - nodes - pods - secrets - namespaces verbs: - list - watch - apiGroups: - coordination.k8s.io resources: - leases verbs: - list - watch - apiGroups: - "" resources: - nodes verbs: - get - apiGroups: - "" resources: - services verbs: - get - list - watch - apiGroups: - networking.k8s.io resources: - ingresses verbs: - get - list - watch - apiGroups: - "" resources: - events verbs: - create - patch - apiGroups: - networking.k8s.io resources: - ingresses/status verbs: - update - apiGroups: - networking.k8s.io resources: - ingressclasses verbs: - get - list - watch - apiGroups: - discovery.k8s.io resources: - endpointslices verbs: - list - watch - get --- apiVersion: rbac.authorization.k8s.io/v1 kind: ClusterRole metadata: labels: app.kubernetes.io/component: admission-webhook app.kubernetes.io/instance: ingress-nginx app.kubernetes.io/name: ingress-nginx app.kubernetes.io/part-of: ingress-nginx app.kubernetes.io/version: 1.12.1 name: ingress-nginx-admission rules: - apiGroups: - admissionregistration.k8s.io resources: - validatingwebhookconfigurations verbs: - get - update --- apiVersion: rbac.authorization.k8s.io/v1 kind: RoleBinding metadata: labels: app.kubernetes.io/component: controller app.kubernetes.io/instance: ingress-nginx app.kubernetes.io/name: ingress-nginx app.kubernetes.io/part-of: ingress-nginx app.kubernetes.io/version: 1.12.1 name: ingress-nginx namespace: ingress-nginx roleRef: apiGroup: rbac.authorization.k8s.io kind: Role name: ingress-nginx subjects: - kind: ServiceAccount name: ingress-nginx namespace: ingress-nginx --- apiVersion: rbac.authorization.k8s.io/v1 kind: RoleBinding metadata: labels: app.kubernetes.io/component: admission-webhook app.kubernetes.io/instance: ingress-nginx app.kubernetes.io/name: ingress-nginx app.kubernetes.io/part-of: ingress-nginx app.kubernetes.io/version: 1.12.1 name: ingress-nginx-admission namespace: ingress-nginx roleRef: apiGroup: rbac.authorization.k8s.io kind: Role name: ingress-nginx-admission subjects: - kind: ServiceAccount name: ingress-nginx-admission namespace: ingress-nginx --- apiVersion: rbac.authorization.k8s.io/v1 kind: ClusterRoleBinding metadata: labels: app.kubernetes.io/instance: ingress-nginx app.kubernetes.io/name: ingress-nginx app.kubernetes.io/part-of: ingress-nginx app.kubernetes.io/version: 1.12.1 name: ingress-nginx roleRef: apiGroup: rbac.authorization.k8s.io kind: ClusterRole name: ingress-nginx subjects: - kind: ServiceAccount name: ingress-nginx namespace: ingress-nginx --- apiVersion: rbac.authorization.k8s.io/v1 kind: ClusterRoleBinding metadata: labels: app.kubernetes.io/component: admission-webhook app.kubernetes.io/instance: ingress-nginx app.kubernetes.io/name: ingress-nginx app.kubernetes.io/part-of: ingress-nginx app.kubernetes.io/version: 1.12.1 name: ingress-nginx-admission roleRef: apiGroup: rbac.authorization.k8s.io kind: ClusterRole name: ingress-nginx-admission subjects: - kind: ServiceAccount name: ingress-nginx-admission namespace: ingress-nginx --- apiVersion: v1 data: null kind: ConfigMap metadata: labels: app.kubernetes.io/component: controller app.kubernetes.io/instance: ingress-nginx app.kubernetes.io/name: ingress-nginx app.kubernetes.io/part-of: ingress-nginx app.kubernetes.io/version: 1.12.1 name: ingress-nginx-controller namespace: ingress-nginx --- apiVersion: v1 kind: Service metadata: labels: app.kubernetes.io/component: controller app.kubernetes.io/instance: ingress-nginx app.kubernetes.io/name: ingress-nginx app.kubernetes.io/part-of: ingress-nginx app.kubernetes.io/version: 1.12.1 name: ingress-nginx-controller namespace: ingress-nginx spec: ipFamilies: - IPv4 ipFamilyPolicy: SingleStack ports: - appProtocol: http name: http port: 80 protocol: TCP targetPort: http - appProtocol: https name: https port: 443 protocol: TCP targetPort: https selector: app.kubernetes.io/component: controller app.kubernetes.io/instance: ingress-nginx app.kubernetes.io/name: ingress-nginx type: LoadBalancer --- apiVersion: v1 kind: Service metadata: labels: app.kubernetes.io/component: controller app.kubernetes.io/instance: ingress-nginx app.kubernetes.io/name: ingress-nginx app.kubernetes.io/part-of: ingress-nginx app.kubernetes.io/version: 1.12.1 name: ingress-nginx-controller-admission namespace: ingress-nginx spec: ports: - appProtocol: https name: https-webhook port: 443 targetPort: webhook selector: app.kubernetes.io/component: controller app.kubernetes.io/instance: ingress-nginx app.kubernetes.io/name: ingress-nginx type: ClusterIP --- apiVersion: apps/v1 kind: Deployment metadata: labels: app.kubernetes.io/component: controller app.kubernetes.io/instance: ingress-nginx app.kubernetes.io/name: ingress-nginx app.kubernetes.io/part-of: ingress-nginx app.kubernetes.io/version: 1.12.1 name: ingress-nginx-controller namespace: ingress-nginx spec: minReadySeconds: 0 revisionHistoryLimit: 10 selector: matchLabels: app.kubernetes.io/component: controller app.kubernetes.io/instance: ingress-nginx app.kubernetes.io/name: ingress-nginx strategy: rollingUpdate: maxUnavailable: 1 type: RollingUpdate template: metadata: labels: app.kubernetes.io/component: controller app.kubernetes.io/instance: ingress-nginx app.kubernetes.io/name: ingress-nginx app.kubernetes.io/part-of: ingress-nginx app.kubernetes.io/version: 1.12.1 spec: containers: - args: - /nginx-ingress-controller - --election-id=ingress-nginx-leader - --controller-class=k8s.io/ingress-nginx - --ingress-class=nginx - --configmap=$(POD_NAMESPACE)/ingress-nginx-controller - --validating-webhook=:8443 - --validating-webhook-certificate=/usr/local/certificates/cert - --validating-webhook-key=/usr/local/certificates/key - --watch-ingress-without-class=true - --publish-status-address=localhost env: - name: POD_NAME valueFrom: fieldRef: fieldPath: metadata.name - name: POD_NAMESPACE valueFrom: fieldRef: fieldPath: metadata.namespace - name: LD_PRELOAD value: /usr/local/lib/libmimalloc.so image: registry.k8s.io/ingress-nginx/controller:v1.12.1@sha256:9724476b928967173d501040631b23ba07f47073999e80e34b120e8db5f234d5 imagePullPolicy: IfNotPresent lifecycle: preStop: exec: command: - /wait-shutdown livenessProbe: failureThreshold: 5 httpGet: path: /healthz port: 10254 scheme: HTTP initialDelaySeconds: 10 periodSeconds: 10 successThreshold: 1 timeoutSeconds: 1 name: controller ports: - containerPort: 80 hostPort: 80 name: http protocol: TCP - containerPort: 443 hostPort: 443 name: https protocol: TCP - containerPort: 8443 name: webhook protocol: TCP readinessProbe: failureThreshold: 3 httpGet: path: /healthz port: 10254 scheme: HTTP initialDelaySeconds: 10 periodSeconds: 10 successThreshold: 1 timeoutSeconds: 1 resources: requests: cpu: 100m memory: 90Mi securityContext: allowPrivilegeEscalation: false capabilities: add: - NET_BIND_SERVICE drop: - ALL readOnlyRootFilesystem: false runAsGroup: 82 runAsNonRoot: true runAsUser: 101 seccompProfile: type: RuntimeDefault volumeMounts: - mountPath: /usr/local/certificates/ name: webhook-cert readOnly: true dnsPolicy: ClusterFirst nodeSelector: kubernetes.io/os: linux serviceAccountName: ingress-nginx terminationGracePeriodSeconds: 0 tolerations: - effect: NoSchedule key: node-role.kubernetes.io/master operator: Equal - effect: NoSchedule key: node-role.kubernetes.io/control-plane operator: Equal volumes: - name: webhook-cert secret: secretName: ingress-nginx-admission --- apiVersion: batch/v1 kind: Job metadata: labels: app.kubernetes.io/component: admission-webhook app.kubernetes.io/instance: ingress-nginx app.kubernetes.io/name: ingress-nginx app.kubernetes.io/part-of: ingress-nginx app.kubernetes.io/version: 1.12.1 name: ingress-nginx-admission-create namespace: ingress-nginx spec: template: metadata: labels: app.kubernetes.io/component: admission-webhook app.kubernetes.io/instance: ingress-nginx app.kubernetes.io/name: ingress-nginx app.kubernetes.io/part-of: ingress-nginx app.kubernetes.io/version: 1.12.1 name: ingress-nginx-admission-create spec: containers: - args: - create - --host=ingress-nginx-controller-admission,ingress-nginx-controller-admission.$(POD_NAMESPACE).svc - --namespace=$(POD_NAMESPACE) - --secret-name=ingress-nginx-admission env: - name: POD_NAMESPACE valueFrom: fieldRef: fieldPath: metadata.namespace image: registry.k8s.io/ingress-nginx/kube-webhook-certgen:v1.4.4@sha256:a9f03b34a3cbfbb26d103a14046ab2c5130a80c3d69d526ff8063d2b37b9fd3f imagePullPolicy: IfNotPresent name: create securityContext: allowPrivilegeEscalation: false capabilities: drop: - ALL readOnlyRootFilesystem: true runAsGroup: 65532 runAsNonRoot: true runAsUser: 65532 seccompProfile: type: RuntimeDefault nodeSelector: kubernetes.io/os: linux restartPolicy: OnFailure serviceAccountName: ingress-nginx-admission --- apiVersion: batch/v1 kind: Job metadata: labels: app.kubernetes.io/component: admission-webhook app.kubernetes.io/instance: ingress-nginx app.kubernetes.io/name: ingress-nginx app.kubernetes.io/part-of: ingress-nginx app.kubernetes.io/version: 1.12.1 name: ingress-nginx-admission-patch namespace: ingress-nginx spec: template: metadata: labels: app.kubernetes.io/component: admission-webhook app.kubernetes.io/instance: ingress-nginx app.kubernetes.io/name: ingress-nginx app.kubernetes.io/part-of: ingress-nginx app.kubernetes.io/version: 1.12.1 name: ingress-nginx-admission-patch spec: containers: - args: - patch - --webhook-name=ingress-nginx-admission - --namespace=$(POD_NAMESPACE) - --patch-mutating=false - --secret-name=ingress-nginx-admission - --patch-failure-policy=Fail env: - name: POD_NAMESPACE valueFrom: fieldRef: fieldPath: metadata.namespace image: registry.k8s.io/ingress-nginx/kube-webhook-certgen:v1.4.4@sha256:a9f03b34a3cbfbb26d103a14046ab2c5130a80c3d69d526ff8063d2b37b9fd3f imagePullPolicy: IfNotPresent name: patch securityContext: allowPrivilegeEscalation: false capabilities: drop: - ALL readOnlyRootFilesystem: true runAsGroup: 65532 runAsNonRoot: true runAsUser: 65532 seccompProfile: type: RuntimeDefault nodeSelector: kubernetes.io/os: linux restartPolicy: OnFailure serviceAccountName: ingress-nginx-admission --- apiVersion: networking.k8s.io/v1 kind: IngressClass metadata: labels: app.kubernetes.io/component: controller app.kubernetes.io/instance: ingress-nginx app.kubernetes.io/name: ingress-nginx app.kubernetes.io/part-of: ingress-nginx app.kubernetes.io/version: 1.12.1 name: nginx spec: controller: k8s.io/ingress-nginx --- apiVersion: admissionregistration.k8s.io/v1 kind: ValidatingWebhookConfiguration metadata: labels: app.kubernetes.io/component: admission-webhook app.kubernetes.io/instance: ingress-nginx app.kubernetes.io/name: ingress-nginx app.kubernetes.io/part-of: ingress-nginx app.kubernetes.io/version: 1.12.1 name: ingress-nginx-admission webhooks: - admissionReviewVersions: - v1 clientConfig: service: name: ingress-nginx-controller-admission namespace: ingress-nginx path: /networking/v1/ingresses port: 443 failurePolicy: Fail matchPolicy: Equivalent name: validate.nginx.ingress.kubernetes.io rules: - apiGroups: - networking.k8s.io apiVersions: - v1 operations: - CREATE - UPDATE resources: - ingresses sideEffects: None kubernetes-sigs-kind-49aeee6/site/static/examples/ingress/usage.yaml000066400000000000000000000023451524365506300260030ustar00rootroot00000000000000kind: Pod apiVersion: v1 metadata: name: foo-app labels: app: foo spec: containers: - command: - /agnhost - serve-hostname - --http=true - --port=8080 image: registry.k8s.io/e2e-test-images/agnhost:2.39 name: foo-app --- kind: Service apiVersion: v1 metadata: name: foo-service spec: selector: app: foo ports: # Default port used by the image - port: 8080 --- kind: Pod apiVersion: v1 metadata: name: bar-app labels: app: bar spec: containers: - command: - /agnhost - serve-hostname - --http=true - --port=8080 image: registry.k8s.io/e2e-test-images/agnhost:2.39 name: bar-app --- kind: Service apiVersion: v1 metadata: name: bar-service spec: selector: app: bar ports: # Default port used by the image - port: 8080 --- apiVersion: networking.k8s.io/v1 kind: Ingress metadata: name: example-ingress spec: rules: - http: paths: - pathType: Prefix path: /foo backend: service: name: foo-service port: number: 8080 - pathType: Prefix path: /bar backend: service: name: bar-service port: number: 8080 --- kubernetes-sigs-kind-49aeee6/site/static/examples/kind-gcr.sh000077500000000000000000000041651524365506300244000ustar00rootroot00000000000000#!/bin/sh # Copyright The Kubernetes Authors. # # 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. set -o errexit # desired cluster name; default is "kind" KIND_CLUSTER_NAME="${KIND_CLUSTER_NAME:-kind}" # create a temp file for the docker config echo "Creating temporary docker client config directory ..." DOCKER_CONFIG=$(mktemp -d) export DOCKER_CONFIG trap 'echo "Removing ${DOCKER_CONFIG}/*" && rm -rf ${DOCKER_CONFIG:?}' EXIT echo "Creating a temporary config.json" # This is to force the omission of credsStore, which is automatically # created on supported system. With credsStore missing, "docker login" # will store the password in the config.json file. # https://docs.docker.com/engine/reference/commandline/login/#credentials-store cat <"${DOCKER_CONFIG}/config.json" { "auths": { "gcr.io": {} } } EOF # login to gcr in DOCKER_CONFIG using an access token # https://cloud.google.com/container-registry/docs/advanced-authentication#access_token echo "Logging in to GCR in temporary docker client config directory ..." gcloud auth print-access-token | \ docker login -u oauth2accesstoken --password-stdin https://gcr.io # setup credentials on each node echo "Moving credentials to kind cluster name='${KIND_CLUSTER_NAME}' nodes ..." for node in $(kind get nodes --name "${KIND_CLUSTER_NAME}"); do # the -oname format is kind/name (so node/name) we just want name node_name=${node#node/} # copy the config to where kubelet will look docker cp "${DOCKER_CONFIG}/config.json" "${node_name}:/var/lib/kubelet/config.json" # restart kubelet to pick up the config docker exec "${node_name}" systemctl restart kubelet.service done echo "Done!" kubernetes-sigs-kind-49aeee6/site/static/examples/kind-with-registry.sh000077500000000000000000000057761524365506300264570ustar00rootroot00000000000000#!/bin/sh # Copyright The Kubernetes Authors. # # 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. set -o errexit # 1. Create registry container unless it already exists reg_name='kind-registry' reg_port='5001' if [ "$(docker inspect -f '{{.State.Running}}' "${reg_name}" 2>/dev/null || true)" != 'true' ]; then docker run \ -d --restart=always -p "127.0.0.1:${reg_port}:5000" --network bridge --name "${reg_name}" \ registry:3 fi # 2. Create kind cluster with containerd registry config dir enabled # # NOTE: the containerd config patch is not necessary with images from kind v0.27.0+ # It may enable some older images to work similarly. # If you're only supporting newer relases, you can just use `kind create cluster` here. # # See: # https://github.com/kubernetes-sigs/kind/issues/2875 # https://github.com/containerd/containerd/blob/main/docs/cri/config.md#registry-configuration # See: https://github.com/containerd/containerd/blob/main/docs/hosts.md cat <•UAG2R­Óç¹âøµàö³ßõ³àô²áõµáö±Þ÷�¾Î³Ùí¸âø]¹Ì8¨ºJ«ÉB»ÆTËÊ’«³¥ÁέØé,³·-•Ãj™ç_™ãB¬Ê©Ýñ»âùwŠ’„–ž€¥¬%¤ŸL“Ö©Àõ™µôJ�ÌŒ¾ÏµßöYhpgu|dt{NdkLkšn”ägŽÞGb…r�š`z‡g|†gz…OepAYgIfƒIf�Gbp…µÎÿÿÿg£¦[tRNS '­ÁÂÁ¿À®7Nö½_úúy.füøðŽdûÙ¯[ZùíCFò—d¹ìççèèëÍfQ:&''/[ì§ŒbKGD‘ ¾štIMEã !¶i�:¹IDATÓc` ˆŠ‰KHHHJIËÈ22�ää•”UTÕ˜Y€êÑ11±qñ ‰IšZ¬@m�ä”Ô´ôŒÌ¬D]=}6C£ìœÜ¼ü‚¢âcS3s‹Ò²òŠÊªêšÚ:K+kvÛú†Æ¦æ–Ö¶v;{G'çŽÎ®îžÞ¾þ .® CÝÜ=<½¼}|ýüYAÖrr‡„††…GDrƒ]ÊÃÅÇÏÀ ($,BœßÜI*z²hŸô%tEXtdate:create2019-02-13T00:20:33+01:00Q§•%tEXtdate:modify2019-02-13T00:20:33+01:00 ")WzTXtRaw profile type iptcxœãò qV((ÊOËÌIåR# .c #K“ D€4Ãd#³T ËØÔÈÄÌÄÄË€H J.êtòB5•IEND®B`‚kubernetes-sigs-kind-49aeee6/site/static/favicon-32x32.png000066400000000000000000000032201524365506300234260ustar00rootroot00000000000000‰PNG  IHDR szzôgAMA±� üa cHRMz&€„ú€èu0ê`:˜pœºQ<bKGDÿÿÿ ½§“tIMEã !¶i�:1IDATXÃí–Mh\×ÇçÞ÷Þ|JiF¶>¬H¶šÆù¶›Mê´ôƒ.ZÚRZºh»(I)$„C»hi›UH³0”4!¡�@“�¦�PR7PR«Ô qmÙ‘%Ër$�¬ÑŒf4_oæ½wo#YcÅYGÿÇånÞ=çþιv°ƒ|Þ!GO•rÀ/”0ˆ€ô6çìæ²�ÝÖZ0ká%ªÏÊlKÀ0–‡úê·{ÒÚS"·F}#ó'YK-°¬4£ Ø~}ôT¹¶ G:%ïÙ•ÐÞ`Ò¡V«â¸.^,Þ©ï3éÙ!6�Ôîd±ýØzÛžá…£§ÊÜŒ„r• …Ýžî0É4Oe­ȖΛñEn\Ÿø6Uéò„‘´ãjáçÀÀ¶ôÆ%ßd\Õ‘ÞnV-[™E„V–yÿZžM‹ŒµH\»¶ì¸3ÑÇឬ…ÝIE¾¡}ó³ÐØgŽü§lŸ{äFœ§îOóûÓëI%E&¨S\,Cè“CDPÀTi•7.]D\­t»b7õl›¹ô5*¦I#³�Ã=#xJïvT`‚#�€5#úäщõïXxKàâ³wwìþë’üòžt\‰E!Q«A}½„RBvp¤cJ„l,Á=á`!GŸ§¾`Èõ Sÿµñï¦x}qÅ�œ—«KL¿™w¯N ôW¦¾‘+NþáÇGnŸ8øÜ,NÚ•MÁ‰Z \, /†‡¡º<‡!H÷pVŠ„CÂ@”#ùáÆcŒ9T›† —]œ!L3Ÿ®°¯'ƒÙ°2å)OÇ2�Ù1fNPS]_ÜØß�‘‰ëmXÁ´›–—(•ÖØ»wŒTÌki)˪nA·&UèFŒpLjÃPŸÆo+jMËÌ9�¨*TÃ¥&Š6ZüÀà{ÃA¼ÿ>I7g3¦±h”êXpå'ƒöw§«íba…âôjÕËùeŠÅée’þ ôé K£Œ…0‚î¤�tÖ|®þÿ4]ÃcŒÞ¾ß—×Ãf5°¯ªì—O†‡9¼«6óʃ¿ùÖ™Õoç:þ Q�Ê�J¦ºÿa.V «~4)ÂËÛ%¿Þ"¼—¯‡ÿ(ªÄÈmßü©[�U­zÚD!6 ±Æ`­ÙºDQˆÒˆÖ(í ŽgÚ™á+…Ôž²©ÓÀ1k¹ôiw›à*¹ÔŠì*ñîØžß›»úßãZŒ6<»Y»¹Y¬%éÇ{ÿòÏÇ_}±7_ñ�@dûêoýü¿ð¨`_é‹OöÆ‚+¶ó6ø4È|-ùthd1åÙÇ+MáÉãïܱ­A´á­˜žXõ¿ëñõ_½qrÛúþ×0´²° U‡þdÈv°ƒ[ÅÇ]€XNú™í%tEXtdate:create2019-02-13T00:20:33+01:00Q§•%tEXtdate:modify2019-02-13T00:20:33+01:00 ")WzTXtRaw profile type iptcxœãò qV((ÊOËÌIåR# .c #K“ D€4Ãd#³T ËØÔÈÄÌÄÄË€H J.êtòB5•IEND®B`‚kubernetes-sigs-kind-49aeee6/site/static/favicon.ico000066400000000000000000000353561524365506300226540ustar00rootroot0000000000000000 ¨%6  ¨Þ% h†6(0` $DT�DT�DT�DT�DT� DT�DT� DT� DTŽ­DTŽÏDTŽ%DTŽgDTŽÝDTŽaCW– BX˜ÁBY™ð?`©Xÿ\R<ÿZP;ÿYO;ÿXN;ÿWM:ÿUL9ÿUL9ÿVM;ÿVM;ÿVM;ÿVM;ÿWM;ÿWN;ÿXN<ÿYO<ÿZP<ÿ[Q=ÿ]S>ÿ`U?ÿcW@ÿqcHÿ×½�ÿõÒ’ÿñÇzÿðÅtòðÅuZðÄs–óÐ�ÿúä¼ÿ×Ä¡ÿ`VCÿZRAÿg_OÿldTÿmeVÿjbRÿe]Lÿg_OÿyrcÿqiZÿWN=ÿVM;ÿVM;ÿVM;ÿUL:ÿTM;ÿUM<ÿTM<ÿTM<ÿTM<ÿTL:ÿUL;ÿUL;ÿSK9ÿŸ‘uÿøâºÿöÚ¦ÿñÈ|ÿðÅtÎðÅuðÅuðÄt§ôÔ˜ÿûå½ÿ¶¥†ÿTK9ÿkcSÿ¾»´ÿ§¢˜ÿ¨£šÿ¥ –ÿ’Œ€ÿ¯«¢ÿ¡œ’ÿ­¨Ÿÿ]TCÿVM;ÿVM;ÿUL:ÿbYHÿž€jÿª€fÿ©€gÿ©€fÿ©‚iÿ{lZÿUL;ÿVM;ÿUL:ÿk`Kÿáͨÿúä¼ÿôÕšÿðÅuþðÅusðÅuðÅt»õÖ�ÿ÷â»ÿ’„jÿRI7ÿldTÿÀ¼¶ÿ–‘…ÿ›•Šÿ¥¡—ÿ©¤›ÿ˜“ˆÿ¤Ÿ–ÿ²®¦ÿ]TCÿVM;ÿUL:ÿZSBÿ­„kÿé}Iÿét<ÿèo5ÿèq8ÿêw@ÿÓ‰dÿrfUÿTL:ÿVM;ÿUL:ÿ«›}ÿùã¼ÿ÷ß³ÿñÊ�ÿðÅtÓðÅuðÅtðÅvË÷Ù¤ÿíØ³ÿthRÿSJ9ÿe]Mÿ…~qÿ_WFÿxqbÿ`WFÿbZIÿXO>ÿf^Mÿ‹„xÿ[RAÿVM;ÿVN=ÿ—|gÿä}Kÿçv?ÿîžxÿë�cÿì—nÿë�`ÿço6ÿÉjÿd[KÿUL:ÿTK9ÿvjTÿíØ±ÿùã»ÿõÖœÿðÅuÿðÅu}ðÄtñÇxÏîÓ ÿ²¢„ÿ[R?ÿTK9ÿUL:ÿUL:ÿTK9ÿVM;ÿTK9ÿTK9ÿTK9ÿSK9ÿVL<ÿUL<ÿTK;ÿ‚p^ÿÞ„Xÿæj.ÿë�cÿ÷ÕÅÿò·šÿöÒÀÿñ³•ÿæp7ÿçu?ÿ°…kÿZRCÿSJ9ÿ\R?ÿÀ®Žÿøâºÿ÷àµÿò̆ÿðÄtåðÅu;ðÄsñÇyÖèÍœÿ®ž�ÿ”‰sÿ‰�oÿŠ‚oÿŠ‚oÿŠ‚oÿŠ‚oÿŠ‚oÿŠ‚oÿ‹‚pÿ›�oÿ…†.ÿ~‚ÿ…#ÿÅš`ÿéu?ÿì•lÿõDZÿñ²”ÿ÷ÓÂÿôªÿó¼¢ÿð¯�ÿé|IÿáˆWÿ’„Aÿ˜Š\ÿ¦—{ÿ¿­�ÿöà¸ÿøâ»ÿöÜ«ÿò˃ÿðÅvËðÃqMñÆeøËm6öÇr•÷Èq'ðÄsðÇyß÷Ü«ÿúä¼ÿÕÉ®ÿ¨¡Žÿ“‹yÿ“‹xÿ¥ž‹ÿÀ¹¦ÿ¿¸¥ÿ¿¸¥ÿÁº§ÿãÔ¦ÿµÀ ÿ¥¸ÿ¥ºÿË´Gÿçs=ÿë�dÿôÅ®ÿõʵÿøÙÊÿøÛÎÿó¼¢ÿñ´—ÿçq9ÿß‘Tÿ­žÿÞÊ€ÿüå¿ÿúã»ÿøâºÿøâºÿøâºÿ÷ß³ÿõØ¡ÿõÒ“öÙēԦ©š×¯­–üp˜¹„ uïAxæ ðÄsñÇzßöܬÿøâ»ÿÓǬÿ�•ƒÿ„|iÿ„|iÿŸ—„ÿ¾·¤ÿ½·¤ÿ½¶¤ÿ¿¸¥ÿáÒ¤ÿ³¿ÿ¤·ÿ¤·ÿ½»5ÿæ}Fÿçv@ÿôÁ©ÿóÀ¨ÿ÷ÓÃÿôưÿôůÿì˜oÿæk2ÿÔœTÿ¥˜ÿÜÉ€ÿùã½ÿøâºÿøâºÿøâºÿøâºÿøâºÿøâ»ÿûäºÿ·¿½ÿ5t¾ÿ(uÎÿ.qÁývÛçyë-ðÄsñÇzßöÜ«ÿøã»ÿßϰÿ¹±�ÿ²«—ÿ²«—ÿ·°œÿż¦ÿȾ¨ÿȾ¨ÿͪÿèØ¨ÿ¶¿&ÿ¤´ÿ¤´ÿ±»ÿãŒPÿè{Hÿò¸œÿó¼¢ÿõDZÿò¸œÿôÄ­ÿì•lÿçt>ÿǤHÿ¦™ÿÞË„ÿùã½ÿøâºÿøâºÿøâºÿøâºÿøâºÿøâºÿüä¹ÿ±ÀÇÿ!wÚÿ,qÂÿ8m®ÿ'sËîyí0ðÄsñÇzßöÜ«ÿøã»ÿóÞ·ÿº°•ÿ©¢Šÿª£‹ÿ­¦�ÿãÑ®ÿôß¹ÿó߸ÿõà¹ÿøâ¹ÿØÊtÿ¥œ ÿ£šÿ§ŸÿØŸZÿéxEÿæo7ÿé�Pÿò·›ÿì—nÿæp9ÿès?ÿæ�Vÿ¸¸.ÿÈÃQÿôÞ±ÿøâ»ÿøâºÿøâºÿøâºÿøâºÿøâºÿøâ»ÿüäºÿ´¿Âÿ)uÍÿ&rÊÿ!tÕÿ,qÃíxæ/ðÄsðÇyßöÜ«ÿøã»ÿôß·ÿ¹¯“ÿ§ ‡ÿ§ ‡ÿ«£ŠÿæÓ¯ÿùã»ÿøâºÿøâºÿùã½ÿá̉ÿ¥– ÿ£“ÿ£”ÿ°ž$ÿÍ¡OÿáŒSÿçr<ÿèzGÿçq;ÿå‚JÿØ¥Sÿ½»5ÿ¦¹ÿÒÏeÿúã¾ÿøâºÿøâºÿøâºÿøâºÿøâ»ÿ÷ß³ÿõסÿõÓ•úÒÜÚ� ¤á—¦¤ÿn—¹°uæ\xçðÄsðÆxÙöÛ©ÿøã»ÿöá¹ÿŸšÿ§Ÿ†ÿ´«�ÿº°”ÿìØ³ÿùãºÿøâºÿøâºÿùã½ÿà̈ÿ¥– ÿ£”ÿ£”ÿ¢“ÿ£– ÿ°Ÿ%ÿÊ¢LÿÞ•VÿÖ¨Rÿ»¼2ÿ¨» ÿ¤·ÿ¤¶ÿÒÎeÿùã½ÿøâºÿøâºÿøâºÿøâ»ÿöÜ­ÿòË„ÿðÅuáðÄrfñÆg÷ÉpSõÇrÅöÇrGðÄtðÆwÒöÚ¦ÿøâ»ÿùã»ÿß̧ÿª›~ÿðܵÿòݶÿøâºÿøâºÿøâºÿøâºÿùã½ÿà̈ÿ¥– ÿ£”ÿ£”ÿ£”ÿ£”ÿ¢”ÿ£• ÿ«ªÿ¨» ÿ¤·ÿ¥·ÿ¥·ÿ¤·ÿÒÎeÿùã½ÿøâºÿøâºÿøâºÿ÷àµÿò̆ÿðÄtëðÅuMðÅuðÅu ðÅuðÅtðÅvÊõØ£ÿøâ»ÿùã»ÿáͨÿ«›}ÿøâºÿøâºÿøâºÿøâºÿøâºÿøâºÿøâ»ÿïÚ¨ÿÚÆ{ÿÙÆyÿÙÆyÿÙÆyÿÙÆyÿÙÆyÿÙÅxÿÙËvÿÚÒvÿÚÒwÿÚÒwÿÚÒwÿÚÒvÿêÛ›ÿøâ»ÿøâºÿøâºÿøâ»ÿôÕœÿðÅuÿðÅu…ðÅuðÅuðÅu½õÖ�ÿøâ»ÿùã»ÿą́ÿªš}ÿøâºÿøâºÿøâºÿøâºÿøâºÿøâºÿøâºÿøâ»ÿùã½ÿùã½ÿùã½ÿùã½ÿùã½ÿùã½ÿùã½ÿùã½ÿùã½ÿùã½ÿùã½ÿùã½ÿùã½ÿùâ»ÿøâºÿøâºÿøâ»ÿ÷ß³ÿñÊ�ÿðÅt×ðÅu!ðÅuðÄt§ôÓ—ÿøâ»ÿùã»ÿæÑ¬ÿ»©Šÿøâºÿøâºÿøâºÿøâºÿøâºÿøâºÿøâºÿøâºÿøâºÿøâºÿøâºÿøâºÿøâºÿøâºÿøâºÿøâºÿøâºÿøâºÿøâºÿøâºÿøâºÿøâºÿøâºÿøâºÿøâ»ÿôÕ›ÿðÅuÿðÅuzðÄs“óÐ�ÿøâ»ÿøâºÿ÷á¹ÿóÞ·ÿøâºÿøâºÿøâºÿøâºÿøâºÿøâºÿøâºÿøâºÿøâºÿøâºÿøâºÿøâºÿøâºÿøâºÿøâºÿøâºÿøâºÿøâºÿøâºÿøâºÿøâºÿøâ»ÿøâ»ÿøâºÿöÚ§ÿñÈ|ÿðÅtÑðÅu ðÄswñÊ�ÿ÷Ý®ÿ÷àµÿøàµÿøà¶ÿøà¶ÿøà¶ÿøà¶ÿøà¶ÿøà¶ÿøà¶ÿøà¶ÿøà¶ÿøà¶ÿøà¶ÿøà¶ÿøà¶ÿøà¶ÿøà¶ÿøà¶ÿ÷à¶ÿ÷à¶ÿ÷àµÿ÷àµÿ÷àµÿ÷àµÿ÷ß²ÿöÛªÿôÓ•ÿñÈ{ÿðÅtäðÅuIðÅuCðÅuïñÈ}ÿñÊ‚ÿñÊ‚ÿòË‚ÿò˃ÿò˃ÿòË„ÿòË„ÿòË„ÿòË„ÿòË„ÿòË„ÿòË„ÿòË„ÿòË„ÿòË„ÿò˃ÿò˃ÿò˃ÿò˃ÿòË‚ÿñÊ‚ÿñÊ‚ÿñÊ‚ÿñÊ�ÿñÉ~ÿðÆxÿðÅtýðÅtÑðÅuIðÅuðÅuEðÄteðÄseðÄshðÄskðÄsmðÄspðÄspðÄspðÄspðÄspðÄspðÄspðÄspðÄspðÄspðÄspðÄspðÄsnðÄsmðÄslðÄsjðÄsiðÄshðÄsfðÄseðÄtgðÅthðÅuUðÅuÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿþÿ÷ÿÿþÿçÿÿþÿÿþÿÿàÿà?ÿÀÿÀÿÀÿÀÿÀÿÀ¿ÀÀÀÀÀÀ¿ÀÿÀÿÀÿÀÿÀÿà?ÿàÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿ( @ DSŽDSŽMDS�DS�6DSŽ5BW–AAW—à<^©N7eº.7e¹07e¹07e¹07e¹07e¹07e¹07e¹07e¹07e¹07e¹1AYš´BW–™ðÄr ÿÎh‡�›2No¯ÞLp²òMp³îMp³îMq³îMq³îMq³îMq³îMq³îMq³îMp³îMp³îLp²îLo±ø]w©tÿÞd ðÅuðÅt$ðÆwµñÈ}ÒÞ¸rÔ½¤tó²�vÿ®štÿª—sÿ¨•rÿ¦”qÿ¥“qÿ¥“qÿ¦”qÿ¨•rÿ«—sÿ®štÿ²�vÿ¸¡wýÓ±qÝïÅvÍðÅt¦ðÅt7ðÄsYôÑ�ýèÑ¥ÿpTÿfYAÿfZBÿcWAÿ`U?ÿbWBÿ`U@ÿ\Q<ÿ\Q<ÿ\Q;ÿ[Q;ÿ\R<ÿ]S=ÿ`U=ÿeX?ÿpbGÿÓº‹ÿõÑŽÿðÆvÒðÅt$ðÅuq÷Ù¢ÿÍ»šÿ]SAÿ�Š~ÿ˜’ˆÿ“�‚ÿމ}ÿ›–Œÿ†€sÿUL:ÿUL:ÿ^UCÿ‰mVÿ�mUÿ�nUÿzfQÿUM<ÿSJ9ÿ™‹qÿ÷à¶ÿóΊÿðÄsˆðÆx†ùܨÿ«œÿWN=ÿ™”‰ÿ�‰}ÿ‘Œ€ÿ�‡{ÿ‘‹ÿ�‰}ÿUL:ÿXP?ÿ¤vZÿç€Nÿè{Gÿé~KÿÙSÿ|gRÿSK:ÿg]IÿÞʧÿøÜ©ÿðÇyáðÄs-òÉ|’åÌœÿ€t\ÿVM;ÿaYHÿ\SBÿ[R@ÿVM;ÿYP>ÿ`XGÿVN<ÿ�oWÿáxEÿîšrÿò¸�ÿò¸�ÿê‚OÿÌ|Sÿl^KÿUL:ÿ­�ÿøâ¹ÿóÐ�ÿðÄsœïÁlÿÐeÿÏfòÉ}œâÉ›ÿ¯¢ˆÿ�ˆvÿ‹ƒpÿ“‹yÿ™‘~ÿ™‘ÿ§�zÿ‘•'ÿ‹•ÿÎ�Kÿì‹_ÿó¿¦ÿöϼÿõDzÿñ³•ÿèLÿ°�Eÿ® oÿλšÿöà¹ÿ÷Þ±ÿóÐ�öòË‚˜ßÁ„Tܾ€”¶²–3+ÿæ¡ñÈ}¢øÞ®ÿàѲÿœ•‚ÿ‹ƒpÿ«¤‘ÿÀ¹¦ÿ¿¸¦ÿÕËŸÿ³Àÿ¥»ÿ̦:ÿé~Nÿó¾¤ÿöоÿõʶÿð©‡ÿä{Bÿ¸ž-ÿäÐ�ÿûå¾ÿøâºÿøâºÿøá¸ÿùß°ÿ ®³úNƒ»û3yÇÖwåPæ¡ñÈ}£÷Ý­ÿé×´ÿ¶­—ÿ¬¥�ÿ»²›ÿÕȬÿÖÉ®ÿåÕ©ÿº½1ÿ¢­ÿ¾ª/ÿè€Mÿï¡}ÿó» ÿñ²“ÿí�hÿÞŠHÿ·«0ÿéÔšÿùã¼ÿøâºÿøâºÿøâ»ÿûä»ÿ…¨Ëÿ nËÿ-p¿ÿ!uÕkåœñÈ}¢÷Ý­ÿóÞ·ÿ·­’ÿ¥Ÿ‡ÿ½²•ÿöà¹ÿøâºÿùã¼ÿͼ`ÿ¡“ÿªšÿΖCÿâ~Cÿê„Uÿè~JÿÝ�DÿÀ°/ÿÅÈIÿøâ¹ÿøâºÿøâºÿøâºÿ÷Þ°ÿ÷Ù£øª²¬ßp”±÷G…ƹrÚ:ñÈ|šöÜ«ÿ÷áºÿÁ´•ÿ¼°“ÿ×Ǧÿ÷á¹ÿøâºÿùã½ÿÍ»`ÿ ’ÿ¡’ÿ£•ÿ±š!ÿÈš;ÿ­0ÿ«¹ÿ¢·ÿÄÇGÿøâºÿøâºÿøâ»ÿöÚ¨ÿñÊ€ëðÅvgóÆt#òÆuròÆt(ñÇz�öÛ©ÿúä½ÿ̹—ÿß˦ÿúä»ÿøâºÿøâºÿùã»ÿá͉ÿȶUÿÉ·WÿÉ·WÿȶUÿɾVÿÉËRÿÉÊRÿÉÊQÿÛÓzÿøâºÿøâºÿ÷àµÿòÌ…ýðÄrxïÂnðÆw€õÙ¤ÿúä½ÿͺ˜ÿß˦ÿúã»ÿøâºÿøâºÿøâºÿøâ»ÿùã¼ÿùã¼ÿùã¼ÿùã¼ÿùã¼ÿùâ¼ÿùâ¼ÿùâ¼ÿøâ»ÿøâºÿøã»ÿõÖžÿðÅvÌðÅtðÅtiõÖžÿùã½ÿì×±ÿñܵÿùã»ÿøâ»ÿøâ»ÿøâ»ÿøâ»ÿøâ»ÿøâ»ÿøâ»ÿøâ»ÿøâ»ÿøâ»ÿøâ»ÿøâ»ÿøã»ÿøâ»ÿ÷Ý®ÿñÊ�úðÄshðÄsMò͈ùõÙ¤ÿöÚ¦ÿöÚ¦ÿöÚ¦ÿöÚ¦ÿöÚ¦ÿöÚ¦ÿöÚ¦ÿöÚ¦ÿöÚ¦ÿöÚ¦ÿöÙ¦ÿöÙ¥ÿöÙ¥ÿöÙ¥ÿöÙ¥ÿõØ¢ÿôÓ–ÿñÊ€úðÅt”ðÅu ðÅuðÅu|ðÆw•ðÆw–ðÆx˜ðÆx›ðÆx›ðÆx›ðÆx›ðÆx›ðÆx›ðÆx›ðÆxšðÆx™ðÆx˜ðÆw—ðÆw•ðÆw”ðÅv”ðÄt“ðÄsaðÅu ÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿûÿÏÿøÿÀÿÀÿÀÿ€ÿ€€/€€€€€ÿ€ÿÀÿÀÿàÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿ(  R2G?XœQ9`±:4gÄ&5gÂ'5gÂ'5fÃ'6cº/>Yž[AU•ñÆvñÈ~d–�ƒ¹yŠìw}ˆçv}‰çv}‰èv~Šèy€‹ëŒŠ‡ÍçÁyfòÆs÷΂FÝÂ�ò‡z`ÿ†|gÿ…zgÿpeOÿgYAÿƒfIÿ�fIÿpbGÿε…ÿõΆ—ì·TøÑŠZ½¨‚ùphYÿ|ugÿ{tdÿkdNÿškLÿä”nÿÞŽgÿ…bGÿš�rÿóÕœíðÅvCÿá7ÿÞ\ôΈdÔÀ™û’Šwÿž–„ÿ¬¥€ÿŸ¤%ÿÖ“LÿõÀ©ÿôµ™ÿÌ�JÿϾŒÿößµÿóØ¥Ù�£¬¯BÂ[ôΉfî׬ü³«’ÿÎÁ¥ÿ騭ÿ·³,ÿÕ-ÿç™jÿã™_ÿʬBÿñÝ©ÿùâ»ÿòܱøx›ºð3xÆŽRÿó͇_òÚ¬úξ�ÿíÙ³ÿøâ¸ÿ̹]ÿº¨8ÿÉ«JÿÆ»BÿÊËTÿöáµÿöÚ¦úñË„yл‰.«­™òÊ�NôÚ©öçÓ­ÿøâ¹ÿøâ¹ÿöàµÿõß³ÿôà³ÿõá²ÿöáµÿ÷Þ±ÿó΋½î¿fðÆx'óÐ�­ôÔ™ÁôÔ™ÁôÔ™ÂôÔ™ÂôÔšÁôÔ™ÁôÔ™¿ôÓ—ÀòΉ®ðÆw7ïÀjì¸Vì·U í¸W í¸W í¸W ì¸W ì¸V ì·T ì·S ì·SÿÿÿÿÿÿÿÿÀ?€€€€€€€ÿÿÿÿÿÿÿÿkubernetes-sigs-kind-49aeee6/site/static/images/000077500000000000000000000000001524365506300217645ustar00rootroot00000000000000kubernetes-sigs-kind-49aeee6/site/static/images/kind-create-cluster.png000066400000000000000000001465261524365506300263550ustar00rootroot00000000000000‰PNG  IHDRXm·ËŸ IDATx^ìÝ{\Ž÷Çñ×�R#$B29“SsJMˆ•óœç|"ç5Œ0Q"Í¡lŽ9l9 ?Û̱ƒ³ÍÙ’DY…Í1Dõ{Ü”T÷}çNŸë¯=tÝßëû}~¯»]ヌK$"‡ˆ€ˆ€ˆ€ˆ€ˆ€ˆÀk ($`½¶¡ " " " " " I°äF- HÀÒ¤#" " " " " °ä- HÀÒ¤#" " " " " °ä- HÀÒ¤#" " " " " °ä- HÀÒ¤#" " " " " °ä- HÀÒ¤#" " " " " °ä- HÀÒ¤#" " " " " °ä- HÀÒ¤#" " " " " °ä- HÀÒ¤#" " " " " °ä- HÀÒ¤#" " " " " °ä- HÀÒ¤#" " " " " °ä- HÀÒ¤#" " " " " ¹°Š3pÅx.ÏžÄ\†6sæ@Øp5®Âøã¹|­lŠWtðçÞ:#FkÃÊXõÐz�ëàr�ÏVÕÄjÖå¼Cx¯®¬4=‚K5] ž(ßæ”¹�ܾ�ß+BiŒˆ€ˆ€ˆ€|`¹°Vº1`A9}"UØñõmTv3Ã~ñYw�¡=“¿w Ôm£ò®5 XZ¯ó{°Ôí÷7ÖÕF Ùu�)[å~ÀzëÚþÆ�åB" " " "ð^äBÀ*Šíè¸ôjFM³ÄýMTø1VŽÎê0 ÍÞ±‡M�–†ªO—€¥Ú(§gHÀÊ©œ|ND@D@D@>4­¬R_ndïÈ;Lé6›"“‡1Ê“«Ö-)sy�jòvdgÌRZèg<ÿ);MhµüAòj¸sæÔj*gp=ÃË:ÃÁ†Þ„6æ\@šØròûiì®ã‚K³œšÝ�æîñ<© ],úÎÅ{B7U* wBXê‚Ó´�ÜR³ÊÊÓ2,…y~\@�}i>òî¨Sg8,‹á·r‹q>Û�Ñ_ÔÇÜðÇ–� ëØ?¸�Z� ôX°œ½­1Mˆ Ð×�èîӨ헃)‚ÆM;×�!mêc^è1öã?u.¿ß|Ñú¢N\›z™!ŽQtšá„ƒ…1 ·Ž3§£-IÓ2UØ8óƒ[šÕ©D©B ܹx€ ³œçF¼²uû]�k©Ýmj´² XÉýõ«ÙJ´^Áä —gÂ_çlKU—)U1ÂnÒb¼†¶ VI}߉äL 7N}—’ mWÝ_j ɉ" " " " h=`ÙyŸeEQWªØGßåßpÙqBÎ×`©;‚•Õz&eÀÚב=½Zâ[q1{gVgÇà¦|ËLöz=bP‰~ü‘e·q³þc¾Á'(‚|Uº1ÓÏ��—ÚÐpÆyµ×ܤX«K;²1p6eÖwå³ñÁ¤D´®Ér Vòû޾ÙàdOŸ•áèÛÎáðîžüõùÇ Ht°ò:ǾþQxôΊK%é꽯ÏÍ8ým5ÍÖ`éÙ2çÔ.=X†ó˜ìºüSëž (ÀèyG_´]ùÀ~ÝÛ’Gýq>…�!±³ê€eÌ&®¨ghÒÕ×ò§Øp”Л *¶wÇož-�í*040)b%*ú][ý…šm×FÀÒm»Šk¿XòKŸ>ÌØ�~™Úص1娬Ÿ8›þ «¥¶«ê/ ~GÈ©" " " " h=`sªphþî7¯E@ׯؕîÙYƒº©|Ð~QVv+°SŒ:â_s&çZãcÞœEù�9Ú�µšá{»!Þ—ö`½¨*ŸÎ½ú¢HSçý„; ‘ÅDNªYéä€U”I­wÒæçIZÒ·?y’ÙçU¬­V‹¨S{*ç“>[÷3Gi·Þ’ºa p`é�­Ôó©M]�ÐäÒM†tu†nš¬Â_nåšÏGL¨ô‹Ò¬^©±ò�ý†O)æÔ­Å·g2,ªSäÔ°,ã_`ð¾ÆT��nw’ìBFޝõj'¨Ûvm¬âÃùgz4}J÷`ÓÓln(-µ=ÛþRó~–ÓD@D@D@D@4ÐzÀRN+ßÖ™¯´Å®^Œ¢9½m näHòü)õmŒ`í2e¬QO¶TuåÔ1kæ—lƒŸÁ0#ú±½† sb‡|Í»ü¯V+ñîjÚ÷g›š›t$¬ÍíHx`€a�øw³¤ß–»™·WEÀú­Œ %Z-OùJžr6 Ø–jÊ)g%G±7Ò�È®ÆôÛšR9… ó.ñéâŒ`)°]I@ã¥XÖ™NJTË´¾I#"žQt)öå«ÅÕ4,dÅP�‰ôi^óbÑ˧ƒAcùÙSfØž´‘Âìú]Ýk©¼ËÔo»6¥záhôCØtˆã'òÛªõ½“1¬f³±‹m϶¿TÚÈ " " " " 9È…€•Zå6í®<š· Ϲô¸;ÛÞ?§­!R§ÆZ XS8yÔ&)`­üh(�_²£¦5^±#þÇ�ˆNŰ]Í$•Eݓ֦¦ k‡wùlô#ê´gåõL> "`e»¦§äHöDNãrîL X ˜¶�&Ë4 X�F²»ÑR,ëªXצ†ÑÆlØ«S>MÔ1,˨à3¸¬`ä_‚.ÞáI¢C;Êè³m)=4H½€¥ÖµÔº¹P·íªV4¿š¹¤[ƒU—#çÔ(Ý,åÌNcjÙ·ÆÎ¶ mº÷À¾h0޵;²*ýÈav÷¼mO^ƒ•E©Ã#爀ˆ€ˆ€ˆ€äH wVʬ#Ýæœë-Öp&X“ £h‚ÏÕ�Ôœ];Ÿè¬˜ÝÁ#XY¬«Ö|¾—6›c1îÊN9=^Úäâqu\fÂ37¬šy–±Ý¯°ö,¹ñ;U<Ò¹ôfË­”ža¡Á$O“Ó益ü˜ q¶ì 5 õz±åž/÷»£ßÖe;Eì¦Ó¶–V6ý®ÎµÔì@uÛôßú/sc:a2pg†5y >�A€¥åí|H"T4fad-üm^XéëeЇ_o/!~Pa:¯OÞj%éÈîž× í°Ô¼ ä4в€ÖVý¡ßawk3[ÝÅÁÓ‘È ?SaÁFÆÏ¶×Oš�`Qš¯ö‡ãú`<�»-âBl‰ ‰¯n:ñ:+ÊÙÁ‰y š2÷õ§x`T‘:M;ѳä6z¸æh“‹¤ —ήßaìÓ„†®'’wÊK=^'`)7¹øî,AmƒèÔh$»ïÀfæ^\,97I³5XÊ�æžÚÅ—÷óÕ˜…„?§x�¶t7ÿ×¥'_Úä"»Õ†õùîâ~ÚnkIç}Ä*ŠÒÌó6�mÈ“å/,ý®úZj~KÔl»²´êSOqbp8_µÅ/Wb‰½w—')9Ѱ÷¢| ãÞÀï0•‡mbïü¶<ðnø"`•ì<�1¦'ØpœK·óS½·7þ³+âgU×3éë›ý=¯nÛ%`©yÈi" " " " e­,S‡ñLttÀÊ¢¦Æàq4ö¬Æmì<Ý×¼öú dzvÉ×´¨^’ºqìz±M»!·ßfy«WörçÙéiX~âFˆrAU#X‘Ê:ébÑ{6³Çu£‰E ôbc¸ò÷~¶.˜„Ëfu÷–u›veÉ%ûþ�ÓK,ØÐÆ’ÑÁzªëœ²M»Êm¿u*Òsár<ºVÇàñ.nßÊ­#)·T“)‚)ýaÜ”qsÝܶå Åz�µ®ƒÿÛ�¦ú�]µaþz£ð[<že¸÷g7/âŒ�/ƒB3L²îwíõWRãÔh{ÒyùëñõºULnc�±þ3‚†š¦½üZQ�~+60»sEcÂ9²a%-½h�6E°�½«Ý»ceQ“‚ñÜ ÝÏZ�QŒ[þʨ©6Ú®º¿4ÿ.Ê'D@D@D@D@T h=`¥]²8Wº1`AšL T]g9CD@D@D@D@D@ÞJ�Ü X+ÆsyÐøœ¿ë­$“J‰€ˆ€ˆ€ˆ€ˆ€ˆ@æ¹°„\D@D@D@D@D@>, XVKkE@D@D@D@D@rQ@V.âJÑ" " " " " –€¬«¿¥µ" " " " " ¹( +q¥h�K@VúþÎòå¿oÛMQÏ�#¸TÓâ‰òmNÙ‘ûÔ~!òÛ֚ܨ�¢ƒ?÷Ö1ºX’^úœÝ¡õ~WöÏA>[U«Y—s£yR¦ˆ€ˆ€ˆ€ˆÀ[*�+KaÒœñ^Sк.å Çó_ÄIvÌÁÀåçó&(ìøáÚ6*»™¥½6³1´gò÷„ºM`cÔ[Úc/Uˈ!»®3åb«ÜXê¾6M|®²Ýt …ºœeÊ©£4þáã—úV£€¥õ~Ï,`©®ó¡“‹ˆ€ˆ€ˆ€ˆ€䪀öVáö¬8µ�ö7—à2enêc^¿ }+ÿIÿo·Ÿ«ÍÉ¢ð·*h@–V–6»$©, XZ'•E@D@D@DàÐzÀjàu‘ƒýOЫb6>ÈZ¡¨Sצ^fˆc�f8á`aL­ãÌéh‹Çqåçt±è;ï ÝhT©(Ü !`© NÓvr+¥Xg~pëO³:•(U(�;°a–3ãüÃ’ƒ\aGvÆ,¥…~Æz©©‡‡e1üVn1Îg2ú‹ú˜ÞãØ²tû·_œfÎóüðìgMé„«ú,ãfw,ýr0U̸ cçº3¤M}Ì =#æÂ~ü§Áå÷›éê•]ÀJ®ó¯f(Ñz“>Už �c`°-U]N¤”c„ݤÅx mA­’ú<¾É™@oœú.%DC5úKYœê~W監z4(ã–¼?. ÆŽ¾4ùw”—ÑV¿ëT Ç‚åÌèm�iB�¾~DwŸFí—ú]u�Õi¹œ#" " " "ðv h=`M?ÇÈ¿»Q¼×–lG«”Ú×½-¹qÔ—áSØK1«XÆl"à ”qÜÆ Ï"ø�ùŸ òUéÆL?7>^jCÃÉS MºzâZþ›ŽzSAÅöîøÍ³%°]†¦+Sw+˵8ÉaeG߇lp²§ÏÊpômçpxwOþúüc†$ êÍü›ŽÑxöÁ²‹Eé0{ s;•嬫…fkqôl™sjƒ,ÃyÌv]~Ž©uO” `ô¼£é¦Y¾~ÀÒm»Šk¿XòKŸ>ÌØ�~™Úص1娬Ÿ8ûRÆÌ~š¥:ý•°²ëwõ¾. êOÛÏÊâ3¨5ò#~ÿ«Ÿmè·.-ѧX«K;²1p6eÖwå³ñÁ¼’û_«ßu°ò:ǾþQxôΊK%é꽯ÏÍ8ýmµtý®ºÎêµ]Îx›´°ÖÜ�£þ"+,&�ʶÝÊ€uçsêÖâÛ3ʸ”îP4ÄûÒ¬UåÓ¹W_üÀÔy?áNhd1‘“™–^–q‡/0x_cªNH7¥¥€µÕjujOå|Òµkà~æ(íÖ[R×# ÍY|}õ}jQoFXr팇°;ʇ"îé´Uß…¿ÜÊ5Ÿ�˜Pé3¥°z壯°ŠæŸéÑô)݃MO³©[v†ôW¶ý®šFí3’VQ&µÞI›Ÿ'QhI{ÜþäIf%¨XÙ÷»Kol¥žOmêz„&—n2œ «ó0tÓ¬ßÕnœœ(" " " "ðÖ äiÀºîE—b_²-C¾¢øp‚¯ùb—ÿU·Ä»«igÜ?ù3…¬ê1‘>Íkc^¬ zùt0(bÌ#?{Ê Û“6Ò£¥€õ[J´Zž2’<Ýn@°-Õ”ÓíJŽdOät";Ó?µA k¼Ãƒ±]RCƒ,¶ " h¼Ë:ÓIydÏâzý€E©^øZFýöâøÉƒü¶j=Gïd ½ÙŒ`©Û_)S³ìw-~M’Öæv$<0À°À ü»YÒoËÝ̯ "`eßï£ØéNdWcúmM1SØ0ïrŸ.֤ߵØx)JD@D@D@D Ï´°<ÎÅ1âôïõ«Ê)‚צ†ÑÆl{2,“ÿãND§â Øžñ‡©Ve|wƒŒãKÐÅ;$£hÌÂÈZøÛ¼°Ò‹ôá×ÛKˆT˜Î럧ýD‘�¡:ý•RÒ X©ïÁz\—‡™ðÌ «fÞ„eÌì¯Õïö,¹ñ;U<ÒÝ[½Ùrk¥gh¸öNƒ_ ýb”2ÖãAÌMf±5§¶ÎÑ Zrªˆ€ˆ€ˆ€|ðZXwá§“þ´üç&LYÁÁhÌ´¡O¥¿0%m›vUÚe‡ìàļŠM�ûúS<0ªH�¦�èYr=\I¤>ß]ÜOÛm-ià¼�XEQšyþÁæ± y²Üáå€Ei¾ÚŽëƒñ4 ± $&$¾úN®×yÐ~±ÉÅMförâÇóEéെï»T$dš†Úz¶Ì=µ‹/ï-æ«1 Nñ:ménþ'®KO¾TïêSOqbp8_µÅ/Wb‰½w—')yÓ°÷¢| ãÞÀï0•‡mbïü¶<ðnø"`•ì<�1¦'ØpœK·óS½·7þ³+âgU×3é¿Ùªî¯ä²Tõ»¶¾‘¯¼«Üpv�øcŸ&4t=ñòèêkõ»Vß�%¨m��d÷ÝØÌÜK€‹%ç&åÞ¬êÓNsÚµ<¿t*B¯_3åÕÖ9Úê)GD@D@D@>í,å@‰i &}7…/[ÕácÃxþ»rœmsFà¸"äE8Pý ­‹EïÙÌ×�&%Ћ�áÊßûÙº`.›#’ú&½Qø-O‹2 Ü¿{‹³›qÆÆ—A¡¦ú dzvÉ×´¨^’ºqìz±M»!·ßfy«WörçÙéiX~âFjny®(G·ù~ÌêgƒiüvÍ[Ì;3©½Ô¯HÍî'㦌›ëÆà¶ (W(Ž˜Ðƒ¬uÌøßn¼\Nþz|½n“ÛX`¬ÿŒ ¡¦i/ÜUT ßŠ Ìî\‘ĘpŽlXIDK/Z¤M,dïÆj÷îXY”Ť`lÒt­×iÃÊèuUœÎëâ„ED@D@D@D@Dà=�€¥Í6k‰cÓX‚¶"âI)ì&û³qÈ5+÷bsò›~åx�$`i³sËdÍúÉ´¬f†‘^,QǶ0×y¾Ç³{Á”6+ e‰€ˆ€ˆ€ˆ€ˆ€䥀¬¼Ô—k‹€ˆ€ˆ€ˆ€ˆ€¼W°Þ«î”ƈ€ˆ€ˆ€ˆ€ˆ€䥀¬¼Ô—k‹€ˆ€ˆ€ˆ€ˆ€¼W°Þ«î”ƈ€ˆÀ‡'ð¹­.Å�trÔð„øygϳxawŽ •‰€ˆ€|аòªû³|¹m^UHÛ×­ƒgÈA>[U«Y—µ]xryï³aåo8°§9«êµféÍ4¾W^ œ�¬Ö}Þ@ŸæÎ�¢…R?ä¶k�/›"òYÏ匿c«bû“œ]+|cq*¾ ù”ÿKÓàÐÑᩎ1 DsærÊÚ5ø¸œ*" " ™ ¼ÃKAó¯³Û©ÿn·ÿ+Ì›, ÝséÛ×û†öLþÞ�P· lŒzûª÷ú5z¤ï­aQzÿ/”)áí¨>îÈK/|Ö(`iÝ'—ûTaÇ×¶QÙÍ,íeÙÙ݈ŠúÌ>¿‡µõ©ëòú·l¶%ärÛUÕ¾tG<ç ã3«úÔ*oÄC¿V”pÜýâÅíª>þâçj–S°þ0æzޤ£uEŠ$Ü%ò„#[O$@í¤Cƒ1kñúÒšZM)¤xÀµ¿ƒX5ý+Üþ¸ž¡ÞŰ5”¯OÙcùí)ÍÛ„¯7¦B¾yjÒ™S†­É¯£@Wt�¹�øDxžqñ‰˜ëÞ dŒOó›Ð`@Œ,µo"9QD@D@•ÀÛ°òÆÀ-UUNýyrÀÚÑr;_vòæïçiŸKxAHäÃý�ZÝ«Ëyªòø�TUõÞæŸW�‰ãíùŲžá/WT£€¥õ6ærŸj°ŠöÝÂ¥¹OqªÐ��¹þž¹\n»ª¾ªÜŸ9#ÊsõämêNò¦íþ¶9 Xj”£¨îÂ�C.üÕƒé+öñ´åj™¹zÇÔ~ãD>:¹ÓäéQN\Šâ¿g%hèèÁ¬¾ü`[—cʸ“vèµ[Í?Ëupú¸¿æà�ì©ëÆÇ3±ŒùŠréPB_A�ø›è+Ðû¨4q pÿ9Äc`L= Xªî=ù¹ˆ€ˆ€ÆoGÀ2Vs€@uÛ�°¶7]‰µÅDNfú1Ëbø­ÜbœÏ6dôõ17¼Ç±e#è:ön¿øŒv“ã5´µJêóøN$g½q껔俋'—ó«ÙJ´^Aò³\y&üuŽ�Á¶Tu9ñ¢¤¢N\›z™!ŽQtšá„ƒ…1 ·Ž3§£-Ç�îœ95…šºÀó0¼¬«0^ùï/5ë¬0ç‹y~xö³¦tÂU}–q³‡;–~šLÉSóZÑÔ弆µ¦v)]î_>ÈÚé#ãÆ‹e :è±`93z[cšA ¯ÑݧQû¥úèbÑw.޺ѨRQ¸BÀRœ¦íT?W+�T6ô&<°1çŠÐÄÞ�“ßOcw\šàÔì4wÿ e7°qæ·þ4«S‰R…¸sñf93.}»ÔrÖR»Rî�Zç8ÒvuêLçB†û:cÀR˜÷áçÀÔØÑ—æ#ÿàŽ:>)÷³Êï…ÖúTÅ÷«°#;c–ÒB?ã—ø);MhµüÁ«ßnÅ'Ìøû ŸÿÏK×3)Ly{ïgEþÂ+¬Gì¿wˆM?ÍÌ™ýÇðwÛrŒØ“öƒR#÷îJû²N¾4s­“�ŸÃùd»œ¬’Y•“ŸNþ×Xn8ŽÊíW%ßOÚ:òufýݵ˜»WÁÚ+òåRõ:ὂüCKÑuƒÚ)îE©+¦ìL:<üš�?R`¤ó˜{1{ 1‘²ešƒŽŸ=ân|QþyœÈ(“Pºß�€¥­î•rD@D@Ò?Í“Ç=Êù}ÊpuðÕ¤kÔX;ú>dƒ“=}V†£o;‡Ã»{ò×ç3$ ùÉE·í*®ýbÉ/}ú0cO4úejcׯ”c³~âlÒš¬ëÞ–Ü8ê�Ëð)l ‰¥˜U,c6p%]û²\“|­ì묠ÞÌ¿9à�gŸ,»X”³×0·SYκZh°æI�kA¹Ñ{8íQ˜Ÿ† ÂsïCªöýžÕÓk²µmœ”nÖÁÊëûúGáÑ{8+.•¤«÷¼>7ãô·Õ^Ô§Œã6NxÁÌ7øE�¯J7fú¹ññRÎ8¯ù�˜•¡2`íëÈž^-ñ­¸˜½3«³cpS¾e&{½1¨D?þH“®ž¸–?Ŧ€£„ÞTP±½;~ól lW�¡�Ê訞³vÛeÊè}W˜ÚŽRƒ^1I°V—vdcàlʬïÊgãƒy%†¼Ö=¦½>UýýJù^h0‚U¨ûF.ûæã« �ð¿Ÿú½z{ïçêÓNsÚµ<¿t*B¯_Ó�Þ”dxP8“Â:PÖ)0e:¨Îû/â|ªåGíÏpärÀR4Á÷ŸíTðÀ_V. ´-‹î�sìúq#çý™òÇ%M~O§œ ™ÈÝ IDAT›¯8 G­`ó¬lt¨ÂWû3î(¡¼ï/3ñ|[J ÒøwAjÀº]Ö§ç_£ÿø�îŸG‘OBb::º˜º Šç|Tt7Ÿ*è[4”Ïÿ©+#X9èNùˆˆ€ˆ@öy?‚5>i0†iÚUY­ÁŠ'|î§Tw„Ä”`´ÕjujOå|Ò%jà~æ(íÖ[R×#,é_ŠæŸéÑô)݃M™þñT³€uçsêÖâÛ3/Oƒy©…*~³­³¢9‹¯o£¾O-êÍHnÆCØåC÷´@£Z4¹]ÙûX0õôIµÆ|XpÊ`r˜Ó“®¿§p`é�­Ôó©M]�ÐäËš 'èê< ÝRê£hˆ÷¥=X/ªÊ§s¯¾¨š©ó~Â�Ð(ËQÈlZ‘]À ¬À£Žø×œÉùƒÖø˜7gQ~g„v`m…føf:µ,ã_`ð¾ÆT�pÔqÖv»M𹺋FK,©3=Å2ArÀ*ʤÖ;ióó$ -i�ƒÛŸdº4æµî1íõ©êï—†KQƒi'ŽðÅŽÆÔœx"ÝÃøÛ{?g°ÀØqîQtýØ‘]ÊÜaþ ‡Cœ8Ô¬2cÿÊø;$—–nþ÷`5v/±×k,Ó~ýãÏ&ñ£wkÂGV§õ²ª­¤?£ú4N�ø–ZùuàÞI üœÑÿ˸Kù:øÿÇz“o0uXš]åŬÍ=ùt�_zz$&&’?_éF Pè Ð)N�âcèQì?ZDJÀÒ�ZNPC oV~åô8 .0è¼ø+´µN:%«5X‰<¹q�Kw’G ’¦–q¡D«å)áOžÚ7 Ø–j©SûJõÂÿÐ2:臰7èÇOä·Uë9z'õáF³€uÝ3Š.žd[6ù*ëðÔ¨sɑ쉜Ndgcú§^Da�wx0¶Kjh<‚•­�¢#kﯣøXS–¤>ö(hâs•]¶Kùäw.”ÅÞHw"»ÓokJ£6Ì»ħ‹SêS|8Á×|±Sö}†#ñîjÚ÷ÏÞ+³Û"»€µË”±F=ÙRÕ•SǬ™_² ~ÃŒèÇö6ÌQf¼BV õ˜HŸæµ1/V½|:1摟=e†í!Qgm·KáÀ²èß©5ׂ†³Óy&$¬ÍíHx`€a�øw³¤ß–»™iT¬lû]›}ªòû¥YÀ*Øy-——d|¥ö¬ú7}ÓÕøî¼�÷sáþü~u6·{™1`[<\ŽpöË l«¹�6ù8µ�¹°ôzóëý54ÛÝŸÒíפŒXÐû1,7žŒyÓ…D«û+:é†-Œy3 ­@ãSqkw›iÍÛâšñ—£‚V~·ÙRÑ�òM aŒ{°þ3÷¤Å¥Š<}†žnqtutÐM¼FÅtóåCOO—§qqèTækË~|Ñ@F°4éO9WD@D@-�¼ Xk!iÑ”50Ø«V]3œ¤þAuÖN¡cL-ûÖØÙ6¡M÷Ø ƱvGV%mE¨|p‹æW3—tk°*àrä‚e²+Œ6fÃØó+Û:«ó௩ÁQ­Reà›Æå& Ü™°0'lM–¥,“ÿãND§â ØžŒZO>I­€5…“Gm’ÖÊ�†ñ%;jZãY–QÁgp7XÁÈ1¾]¼Ã“D3†þv”ÑgS¦)©ã¬õv}ÂÌóÒå÷FÉ£hïzeÀÚÔ” aíð.¿‚íƒþaD�ö¬¼ž‰›Š€¥úÓbŸfûýÒ$`Ueò±ôÛÓ‹q½´Ã¢ZSyßÊû¹ =6G±àa?Ìú]ÄåÄ)ºÿÑ€šS’'(¿|ärÀR´`yÌVš®jDåqG_¬m³™w™=-×ÒÐb§4øŠ¾|ªò�[Ú…ý¶¦­ßL:)?½½Ë’„�uZÇ3 ¯ñbŠ Ùdš½„nÂ#Š-Cn£§¸‹"1N¹‹çèý(�":ÏÛ°w¾–€¥¡µœ." " Z o–+ÐØ (ÿ;G‡–Vú:ôá×ÛKˆT˜Îë•Cm >�A€¥åí|’ÿ‚«hÌÂÈZøÛ¼ù€¥œºvmõÕ¢^Ê4GŒ³+Ê£LÌ>€VgÚé Ê0EpÔÞ+̸Ý�â]6§°gÉ�ß©âQ;Ÿ”¿oôfË­”ž‘²&LaÍ÷á{i³¹1¶ÏQ÷¿nÀºÞ‹-÷|¹ß­ý¶¦ì" cÇ¢ˆÝtÚÖ2yˆ:ÎZo—�×ŰÆð+LÚ­&6³€µÎˆÑÅÚ°òqu\fÂ37¬šy–1·¾NÀÊÍ>}åû•°”Ó#wRsvºû(CûõÛ¯æÊ*\«´fÙ+Ó<Õøƒys?+ô‹QÊX�17y˜É mõ»¬ãÚ↵cJ@{~©S‡Lfˆª–ªk%“fUNq†^eÖ}GL;ù§ÜútßêbßR®é—^¡ÞµR;±�^`ʵuü™—7 ¬Ë¬Ðƒ´øéêfÞðlM¤¬»fãè{d±O ¹a:Œùã©Xð2Õ ž@7á>!Q±„D?£\!pnБÆw]%`åø°|PD@D +�¼ Xe�)£Wšo•ú4–å6í‰OnpáÒâÕÜœ¢dçiŒ1=Áæ€ã\º�Ÿê½½ñŸ]?«Ú¸žI¾œaï-Dùƽ�=Þa *ÛÄÞùmyàÝðͬ›/Üdf/'~<_”^kø¾KEB¦i¾É…ª¾òÎû8=Ý�ÕŽ™µï!UúÌcÍŒÚlÿ¼2Ž;•¨ƒÕwg jD§F#Ù}·63÷àbɹIikÂÊÙÁ‰y š2÷õ§x`T‘:M;ѳä6z¸j¼°ýõF°êóÝÅý´ÝÖ’ÎûˆU¥™çlÛ�'ËRÚ§nr‘½³¶ÛU°×ÿˆš÷€~¥ûñ{º×$åú¤5X)K™¾Ê g׉ï0öiBC×/� ¼NÀÒbŸªóýJþ–•æ«ýá¸>Oãn‹¸›@bBbºû¢"ãÿ<Í�¿ZQå«F¯’tÔÚí3/îçìÖ`%5]¯=k®­¦nô”�ý‘ góòÑ”©^#ÝJ ]·�Þ¡Î|6eOc¯rù¿—,²¿–êrŒºm tu]‚Ç ä[å,‡oñ[Ô™(ç´\òòPi–×ÒùŒikÚr[ 'Ânð@ÿc>íû-n˳o`5:®NÛÃ5©ýå'ð×¹~X×`òßšÿ;}Àšxa/zùò‘ϰ0AwúsæACj�¢kéEüw?Ž»‘ñè?g@m XšKË'D@D@ÔÈ›€¥NÍTž“õ‹†ã#æa[ákþLTï�«�½«Ý»ceQ“‚ñÜ ÝÏZ�QŒ[žöࢨ@¿˜Ý¹"‰1áÙ°’ˆ–^´ÐdŠ !·ßfy«Wö£æÙéiX~âFˆš‰(ÊÑm¾³úÙ`…]ós³ïLj/µÀ&ãÈYZªç£|AY³É?â5´%5KêòàÊŸl˜9’Ñ«BÒmÓ^‘ž —ãѵ:�ïpqûVnµI¹¥éׄébÑ{6³Çu£‰E ôbc¸ò÷~¶.˜„Ëæ•=žuU*w|±+«)‚�¿Þ(ü�§E™îß½ÅÙÍ‹8cãË Ðt;™©å¬�v¥k¾®K.ÿL‘1åè¾ñå1¬ÌÞƒU²ïÿ8½Ä‚ m,¬§ÚGÝ{LG;}ªÖ÷+¥ùú dzvÉ×´¨^’ºqìJ·M»^ëå\Ykއ…=?fºHçí½ŸU,òÑryÛåð¸JØzgxûx[Ù??çA�šSRv;MFÌöZj•£OÝa‹˜7¶#õË$îÆi¶ùŽcèwû_Y*›åµ5¼ô;7­KåÒÅ0ÔyÄ��ƒlZà„•g3Œ^A5דüå°ŠZ�ç‘¶Žš¿Ò½høY™>„¨Dºüû´,ñ z(t05ŒD‡ç$$&’Ÿ˜4]°¤¾Eÿqç©^qyѰúÔr¦ˆ€ˆ€ïpÀR£uÒ):mX½ŽÂ£ŠÓy]ÞÔù!Y½N[ß�sÙ‘AëµëO½¸ü:õ}o>kÎ×ûÏ2êïÏ©�Ägù_<Êa‰Ý>Ë�IÑ|9útBBË{J\†é¸9*L>$" " I‹òúEÃÒ 9(?�5ë'Ó²šFz±DÛÂ\çaøÏñ¢¶œÕã}ÿ”8¿ï=,í­ HÀÒ*§&" " " " "ð! HÀú�{_Ú." " " " " U XZå”ÂÞ'�VMËsåêB¯ÜŸš%mÈE X¹ˆ+E¿›�ZTfÂ0;êÔ2#..ž-;Ï1s~!wßÍI­E@D@D@D@Þ˜€¬7F�ƒ eù¢Ø”õV~¤ž!ùlUM¬fåífä ti]• Cí°¬nŠž^òŽd±÷ã¹qé1×#rúÆUVü~ˆ“!²­ß[y;I¥D@D@D@Dà-x‡ÖË/NLˆãÑíHNîZÎTçÙ¿ÏÀ†öLþÞ�P· lÌðÞÑ·àÞÑBò>`)ƒUÏÏ«ó�SSjT+…ž®NR»?ˆçzØcþ»ñ”ÂÅóSºÊGÕ%öñ3¶_Àc~§.ü«)BD@D@D@Dà}x{–rÀÀPû7Ék‡Ãïôl3›S Q²NÜæ»`se"Ÿ|êÅ¥÷©§Þ˶ämÀªU©?/ì�E•覫‡ñ\¿˜¬ KV…ŒuÓôŸÇAÌeV®?Ì€yy;êö^ÞÒ(xÇÞŽ€e¬æ�êŠ&¬íMWbm1‘“)+í¼Ÿ+³L¨`˼kÉÿXÔ)€kS/3Ä1ŠN3œp°0&áÖqæt´Åã¸ò ],úÎÅ{B7U* wBXê‚Ó´�)yOÁç?Ýå—2«™m×�Í)’Eàüá øîð‹—cØ8óƒ[šÕ©D©B ܹx€ ³œçF|ºf©¬O wΜšBMåsýó0¼¬«0>©ž©‡‡e1üVn1Îg2ú‹ú˜ÞãØ²tû·_œfÎóüðìgMé„«ú,ãfw,ý4™’§æµ0¢©Ëx kMíRºÜ¿|�µÓG2&}Ûu*ÐcÁrfô¶Æ4!‚@_?¢»O£öKõQÕÊÆa7i1^C[P«¤>�ïDr&Ч¾K Q÷öº4«Ê†9½Ñ)Oâ¸~é1ÿ^J!ãü˜V1 p1½´Òž=M VÜŽ€„ç¬ ŒæË…‘\MNøò>`)gd)ÃÕaÀWòÌ–Ñ�]Üô1bZU+f]I X×½-¹qÔ—áSØK1«XÆl"à ”qÜÆ Ï"ø�ùŸ òUéÆL?7>^jCÃçI$9`ýÚã!›7¢›_ùjŒeÛÞ µ©ëš|Y“á]�‡¡[J}Ôê (><˜¦GÓ§t6=UÝ‚¬ÎèÒÄœ 3Û÷,�S¡±(t?¢a�üPPô$F‡Á¿W!1¹EéeÀàó^.ŒË9¨|RD@D@D@D€¼ XÊ‚ç@]`:ÐÐøUC)›\ )Ab‚24é £óœOo`Jÿüð÷³Ý›4bäE—b_²-C¾¢øp‚¯ùb—nÐ"õƒ‰wWÓθ?Û“Ö£Ñm·Š')'˜ó'F¥…ù(ö+Ë-dÅP�‰ôi^óbÑ˧ƒAcùÙSfØR/�m}Òß”*Öoe\(Ñj9’>Sž �c@°-Õ\N@ɑ쉜Ndgcú§6Za�wx0¶Kjh<‚•íµY{ÅÇšâ°ä¿”(hâs•]¶Kùäw.”ÅÞHw"»ÓokŠ„Â†y—ƒøtqJ}Ôê  T/ü-£ƒ~{ƒqüäA~[µž£w2vnößð.�ÍØ0½÷>ÇuñEÌM 0²›9úz âïGÿèz–¬ÙsÇ£åWˆˆ€ˆ€ˆ€ˆ€¼$�7k-$-š²æ{sÒ+)›\´øƒ>Ÿ{q:î¢#¹~?ýj§är“×<…ÑÆl{2>ƒ›Œ øw":gÀö¬ÐSV±¯1i½‚‡)Õ­0ñ(ç‡ý‰CRÀ*˨à3¸¬`ä_‚.ÞáI¢C;Êè³m)=4襀•e}4X¿šM Ä‹ú$¬�Á¶TÍ…€•íµÔ XÊÀ7�ËL¸35`5`NØ>š,K XjõE �Ž1µì[cgÛ„6Ý{`_4ÇÚYuSý{©Ë§%Ùàf—4E0îY"Á'îÒ°FaŒ óñìþUž=¸‘ea?íû§eò^,õµåLø0ò&`¹�­€ò¿std¾+³¢² X k¾ßK›Í�±w$ez[ÆR’Öÿ¯¦y¹QìKÊùé´ö&þ¥¦P®™/Ñz½ØrÏ—ûÝŠÑokÊ”2;Eì¦Ó¶–o>`)§^ÛFýEµ¨§œ2¨<Œ³+Ê£LÌ6`Q�i§O0(ÃÁQ{¯0ãv?ŠwÙ@œÂž%7~§ŠG9ì|RF~ z³åÖ JÏHY¦V_dÒÃ}øõöâ¦ózåШzG›blpý�ä�Ù_:ßý‡§²NkkÜgøÊXõ.$g‰€ˆ€ˆ€ˆ€|0y°Ê=RF¯r¼†FK (;d'æU$hÊhÜןâ�QEê4íDÏ’ÛèᘶÉE÷þ\0€Ás�¡k7…Ÿ–våò°ªtX­Ü·¯>ß]ÜOÛm-ià¼�XEQšyþÁæ± y²Üáͬ›\Üdf/'~<_”^kø¾KEB¦i¾ÉEö Ê;ïãôtCV;dÖ¾‡Té3�53j³ýóÊ8îTv²Vß�%¨m��d÷ÝØÌÜK€‹%ç&¥­ SÝP²ó4Ƙž`sÀq.ÝÎOõÞÞøÏ®ˆŸUm\ϨÿÝm]§ ¿|[Ÿ‚úùx– ƒžNÚZ«GÿýÓ¯NŒ{žÈÁ‹qLÛǹ›šMIT¿fr¦ˆ€ˆ€ˆ€ˆÀ»*�7K+ZÚ XIÛ´÷žÍìqÝhbQ½Ø®ü½Ÿ­ &á²9"iG¾¤5XÅ2þFK\¾¨…ÑÃP¶ÏÉÏý)k  ½Qø-O‹2 Ü¿{‹³›qÆÆ—A¡šL4dàöÛ,o¥ÿŠÒ³ÓÓ°üÄ�’7žPzP”£Û|?fõ³Á4þ »æ-æfß™Ô^j��—º[Œ«y-Œi6ùG¼†¶¤fI]\ù“ 3G2zUHÚõ:é¹p9]«cðø·oåV‹‘”[š~M˜ª¾€Bön¬vEYL Æs't?k=F1n}x#�Yßp6•óóÝ€ $¨‰q�çÔ(‘¼îêþ¿×ˆ½ŸöR¶ø„D.ÞLdöÖxvž—`¥•¯°"" " " ï¡À;°Þdo$¬õ†Ã(ÜÑ?iŽwòÐiÃÊèuUœÎë”[§Ë‘*ðY�² jS‹îu"ÐQÀÝÛ×yp÷.‰‰pó>ü”Ȫ¿ i?9D@D@D@D@D  XjÝïhÀ2k‰cÓX‚¶"âI)ì&û³qÈ5+÷bsêNjµÿÃ8É ¸v1dX«â$>ŽáŸèXÖý ƒàá;›ª?Œ¾“VŠ€ˆ€ˆ€ˆÀÛ" K­žxGVù�¬Y?™–ÕÌ0Ò‹%êØæ:Ã÷x޾©¥õ®ŸT±˜‚^Ÿ*Xµ'�«É{àË!" " " " j HÀR‹INÕ°TÉ" " " " " " –€,µ˜ä$xw*˜•¢óg�1*T˜Rf¦|ôÑ«;R¦oM|B{cù¦ßß�FJME@D@D@Dà-�€õ–vŒTKr*0ºWg é*ßžœHõÚµ¨ge©²¨[·ÿeè¸éœ»¬|-�" " " " 9�€•^ÎÌ™aÃ9Ô¸ ã�ç”ÐV9¯Q…<û¨¢_.ÿ™é]ëPÚ0ÿ®hE Çݼ´»ùûêó–´ë«Þ]1)h€ŽŽå«Tæ“z5IˆO >>ó­uòéËðñî;–g·Ž\XD@D@D@Þ�w3`)ìø!jõVÇjÖå ý CûŸÿeC©‰˜}öw4é%C{&ï@¨Û6FeòAåu¯m£²›ö‹ÿ˺dUåhR§wì\½®ˆYaÂì¦]YpþÏŸÅ—�¡ïšÏ;ÖïF èÚҞ†¨V¹Ÿ6jÀí˜[ÜŽN{qrú1.^Œ†9ÑCÖ;ö}“ꊀˆ€ˆ€¼}oOÀÊ™?f�+ɨ½Lm‡é�À—GG(�óþpÆŸm�Ù°=~öš îƒök^æ]þx¹ñq~P0¶U]8ñ.7$}Ýßá~Ÿ2l_tiC\\qO3ßž?þüÄÅ=cô¤™ ‘¬÷å¶•vˆ€ˆ€ˆ€ä�ÀÛ°L€ÕÀ PŸ-¹ÁÖrS(Ùb)…Ç$ü»J¬nYŠÁ��X¹K¯r4]�TXQ§®M½ÌÇ(:ÍpÂÁ˜„[Ç™ÓÑåTÀîœ95…šºÀó0¼¬3L,ìÈΘ¥´xe¯€§ìt4¡Õò”—%©*Ëbø­ÜbœÏ6dôõ17¼Ç±e#è:ön§6]aÎóüðìgMé„«ú,ãfw,ýjf2b§Â˸ cçº3¤M}Ì =#æÂ~ü§Áå÷›)4¢©Ëx kMíRºÜ¿|�µÓG2Æ?Œø¤3Ô©sò9;G¹ò'íHàöòtSUú(/§ªíÉ×úÕl%Z¯ ù}Éå™ð×9ÛRÕ%-Ö©êwg~pëO³:•(U(�;°a–3ãRÛ®µ~WÖQÎê|7^>ç[§~téÜš{ÿÝãÞ¿w3- �Qaôôóã<É“ã¡áš_D>!" " " "ðB ï–ò‰\®¾ê÷Œ™ó†ŷ˜û߯U"—æ4¤Á~ÿw7Ú—bH`òÊåƒöuoKnõÇeø6†ÄR̪–1›¸’ÖШ;’‘e9)A¤ïC68ÙÓge8ú¶s8¼»'}þ1C”séÔ›ù7£ñì3‚e‹Òaöæv*ËYW Í–ž-sNíbЃe8�YÀ®ËÏ1µîÉ€rŒžw4it¯Üè=œö(ÌOCá¹÷!Uû~Ïêé5ÙÚ¶ Nq/ÖŽlëœfXÁågûÒÈb"'³êÎl|T·]³€•]¿›tõĵü)6%ô¦‚ŠíÝñ›gK`» LŽ—IÇk÷»ö�Õý¦LÒ—ÎZòäÉbÆfú±� ~DB|"_»Îæ„,uiå<ÈT ïÖø¤¦Y)Z® fC†˜ÌÆêÄJ íü‡n~¢üäª<êÀÊ*¶Ì»–\¦2`Ýð)ÅœºµøöÌKÛ-¼|Ñ7°¶Z-¢Ní©œOºz ÜÏ¥ÝzKêz„�¢9‹¯o£¾O-êÍH™®e<„ÝQ>q¯¦QÀ*üåV®ù|Ä„JŸ±(uÀê¥[0õôIµÆ|X0ÉK¥L½ï ÓcúbÒõâRF°²­sº2_+`©ÕvÍ–Zýþ¢þewøƒ÷5¦ê„t»œ¼vÀÒ¾³ºß–‰ƒûС��>âáƒäñ¾ŒGAÂIbŒsóâDhÆ5�ê^IÎP äMÀʯœŠÔ¦Ý�ûvˆù7>×™ÿÙ¯â³� YØ*”É›K2ñ›¢l\–@ïÙ™’¥’F°<£èRìK¶e“¯Tîþ÷ÚÚ)ÓíʸP¢Õr’'&OolK5åô¶’#Ù9�ÈÎÆôO­¬Âz˜Ž˜ IDATïð`l—ÔÐ `)°]I@ã¥XÖ™Nhf¼ŠŽ¬½¿ŽâcMqX’ºi‡‚&>WÙe»”O>qçBêÁìꬭ€¥VÛ5 XÙö{!+†zL¤OóÚ˜+ˆ^> ŠóÈÏž2é×ï½n¿ç‚³ºß—�½ø¼�}ÒèUì£G™~ì£@¡`Âô¹œ K?¤«îUä<�T�¼ Xk!iþ˜50Ø›ƒÑiËê˜Å<[€ý'‡ø¤UÓ/y»IÁð&¿SÃÚ‹È”b“×â„ÑÆl{Þ‚€•íú!µB†:^ /Œdw£¥XÖ}ý€¥Îš'e­^kK­¶+V4¿š¹¤[ƒU—#çÔ(“5XYõ{YFŸÁÝ`#ÇøtñOÍúÛQFŸmKé¡Ai¤¼Á€¥®³:w€òœ zЦUsž>}ÊÓÇO2ýX~âã™ä9_–º°ržˆ€ˆ€ˆ€d!�7Ëèl”ÿ�££�žeˆÑ5lèBíÉ¡ôü_$Ók&`tx%úmM™ò–ºÉ…6V|®î¤æìrØù$o ‘é¡b V¶ÑÊir×¶QQ-ê)§ *ãÁìŠòÅ(GSõù¦¢?fZÝêL;}‚A¦ŽÚ{…·ûQ¼Ë†SÕ}ð­€¥VÛ|:?‚K/ÊÛù�Ô,EcFÐÂßFý€¥×‹-÷|¹ß­ý¶¦ì#¯cÇ¢ˆÝtÚÖ2CÀzÝ~×¾³º_™oúw£¥ƒ�>äQÊA]==”[³§?Ç>fÊw 9uI^4¬®­œ'" " " ™ äMÀ* ôH½Ê|çh5zK‡?ÿËÿzij¦½ ýÿH@¹EøÅÙu8=É‚ži»¡im‹Ò|µ?×ãiÜmbHLH|u+ø× X/6¹¸ÉÌ^Nüx¾(¼Öð}—Š„LÓ|“‹¹§vñå½Å|5f!áÏ)^§-ÝÍÿÄuéɤz—wÞÇé醬vȬ}©ÒgkfÔfûç•qÜ©ìõ§ä);íµ–šm7ì½…(߸7°Ç;LAåa›Ø;¿-¼ª°¨Ïw÷Óv[K8ï#VQ”fž°ylCž,wx9`½v¿kßY�/HÒ)cúv¡ÅgM‰��çùóä�;t ôò+çé¦ ç>~ü·9‹8.K][9OD@D@D@Þž€¥¥¾¨úí Î|û£Í>ãGå…mÜ�ƒ]�éõkÚÛm³X† Ü~›å­^Ùƒ�g§§aù‰!éê«ßpZ©´Cv]gÊÅV¹°R+ú&¯¥œW Ù]£*µŠ¡[@9‚õ,i+.!�N§ÎpòÙóܹ¨”*" " " ï™ÀÛ°òÆÀ-u… Ò~õE64=ÉŒ1lüû>…ÊÖ¤Q‡V(VÂûDºu#oò¡þM^K]ª·é¼7êó&CÏ›¼Vît踒Åq.û1:::�²îêRìcìΆ ¯Îs)UD@D@Dàýx;– °˜ª‰¬hê7cþíÇØùf‘Ê ;²3f)-ô3–ù”�Ž&´Zþ é6ÎüàÖŸfu*QªPw.`Ã,gÆù‡‘~bTQ§®M½ÌÇ(:ÍpÂÁ˜„[Ç™ÓÑ�0õ®E wΜšBMåìµçaxYWaüñôõSà°,†ßÊ-ÆùlCFQsÃ{[6‚®cÿàvê© s¾˜ç‡g?kJ'\%Ðg7{¸céW«Y—ÕDL9͸ cçº3¤M}Ì =#æÂ~ü§Áå÷›)'ÑÔ弆µ¦v)]î_>ÈÚé#óÂG�:«ÙÊ fëœd¥ª>©ÍÝУàóŸîòK™ÕÌŒ¶áËÆæIŒ"pþp|w˜G/)g-Õ÷˜†I×ÓÅ¢ï\¼'t£Q¥¢p'„€¥.8MÛ©þß&²¸;t€¹æf´-^Œ| ®<~ÌèÐKœ.Ó5ûBÉÙ" " " ²@Þ,åS�2\|5è …s/í§û±Á|Ús5W³û»ŠQ“®ž¸–?Ŧ€£„ÞTP±½;~ól lW�¡�i—ÊÿëÞ–Ü8ê�Ëð)l ‰¥˜U,c6p%¥îêŽÐd¹+ùA{G߇lp²§ÏÊpômçpxwOþúüc†(ª ÞÌ¿9àÍÿÙ»¸³?ŽãŸ›¨ÿˆ!%dÉX³g £ÈNŒeköìëĨalYb(Æ„!d™ÉnlÃDŠìƒ0ö%d4c,“½þ¯{K*º÷¹uQúÝ×ëÿúÿÿã<ç9ç}νó|=ç9�—Ë@^ÈMËiËñn]˜Scmõ XY˜q|;½.d˜Ûl¶_~AþéaÄ�Y‡5Ï-Ù ÙʼnI9ù¹O/¼v?¢T—™,›XŽ-ÍJÒ7虦=ºÛ¬ÜG—³îö6`mìðˆõ½kÑÎÿ*YÊgënw +MëŸÿI4aµ,ÝsL™aA×­„y}J€Û7ø_%KÉvLñŸ@!¿šTŸ|Æ Ï™Íóõj~NEgg=¾�RTD@D@D@D@-ðáÖH (Ð_ÿÉÝè{6/нI$Çìch «ý8p+YÚRzšP˜ÎÑ;Ô‘Rî¯o/©/üoøæcFåò|w2…­«•žKGÀÚb?» ã8£iSYLÀʦ^T&í�©„7ÊMÙzM©ëð9NÍÚЬôm淮ɰ D ¸t]Ô簧ߤoq©W�"y²“5‹¦ŸšóŸ öß•pW@sgÅë:mòtgkJ¯Òu®WÝÔ°6ô o“EÄ-b,Šû¡Óôq ´GX bWÄD"¾4§Û«†¨jà‚²z,³#rô£¢ÝDοmT­Xñ`%ÃóÓpÁ« BTÔö½Æv?*Uòä\|ÀÒÚf=VŠÎŠÚ£<`tÛË…ïk ž’ÄÜÅ¿Y>zïx5¸qKWçBîæKy_m‘ornðaÌž„y #`éœcñKµ�»ÅB"çà¤ilÒOì¿ËhnÞ-åy©Ç×K–XRTD@D@D@’ |˜€µ4Õ^øØm¨q1§Û¦p~Ê9†¢N¾$Ü�Ñz 38ä$ž¦‹ä6‡à wykM¿M‡rªú' X‘ã.âlÝŸ]ï8`m´v'oÓÅR�° âï^=M­leFoCž�U:Í匱qêÏÔi]ùd¾#eÜã6hˆû`èžpÆ>‰c»¹œ‹Ž!6&6þÏ«òý…=4ÛÚ˜jÃB‰V妮×o¬^�'‹ê°´ž+Q_Ó°6¹¸É”N}ùéLnZN_ÎÌ6Å8;^ÿM.¼�o§ûýù uû‘ ðXØ5£}‘ƒŒõ;¦1*:,”ÍXæÚ“©¡�(é2‹å“+°í‹¸ªPA8P4q…´,%íyí\fÜqÂz‡3´Å`Ö\‰&úþ¿†ƒ³{ÐÛûÆNcøÙ¯-—û—¢å²„=ã¢hŠçR2Ç”îó;a³Šk>7»L¡‚Ÿ-5§Gè'l^‡Þèݬ69žu~+Æöfä¦ñõ˜SwôOLïטrVÆ<¼r�ÕS1déÙømì•…ƒW�Ò6J–ú…iÚÛ“¨ûÙªðõÊ¥Œv¶ÅÜä9Áýòëñ²éø%‚?2òFc<¾*O®GçÙöà zxí‰>NÙ¹tÏ1¥†ÆØvžÆ´í¨m›—¬ÑQ\ùs[f�ÂcýUÅã^lü˜ZW\>qÁ˜çO8?±1·î§ª9HD@D@D@>F� °>ÆáHCŸŒœYrk%9[ðåJõÖéòI»@\ÀZeÖŸœ­4û²|,Ÿ‚ßÂÄR½}§þŸ˜çO‰˜Úˆ˜;gõ?XŽ��\@VF`ëÆ¸Ö‰&xË~®>ɇÓèÖö‰ÄµD'ÖÇíŒ!Ÿ4 |¼Ëâ›P²å-‘*¡ØçO¸9£!±ÿÈ©”ƒD@D@D@>j Xux‹ödùªÑ4.mM®¬Ñ\?²ïaý™s4ÕµeT‰wØî�7`®Áÿ>ˆê濘ñ⟠oµT™~JV«* RAl OÏüÊó?¿Cw©ZD@D@D@2®€¬Œ;vÒrH£€™ÆÕóXû¦*Pe�Ø—+!>�ðr¸ˆ€ˆ€ˆÀG, ë#\éšú¦‹ŠØXÙíN悈€ˆ€ˆ€ˆÀû�€õ~œå,H`Ñ¢EÌ™3‡°°0úôéCÖ¬Y5ÿ_>" " " " "ð.$`½ U©3ݬY»ï38xð C‡ ÃÔÄ„iÓ¦¥›öICD@D@D@D@>. Xïu<íð:û¥��—\ŸS�ƒB“½®UI™D�Nñ…Åïµcéîd¹råâÓO?eøðálݶ�³gÎмysŒ³feï¿rãÆ ž=“íìÓÝÀIƒD@D@D@D ƒ dà€¥¢æ¬+ìZ„,Iá)¿uÏMó¥ê‡ö üQ91/r+%&Xëñ²Ú·µ!}¶ÿ͘ MÞ°^•WR0kÀè™ 9?Á�µ× Ü_=«SYÖcäôqôhZ›œ/¹wõ¿ÏHÏEgˆUµaMôZÚ<û�^E›ãÿ�ºò¸1 i°œªåÆp*þÿbL¿øâ ?~ÌË—/ßè…±±1�=âÀ�zöPŠ‹€ˆ€ˆ€ˆ€ˆ€v�ô°Ô)I½cômåC–Å¢8¥ó™bÚh:»§fñWYþ‚{—ÎùDy=ŠK¦Ç€¥¸ñï¸`Î,>¾š7à1f1{ošP¤ª3]J¤ÛwÛx© Xkhmü„ì¨2éü[jL³eËFݺuyúôÍïbbbØ»w/êÿ–�ˆ€ˆ€ˆ€ˆ€R },K`0Ø©÷T-¸¿º^eªážøx F±Éf>ÃNUgÈWU)bvŸ# ÒvøoÜI(š §Qó™Þ¯å­Lx|7‚“;}èÛÅ�³ê29] Œò£‘Iò¶=%ÐÕ’&‹jþÀ´æ0æMèF]»âäËÃÝ {Y=u#.’ô>Š’»S:Ê”õääñ1”S¯6|q‘é5J2òh*ú®*ÂW³üñêZƒ1רé»�›<©è_û©—†ŠjÓϳ¯[�Šu`mGÒ�&``ýûvŠTú —ây™üÖëCRS…M4hÀ‹/Þ8àáÇ=šKy¥RRD@D@D@D@´|ø€e®Ô«µR¹¹›®€õ{—G¬îÛ—%á˜8ÌàÀŽŽú¢}‚âî`7[J䚊¬qqaò®[˜¬€“s~ŽLý™SI2‹ö%‚–m½[ô8ë‚sþ¦Šb-<ñŸåÀÎæŸÑogâˆe€€õª])>ƒ.µ÷]E•)²×õ^.Yx!7-§-Ç»uaN�µÕ#`•câ©0ýÙ‹N’…Éø†jÖ/äøú Ž\AÙiŸÑêç‡É–¾Ÿ€¥^xäÈ‘$_ õvî‰?²µ»ünŠ€ˆ€ˆ€ˆ€¤Fàì‘@Q jšwŒ®€µÅ~.vÆqFSº,ž'Ó|UE*Oº¨ù'Bøkâ-\ t`�¶w¨ê½D°0#œ£w¨#¥Üß1yKkßUõ˜ÿ÷Vªú–§Êä8 Ìû°ãº/Ÿz–V°TÍY~o=UçÚc;êøÛòUÀ”�ÙÖrº{ÕªO#o’g° °êÔ©£yVâO–,YˆˆˆàÒ¥Kšœ={v*W®LŽ9ŠʃR?)åH�L)ðaV6õ²6 20h¤áZVWÀÚTЃ¼M·r­(î‡NÓ#Ä�Òaqƒž¯ûÒÒä,»ƒ÷sôØ>6-]Åá»É^P«+`尧ߤoq©W�"y²“5‹¦ŸšóŸ öß•h·À÷°´öÝj»"&ñ¥9ݶÆ÷UUŸð”}GË’&Ëë²üª÷Ú—ae› 'lraØ€•3gNÔ!K}ÇJ}GJ®ÔŸ�;ãÖ¡ªÿýúõ‰ŽŽæòåËI6ÄˆŠŠ’gÊŸDé´ˆ€ˆ€ˆ€¤MàìÀ1 ð°;��Ðñ ÖFkwò6]Ì£D«gˆ¥^,õ?72§|ƒ¦89ÔÆ¹}äÁµB+–ÞLÔ6­«0ƒCNâiº˜Ans¾p—'±ÖôÛt˜!§šQ _ð XZûn¨€Ey&�>ÊÀ_aÑi£ö%‚ƒÔϬ=¢Ê´Ól+>•>‘ž¬¬÷jAÃ,umê«V­JÁ‚9qâ/Æß©J—.­ùçAAAi›€r´ˆ€ˆ€ˆ€ˆ€Ä |˜€5hlÔÿ;�]w°¬Äm0uaã�¼ì•“/W%Ú$AUßk�”›fƒ“ï­¤­ÎÚ‰ ÷çð ]ºn‰ß�Îȉ¹WwÐzkãdË”n[þÁ;ª5–=“½ëUµJÊ:žÁÒÚwõÁÈ­T�[ž*ñË%1ïÍöësÈ¥ÏATÔð¹HhçÃtø¬#ëÿ{Ë€&,ŒßÄz0»NuáßýùiRdIü6í†Xê­¬¬¨R¥ Û¶mKrWªR¥J˜ššj^B,0„À‡ X…�ñw¯´=󤣇º·ôŽÛèAWÀ²úr’ ¾¦Q+>1~ÆöDÛ´g«2ÿù#iT0†ÿÞæÔú¹œ¬9‡^ç“/²Uáë•Kíl‹¹És‚ûåóåÅ)–1£ç¶;,jòƾñ`)S½š¤)liiIµjÕä–þtr„ˆ€ˆ€ˆ€ˆ€ž8`éÙS)®LÀÈ™%·V’s°_®|¦ì˜t^JýÒaõ;±ÔᄎuëõÒNõê��S?(H»€¬´fì¬ãZ'šà-û¹ú$N£XÛ'×�X·+ÈGñ±··G½« z“ õ‹†‹+†¹¹9ûöíÓì2(0„€,C(fä:ŠödùªÑ4.mM®¬Ñ\?²ïaý™s4 Ç¥Cõû°ìììÈke…‘JÅÓ§OùóÏ?¹}ûv:l­4ID@D@D@D £ HÀʨ#'íN•€:h©ÿ“üéºTU'‰€ˆ€ˆ€ˆ€ˆ@ X2!D@RP¿ŒYý’fõG½¥½‘‘QŠe_¼xÁ³gÏ$¼Ê|ÈÔ°2õðKçE e�=zhžS»|ù²¦�»»;¥J•J8@½9ˆú™6õÁ-ZpéÒ%6oÞÌ‘#Gعs§ÐŠ€ˆ€ˆ€ˆ@¦�€•)‡]:-º¾ùæÍ.‹¯Öøñã)S¦LÂ�þþþš­ïÕËÏÏ�«W¯²fͲgÏÎöíÛewFÝÄRBD@D@Dà#�€õ^Õ¯³àQÚxÉõ9õ(<(4þEů¢¤L¢F[cïÅìw,ÉÈ£ïµ3r2ÅzŽ©âzßmA777ÍŽ‹êà¤þ( X+W®ÄØØX³œpöìÙšÍDä#" " " ™I ¬wóRZ­ƒ¯rb^äVJL°~ó¥ÀzÍš\ôÙþ7c.4yKÀzU‘’2€YFÏlÈù ®W# [8K :LõfdGl-³};‚Ó6á=ì[6þ�èT34lóÓZ›Ê²#§�£GÓÊØä|ɽ«Çø}Æ@z.:“(@+Ó´6Æ@Ç2D³…ý_ý¥8`ýòË/š€¥þÏúõë¹~ýCNJAH5" " " " ‡@ú XYs@�]³³X§t>SLMg÷ÔÂ,þª# Â_pïÒ"Ÿè¡ ´¨ÁÂ�’ m%e”6ü]—ËN‹eX]ç“Ý&±öÏä(\ŽZ-› ZÒ Ÿ°¸M4ƒ¾ë>éQÎ,>¾š7à1f1{ošP¤ª3]J¤ÛwÛx™PUFS4h�&`EFF*XË–-C½1FÖ¬YÙ°aC±zhJQÈÐé#`YË€@*ž�Wµ àþêx•©†WxâñPÑpa›læ3ìTu†|U•"f÷9²p m‡ÿÆ�D~@F� IDAT¾N£æ3½_#Ê[™ðøn'wúз‹gÕerºåG#“äcý”@WKš,z¨ùӚØ7¡u튓/G w/ìeõÔaŒ¸˜è"[]RÉ…¶Ž2e=9y| åÔ« _\dz�äKö]U„¯fùãÕµb®±Ów!7;xRÑ¿öSã67ÐùQ9³ôŸõù®NsRHÈ Õ6u<æ1½S*ä3æÁå}¬˜8·d†¹û9î2}\¯Ózr_Úšsû(3Z90é¨Â±PÔwcl»xããÞŽZÅsÃݳùyÐw|`üߨ¨6ý<ûº…Ñ©XÖÆM…>ÚÇTÙüÉ…Ö¹ª9³’2:G•hÖ�74…“/ܸq#{öìÑ<ƒ¥þ³ððp–,Y¢ÙiP°Ô^¼ gºÏ&%D@D@D@DàãøðK½ë³:\æ¤UWÀú½Ë#V÷m€Ë’pLfp`GG}Qˆ>AqïB2n¶”È5YãâÂä]·0)X'çü™ú3§7IÇÝ˶^Œ-zœuA‡9SE±žøÏr`góÏè·óõ} ƒ¬WíJñ¬¸€¥½ï*ªLù“½®·ðrÈ ¹i9m9Þ­ sj¬­ËïK{h¤7Ÿw\Æ5m¯˜Òah3d'&åäç>½ðÚýˆR]f²lb9¶4+Iß g £¡XûTäÆá<ŒaíÙhòØ·¤bÔ:‚®€î±PÖ÷‚®[ óú”·oð ¾J–’í˜â?�B~5©>Y½ü¯O…1èÏvXtÚ�,H'ŸÏÚ–î6+›«Šç³Ž¯[ïÞ½yüø1÷îÝÓ”T¿¨ÙÒRý·!oÿܺuK³$ðUÀúí·ßøûïÄëCS÷ý–£D@D@D@D # |ø€5( ôO=›®€µÅ~.vÆqFsвxžL+†¿}ÆžL<âº'œ±GâØn.ç¢cˆ�‰�HUùþšmmLµa¡D«rS×ë7֯ΓE “,(3î8a½ÃÚb0k®D}ÿ_ž${\II™4,^môp“)�úòәܴœ¾œ™mŠqv¼›\P™ÑÇ�'d�‡Nsùclœú3uZW>™ïH÷ÉB¤6C(:,”ÍXæÚ“©¡�(é2‹å“+°í‹¸¾ž,q»¦tKÉX(ë{á>¿6«Ác†à¹ê8sîNk:Zm¥ÃØ�qý2oÃÏÇhü×<ÜÇ,fß-SŠTsÆ¥ø!zŒI¼M»¶qWÒfP2W•”Qò;Ö©S'¢££5kòäÉJá× X¶t©fÁÐÐP XŠÔ¤�ˆ€ˆ€ˆÀÇ$ða–A•¼hXYÀÊÑ`Ë<Ûco[Ëì/¹{~+& fĪð7îZ˜TÉŠ_Ó¨ŒŸ?c{¢mÚ³UŒÿü‘4*Ãosjý\NÖœC¯óÉ—ÙªðõÊ¥Œv¶ÅÜä9Áýò¿ùòâ˘ÑsÛ5ycßxžŸOÅJ8‹²¾£²¡ÝþLíZ“ü/¯°}Ö|nv™B?[jN�P8R¹¨íæÅˆöõ©Z 3xðןÿ2·q›¹žlu�6CõËÐêŽþ‰éýSÎʘ‡W²zÊ †,=›dù�ö€¥æU0ŠúnŒmçiLÑŽÚ¶yÉÅ•?÷°eö(<Ö_MðQåoĨïÇн‰…Ì^rïÊQ¶Îˆëâ³IïPjw%mV2W•”Q2°_}õ•æV¹råðòòRrëýÿÅ‹5w°Ô[¸ß¾­Ç‹í�A ‰€ˆ€ˆ€ˆ@úÈÀ+}ÃfØÖ9³äÖJr¶àË•¯·EϰýѧᙹïoqjÓ¦ ÿEGS¾\9¾ÿþ{E’k×­cÑ¢E˜dËÆþýû%`)R“B" " " “€¬�i4SÓëÆ¸Ö‰&xË~®>ɇÓèÖö‰ÄµD'ÖÇí òñ~2sߌj«V­4/6+\šâ.£Q‡~ãï�+5»:tˆ;w^¿Î[QRHD@D@D@2¸€¬ >€in~Ñž,_5䌁ɕ5šëG6à=¬?sަáá¸47ê=U�™û®€¸aÆüïÿãßO‹ðGå¾ Ž€Ï"B)~ùw͈Õ/~þü¹¢ã¤�ˆ€ˆ€ˆ€|,°>–‘”~ˆÀ;PoV£2"&[NEµ«^`e)A‡©ÞŒìàˆ­eV¢oGpúÀ&¼‡}ËÆ¿õôW91/r+%&X¿ù^…Uéuq—b� `)ê{.úlÿ›1šdœ€¥¨_ WW1C�ËPõèj/*jû^c[~7r´9Řã‡qœW(ÉÜ×k>›5`ô̆œŸàÎÚë:O® À{Xï¥Íº�`Hx«€ÁV‹e‘¬®sŒÉn“Xûçr.G­–MP-é…O˜ž»ŠàÂV¯ R Xïþkb€1UÜHC�ËPõèl¸î ÃÌg� I¡À{X©mZŠÇ½­Íº� Þ ©PD@D@D Ó<`-½÷„"ßÂiÎm-ˆÆØvñÆÇ½µŠç†»g òó ïø@4Gåt%0Ê�F&É«xJ «%M=T<@É/HUE\øeçlÊþÞ…zƒ~ã.*.Œb£µ;y›.&îݺEq?tšž!”òâî`­+0�WœpïX™<�/øã`ºOÚ̓„Öèè׫ræµîíIçªÉñœ¨s{×�Í7õì»�î`ik�¦Í¹¨ã1�éý›R!Ÿ1.ïcÅÄA¸\䥿Ïã 7ÙÌgØ©ê ùª*EÌîsdá@Úÿ Í«f�©C£2x„î£ÿÕžTrù•{꺳Ø1þà.ºŸí†]× ÜS|.ÓHq=º|”NWÝþºç3PÖ““ÇÇPN½‚ôÅE¦×H¾DPÁx©›lôf/brçä�¹ÊÎ9þÜj?ž þi["øæwð}·Y·³Ò“r" " " "�\ÀàË;ü)í�ôæóŽË¸óvð‚®[ óú”·oð ¾J–’í˜â?�B~5©>ùÌëg‰ pç ñé²®¬Ý9�‚«ÚRdq1MyÀÚÜYÅ¡Ù=éãs£Zß²tQGn~]†¦ ojjRÔ¯¬Ì8¾�^2Ìm6Û/¿ �Žô° bȬÃzöÝKA{l†ìâĤœüܧ^»QªËL–M,Ç–f%éô,Áð÷.�XÝ·.KÂ1q˜Á�9ôE!ú%š:ÆT‘¡uO6õB5º2ÍÝÁé‡ãlª¿�f•ÝØ£nΫ�æOÜѾTU·�ÒUÇïa‰ÅdÊ:ÇÀÍ›±ÿ¥&]W¾þ Ýó9ѹR|+nÎk/#ì§Ÿ&´Ûu&uÀâKV´õYÎô/¬9ñ]éT?ƒõöïàûn³ng¥#&åD@D@D@Dà�¬Ü�¾g󲡨›DrìÀ>ö‡²Ú?€·â/²UÕñ¹´‹sKñ¹÷µ„ö䶇ð¾{©eû-Ç x�wAš›QMqþe9´ á„ƒ'Ó^V÷|VV6i/«ÁìŽð$¢­9]·Ä!U5™u9˜Ïç—Mr« Û^.|_ÍW:æ.þÍòÑ{Çëç-Óc› 7"R“ˆ€ˆ€ˆ€$x7+É9Ìé¶)œŸrŽ¡¨“/7-ò—'W[[Ðc›ŽM/ °ÖÕ!¸s|Š.f[¯¿hׂ% ;ªÖ-6Z{$zë3<þ8M�àZÉžÁz[À:E³|}Øi¡¤_*Œ`G-?*VNKg{%!UAÀÒgn•ãÛ={[9+Qk]¨Ô%þy¬ÄsÏó'.Oj …Š| ÷³£ +Zç³ò€¥õ¹C«AìŠÏå––ô |°ª1ãb(µ& X*Ó|µÎŽúÇ„ØüÁ½¸‡óâøÒa› 7"R“ˆ€ˆ€ˆ€¼÷€*RÉΓsªÌ ß�ózGlGü¿ä,…aQÕÆ÷Z å¦Ùàä{+Uc—dS€ÇeðØ{÷ç°¯ëÃEÍu£ŠÏ¸JPÅ隨9‹Ê‘#‚hP3IÀJ¾DÐY½D°øTŠ;ø©°_qKòLø¦XC~ÒÖ%E}7¥Û–ðŽj�eÏÀT½Kw{Ê0þD½’-¼û “ïtÅ¢Íê„%‚Ú7 yuµ­eLB6jÏ<Æ–Æ;hír�‘ÛÇ3ªMD$›ÝiŸ?q A[=J|R5ußz�îùl €¥jÀ‚›)9)ÑwÏ´3n/¦ÀdÛT?ƒµä­ßÁô×fÃ�˜Ô$" " "�Ù ~kôÆ_ɲŠÀC§¹ü�16Ný™:­+ŸÌw¤Œ{Ü&…ûüNجb�‚çªã<ÌU »:­éhµ•cw& º'œ±GâØn.ç¢cˆ�‰Õ+H¼±­µÍ¶‡}�¹omª� Óì‚gÖy×çäijZ|.ª(Ñ»hÆCŸêIÖæNppvúøÑlr±lqG"‡”¡¹\RRÔ¯¬xßN÷ûóêö#Aá/°°kFû"ëwLï¾—wœ°Þá m1˜5W¢‰¾ÿ/ORØ\ä­“[A{Š åÄD3–¹ödjè#JºÌbùä lû¢®�ê×.ëq ícªÄÐüË_8¾¤þuª3îØK,:¬æÄO…˜W»“þLÜù´ÏŸ83íõèö1ÜÏŠ’ùœp6›\hÄFØŠàfÁ´®5ˆÿ~BÍ)» ò¨ÈéQ©y+Ñ˾ßòLom6܈IM" " " ™MÀà«¶Û94é6íJúe^‡Þèݬ69žu~+Æöfä¦ú÷=[¾^¹”Ñζ˜›<'¸_~ý_ʬ³=æÔýÓû5¦œ•1¯dõ”A Yz6É6íŠî`ÚÇTûÜPÙôgÛ‘)˜N±§®ÏÅø@š�ÆóO°Îñ7šÛ e—:óÅÒ:”Õ£ËÇp?+o{VÒùœ•žÛî°¨Éï8àù‰ñT¬4�³J±Q1:þ¸ˆImË`úø.¶máv£AØø%]"¨«w±Íºú$." " " ) <` µˆ€ˆ€ˆ€ˆ€ˆ€dV X™uä¥ß" " " " " �€epR©PD@D@D@D@D ³ HÀʬ#/ý0¸€,ƒ“J…" " " " " ™U@Vfyé·ˆ€ˆ€ˆ€ˆ€ˆ€Á$`œT*Ȭ°2ëÈK¿ß£€^gÿÀ£´1ð’ësêQxP¨^/Ì~��ý°§JñåÈJšõ¶^+9Nʈ€ˆ€ˆ€ˆ€á °þ}ÊøŠµ™uåu#M/äÂ&'¶4)ÃÀ�g†k½Ô$J }¶ÿ͘ MÞ}ÀR91/r+%&XëÿâéijÖ€Ñ3r~‚;k¯¿¥!Zû%ëC�œ[D@D@D NÀàëÛƒq»9€Ò­–sW}#{¦�ÜM§Ãí(Ý}3ÿ‰¼dZ Xiz Xi&” D@D@D@Þ­€Á–QåÉÛëÂá6%qÝöŒîû ûúoz—iÃÊ^u&u<æ1½S*ä3æÁå}¬˜8·€‹¼ŒÏ} F±ÑÚ�¼MóHóÏŠâ~è4=C(妟Šym†{{Òǹ*Er<'êÜÆõÁcóMM=¦5‡1oB7êÚ'_Žî^ØËê©Ã‘¬=›læ3ìTu†|U•"f÷9²p m‡ÿÆÅ­‰ûvÝõhñQÙã})„ ߢáüÐø¨pô½ÆÖ¢cÈßlI¼›¶Æ½íoüßæœ §Qó™Þ¯å­Lx|7‚“;}èÛÅ�³ ÕcÛÅ÷vÔ*žîž%Èσ¾ã¹­ÔǼÛ®~σži¿öqÂQ¦mV¹$7£Š6b¾Ûpó'wß "Ç]¦�ëuZOîKC[sbneF+&UÚp@Ç‹«I[À2ÐXät%0Ê�F&ÉÛþ”@WKš,zÿÊÆ+M>úÌÕ²žœ<>†rêU”/.2½FIF&öWÔ¯xÃBÞtÙ[�ñƒQÂä6Søžª²å$OάDÿs—è=ÆZŠŠ€ˆ€ˆ€ˆ€ƒ,0ÆaÖin ~‹‹Œ=< ÕÈr4]x#¡6CvqbRN~îÓ ¯Ý�(Õe&Ë&–cK³’ô R/!Tz±©`l³:0ãøvz=\È0·Ùl¿ü‚ü5:ÒÃ&ˆ!³kžƒ±lëÅØ¢ÇYt˜ó7Uká‰ÿ,v6ÿŒ~;Õ‘/®=¿wyÄê¾ pYŽ‰Ã ìèÈ¡/ Ñ'HéÕ™²z´û¼¤UÀmüžvƪÇ6’žÙ†‘OÓnSªN W€£ÌÙ¸ÙR"×Td�‹ “wݤ`œœósdêÏœŠ?KA×­„y}J€Û7ø_%KÉvLñŸ@!¿šTŸ|FáóF¦´Yy�Åf#(Ò| ÿjêÎI×Mטõ¼/…Ú¬ÒÜ5äüQˆ¿}*rãpưöl4yì[R1jA‰–¹jÅT0Ç °”Œ…æ\:–*¯´ùdÑ®êzKÁ¬míž²kÁ0Üç�À¤±+fÕ$ÐùÍïi™ñ'81¶(kZJ§�ê_ùˆ€ˆ€ˆ€ˆ@ÚÞAÀRßjŒß¹õ´0y‚É…‰T®3‹Ë mµe܉c¸îoJ‘þ!ñ!?CB¯01ª –m×ðÌ€+g÷-Dúþ÷âõ™wÃJÁ§0#œ£w¨#¥ÜÕ�D¶ØÏÅ®Â8Îhj(‹çÉÃ4_U‘Ê“.*¨SsÕ« Ý>9ûïäjÿ}T¯0–Ó%z0wL>V¹z±›ö¬‹šÎß_að%ŒÊ–Å€þšx —X÷ô-]UUÇçÒ.jÌ-ÅçÞ× ä¶‡ð¾{©eû-Ç e©?Ÿˆ�%™Z¢.¾êLnÕŸ Kcˆh[˜^�/Ý>úÌu€¸á›�•ËóÝI%fovDùKû,�cñªyÚ‚ˆã•V }çªÖoµ—P«Ô7Ö ge¦žÛG£Ÿ+¼ñ=•€¥ðK)ÅD@D@D@ôx7 ÈÝ;�È¹ÅøÉ±$nÝgQµbŃ•X ÏOÃ÷â«¢¶ï5¶;øQ©’'ç °T8ÌŽ ÈÑ�Šv9ŸM{úMú—z(’';Y³aú©9ÿù7 `ÿ]ÄÆ·gSAò6YDÜ"«¸¥t=B(­xÉbüAmõ(ñ)?‰Óû«âc݄݃sô[+Ö·/J�{Þ\ÙZw«6¬V´—ˆ²€E¾Nì_HK“³ìÞÏÑcûØ´t‡ïÆ‹„DÎÁ)Û›À±ÿ.£¹y7¶*Í.ªª|.§%å±÷ §Èˆýœéw�ú%Ü8¨®C‰�óGs‡Æë:mòtWÞÆ$ÝT8Ç4Ǥ=`é %K�ñJ³�¾sÕkS¡o±j¼�©þžêõ*…E@D@D@D ÙÕ! Woé §jÀýÕ%ð*S ¯Ä«Õ_ ßb£µG¢g°>Ãã�Óô®¥Ç3X*Œ`G-?*VN)`fpÈIúÎU¬´O}y¤�ˆ€ˆ€ˆ€¼Uà�ÝÁJ1`Q†ñ'Âè•l‰ààÝW˜|§+mVk–~þÃU‚*N§¨“/·ÔMW9òcD�jê° nù– ßkÈOšŠ’}²vbÃý9" " " "�f�° è°PNL4c™kO¦†>¢¤Ë,–O®À¶/Jà÷��Yç \Ÿ“Ïj 𹨢Dÿuìþ¡}ªë°@E” IDATÈê€÷ñít¿?Ÿ¡n?þ »f´/r�±~Lj¥*ß_ØC³­�©6,”hUnêzýÆúáÕy²¨áXÊ|Š�:ÂI�b\]Ò‚2CÎÒwÇY¦Ù«ØäbE—Íʯ•8[}9·üa¬:Ê¥;Ù(ÓÙ‡€iÅð·¯ÀØ“qs°pŸß ›UŒà1Cð\uœ‡¹ŠaW§5­¶ÒaìN=o“æÀeÃ55ý„gÁ)Òt!‰÷K4äüI{€Ýsìõ÷´Ì¸ã„õgh‹Á¬¹MôýyŸë 5qg+ÀÐ=áŒ}8Çvs9ClLlÂ8(/Cøè5Wu,­ýRp‡8ÑO¦<ƒ•æH" " " oø  Ì©;ú'¦÷kL9+c^9Èê)ƒ²ôlü6íê¿^þŒ®‹W3íËbÄF…óÇê%\m<�¦Aú,Œï±yFxO w³jØäxFÔù}¬Û›‘›âv6ÌVe0þóGÒ¨` þ½Í©õs9Ys½Î€%‚šéöQ9úr-ø+v4/@ÏÀ—tÛGøäh[7dAòÝÛµM}Î9L`™g{ìm c™ý%wÏïaŤÁŒXžèn•1¶�§1mD;jÛæ%ktWþÜÖ٣ðXUï/_Öˉ\ßœ½] òe@ò·§éöQ:  â†LûKÈV…¯W.e´³-æ&Ï î—ÿõ‹€ 6qg3©>’ ¾¦Q+>1~ÆöäÛ´+/Cøèž«fôÜv‡EMÞØ[žç'ÆS±Ò„D¯ÐÖ/ XzÑäƒ ¼³€eð–J…™JÀªß.�ÿ›Ž…º±åy¦êºtVD@D@D@D  HÀÊÀƒ÷16]•ÕŒ<%[3s³öë)ýMÜ»Êä#" " " " A@VF¥LÓFc:nxÈÏMsa뺴ŸÁEÛÍg 騈€ˆ€ˆ€ˆ@:�€•ÎHš'" " " " "�q$`eœ±’–Š€ˆ€ˆ€ˆ€ˆ€¤s Xé|€¤y" " " " " G@VÆ+i©ˆ€ˆ€ˆ€ˆ€ˆ@:�€•ÎHš'" " " " "�q$`eœ±’–Š€ˆ€ˆ€ˆ€ˆ€¤s Xé|€¤y" " " " " G@VÆ+i©ˆ€ˆ€ˆ€ˆ€ˆ@:�€•ÎHš'" " " " "�q$`eœ±’–Š€ˆ€ˆ€ˆ€ˆ€¤s Xé|€¤y" " " " " G@VÆ+i©ˆ€ˆ€ˆ€ˆ€ˆ@:�€•ÎHš'" " " " "�q$`eœ±’–Š€ˆ€ˆ€ˆ€ˆ€¤s Xé|€¤y" " " " " G@VÆ+i©ˆ€ˆ€ˆ€ˆ€ˆ@:�€•ÎHš'" " " " "�q$`eœ±’–Š€ˆ€ˆ€ˆ€ˆ€¤s Xé|€¤y" " " " " G@VÆ+i©ˆ€ˆ€ˆ€ˆ€ˆ@:�€•ÎHš'" " " " "�q$`eœ±’–Š€ˆ€ˆ€ˆ€ˆ€¤sƒ,UËî¯ÌÅ�<Î,‰NmïU8/¹ËÚ<ÃÈýÅ2ž¦¶ƒg‡×Ù?ð(m ¼äúœzJ¬ÁêO\Ñû<×;é€a*µÆÞ‹ØïX’‘GÓP¥ª8ÝýÂĶv0ËÂ?‹›�×uÇ;»4´SÕ) ×o‹¡æOB«ÔßË}Ô_Zû©—u¶õU�ŒØfÅ�“‚" " " o�€•p%äļȭ”˜`Mƒù÷R˜.¹è³ýoÆ\hòÖ«S¿Çs©”ôý=ƒÌ0zfCÎOpgíõÔŸ;kÛÕD-¶dZ�¶Ì>ó�ÏŸñ,&õõ}TG¾Ïq7À¹ô +š?¯Çû=¬tÒæ�jŽKgD@D@DàHÀ’€¸øýsWÑ)mFâL¯Jy¦èˆLTè}Ž»Î¥WÀ2ø0¾‡€•NÚlðfH…" " "�ÉÞyÀRqá—�³)û{ê ú�»¨h¸0Š�Öîämº˜Gð¢¸:MÏJy¨/ƒã–®+0�WœpïX™<�/øã`ºOÚ̓„A2ƶ‹7>îí¨U<7Ü=K�Ÿ}Çr;ñ@š×f¸·'}œ«R$Çs¢Îí!`\<6ß„œ®FùÑÈ$ùÈ?%ÐÕ’&‹&úÝUÒÖž„³i;—CuE¹p5ŸéýQÞÊ„Çw#8¹Ó‡¾]ü8«þcÅ}W朻o‘ã.ÓÇõ:­'÷¥¡­91·�2£•“”.ó+ëÉÉãc(§^�ùâ"Ók$_"×÷M6óvª:C¾ªJ³ûY8�¶ÃãŽÆ/®Ìï½,0J2¬1ÜY”x‰`.êxÌczÿ¦TÈg̃ËûX1qnyù¡~tÎ ]mVàc¨q7*ƒGè>ú_íI%—_ÑÜ÷ÍbÇøƒ»è~¶v]7pOñ¹tƒ'Xoþ¶™?€Ñgt˜½ˆÉ�k�?æ*;çøs«ýx*ø§m‰`Fh³î‘�" " " ÚÞiÀZVÀ•µ;§QpU[ê� !.ª( qksg‡f÷¤�ÏaŒj}ËÒE¹ùuš.¼©©© ëV¼>%Àí|ƒ¯’¥d;¦øO �_MªO>÷œMVfßN¯‡ æ6›í—_�¿FGzØ1dÖá×Ïâ(úv,¥í!í˸ÙR"×Td�‹ “wݤ`œœósdêÏœJ<+tô]‘3 XûTäÆá<ŒaíÙhòØ·¤bÔ:‚®èùELñšøðÔå«û6ÀeI8&38°£#‡¾(DŸ ¤ëÿ>óøƒSÝvRËö[Ž%k‚Í�]œ˜”“ŸûôÂk÷#Ju™É²‰åØÒ¬$}ƒžéÙ`W07t·YCŒ»uO6õB5º2ÍÝÁé‡ãlª¿�f•ÝØ“˜PÑ÷K»aâ€õöß–Dǧiþa?ý4¡Ý®3©ó_²¢­Ïr¦a͉ïJ§ú¬ŒÒfÌd©BD@D@2µÀ; X¹Õ4ç_F‘cA N8È“fåkcÝ_¨o3˜PMRÊB³%7XWr%?÷暪:>—vQcn)>÷¾–P{þa{ï»7á‚:g÷-Dúþ÷âõ™—ËÞþQt˜ö€¥¸=XBøkâ-\ t`�¶�B´õ]¡³U°nøæcFåò|w2�[€è¸@Þb?» ã8£Ͳxžª†øÝØBß Tžt>®RË_›…Ù„Ô¬ŒÕæLýoD鼈€ˆ€@àݬõ͉yhŠÙ'7hW‘®þMÔTåk]w¬ù%, ,<|?Fž¦y¾Þå@H䜲½©ûï2š›wck¬ ‡Ù9úQÑn"ñ—J0`éÑ,òu"`ÿBZšœewð~ŽÛǦ¥«8|7YøÑvñk¡Ä9ŽTsËë:mòtgk ùª Û^.|_ͰÅÜÅ¿Y>zïxKakSAò6YW4n‰i�Jk–˜¾þ¤°T­Xñ`%ÃóÓpÁ«MMTÔö½Æv?*Uòäœ_0%ýÒ^FÁÜPÔæø%‚J| 4î� ‡Y2ØŠ�Ai4ïõ_x$*`iýmQ°´Î«ÁìŽð$¢­9]·ÄÏMUMf]æóùe“ÜÁÒ5îš»né¬ÍzLk)*" " "� �w°ÖÕ!¸s|Š.f[¯¿hׂ%¿j�úð­==ƒõœ¦Gp­dÏ`½-`�¢Y¾>ì´HÈ_ž\mmA�m)Ý-Qáøc;jùQ±rúXŠÛ£3`é2Œ÷62§|ƒ¦89ÔÆ¹}äÁµB+–&¾›§íâ×R‰óë€9î"ÎÖýÙ•Â�¨LóQÔ:;ê‰Gì þ‰ˆàÞÛxÒ°´?Ã÷þ–’~i/£`®ê°ùhÜ1*Ç·{ö2¶rV¢ÖºP©KüóX‰� °´þ¶(XZ}¬±+b<—[ZÒ3ðUÀªÆŒ‹¡Ô^˜4`éwMÀJgmNÅ¿'ä=ÞMÀzõ¬ÇeðØ{÷ç°¯ëÃEÍµŠŠÏ¸JPÅéuòå–æ9òcD�j& XÉ—:«—ŸJq"U5˜¾çõŽØŽø#~‰×›=�[veÂ7Åò“æd)|Tµñ½H¹i68ù¦TДn[þÁ;ª5–=Sõ.%ÅíAÛ¹”¾¥Ÿ¦.l¼³€—½rò媯 hë»Bgueq›\hXŠçæ»X”aü‰0z%["8x÷&ßéŠE›Õh‰ ¶¹ª¤ÍJîÇ�‚AÆ=µgcKã´v¹ÀÈíã‰U�¦ "’µ¢ï—öÙ‘d“‹·þ¶(`©°àÆfJNJô[`Ú™ ·S`²mªŸÁZ’AÚ¬ø;*E@D@D@Þ*ðn–úEÃ6Øö=æ¾µ©>6L³;›Yç \Ÿ“Ïj 𹨢Dÿuìþ¡}ª' X›;ÁÁÙ=èãsD³ÉŲʼnR†æþq¨pŸß ›UŒà1Cð\uœ‡¹ŠaW§5­¶Òaì΄M.¼�o§ûýù uû‘ ðXØ5£}‘ƒŒõ;–($`èžpÆ>‰c»¹œ‹Ž!6&ö�UfÜqÂz‡3´Å`Ö\‰&úþ¿<Ñç½JYPÖÐv.݆`õåxÜò‡±>è(—îd£Lg¦Ãß¾cO&žÚû®È9Ã,(:,”ÍXæÚ“©¡�(é2‹å“+°í‹¸~€×[+˜ºÛ¬GÀ"íãnþå/_R ÿ:Õwì%Vsâ§BÌ«]‹I&þb(û~iû�~c›ö·ü¶$Ÿ¦€n„ý÷§nLëZƒØñï'Ôœ²› �Šœ•šg°½x=´Yþ])" " "�6�w°«.¿rb�-«�+2$ä)¨>£ëâÕLû²±Qáü±z WO§iPò%‚óø&¢>*‘;ú�³Ñ}rhÒmÚ;OcÚˆvÔ¶ÍKÖè(®ü¹‡-³Gá±þêkó:Œðž@ïfÕ°ÉñŒ¨óûX1¶7#7ÝH¢gR}$+|M£2V|büŒíolÓd«Â×+—2ÚÙs“ç÷˯åÅÄ) ŽÂöh=—NCÈÑ`Ë<Ûco[Ëì/¹{~+& fĪð7îøiï»1¶ œÓ~ËŒžÛî°¨É{æóüÄx*VšÀYE»P¾v×¶‹ ˜SwôOLïטrVÆ<¼r�ÕS1déÙ¸M»®¹ª«Íú,H˸«lú³íÈL§ØS×çbü_Fd§ñü¬sü�ævCÙ•(§*ú~iù={Û{°’þ¶d5Üü1*FÇ1©mLßå¶-Ün4¿¤KuýüfÄ6ëê“ü¹ˆ€ˆ€ˆ€vƒ,�Ì* +³Ž¼ô[D@D@D@D@DÀà° N*Š€ˆ€ˆ€ˆ€ˆ€dV X™uä¥ß" " " " " �€epR©PD@D@D@D@D ³ HÀʬ#/ý0¸€,ƒ“J…" " " " " ™U@Vfyé·ˆ€ˆ€ˆ€ˆ€ˆ€Á$`œT*Ȭ°2ëÈK¿E@D@D@D@D@ . Ëà¤R¡ˆ€ˆ€ˆ€ˆ€ˆ@f�€•YG^ú-" " " " "`p X'• E@D@D@D@D@2«€¬Ì:òÒoƒ HÀ28©T(" " " " "�Y$`eÖ‘—~‹€ˆ€ˆ€ˆ€ˆ€\@–ÁI¥B�Ì* +³Ž¼ô[D@D@D@D@DÀà° N*Š€ˆ€ˆ€ˆ€ˆ€dV X™uä¥ß" " " " " �€epR©PD@D@D@D@D ³ HÀʬ#/ý0¸€,ƒ“J…" " " " " ™U@Vfyé·$P© J°É ÆFp÷½ÿ<*¥°”JI9øHrd…ïZ‚KëO0·ÉM3SP©ˆ}ú‚gw°g÷=&­ˆeD —sãÚÉé©„tKD@D@D@Ò. +토 F±ÑÚ�¼Móè´ }�Ò¯³û¨¿´öS/§¯¦¥óÖTÈë&d£h�b}bòöÖÆÆðøÒ-Æ,kÃ9“ñl[TŠØ—÷ س÷;ŸU-¸¿2Cò8³$Ú€Ýø U½_ÃÚÕTž\¯q·ÆÞ‹ØïX’‘GSyÂ$‡½‡ß(ƒ·9uýÖË9u§HÝQÄç=Œ{ê4ä¨ÄiœévÎË(Pƒ¬5�cióì7zmŽÿ?꾩¨9ë ! –SµÜNéÓ]•ó"·Rb‚5 æò‚NŸF¤Ç²¾˜2”³¡êÑ›ü#ú—˜.ÃOìè>n4}Z}NÙÂæÄF�à·ÙCéã}�ÿôtË÷ šcB¡º¥ˆUñàQ 9s¡þQxõyô_ ¦&FdÉ¢bПyø¼{ÇrõؽΦ²¬ÇÈéãèÑ´269_rïê1~Ÿ1�ž‹Î‹�糎–¥Ëêw�Úz*9—’2:ÛôŽ ¨ª2íÌn®¨Jeϳo?É[Êè5îf =³!ç'¸³öº!úñ~£ ÞæÔõ[‘³±-]}fáÞîsŠ›gá¿È?Ù¾h4ƒ&íäNêN«û(Cû(™‡¼‡q×Ýó×%µYŸ ßCÙ÷Ñæ4Î EsÞ�Tïó÷Yßs½�ñ2¤å;¬ë¬Z?áÄ;ªL:/ë� žSJίï(¥: U�’6')“Îþ%¦wû ËðsO6Œaݲ­¹nL¹^Ó™;ø3~m^�^�/õ:ó²~ÐyD9^ãêþ�ݼ YݬÌo†‘,\ù¯y�)”ψ)ßUfÖÎ_Èþ?®_;ÍÎå唟+g _M‹› 𳘽7M(RÕ™.%Òí»m¼”€ºÆ]§¶¿ JÎ¥¤ŒÎ6½›¹»là’÷Sú~Öžµ)ܾ[™÷~ô±þF¥ù/0Œ¨ýc8A.áÙ±?óâ)èìÉÏ~í¹5¢4õæD¾›‰càZ•ÌCÒYÀRÖfC¥±ºŒÐæ÷þÛò>ŸõÎÀ£ÍÈé¹MW}WÒ$%>zÏå¤Ç)ŒCEq×7ohëÒ3�é_Û(i³Òõ�’X([ÿè_G%^ö¤t¾ÛÒ pÓ{Ö¦€ù~Z4�c'ÓæP¼JaWD2ë:EcøˆŸ):ÏAEó3è]ûi‰uÆââ?X‡+™Ÿ•œ³éä˜�`½$Ë×Í8Òo9Å&¤åÒ§ïm,0pdz²´§'v?£hçoY2¶8›š¡Wd¢G–˜9'³&‹¹µª«ÜÝ·ë.–ùJRË57‡'.ÕnWT:Á€z0þTŠÛ‡–áÛ×�ÕgŸ“£b JÝ[CäUÈçÁÑ ÙX6èfïˆÁ´H;Ƈ�áóÐ*T§Þ ¥ïeJËe÷ ý³vÝ6k?xâßS€!OÓncIÊ�¿·ðßÜîOvÍ÷fèÜãX6œÀòéUØêú9=#5Y9¿œÀ(‡c¬‰<Äù;*›>Ý…¨¦é•èj‡œ5+WÝ[:Ç]'“ §œfO—›vêKØ%;¾ úŽ)Íòr|ä ÷`§.ÍØØÒù+{ÕÃ}Ñe,]¦òÓöüÜì­³¢¸çíÎG& Q–¦ PkÆ16ÖÝL“²ƒØ›ø)}Å"'ÍBv±¬ñ1º•îÄjåù͋êŘç̦oPÆý_=v—ìèÅ™›eÉqËß¹›½Š3öÔQúŸh‡mÇõš/PÞ{iœõ�gEÎæ.L=¶ ϧ ð4“mW^‘»rºˆdàôCqýH¼Ð^’Ç‹ÕQ“È·âKêÙ‰!_ÝècÊç}çŽ~le†JÎSýÇh¬ ퟱ¶G5Ú…Ç`Zl0»‡òÌû Z-Õ DýsïÛ^9ûçø(VµÊFÇ )Ï”YÜVseŽ)_lŲ'É«¤tŒAqOñž %s‚²9JL 3DG›Ë�?Á>¯»LpïÇ‚ Ùi1é;¦µÊÏ©QN s¦!ñÒÕvýÎ*ÊO<Å·h¼juaÙµ7d©2†­›»rÑÙ.5—%�Õž„¶ê¸ÏFÿ¹ün�“cÊ⮨.ó˜¡>É·YÙ¥¤.Eó3ú×Q‰¥S:— xïæ¸¿%¡]ºóíKjù…3¯{qΩnX‚_™®{°ÄBÿ˜Wr¶0æõ¬”®ýô­iõ(9/”õ==õa¬þ¹èf±šÓ]#©PiŸ½s–£�Gãu 1ö}vj“ˆÜ Üs•±÷:“óËU$¬7 Zl&Û¾;¹1ö.îyÚ³æÏ”wï>0"å+X·gçbjÙŒ<™d ªDÐ¥]T.JÕi×*Êí½—Ë½öQÍiÑ F�mŸ(búì§RÉQœ.Ü�`¿\¬ðšÀnÜXso ¿6³gÀ^â¤?ÖXDµ¢ßp(®)e™xn? ––¤làÅjÊ�ÏOçè±§:E‡&ºsÛÎúODâ®óÓ»>¡·7Qn¶ºŸê-¨êL²/;®O'ó˜øËHui¯@lªL™’£9WY1N¢éŠRgâžµy8ÇbuÐMÜÛRÝ…ñ§’|]¯8ùè´|7Áå2 ag–\Ñõµÿû }jÀô©öüùëL3˜Ä=àÂÄÒ•¹)qûÕ3ÛXbÿ~Í›?ÿæÍ‹?yó"‹ÜY¸|ä6ν“=™Þ¯HՔﭥ|pEœ†K!²šy�ãY¡sÖ®›¸5;C Õ%XsÁê½—æÃ0;ÃoÅõÃÉ2¿9õÇ䥂óóí!JƘ²Å‹þsGIÃÆ£dŒé»Þ.P”ž@ú†½®r ‰»®zì°ûZ×¾´Ác“6ª*L¿²ƒª!Å4߯«.m‚µ1Ÿ/Ÿ5Z¨½º‘ÄÙ ¸[à2ý;ر³)Ì}›ˆ'tYa,,Ú¬àÎâÏU´6³ÿÁ- }kÂ×C Ý’¶íÚc›é/bŸßçÍ_¿Ã›Wšæ¨LQoÝ2É`˳×YøaËN³ÌÅæÉ�’`mÔ5ž9«p™y�Èê¡”*3múýÞhŠû0\Û”7O­Èœñ6ËÚ•Âcýc}£ûÝÿ+cÊçc]ÁÒihȼª ÁZi=�ìM'$¦ößäÜ€C4°À^õ©©wî5Œgé{ÐÀ-‚ñõé8ß�ù™’oÐ>.L®LÜ2ñÍC›ä¢ÇöD‹I}ÎJçp…k?E±P¸&Q2?+�öÒËq.ÁZøŒr“N³¹ÐDzÞ àû:Ú§*š`´¼ «7&6”¨×˜Z.5pukO½ì;ñ*Ù’Åqßp«'˜»lÈë›è‘çñýå4ÝvTK欋¸æíî¤ VÎ~ì¼@L+[ºmÖ¿0Å6›4`ᯋ‰íR™èÁ+pøé& ¬gÑêÚxŽ·ZE‘êÓùUɽägÀΓX…ÑÐv\xÈËØ¼ôÞxˆ�§š�§÷Ž4š`© þ\i‘“î[㬠L½¸‡ >L‚¥óê¦!q7)ΰ½ûUÖœ{«Ý)ÝY{?VâÁ pÌ; ý™3ý~y»˜Õ{¼{@‹ðý‚´eÂÉ‹Pºti*V¬HÁ‚ŽØØdG¥Rñø÷ß¹Ctt4¿üò ,þd×ÒÌZs†úJ¯˜• ðôúo‹mÇ :·þ{gÕg]c{µPJ•Õ“`­©ÉŽ>M rc³ç ú•i΢_ @T4�)Ÿ[Œ•`)¹¯¨.% Vޝəèg" ;Ä™>©Ÿ`©9uνxS”‡�ⱫN>?'Ù>_ŽîcâþJã®'ÁÒé—Ð虣 éºRÛ`)^z�Mvwŧ©·'^ÕJ˜Ò|é}V™ŒSʼn$ü؆Ҿ+ñLÉGѹ¬`Œ)‰»¢º”Ícq-Rä£ë¼0`ŽÒU—Ÿƒšû~RXG%ÄQG›SJ°~>Kߟ'XÊÖuqUê8ß�ù™¢²Ê…CÞLš'õƾâ·k×x”tß¼’˜êœŸ•¯ýÅBÑšDÉü¬ä$M_Ç|Àë)äÀ®S�y| 7�ìiÓîŒÿñ£x&Ù"8`÷UÆ=ðÀ¶ÍÊD[k0ûúVŠO*@­Ùw�#oåΆóy확Ö+ÔßÔ«¨:#†ÈRSp¨5›¸ZTÕ™u-’˪(O°T•ùöòn\×VÇÉç—Jº�™®?ÞÂûÒ<®¹¼! þYü¶–çüÍδ¼XŸ¢C+{0‡yGÖÿ>‡'írà±I»6©EpÌvZE4L’`ÉY¥«⮋IU�ù· H`¢1aÕ‰õ÷ÃÈ3.þ~#Õ¥$‘Uw j|ͦ†Ûiå~�!Ûüy3¼�ç_{··: ßjš·µ >bßÞKnmÓ”acWWdå¦IÚù¾äÙó·_ ¨“+ÍÁăo[Ф2Œõ¿ÈØ•ŒeÍ•ƒ.²§Ó!ÚìÀÚdŸ%¯à[T…Κí–|ãXŸy)Lï<ìà…3¾û~bèßc¨X;ˆ‹Š¿Q2Æ”Ï-(Œ{Êê ã߬¤.�Çh¶®«¾„:°'ÎÌ‚VËï°,—jÏÑÌ£I_ïͽoPYæ —�9OïÝáY27êY6_ÂÕÅ9U¤1 Rxb�¾c Šû¿I°ÍQÊûþ£C�[oEP>¸åâ·�Ûô`ÛÍ9X'Ú"h¬xéu¶pgãïaØ�.B¥É1ÚjMiºäkËÏK´í4I‹þÅøÑ½ˆVr.kÚ¢sŒ)Š»²º”ÌcJã¥û¼0`ŽJ\aÒX(œŸÕE(YÔën³Æ°ÛÞè¿GóE±y –Þ^ýÎA¥ë:Ýc”ÄBï˜Wúq©tÎÔ5?°öS %ŸMúæÞÚý´þ¾›`aEëå7øþËì¨ÎO Œöw°¼÷p|lf–xugâžgqŸÎwãJ²¹Ya¼¶&¾·#_í½Ì¨§C¨Þ.˜sÏß«¾/Äu»Öþ Ê}”µ‘G¸ôÀçNA,›äHxÅ’Œ:©)(s§õÜœ“•€ õº¨¢pŸ5ìžÑ„§A•”'X@þž[8:Ý‘~ XqŒ§ÖŽ”©ÙŠv´¥¸Ý…†椯#1‹šã<ð,½¶ŸeREÝíèüƒzõ¡d1UžÉöÒ$¢!¼÷ð\•�Ú~díàJ¼\XÿÝ‹﬑Ô]Žò¸ë ° 'ŸbG“´ªÖŸí�3Reün"}KqzøÛû ŒS—geq·iý?Ž-*JxÍJŒŽ~�mû•Ÿ÷9skT#ðDâ«AÊbáÐc)‹šŸäëf“xûœKN `YohóeANŨøzÞkLÿ0¡_Ùr”³Ë‰™Ê„Ó¿=bþñhÎýñ£:™Òºº OoüJ‰¾ÏùÕ�_·¶iÃÒèe4¼1—¡~aì¿k…}WÜ ýL7¿”Óþþ}�ŠÎ/s¦ÛF×ßCøjÐ,"/¿Â¶LÜì2*4ú½‡\ÄýÐp�¾l;:›Ù5¨4êh WÙÞ·U2Æ”Î-úÎý‘U6V•œ§ú�Ñ>äÂí gv£Ç´Ã˜Õòciè—\éS”K4¿d¤dî�ï—î{°rð8=nD‘¯ö¥ðå•þcÞ{”²®¸ÿ› es”’¾b¨ÿ!wß±óÎd§Å”ïø¶�#gýß>äÂ�ºtÅK¿szo?Ã,§½Œôôå'_�·®sƒ=ÉRgíJcµ'áÜÑñ %ç2ècÊ⮨.ó˜2}mV¶þQR—¢ùYQ‚¥¿Íƒör|”9!Ýùö¨5G†âY‚ßr¡¬_JÆ b¡ÌëŸÁ ›3u­”¯ý%Xzׇú㥬÷é靖`©Ÿ0� ûQà\`B‚6Ô1�)½RÜÎŒ§W²r|.>ûÞâÆ²Ò–ÏÿšÎvd4û‹m>¦=K½1, p£¢S~rfzÍÃó{Y8Ÿ—ß~P« â¶’I­‰½w™_V."¦áG°E0nl˜áÔi“|ÚQÃé3ÌŸßãꉽlš9ßµñßÔéDªê³¹¾£-Û›æ¡ûÖ×ä´ŸËãž3 o}æk¼YýP}Û�,Ê ÷§Té1œUôå–zë–’9JÓ ]}×o˜YA›Õƒ¾íf„3Ñ£ ¹__eÛôîtOÉP'ªLÑ\E×_×[vƒ,u²�ôüÊRï™èÛ´<Ö¦<»}Š]KùjÄz®kç3ã´G¡�‚sYÉSw…Ÿƒzæ1%>ŠÚ¬`ŽRR—Òõ�¾E½¢6““Fãñm¯Ú8˜Ýá@XG+Má˄Ǵ«Ç¼¾u�Ò±¡Þòñq>S”9ëŸÃ•®ýôÅBɺNY¼ _3¤‡w=ÁJ(Òø¯”Ï+¾2%—�*õ�ÿ$ÿúûå#fýð”‘þ+2ÒO]Éœ:ÁZ‘¹Y[.CûH”fÏ×{O1àD3 ÷Û•ÂÕE%Ç| æ¥ÕbM\Yt÷{²°¥õ÷‰'"­vèC·;-ޱÿR›s1pÏ­«}Šà‡R¾F -ޱ�;I°>žµÔ$Ÿ¤€ú~,ÿÖжš™3eBeª~Æ‘ŠØ7¯xóê9‡/¾`üºX¢Rzúÿ'Ù+iÔ‡Ð\Áú( Væ*ôüºWæÍ$2¥_kWṙÃH%çmˆWÍçìØt€˜—¹¨5b«{Þ«pGÖ²Ý7môÖø­L‹cì?ÕfI°Œ?蔘ǘ‚nëI°Œ%)åˆ@0SAUpÈ f&ðຊa÷[¥qi¾��˜`)iŽ£_À¡;ß­AÃ/òbmþœ›‡×3Í»sŽ(Ý«¿ 9BRO@¬Ô³—šS�KƆˆ€ˆ€ˆ€ˆ€ˆ€I@,#AJ1" " " " " " –Œ0’€$XF‚”bD@D@D@D@D@D@," " " " " "`$I°Œ)ň€ˆ€ˆ€ˆ€ˆ€ˆ€$X2D@D@D@D@D@DÀH’` RŠI°d ˆ€ˆ€ˆ€ˆ€ˆ€ˆ€‘$Á2¤#" " " " " ’`É# H‚e$H)FD@D@D@D@D@$Á’1 " " " " " F�ËH�RŒˆ€ˆ€ˆ€ˆ€ˆ€H‚%c@D@D@D@D@D@Œ$ –‘ ¥�KÆ€ˆ€ˆ€ˆ€ˆ€ˆ€I@,#AJ1" " " " " " –Œ0’€$XF‚”bD@D@D@D@D@D@," " " " " "`$I°Œ)ň€ˆ€ˆ€ˆ€ˆ€ˆ@N°Ê0áì/ø~a¼ææœ:äᅦX‰©ˆ€ˆ€ˆ€ˆ€ˆ€¤’@N°âŬé¹íWü.4J# –ÎÝg3wx;*ä3ãÑÙHB|zõЀ!`I©®�ŒðjJµböØZ<çFôfBý¼™´3Q9yZ2ajêV,O kž…7â3¯í†'¡fNxMgh»ª²1å�['ضpý£xßê,.øO¢o“2äÍð'wOmcþоîHÜ/côÝ&9TD@D@D@D@>²€$XÜÊu!Ö7䘯;ƒ×=¦ô 0ºü�™êL»¬´1_à³nEŽ®aÛÁ“ÄüaG]ŸiŒiô„‰•ÊâR{¯p¦ösàzôÊ¢ÉÞ&ÿ Á2¡Æ¬ËD¶¿D@‡>„}N>×–†ºq×ç ê̹Øáµù³~ ×Ñüx##å{Ì`á  L)[�©—4ý2Nß•Éq" " " " "ðñ>H‚•½W$·F_¡§×MZ�ëE}'ÞÜ?ÂÔ–.QwÒ §ÎÓÚŽj…²ÃóD†úÒË+÷µVU¼™;¦ µË"W–7<¼°�•½ñYv‘×ï8¥¥+XÖt�¸Él«!Ø× ÖôÕ¤sb¶Òp¥ …}[)ˆËQÕ9™�õ2ý­?ÛËøâ[;#Ç&µ NÀϼJnœdôà‡ È3Ιrã´MÂq…qä4ÞÑMÿA‚eÏ7?]À/Æ ëëyW挊>ÎÀ£ÍÈé¹�X+~øm>–_å¢Aècm­Åsâ¶T£ÈuÐô=î�ÖÔÂ”Þ (agÉ‹‡×8D¯Î¡œýøç‡Ô(" " " "  |°ë× RÜ>´ ß¾~¬>ûœ[PêÞ"¯B>¯ŽNÈÆ²Aß0{G ¦EÚ1>| Ÿ‡V¡Ò¸3q[Ør~9�QÇXyˆówT86 |º QM Ò;*qŠ•†,U]æß‰ êür÷;¥ ”9në³ÄÆ—ü5gqW�`íiÉ®Ž ™ãÂîñÎléQ“‘Œg÷”?ðü̃5Yλ¯œýØyc"Ïzå¡Ùâ§Iþùo,å'žb�[4^µº°ìÚ²TÃÖÍ]¹èáL—�Ï sw6?æu¯ì4]üB[·#Ã�eôïÈ]/„GJú®N½›,æÖªR¬rwgÜ®»Xæ+I-×Üž¸”x1ƒF¸," " " " Qàƒ%X·gçbjÙŒŒß®ß)U%‚.í¢rpQªN»žÐÕÜÞ{¹ÜkÕœ†�,@~|~:G�=Õ):4î2˜ö•†,óެ޵�=n�fph¦#a *³§× 6»„Q¡ØNÄ]Á*ˆŸuK–Ï™ý•™m_‡` oö�oÁò‚µ™™/Á +MÃŽ±¢ÒZê—òáÀ{—¸þM‚¨ìh:m‹”#ÓëXÌÞÜd½wCÚÍ¿¨½¢åÈПO2üõ4š¸Žbßc3 v\@Ä‚<7–eÇr^IßÛ¾;¹1ö.îyÚ³æÏ�x&HU" " " " "`�–`ý:á&mrt%"écýlû²óÖjY¼ßúØÇKhjÓEóž,é8 ÷:%±Ï‘ sS¬²ÙðGx=òõÙ•èA i/ÁÊæcO«˜aDŒµçÚpvÐÍw¬m¹lÝ�õEGqìpefعnÕ‡¨6«ÂÔ·y)`I¥ÑQüØã¾5Z±àJrÏQü7 – Ç눙�EÞ#ùþä r×ÄÌIµˆöª€ÇÍC,L u!tÅTÜKg#öÕ+œCðÕV /N‰r㸤M°tö]]P®Ž,;°€–gÙ½ãG¢÷³qñ =”çCá|—"D@D@D@D@>°ÀK°n�¾ˆkÞ>ìJº.ŽÛÊ@L+[ºmNiÑœŸ;O`FÿAsØqá!/cóÒ{ã!žjBžÞ;Òf‚¥Ý&We~9JèÚ"˜�`ù}¨J\‚µ(Co¢bº²¥xe¦\‹©°��Ý2²^Kæ�Onï úØ‘`™4&ìî:ŠOs¢âīڊMi¾ô>«ŠLÆ©âD®$¤¦™sbkö˜»�Mé´þ¡fý°mº˜çJú_މ %ê5¦–K \ÝÚS/ûN¼J¶dñ�|6Hñ" " " " "ð/>~‚¥ªÌ·—w㺶:N>¿h·˜%é…újÇïsxÒ.›´IƒI-‚c¶Ó*¢a’ËŠ.›~cÚ½Väì¾ÕðG�ÿK@ÃÞn�çæ›Ì2÷!½yšGœ›Ô`öÕí4ZU�Â>¿hr¡(ÁÊBí);XÝö:ßÔiKØ•”’+e –Ê2¹lÌyzïÏßâfáÎÆßð]„J“c¬¦Kî±¶ü<Ê;�àDr¹z²åÜ ²Œ-Jµ¸­  úž\9Vîlx0Ÿ×žYi½"ÙÇ{9ZD@D@D@D@> ÀÇO°€ü=·ptº#;ü°âO­)S³ì"h?*ŠXÊ3ùÂ^šD4¤‚÷ž«²S{Â�¬\‰— ë'I°Àyô1Žö¸ÌWͰêêsžÿþ˜—ºò�ª¯h+×0.¬«Ï‘¡�øfýcJ}Fx·—Œ)ã¢yL»¢+ õ¦ïem——ÌóìÇ’ ñ7+Åò÷Ý󜿟ˆd$ŸsA¬Í Ñûû•t:ïM]¿=üùüg¯¤ÿ" " " " " F�Ëh”R�ˆ€ˆ€ˆ€ˆ€ˆÀ]@¬ÿú�þ‹€ˆ€ˆ€ˆ€ˆ€M@,£Q*-È çî³™;¼ò™ñèl$!>=ˆÒþаÒbò´dÂÔ>Ô­XžÖ< oÄg^ÛIü³¾ú‹²¤T×@Fx5¥Z1{l-žs#z3¡~ÞLÚ©m�ª «ž¯æK«¤¥Åò|SWr6[Âsõ¿ÌœðšÎÐvU)dcÊ·N°máúFñ@CäH’`}ä0Z¹.äÂú†óugðºÇ”FX—?ð/S�i— hLá.LíçÀõè”D“½MþA‚õ>ëfPäè¶_PgÎ-:&‡Š€ˆ€ˆ€ˆ€ˆ@Ú0z‚UÁ}6äÊg�ÃxçâÀПOÓ}§ E}�j¥¬©5<„)½PÂÎ’¯q2*ˆ^�C9›`i†Sçi mGµBÙááY"C}éå¿•û‰¼³÷ŠäÖè+ôôºI«q½¨ïdÛûG˜ÚÒ…À#ŸZ`¬éq“ÙVC°¯¬é‡I-æÄl¥áJ û"¶R—£ªs:25êe&ú[¶—ñÅ·vFŽMjA�€ŸyõN· 1âÈi¼£›þƒ+ŸŒüð`yÆ9SnÜ¥dóÜÍùaWh—¿«±ç›Ÿ.àã†u‡õ¼‰{׌Š>ÎÀ£ÍÈé¹M{eMIÜ?µ˜I{D@D@D@D@D@¹@ª$XfMskU)V¹»3n×],󕤖knO\Ê)mÛóyEptB6– ú†Ù;b0-ÒŽñácø<´ •Æ�IØ §N°~ *ÅíCËðíëÇê³ÏÉQ±¥î­!òªrˆ�r¤ª.óïDPu~9ŠûÅ÷Ô·u�YbãKþ𳏫N°ö´dWdžÌq a÷xg¶ô¨ÉHƳ{Êx~æÁ�š Fû2r‚•³;oLäY¯<4[üô}UiÆ�:H»-5)2øgmT”ŸxŠ=nÑxÕê²koÈRe [7w墇3]6jRm%qÿ(q�JD@D@D@D@Dà ¤J‚eÛw'7ÆÞÅ=O{Öü™LÏT•º´‹ÊÁE©:íz¹½÷r¹×>ª9 #ZûWu‚u{v.¦–-Áȸ-mŸð˼#럄cíc�Û£šéHXƒÊìéuƒÍ.aT(6‚qW° âgÝ’eÅÇsfefÛ×!ØÂ›}ç[°¼`mæ$¾„‡1¬¬4 ;ÆŠJk©_ʇï^*Ó$I pmCi‚K–gÜÅDÖ*;šNÛÀâåÈô:³77YïÝ�vó/j¯h�Þ¸¡“¦‰€ˆ€ˆ€ˆ€ˆ€�TI°ÈÕ‘eÐÂò,»wàHô~6.^Á¡‡Úɶ/;oÍ¡–Åû]ˆ}¼„¦6]ˆÐwkÂMÚäèšð7%O•c´ V6{ZÅ #b¬=ÿëІ³ƒn¾›`mËÍ`ë¬/:Šc‡+3ÃΕp«>DÅx°¹X¦¾Í9Áh –%•FGñc�øÖhÅ‚+É%«Öxl¼Êœ ¾¬’h«¦ Ç눙�EÞ#ùþä r×ÄÌIµˆöª€Çí3ôÅ=U‚"•Š€ˆ€ˆ€ˆ€ˆ€ñ>@‚u� y}݃Uß_NÓmGµD÷`©ï=²¡D½ÆÔr©�«[{êe߉WÉ–,¾ÄmS ¦•-Ý6ë¾*¥¹ë"®yû°ë¿€…v‹`•ùå(¡k‹`B‚åGô¡*q Ö¢ ½‰ŠéÊ–â•™r-ñ0ƬŒT ØÎÆnY¯%óο³ñmeC8xf(×:ŽÛê¸gj^&� »»ŽâÓ€@ î ÕIDATœ¨81~_¦)Í—ÞgU‘É8UœÈ•„cuÄÝxãZJ�T0z‚UuÆ5"KMÁ¡Öl¤ªÎ¬k‘4XVåÝ+qw­ÜÙð`>¯=³ÒzÅ+PUæÛË»q]['Ÿ_¶˜%'”¦,¬ñÜ|“Yæ>ä¯7Oóør“̾º�F«ªSØçÍC.Œœ`©,s�ËÆœ§÷îðìuRÅ,Ôž²ƒÕm¯óM�¶„]I!¹BE¥iØÓ6’F}Ø™¸ w6þ†Ýè"Tš£­À”¦Kî±¶ü<Ê;�àDrÁK÷T9¤R0ž€Ñ¬Ì�ÖssNV*Ô#袊Â}Ö°{FžUJH°ìZû3(÷QÖFáÒ œ;±l’#áK2ꤦsù{náètGvø $`Å1žZ;R¦f+:ØEÐ~TÔ;¹H3W°+×0.¬«Ï‘¡�øfýcJ}Fx·—Œ)ã¢yL»â+#ùœ bmVˆÞ߯¤ÓyoêúíáÏç·8{åÑ;I©³ÿqŽ�r`U«ltÜ�ø2_êMßËÚ./™çÙ�%âoˆ‹åï»ç9?ÑMXÍùîÆ*ʆV ØÈ¤éRzo?Ã,§½Œôôå'_�·®sƒ=ÉRgŸŸãÚ£$îÆÚR’ˆ€ˆ€ˆ€ˆ€||£'X¨ â¶’I­‰½w™_V."¦áG¾Ý"˜¥Þ–¸QÑ)?93½æáù½,€ÏŠË‰3œ:Mb’O;j8}†ùó{\=±—M3‡ã»6þ* ¤­+Xê›QÌ3˜¹#ÚR!¯9�ÏmgÞ`/ÆDjïSRš`eõbë½PX¾;h^�¤Lq¿„§1ªÿ›b‚wuq'ý?7M2òÞp'¤>yzïHHdm{låêŒLŒþÂ… wîÓ¾5KU¼gN oÓò8X›òìö)v- ä«ë¹®Íé”ÅýãŸR£ˆ€ˆ€ˆ€ˆ€KÀø –±Z&刀ˆ€ˆ€ˆ€ˆ€ˆ@�+�Lš+" " " " "ðé H‚õéÆFZ&" " " " "�Æ$ÁJc“技ˆ€ˆ€ˆ€ˆ€|º’`}º±‘–‰€ˆ€ˆ€ˆ€ˆ€¤1I°ÒXÀ¤¹" " " " " Ÿ®€$XŸnl¤e" " " " " iL@¬40i®ˆ€ˆ€ˆ€ˆ€ˆÀ§+ ÖG��ÎÝg3wx;*ä3ãÑÙHB|z¥ý¡aÅí1B9ª6¬z¾š/­’VËóM]ÉÙl ÏÕÿÊâ‚Oð$ú6)CÞ r÷Ô6æíKàŽÄm6B{÷]�OS@¬�+×…\Xß�c¾î ^÷˜ÒƒÂëòþeª3í²òƧ ò8ÁÆäm½*Û6oúšßúæ§Å’'€^›Ï1ËáúwÍ�72R¾Ç ÊÀ”²Õ˜zIó^ã´GyÿåHø>@‚eM­á!LéÝ€v–¼xx�“QAôêÊYµ€�'›c&ó¤{>ÜV¿H0±j³‚[‹²3Ü¡!ÔÖSΧ¨©·MÖt�¸Él«!Ø× æ¾úx“Z̉ÙJÕ.ö9Dl¥ .GUçtd6jÔËLô·þl/ã‹o팛Ԃ:?ó åèmKò丛óîÐ.7"þVgNüðÛ|,¿ÊEƒÐÇÚ7c̉#tØR�"CŽÄÅJo¿âÞ™cú¡åm" " " " éRÀè –Y“ÅÜZUŠUîîŒÛuË|%©åš›Ã—r*ŽÐŠ6ßß$,³öM¡Y²gÅcãu¦ÿÝ‹ÏÛ¬à@9i0ªºÌ¿AÕùå(î§ÑsÜÖ=f‰�/ùkÎâ®:ÁÚÓ’]2Ç1„Ýã�ÙÒ£&#Ïî)àù™?Æ*(çŸð¨J3îÔAÚm©I‘Á?«.#sw6?æu¯ì4]Ÿ;2ìÐYFÿ>€ÜõBx¤¤_é5¦ÿÄYÞ#" " " "�nŒž`ÙöÝÉ�±wqÏÓž5&ïfZ7„kŠ0±pmfßVïBëCä%?®}™Ï­¯âÞ¤¤œ4óެ޵�=n�fph¦#a *³§× 6»„Q¡ØNÄ]Á*ˆŸuK–Ï™ý•™m_‡` oö�oÁò‚µ™óXA9ÿǬÁ®m(MpÉòŒ»_€#C>Éð×Óhâ:Š}�Í(Øq :PðÜXJ”Ëy%ýJ¯1ýÎò�ô+`ô‹\Yv`-,ϲ{ÇŽDïgãâzw=DóR•gò¹=ÔZT‚Š.cïs€3½R·ð Ʀ¤œ´m"’ÍÇžV1ÈkÏÿ:´áì ›ï&XÛr3غ닎âØáḚ̂s%ܪQ1l.V…©·5 –Îr ¶±ÆcãUædð¥`ýÍöEíˤPBWLŽt6b_½âÑÁ9_mÅðá”(7ŽKJú¥.+=ÆÔ`gyƒˆ€ˆ€ˆ€ˆ@z0~‚¥Ö2±¡D½ÆÔr©�«[{êe߉WÉ–,¾ó–²ðˆÃ︅Ê%þG«£Ghµ®¥ÇÄÝ¥•he¯¿œ4íVº*óËQB×Á„Ë�èCUâ¬EzÓ•-Å+3åºf‹ Îr …qÂÁ3C¹ÖùsÜVÇ=;ð½—iæœØš=æîcS:­@¨Y?l›.æ¹’~%dké,¦†:Ëñ" " " " éZàÃ$X‰É¬ÜÙð`>¯=³Òz…fû_Ü+W?v\Ĺ€MÔ]–¹_TgúMÖ)•“¦Âc�çæ›Ì2÷!½yÄ=Ë䳯n§ÑªêöùEó� } Ö5å$rQYæ —�9OïÝáÙëäÀTTšv�=m#iäЇ�É“è}¹z²åÜ ²Œ-Jµi×ã^¡·_ÉU›.bš¦ 4VD@D@D@Dà =Á²kíÏ ÜGYy„K,pîIJIŽ„W,ɨ“‰{“÷õ×YØ8#íè‡}ãü–èßÊËùÀBF.ÞÊ5Œ ëêsdh'¾Yÿ˜R_‡Þí%cʸhÓ®(ÁR?]O9‰Úíìœã£XÕ*7$ÚªŒEs¾»±Š²¡(6òÄû=.뉥‡ì:rƒW¹kÒs¬?í2,¥Y‰¾l©9\I{ÒkL�$ÁJŸq•^‰€ˆ€ˆ€ˆ€ˆ€¤‚€$X©€.UŠ€ˆ€ˆ€ˆ€ˆ€¤OI°Òg\¥W" " " " " © V* K•" " " " " éS@¬ôW镈€ˆ€ˆ€ˆ€ˆ@*H‚• èR¥ˆ€ˆ€ˆ€ˆ€ˆ@ú�+}ÆUz%" " " " "� ’`¥ºT)" " " " "�>$ÁJŸq•^‰€ˆ€ˆ€ˆ€ˆ€¤‚€$X©€.UŠ€ˆ€ˆ€ˆ€ˆ€¤OI°Òg\¥W" " " " " © V* K•" " " " " éS@¬ôW镈€ˆ€ˆ€ˆ€ˆ@*H‚• èR¥ˆ€ˆ€ˆ€ˆ€ˆ@ú�+}ÆUz%" " " " "� ’`¥ºT)" " " " "�>$ÁJŸq•^‰€ˆ€ˆ€ˆ€ˆ€¤‚€$X©€.UŠ€ˆ€ˆ€ˆ€ˆ€¤OI°Òg\¥W" " " " " © V* K•" " " " " éSàÿG2áùŠIEND®B`‚kubernetes-sigs-kind-49aeee6/site/static/logo/000077500000000000000000000000001524365506300214575ustar00rootroot00000000000000kubernetes-sigs-kind-49aeee6/site/static/logo/LICENSE000077500000000000000000000002061524365506300224650ustar00rootroot00000000000000# The kind logo files are licensed under a choice of either Apache-2.0 or CC-BY-4.0 (Creative Commons Attribution 4.0 International). kubernetes-sigs-kind-49aeee6/site/static/logo/logo.png000077500000000000000000002472211524365506300231400ustar00rootroot00000000000000‰PNG  IHDRÙR ³6Ó pHYsÃÃÇo¨d IDATxœì�€ÕÖÇOú&»É¶ÂÒQA:,½w‚Q>»‚Ѝˆ)‚JQQQ¬O}¢ 6:H¯Ò;,Ëöš-éùr'L6e’ÌLf2)÷÷Þ8íÎ�»œüçÜ~¥V«¨¨2YSN—˜î7Y­r¥DT¦’ŠJ* ÖºZ£%½Ü`­W®·dj�Öt´/7XêQFHÅ"½B"ªPH R.U*Ä"ûÞéüÖq•\ìzÝ ¶ý홥zKÃr½ý;d¢§Î©ò/îL’®úo£Bê~aÚÞrê_@„b²X¶-¥Ê)\ÅyºÄ8Ôù|I÷xWqŠ‹Á£ÍØÁ‚üw Ã; nûœšÉJ±Ç¿Õ–l=X¼d†BÝ«Á1ìX_Aì f+ìÈÑS†Êè”ïž¡v:"[ñ�Pÿ¦ë:ÊûB�Òàq2Á3“E(Òƒ„/£ÂàezkC¡ x3z0UNüë³U¿°yxÞ¤ öýÊo8LRd#´Ò ƒçT™Û – A°TŽ}¸©rlð"*÷0x³üëÇÀ–ìà«ÜúM4ØàÁ@ìEÇ|«[W@„ðåaaðûÖ¯á-n}SqÀqln5’ƒ”Ô§ÊÃÂà‘Œ7•Ï>PQ± ‹FÃõû°ÁC½Ùªæ#^lð ˜U®¬ ~dÛ::j„㘊ö}†‚X"aû ^IŠQ@Î㣈cñÆN 7Fÿå²n%Ú'ň¯ô©+‡* +ƒ{3°;ÿìÜûgó Þx¶õí°¬W'èôbdMÎ%® ‰.H…Žû6Â?%‚¥Í—Ñv‹WHD@Ù—ê׫ºå»oê_t¾Æ©Áѽ£ï†ö)I„‘³ÖäºÜ+,7×EÐ,+2à£ì ðÂé¤ӛÑgì+'ºÎP©ÝÝØo_éÅróŽÒ’TM|Ä"Ñ-5çú og3ü8¸¡¯�;è}͸u‰ÛLQçÜ•¼e’l}“xéN&qK¯jM=9HcÈQ3i<±'?ÛL!ŸC†GÛÏÛ~£.�#©TªÄ8 mLâ�¸O:C^‘á7¬Ð†'¡êEÜê#ßýVò6€K×YeÛ~ˆ(ƒ#c3Qô�"3¬X_A+¬³áC!WO²¤` LKÝB+lÍñ_ÆE”ÁuFfá“ã%�u›¶¾¯W¸ÿÐ9‚¼ÒßTv�Ø›Õþ‹¡š6�ž¯ÐS7ù)G<Ø[El:_FÜÛu�ÁÖl{:Ô~×@*ãnÕÞÔç(Ã36xþɽ�™šÊ(<-l¹”´–Ý\.½sãVÑ(Õ¿Á?ïÞ²~t5˜»�v64Þ»ÿL£åÊïçË {! î 2>2º³±Ý?÷Œ NÛxl°•CPüi­ºs%22𳡑ß>¿€8öf`çðlsùÁ¦Ò¢€•E½&ÕŽp6:mƒójl!�Ž(«²:Œí/,y.ĉ©‡4¹Ãʇ¼òZá&Nz–Mô¬ cœ„XaPoaý}òIž\^ g”<ÞpΔÑÉ­³2¸Z­­Vë3L÷Ü}šýa2²~÷mDdäÝK3 FæiXçó5»ªañšr‡+ úq»l€šã]ü¸ä=›ËÑ KuÝ«ñYüáGƳyLpP.¾gËXþL"åý®/å�É>“`dÈ*< ëKå"©BÇÊà?ý´ ý† æ'Ýk÷T;ŽwŸª-s»gÖÂÅØ•F+\ךáJÖ÷ª%ûоO]ÅRçëÒ´ÛOKRn;ÃÊà£FqÛ‡+Pæ}Wîó¾T"¢åŸéúpDA™…vØ@°XÁ{wæŒÁ—.eÛÁ­â×R="í’&ÿtÓuÝ<î’\*=½§Pç¼·.J'öú*)ïÓ1ðê)0f¡ç×ìž9ùðÚøV°øÈI©¥�¿Þ¬ÎMŸL&c’ªe¢ð){P {ö¨! 9nqüðZ2qìžùr7¶·ûO¾_ìµf^—¶œÜ›¡ÑÜpovÑPösCƧkt¯Ÿtrdhð©-òõ |È8�KΆ!ËÖsÇ'Àß•ל (‹ààòt—ùŸ Ò\âñÙš¶qƒãxžÓ±;¯½û1(U±>ÿoƦÓÅ …ùæ\õÏèxªÞÂ…t]:ŠJJáþ®*øuµÏpC»(wÆbñFJ¼ÿ¾ê;§ÃòO¿¢�έë×À}ãõzo.õLPL:1ú24‰w…ßó}íâ9øê½·è¾3è<ðØDصþGŸw®b5˜j¯¹ßGÊ&�í¯"'N)‚µ¿o¤•F:ãç+�ž™ÀÎiò/h½€~Þ°Ù\¿“sz  ‡mF÷בU~ë/FÇ�è@.A¿6öIŒè=‹ÞI‡ /N÷ÆÛ§|TSå“´^€°ÿ¤“01:É�Žž½H¸46¢Éwú¼_ª§.Þ :Ô(V­�*­ïž!»] ã'½×nxNèˆîõ¼ ãÄ¡çtŸõgtd¬žSó@g ÎÐŽïç·®�‰±ép(ßÓw'ň/sú'hüÕÅÒʵ·r+ÃrÉùËW`Á„t˜ý�g áÍØˆï¶WÂKP�ðÙû^¼¾è=NÒèˆÓKFmzuSN_䄇ÁoV™¡nlà£E2ë¦Ã�›yÄñ]ãs\ïÔ® :v‚8nÛ²9?uÖãÙFõ3ájö Vï}â¥D&ŽÊàt{´P�|ÿÎ}¥Å_f�*£6¿K|£—0ÄÃà'‹�ÜùS¼æ³!#-Å¡üeógy„'ï‘Ï Î>>図©Û¯c$ໞ8@hgÚÔ ‰ -+õÎÝïŠ(²÷<ôTTVº„'Aÿ°ä* �ü¸2:[cûS7ÕJ!5‹Ó+o¿ÏYíilgR“ë{oKr°!P£ó¡l„àó´q R6RæÚ/VÂÈ'&Ñ~® ¨˜ë¤Œ~òy8üù‡¬žekìiK>büLPgblž(ûãl©ñ®"EÕ•i)uX=KáÞ™ë¿Â‚y…E¼¨Ôª8ïcù…žo•0ø¨fʧÞÙvµœ|񣄯á öá°eÊ�ò�Ë7Æ �&lð¿ží:ÕHAƤ«æ|>s¾Á �26øÙbÏÚ¸)k6‡]f†ËGòøš�µ] §¿+<ÊÀ�2°Á£ lð(# ƒ_ýç gÃ�nN˜g2f£!Æl2ÉÍCŒÉv,tº˜ õÖüt‰iX±ÞÒD)•ÅHEe¶Pâ ƒ¥n…ÞROk´¦—,™åzk¦ÖhI×™¬aUùàŒB"ÒÚ¶J4¥†B Ä>F"ª Î%pë:ºUNÇ•è­Áš^Žþ ÖzezKƒÅªj¤–�b¦Ð.êæ¢i4Ü@kƒq¹>ØårSŸm7t.½…n%qû­#Úl!Ékx8Œ]®·d ™�H<]%9ùr»¸ÖB¥Ág& ­iím™cŒ�Ã(ÑÑ›”/¯ÚÜJH•{56î¬H�¬TÏ)”ýu\Êà„±—«<å|:0È?_FŸwP[<¯³šÝ@;–ÆÎ¯6ûž]à _F¯6Y’‚�\“‚¹:°/°±ƒD(ÜÃØ­ëÈ‚ñÞ¨¤E¢ Δ ×Ñ×ÃØ &éAãÆèL‰±S_-¡4v°Ô�?ãAÆÛç<`c‡ÁP76¶¥néáBã£A+†¾Õ-Ý–­÷œÚÃ;¨ÝÁëâ3ìflÿõ⾌K6Ô NÙyÚkË û‚tBÝWfÍŸÁÝ{Û¾©Â»;Yxî4T¡22 yMh£#ƒïÏ3@…Á³OiÐ@>ëŸACF®¬±2Z‹DH£wM·÷ió¥ròø™–qŽhOY±ÆFFÞ|TÇj•ò™ës„Ìd‰ Fwî˜]i†3%žM£«NUnegD[)•BÉÓcà…�KhÙ׺aˆáóí³;~r÷Pxúî8Á>ïõã$ÄæL«�ú|&oxŒî‰c7KPÿÝÏÙÊBÎ|ú§–ØÐç]蜻3K ûi©[h…�cóehgPü¡fpg�ñË‹atÂ?Äùe}2üTÞŽ8F?ˆ�5ö¦²kÄެ涢çÇ)Ð,£öÏ&×]±^ ßlõ\õˆ ±¶ö ¹5ûšãx@}ߟV®¡RôCmWô&Š"bŸ)³/žÇÈØ§@fj*£åŸÜK+\Z«î.çïÜ8l?Hegì�핰豇Ú%bXžî5üäajbsþ:xó鲂Zc/+¨]10ØÆv§‰¼F%s¹æüƒ mlºFc ŠßÝàtI”É=Œ²åŸȲmΫù"|“\ã›*¬Ëµæ¬’É+èîlX*RŸq¶/î?²ÖQûkçå›ýùtºaQ±N¹ò;Æé ¤¡ÉcÒଌýñÊOü†™8éY6Qs޳RÑ1ZüõÏÃ5p_•K¸o¦&Ã� d.aùÎðгz�ŒŽC^Ù|±úïjxç§r€ &$ Õg~ûâtP+ïð¬. ~­hía|VÆÕ’ô™–Oyý�‡íFE†F8¦© •Üïµ<"\²FEf�pëöÕšdNp7hó˜|bóFØÆ-CÆAÖïÔŸÛ{;+=®-ü_ÌxPÕVè?=ÏaüþÓ=ÿ‘þz3•òSþæe°göÝÐcÍŸ¦ž7*Íp%ë�ë Õ’}äqŸºŠ¥Î÷­î]ÊöGlŒv.Is¹†ü¶3ÛÕÞï95ÏoœR‚3âÖkµŒÁ—.t#�·Š_ë~ßÅØ…5H‰ÀfNwC#ÆôV»ßõ^{r Peô>uǃÍT�g¥Ê¾"ÏéÎråbì›Uæ°3öŸ‡]ùæ¥BF’½Ñ ¯Ô 鉸ø÷Jøb£Ö†Êo;®?�\:4“ÃÞ3zGØY_—ÁÆ#üûj.–„l/ÝAuÝÅØ¥zû¯iï–?aÓÏBÕÿÚó=h†Þ7Êu¢Å¡ó\×!CÆšxoœ‹±I¼eØ�¡“?.ñúÞ‹7M�µqƒËµynç.÷hŒvekhtÿX‘q܉bãht>áÕªp.Æ&מÜüË�~*Ì$þ8Tíõ>iP²Üì^iB^Û¿<ºN¡_Ó¬.·¥Ö@Ý.YöÚ|…¡LñÜ�¾v‡úÚ�h�õÃëôiœwVÃØ>*ŸÅ.©¸öó>óë2ŸïDáè.ìΧ¢™•*�¿4Ýf€E^ þîÚrXõ§¶;帑Á¾ÞRÿ70Ö%l·—òÀècu]&†A „Ãʼ._%ö2‰È«¡´Õž¹[wC#|ºOë0¸�&#,‡ÿìþu5ô¼ íë�ÄIRÛ>?Ÿs„¯û¾>óˆ¥O%2Rµ*Î÷ü·'Ѝ8!=°ïž}¹ˆ&`|ùo†tçíy¦ŸïiK>òy?¯Ú³*vü*Þ|„´^¬äŸœ*s{_�ââ ²Üw¦ÅC'ÝÁ^'„0ö¤Öq½Vþ[¹‹¼ˆˆ× a†{qËŸVIÅÞ{FðaìFjÉn÷Þ ­`B°#GïèüA‡`/ƒðù÷öëì>ýS¯Ï”]=ùÿì„âsGKY Q(!¹E¤µëqé |†ebè�[׋- �Z†!—it%"^ !µ'%èõZÛ')N¨E‹»ÇKlfWqÁŸñ7»h//ü׳½¢î‹p×'»W*S"¢Ã¡ x¸<`cG£ªÃ¬ìÐÞ¸ØV�Ùì¸Ðé K@ÆŽvUïyó±cáô)ÈØg‹©«T§¬Ù6ÿLX>z�Ç�û.!Âü�"°±£lì(;ŠÀƦ‰Õb‘võð³Ñc2bÌ&“ �.&Hýu—Yy²j÷Õ ݉0˜ Ñ9Mþù¨¦Ê§„NG¨âõKŽ[<1¡ÎÁ|Óh#Ïce⢹�Ô)B¦)” 76&©2Z’ÉßîÓ-ã6‹—0Z6'Òð76&øôT%1�¯H$²,î¦ñ¿&eª‚&Àð šS÷ŸBê±rL°Z­b.–¹ G\Ä}Ekîå+pVª’bÂk^[Lx‚æO¦r"åz Èg'úh¹‹¸?þ·òo_�±°1B¯pýÑ#é˜M›„Dþ@åsÝÒå+¹N_(A;[޳â˜P¤C*Z³Ë¾n“¹M~¹\óÚ"Ù‹ãN ˜ˆ�t@LD޼ø]4IJ‰¨”¯t -q'(pv>0ùÜ%[Åõi¬‘ø,–†qïÈÑ¿æ-Ó)òèàÅ­‘‡F¶ ƒ (›¾õ†ÌúÙt´U‘û7ú¢qÅ‘më\·Žáõ]Zw òU@éŠzÔM…-Ã9Îß^]?ÿ^S†kàáþ±Žë‰ÛÖB¹1ðP•™ö¦_¦#ËÐ>P‘ÿt©æóƒù†'¼Ý—IDÕouÑÄz»ïŽqsã¹ÙŠ×ÿîÝûç%îpgUÿn0¡yí¢éY“s!k›gsíòuÄFÒ\Òö-Kwœ?~òü'ç2¿‰ AØ%�™ �ÎÜ…F³Uu¶ÔtoóDéïtâ”ÚbôªàiHæ60Ü|b4$*jGï!1¯æ}/l? âÙZ€eEÇÙÖ’|th[ I +œ')a+t’·ºÆÇÉÄPHz¾?¼‰;ÿä^Çqfjª��ܽ‡KÒZuç%^:Ìü�ÿ)¼ôF…ÌS`öŠ…i£5áO^3£K‹çäsÎÏ",ÏÉ­oÕ#b‰ ÑeJž£ç–ó³ö_[\Ta�^uùû D"t½ú””í QWˆr.î’Ëÿ‚±ZËu´A}4D"1¤¶ì´wõ·�Ž"Ë«¾èñJ­ ‘ØœGâ,Hºt™Ro· ø`bq|`y­g¿^h† è—ïz=ŸHßäv-`ű3ŒÒm8 ·¹"î�ÿ×qþ^a?0Y]{�.·]CP} 8w$›Äjµõ}I29üu„»Y}� ©²ÌõSè™�¶;Ç/³ëžº¸{,n7¾+͂ΪkDáËc?˜ð|o ïNÏXêÙ˜ƒVæþxå'œÅ5qÒ³œÅ*|ݦ±ýkf _ìr++#1;{qªì÷'/Ôqy¦»ÍCï=£÷O’Wj�ûææ;î í¢„²* ¼¿Î{yÜ2]MãÕp©ÎC’háS¹¥ºà6E+}¦ù¸ñßmU°ê-Ô¸uu—7a=6(ÎãÚæ£:—Ñ\ˆfuepñfíGáÜ #6Fyn´Žvt œ?z  »ÖÿHŒn-µ;HŒIj lzËÞÅÓ½Kª³0O_7„w‹<ž§ú@ˆl…q²rÍ9,[Ú5‘ÃçSêcïáãXÇã‹` ;T'F$a\ F÷¸†HàˆC6‘#بDk&žC•jãúÚûƒ»gÙ¯©€5»¨[-г¿ÎK…ºIÊgQ­9ª=g ù·rEËŽ]`ôÏÏŽ=Ìô?¬¡.l'µe�¼0 ¾ý` QE5臿zÕû„¾ßQïQ4où5‰‘Íbî}m´†Ø˜h-þŽ%é#‚÷V} ¿ü±) ¸¨àBØL¼õƒ·©ËJ‘ý'à—NÄÝ´E+.¢ÁØóÌ‹ÄeÕ²y`.&lpŽcúƒñ0ª§góÖ—›*aåoµÝB¹èl—·æ’Hʆ»ÃY;åñ& ëÃ7¼ë8ïyÿ¿ÏüðÉr¨_×þ#ºv#ÆOz9 4Ðe÷¯µ“ÒI'S� 2ÒRXkE IDATáð§+ˆs&"_5¹tl&§|nÑÿʉÍd9m/}Z »NÒA°DMUDdB$ R�ØÍ›5eü̸g§ð�’Ð 7¿À¥Â­×«ùP£÷ß<éMØL!¾ô©Dèü¢ÿ¸îí¬‚7އ m%Üûð“½Û-ÚuôÈ‘.l!îÑÍTO®¹Xý9U€yè’N¯›!Ÿµéƒûö„9/¿@/\ñ ü¾e;qœÕ¶5,_`Ÿ�ùÅ×À‘'Ï�ÞÕ`4Bÿ‘»x[g¼y^¦áù‚ô€»hV¸q9÷ݸ‚™O«WÆ<ý"ëç£AØBÜ�Re_¬¹”âvoë6 3ëÂw+—9Î}°Ê!lÄôžqO{îi[™u²Gr™Œ*úá‘MMÎÂEÇ΂uµó½×_zΫèù¥ñìi6!u€# ðÌ úƒ6øâàûÄ¿“¦Ï…ϰï3MÔ<7qÖ[¬Ÿ�a#8Ï–sé½}‰Œ)îÏ¢s:"uîÍe›Pm�½U‚̪ó9Cª/œÛÀƒYa6÷£¯Y?MÂF„T™›ŠÕë‡1Ãî%ŽÝ=,(ìF:$(”ÖÃÿ³W*]È1Á¸Åü­:‚P)İuaȤµi&�T E›°q‹E"³ÅjådYO®¼7)ä¾øÆá)ù¸^ï:…�JÕ5®? ¡¼¶;(­ÎóÜÉ-¨@skš· ƒ…͇¸‡7‰yþçK5Sª1YA„E->æ,sÎF£ýSSgÁ™óÁl©}Æê•Z8¿kÓjöÙ@ 7°6úÝ§>’„�pˆ»kšüoâFÿ@L×Dbã½ÿÚö7lܾ R“ë@~a‘Ç}$ºX•tz=˜ÍvQ�yz2ÄŪÀd6ƒN§÷ß«Kì:p˜ò}è~¿]aûžý”÷Hºvl¹…p-;Ç%Lßî]`ÇÞŒþF 3Ø [¨Á¡DÈ•¹Qm6•°Iªª=GUVyïóìMØ$TÂvgÿ‘c”×±°ù…�°™Ž½‰D–ÅÝ4œGC ÚâÞ“k€Ì*›ð(2 [˜ ›©§FÜ™$ÛðhsÕýŒ \Ä-‹jŒ+e½L•‘]{w¿¡#aû†µþb0·˜µœ²Ë… ò PN£·ž7w�—Øòá=‰‹¸ßêªQùšË }›ÆK‰�.}î†Å�¡ 8#“»æ7gëY�s÷F$–¯©`\æ¾Tn"6*¨¥�¢C¼\ R§µñPkãÚ`ßÖ?Y'ù¤µë Ù‰-!›E›Ñ"jq£¶31^ךlõ=Q§ »m UÌF´¥`¨,Su%kl›moª±oÆ[×Ð=³QfƒÍ›˜™Ïþ("‰¤ %ˆe �*cA¦Œ™*¤1±ös•Úv¬©m�®Ëã‰}4m¢&¡ôÜm“å«�‚;:B`$29(“Òˆ þ<Ó*®S�d»ÿ�‘ ¥¸Çß®‹6>æRÆ`ø`j{õ�©J1^eÐ ŸenÙ™rƒµþU­©ûu­¹«ÞlUט¬ 5fk‚Á qä±­èm±•¿u‘È ƒA*:Fפ·®‘ñœØ3”«? ¢ˆ%æÔV]ÿð$F**‹“‰ 42qîí ÒMé*ñ¿¾Âc¨ ¨K¼\”ݶŽl5ÚMÈ_Ïö²†÷:šHºuúlA|Ãæ‡„NH¤=Ô6Nêüš)Œ`ì[øÔÁ»>Ù••\ÁDpq_þóÛ™V‹%"»ÿa¼ƒrjXàü"¸¸Ï¯ÿ”ý´˜° œ_72®�ïÇÏÏô²Þ³ œ÷ÙbúÃH§¬ÙŒaÄòуh¸ïá3!QŒàÙr ÃXÜL„‚Å�ÁD(‚‰»<ïf3¡Þ�ÁDR¦ãd/W˜ûV,U&k2:—‰D:¢+©m“‰EÄX=½ÙgÛ4:3h fk¬Þb�Ó™¬ z3ÄÙÎãP·T†è¦JtWµÆ™,VÆ‘ȈºÿJP—`±ÈÑ5˜¼&õr\Ö~l¿ï¸®‹À$µýÐ^vkOvAFáD"°8wU¶ý6âÉßºŽŽÑu¥DT+4ˆ“h™$ûõˆúß,\ðëµñÀ‘ÈÅlµÊÌf�Ùc�£Ycùàh<²îr͇î×—t�G3„nÂÄ«°­¼X¬33_‘ƒ 6§CL�4¼‰òùîéò�„NO(A)ìMÙúùXÔ˜pys´EëD TP {K¶nv°‚Á *6¦*%g§¶�k!tZ„ÆCØ_œ©Æ“ša–‚ss$ðh÷ÞÂ>Wj¼Kˆ„`0\íâÆU0K4‹ÛEØ:3ÄÓ}°y¢ ¨ñ0k {L€kZ\ÕšÁlá§Õ ‰ûÍ®ñj¹*yyAˆâ"ìÿ­Üçï�†)Ü‘€=&pмõÞ°8R`„bëyùâõýåÚ]ã5 1x™T;òpù-¨6û¬MLŽ‘`Qc‚BÇTÔoFFÔXàX¡Á÷~˜½¿¼â­®ñq21Tq�¼�‡‘J;¤ÊøJã•T¥Ø±,t ËÍÚ_^-enÚÂnÆ`½/ †/Õ·)`+ðh©P£­Ö&Xؘ‚8›ex£AÜX­˜°eÑÿÎуÎÌÌ{Gº¸¾QeÎ2! [z×S@™Þó™U°­½\³jdå3<%KPÂÞ—g˜è-P}5vì˜Ð&A!†™1°õý¬ù�<ÃÓ/ìCù†Ç½j‘ˆ…� }$b€þ6qoc îHÍ’cÅb" Ôé¥Uœ,6Ò~æŠÖÜ«±Z²‹Çd,lLÄQ7V§JL´›Ã>þ·òïHóÚXؘˆ5‡1i »YmiWW%>Æc’‚Š Âž7i‚ëùÊo„H&ÂaR™¶ü˜öŸHòÚØcc"T™Æ­Ñš®–‰òøIMpÁÂÆD4¨ Ý,ù‚C¹‘âµý ;1†ágƒ cLPJÅP#t:…¶Õ–kñ C…'SÀ„7L¼öÌýåՑൠaïºi˜â-@:6vÂþóšn¡×8'މ˜xíHè�F-õ"tB0˜POmÊæfn&Àµâ˜¨aPýØœMÏk¿¶·ÜÎ^ 5ˆÊÍÚ#�r~RÃ/Xؘ¨b€Íko¥éµç(/ W¯�…�‰*$ ez©ÜÜ¿i¼d?©áŸÂ–ŠÃòc…Áø„IY{Õ©Ê­áèµ} »îu†‰@˜–µß;^yâå¶qmøI ?`ac¢&íÚyUæÖ<'‡s| ; Û/3÷ì„EB'ƒ1ú¦¡aÛû’šÀ‹uÛ � ¿„[§ŸÂŽ‘†Íß�Á0†‰×F.4>š•"ûo â\+މjÐì¦hêb:üïBõWY)ñÿá7EÜ -¨±ø\ˆƒ‰d:§ÉyípÉ’Ks«ÍaUÛ‡Áp Ó,ùüÃÚ¼9Yêt“0Ò¼*KØÕøa0\ƒúl˜,ôf5­4XÒΔšîk‘(ý�çd±FšWcn)t"0¡éŸÉlVÓ¯ÎTmx»[¼R*æ«i~•¥•ЉÀ`B¦Yò™ûÊkBµ¼--Ò™›ãE—O‚Ò‚âxè¨.÷Žl[Ç,2‘:öÆUÒ¢Šâ§Ç‚Jê:+Îþòb输@) -˜®ÿ…*ÓÞî¯ârž´?®é–èÍç|í�&1“˜Ä”æ®ã»þ“‘ÙJˆ>±Z‰�AÇþù‹3©™4Þql¶ô�–j•þ˜Ÿ ]ãë€eÈ8È7è cû/¦RxДÅRäp´�þïÍ“6ö6Õ„)²oy7úHx»·/O?‘Iî (ÂæTÔF8 úÀ9<÷Qqí=ƒ²&çÇ»—f@š<†¸ÑöáTlú1èi ’•bhž(ƒ³¥ô×ÿúñBõ7?^€oØfÍ}‰šä�CÚ¹�Ô)tâã]Ø9—Nñ÷‘íëq–Ü Î‚þzK|ðk…Ïð=_± ü—Ù©P?EB!Þø‰ a¨%D—êݹzFÏ!�>×:®GCµd/Ýg>?]½‘N¸*£%™nœ¼ ;ïÚþ"§¹èZ4á,èyß•Ãoª=ÿÀ{¿÷E�'ÂÀv1Q-p•LĸB ñÑ¿•{Ðþ¡ÛUµK–ùý‡;_fÌ2‰^Á]J#€x…òží8äÝb8s=°âÏô/K‰ýCýâàåÔQ-p$î#F(Ö1›ÛðûóÕß¾GÇ�Óä_Œjª|2д\¯4wm'Ùï/vÓ6% ö�¾Ûq>pF>”UÑë÷L—ï·W[»&rø|J‡ÀÕ[×@•ÉÄé»B™Ž©h"_µ ¼ˆ¡Àó O �<ÞDù¼J**É­2·e�ícñÝôê¦þÂaa‡!Z4…Uýº:λLÉ3Í^Sl9vÙ@T´ÕÑH`㛩 `Ï!ܹç8[–óý±¢Ã-�#.”™àJ»�ÛºË5²y®DgiB'vñ^¯N0±õíŽs²F;˜WØkÒeì[–§{ÜC\s|¬É»ôôÉm RbC êž½yTÁ%pªìx¶Ïw2l~`ôÌHuœs!èÃ+2ŠËh¶:žEq­nÛƒØ\>s/œ8}ášn©G†Üo8ÕÑ/¡É¾7zWÞð™=K+G†=vséÿF@ÝX¥ã\Mg�ÏnÒ’ØÖÜ€ÿì8eÑIÞ¬zF,ì…l¶ÒkÛ˜Cg�OÍ$*Ú¢±�.æ(0©¡™¢�󸱰CRÔ¡ê¡ý�Ò­Q‰aÛ¢4,n/|SÒòLÇù´Ô-œÆ�…¢¼¿^+t¢¢ÚÅZ ÔQ‡Æ¤‰¡†³¨Ù’mH„Ê::Î�?XØ!Æ’vC}»µRà”Î�YùD¶\-•�ÖD¿ßu4ðIàë’.ÄqšÔ³»ïªâPn¶×¯xóæÎ¢FüXÖÆ&%ޱ°CŒÚ6ç5þ—Gh`\ŸXÇùþe¶ÜAü°£Š·w^ë3 ’¶þÄ[üáHšTëU°9Æx‡¨K Òʪ›­µ¹#,l†­*€"cíÐÛ"¹Ìjn›M6…ÆÇŠaëÂ4¯÷ÑÐìWlbG ×eû›Çk©[hnZ´°Õ|ÍåZÇÔtHP(8MC8ñ{½¹Oî�ÿ~-¯�Ùl|âaÇ16C~*º‡´yµЇUÉ­°ŸXVìó>Ùí«ÇYŒ\»ße7ß�6î�í•°è±È/³À½sò½†;rÑ›ÉAV@�ÎS�§®¸>¿¨g_›°i�NŒHž®³‡ðÒþh®È‡æ©Ôÿö¼ Ûb+Sž=™©©þ@þIÚ£ãh‘Ô´ È”qþò@Ÿ$»g=u�ÞŽËÓ¡û+y`0ºŠæÐûŒ×§¢ |ÓQÌüO©Ëõ^­bQ#Ò|WŽ=³¢Øñ¡ÀÐe½‘¸[ÇÜ„»5§?Ï‹° Ník˜©,¹dï5•Öª{Ðß½½SZá�'%Ųwi:t{)�è †ð&¢A³  Tkö³ç´^ü¤„8ÜA o?šàòÜà1¶-Ãá½ÇØÊ篎džmÿzPOø¿Í»i…ÅØ¡*W¿_ØôV»lÅ`…©©[)Ÿå\ØåÙçÃVÔÎ�;ÉwtôP � –=“½Z*ˆ>Û¾Âù�Ú"Ùt´†Ø¥Iá§Y®Ya÷Æ+Ÿ•ÂÎé�S~ð¶†XØ4p΂» Û={n‘׊5Î…­+/â:JA0™ÍœÁ«þ ßÌõÒ*»§õæ¥éxÓØÏ<ûÕ|“K®€M¼aáVØà©�1T–�<.Á@ùì/n:¦p!¾¾¯åÃŽÅ®5êŸdþÁñf!üüzôV†±A#lºrN…)Þš¤¦¬0hÂ>Õó^NãCÞvûq¼úE©ÿÀüýN:¨žÞ¼w+æÍP× ìc–‡7më.E×ÐN_œ×§Â‘êú0.ñˆãW]KƒÖÜõñÊO8‰gâ¤g9‰'ÔhË®‹¡¯ç~mcˆûL½·¿ZìÏ_¬O¾ï»IŽŠ†ôåÊï?‰8——év@!kÊ�™š¤Ê3*®\¹Œ×„=7K˜O¹ã̬¯Ë`—-«ü÷;®Ùg$Ô‘¶ìðµß³}¼6:F÷Ry\G†í‹ÓA}«½¾]SÿãŽ1ÌX_ކŻŽc§ªHC{�EfA¬Ø{³hP„ݸqã`¼&ìAâcÂŒ1ñ.ç�Ø{ÄQU|­õQÆõå¡Ioßïµ<—ph²‰�hÆÔyããýŒRºÅÒw~1bÿý�Ô,4Ìkfïh41«|Ù£Ö»VÖ¸>ë«V›.¾²ð¨‰�IMƒŒ„­”J¡&Š&Aô†s¶ZH•zVš¾œ² Þ+ì“’™OX�»”†sš¾.bÿž] 7•hWþ¦…I÷©YÅGræáaÐè?kŠ#RðW®–Š,¬+Ó®ò¬WïžÐª^ Ô‹—>ãÞĽâÖxïÉÃ<…ê͹©2`a§©bzã‘Xl;�½ëïÝ)l4ɰpî7[+ƒÖ—µ�³i. wP÷Ž"�* 0Äv�SYÐz®¡Z²Ïù\!�Ê®iŠU^�HLŠw­G‡a'ìú ê �Ni¯I"ö�®ÜáŽZ)†í‹½×ô)ô>Óò¡JÇÝÒ—?-‰è!³väøéÀ£ljßhp ›óyšJrºO«8Zå¯Âæzz\yFÍ‘nC8‹kæ˜xÑó¹Š-;—Ô~Ö쪆Åk¸Y`YïNðÒ߇8‰KhN!§*°fJºÄHEetÆ�ÇÆPÃÄ¢°=§æAƒT)|?�Þލ}›ª�› ϶º=¬…}¦ÄÙ•�ÕìÏì¨i” 3LÐYB‘+9â?”,ìà«Í̦%jš!ƒÕ3h¯¨J ÛIœAˆ1 ‹àRnäÏg†2°[²Ù÷ߎ—‹sfe©3©îuH•{´Àðˆ¿8ÚÓX¹“ ;øhƒïµ«™–KQí5jšræ·7Ò =Ñ÷¤Ï­,�g]ˈ¨üñÁÞ'žpÿÀTT[¡ÿôäGÂùóÓîjXòS¼ü€Æö©Í¢kT¾ß“Wj/�öÏÌ€m7B{øçÅ2\f¸èÞÔöê–©J1ã)O$"‘ÑlµÊ˜>ç i“xéÎËå¦>\Eˆ¡O�zÙi4CÊCýbáë-®cµwŸÒ¹ˆ­ÛØvœÚ»(宂«ÒY=Æb�ë K¦v0‹Ot=ÿŸ½"íݵåĆxn¨Æoîƒä÷ûû‡ô€´À^¥�~‹@Ë$Ùúÿk®Îö} »iä¾ÊÚ"‘ˆQó„4Q!¾æ?˜�y“&0‰;"AÃzpÙ­µ¦ý�úd»‹šŠ%O$RzmT&w§Ï4{v™n6`»ÚŽ%•:êß]Q“dmÜ@yý'Ûu¶“Ï[ù Ë'k9Sjb$êy�5)*©(à1ËKºÇ_ÚÕk¾Ö›­Žž@©JÉÙ»(f2‰‹‘°1ÜRPT ©ÉuŠÃ½gÕ0M÷r°ó}:Ï»‹¿ï4ïeh hgŸ/ûÝ�?gŸ˜mzÎÖÒÏ~Ïí¤IãBÔÎŒi¦ü¿@ã@¾ÊAZ0,ùÄs°ký�¬ÆL;“Sl†zu$ŽóO'×�§WP÷dóæm½á.ê j¼„¤ÇâÇíW¬ÿ‹Ûµª¸bë úe2cÞŠ•‰ xLkyìí²à̱ÃþbhÓç�‡`ç/ß$îao¸°C39ì\’Nd·éx[w¯½ìé$xÉK/±7¾£ÝGÂ2¾^ÃÆ²ŽÃI)ìzÚ‘0­ýÒ@ñz@/äibŒè*ÝÀcžžìq —»Ãb±À/n‚î kf¦Àè·Ù-©ê.NT1æ.Ì_öz÷¶z#€âVQ¼W+¥¨ÉU�ñ�}v ë8¨à¢L�¸®eÖ{Œ,‡*Ò¹øF ÜѦœ;q”«ôD%ï}ò%!ìÆéRhœ&…+ùìz5ù¦ùÖ�Þ½m�W|?ˆ¨L°g¿Ï]¼ 9¹ìËç|r¶”~'›…ÝâC~$‹T"‚€æÙgûc¯8({ŠÊÛkf¥$"_â&¯_È1ÁÞ3zb ®ÍÐ0UBÞ9N¶(b¸;Ë^aöä+Œ*vƒ“,¸B"ÒÚ4ÃíˆÀTBRÜ�V¦¡g›×—Á_¥n'¿­ž”Øüq÷ì(,l€Ã®[ó¯ñU®¦ .è¢ |aë À‰°E"QD¬þ p%n4'Y *j¾+˸`ƒZðEÝâÃfGN„=çÃÿÀÏÜô†¹Å߯�' ½™w½î}%K_|õ²½}|»ÅpúÖXï;2eðþ³I�¬qí3~­À ϯ,†Ü[³¤>¿ÐÇ…õðGù®ûä«szþB³º ±Âf´‹Oa£Y’c|@ˆ¸XÚÑÆÖ5ß‚Baÿ(ö¼ ­g�w#ßO÷.ØýëjÞÞùŸÕkáѱ# ¶o*‡.1+Ò%ªkȨ̈�&p8wÃHëCñᯄ°ÙòÑsö�Ê‘'¡¸”}ó˜?27 èù+ ú�‡z-¸;>…}Õö‡'Ç/÷AŠš \}T˜Ð®e ÇñkÏ? ‹?ü”ówô}à!â£õÙ‹u{ÍÍoÙGO¹�ðb¬‘ž(aìµãÄÐå»§Ì~“õûùæpý�e§TùW<&…| »„Á´8±êx¨Òr3ÃF¨“‘V;ìP¥ânÆwØ”·�çGÃ7Ù‚†W’Ùi‰-JwF�Ío§²lÂä×zžÉo{t3åã½L8«uñ‚4{3û-LŽpu91߸�é»éŠ:˜•eMš·dýìßþæ%sbzG5½ ÊBŒ°jîêÕ% vðìÒ:¤_oظýo�ëÍ7„‹W\{Ì&Äk K‡v”á½Ñ©]8tì„ÿ€<±ä£Ï`ÚsOÁŽ%é´`pµÌ-“xHQ÷'ïöêÚ:+˜$)Ä—z™@„�°ÉÊ*„³—&¯Ï~é9—ëk>ûЖeNq„ÿÍÙбMí´Å(¼{\ÎløæSHLð\’fæÂ¥üìØ°i+LyêQˆ‹‘ùs-_½lo/ß¾g?TW6H„T]›é²%›¾·^Ô=ž³‰‚ §ÂVÇ'€¶œûZPgQÓ…5â³¥oC‹Û¨sT(nwqoÿù;�I©ÿiÞžñ ”–¿.aÀèGˆ,¹·1×B‘–(�Ö�ì¿ÿ9K–óþ>…RÐóý-Äa»§Â~eá ÎËÙî¢fS¦F¢6›ÍÄH*ªx{uí»ö×Κé,êSç.À3¯¾îò•'\u^á’ßoÍ_¬N(3–zŸ/ß›xëpkÞr‡ø·¬#[wªØÈzZ¾àBÔ$΢vçÑ1#ÂFÞÚgQ“i`“ƒàŠPw8ô,s&šzGÂî™®ø Ô„Í¥¨K(²Îù…Å�–bïHqGÓÚe~�½µåi:¼öæXüú4Ø÷^t{Yq“¢î=œÞôN\ÈM&=ÂÝ[#ˆ_qÓxÉ6oŠu¨C£÷‰&! *ÊJ8Hš+TeaºüEQþ6aûž½ìï}Y½�oö:J”óQ‘`îø„€&?`šÄ±æ×?¢Ê †~ËØ5Ì„ýòÛËykϾoPøm³×o�WnÜ �ò(—ÜÿÏYò¡]”Ä6éÃ8x> ¸~Ø^ ‹³�­F‚^ñ7“ÐaîG_³~6Ú¼5¯° kÌÐ"Q˜V1ä¡ÓS“á§Ï?"Χ¿ð +a{[bÖwõï m£ßÞlÈò6båóIA{/ªˆì;b|ÐÞ‡¢ëp8ãW±:“0Y-2Û�Wà:d Yr:ì?r ºvlG¿>å¹�6"\*®!�Q\Ñè­¼¸âŒ� ÷úUÎâs¯‰Ö¨ã B˾´/¦¾±Ðå]ÛÖþú�|Øq.d�x´ÂvÇ Æ†¼û™éó9/g?}ÚÞÙœ8þã»/ymª 4‰ 7þÞzwíDËe21ößÕðÔÑÝG=TèÒ—Ý2H&‹èE’·F„M—Òç¦Ïeä-·íÞý{Ú× ÿ}Ëv�ûh¨å྽ˆã…+>q¹7óíwáÕIOÁ°»z<×oäx0Maú í1,¸ûA¿kÕQr¶4l;�qBH yáÞÝ:{mf¢º�®õëÑ•è§ì êÞˆ&,¸|-›2.½Á@ŒyFMF…ÅžÍsï¬üŒØbU*hתì9èº4qŸÆ�X,&DŽáuB¢ÿ@^¸Î`5�HóÖZÂ.ª±@²’~“¢ß}#`ûo?3N�¿¶cªûî¢&ñ&j“ÙL)jgªª«=D�0›-Ćá�WÞ~ŸÕsl—½�$h ûh¡7ˆñЉ>÷ g%l &˜Š:½5Â!ìÛd›/”Ù×T`0¦û(SQkäâÈë¹t ‡°ûg*r-l‘­ jõQûŒÁpš¿ŒÉTG$¯g©ëò�œ�À!즉gÕ±FÛ¿›ŒY1æ~ø¼J†1t½5j§fÒ¤åÌc-b‡²z0L ]+¾ý†Žq9ƒáƒ@MÒ"QúGÉ Ixoî’Êd`2†Í<ë�yaÞ¯÷ÐÿLæ÷F¤V˜9ÃHبr‚©×~ýý/pvC›:©é.çÙZ3œa°¦?^m¯ná?Tøã"ìŠ÷äêŸ÷õw»9¤2lׯ`üÑoèH¸lóÈ.½åã¡. IDATC—¤ñ•¥ø,/‘‡.ÂÖ8æÂF+ô\EA#C}µlûX™kNU†,š:tÕU�¦¡HJз›¨Ó;¨›ðyˆÁY»Â`�SÅÞ›:L^Æ*Þšâ<ÐÞ¼•¹W¡ª ª sÀ¬çŠ[ŒbR@•R϶Յ¸ŒÆ¶­Èã„™èÑÑP®v&¤úŠS¡¬“Nl©­»ñúcUè+JÀX­µm•`ª©cÍ­}µÓ^Wfƒ,F~g+¡D$‰\aßd �ªÔ SÆÙöqö½2Îå\«¹:Ä’�73o$(Ä×gvT7:ÁÆÃâ÷5RNýíjÍ»B$FHd±bÃD/µS·ËP‰� �!ðvïºò¥Ñ(lLdmYow(óh3:j/«)Îo¨Í¹Ø†ó¿R¤¶é±Á×}ô{ˆ“‰ âd¢‚ÌXɑۤ[dbÀ H;ˆµ‘Z²m\$ä¯g'Dñœ’ÑC¦þ¾‚V�¼ö¤Ðéˆt¢·�#7öüö6ÿ„„°ÿz¶öÖ ‡„„°1Ñú�ßõÉ.Ü,Å#‚ {ßÛO: L¤!¸°Ë¯Ÿë(t0ÁçôKWÞ9î•IB§#RTØU¹WïòýḾsÝD,lþTØ»Þxä”�ïÇ`"Á³â˜èW¢ñ‡`ÂÆM\ &ìbuËc…W/µ£vÊšÍø«Fìøò£Çþ\÷�°wñ�˜(E0a—æÞ¸]¨wcø¥,7ç6¡Óí&l“^¯êÝ~ÁmáÁ•gÎ)ÏÏ�šÙ@C,l &ÁÂÆŠQW£–Å(µB§#ÒÀÂÆJY^N³”FÍþ:‘FXÛl4ÆHd²À–WÄ„$ey¹M±°¹',„]ž³iRfCÜý4)·yl¡Ó‰„…°ËrsšaaG&e¹7±°y <„�‡�Nt÷ØëV³Yj±X$ÛÞj±›om¶c«¹ö\“švUèôF"R«•›.ÛW*̽7eëæ]*7õã$B ƒ‰Ä"‘©M²lM§TÙW·ÅK7 �LxÃ:7¾)[?K¶n6—‰Á`0˜HÃbµJ�Æ¡ÍýžH$²Œ½M9¡}²ì;!Ò† ?;í%ÿTž/ª1ã1<  V«UüÃùêÿþpþK^{²eì�Û㥛„L&t¡í´­’×ö–›øL ƒÁD;ŸŸªÚH�lª|¶Kš|•�éÁ„´œ¶Ía‹±ÃÆ`0˜à²öRÍ'hCÇou��ëÐbh9m›Ã6ó� ƒÁxgÖþòJ´ïUW±lh£˜—…NFü:íÿž¯þ_0‚Á`0ÿ캩 m2‰¨ú­.šX¡Óƒ .~�ö‰"ãh¾!‰ Nfßb¤"‹ì×ÐÞ¶4* L#ö¶Í‚ŽÑÿn]GÿAáPx1ˆj�‰sbÈ…Ç5‘í‚äVüö0µá$xÍL„a±Öê�†zš'm�ýÄýšõÖEçëDœá½Å .ñÙÿcñ·s8ñ—¿Åb»é8&7Û5³mo4èmÌ–È]…Èh¶ª¦í-'þÀÅÝãÑgË"tš0üãÓiïºiଠ9Ä>uå à :(S .Òc¢ÃèÔl©Îù5È©4Û2¡íüÉ&Ì]ã5 1àÙ€#ŸN{ÃÕš¥�¾ E’ êÇI�ƒÁ`‚JbŒ˜Øš'zÿL^ךáB™)dœúìýåhÿf×xµ\ •B§Ã=¼Nu8¸A ŸÑc0Œ 4PKˆÍäȯT7àæõýåDi{I÷xÔú9 'xuÚ\Ó-$bì°1L´r[‚”ØHtf+ìÍ5€)ÈmìÓö–[$"‘qa7�<¨/Æð†W§½#G?�m¤Øac0L-1ôÏT8ÎKt8\`Ê»ÍV« uXk¬‘îžØ*¶WP^Šá ΫÇÓT¸ýƒÁ`|‘#vnªMVØ}SÏû;¯T˜z"ç=3KÓ0A.ºÎû 1¼@é´­öQP¬h›,cŸ ƒ‰2TR‘Ã�Ÿ/3ÁUžÛÂß>\q W™‡/”Nû@¾ái6‘¡±Õ ƒaÇí Rb3˜­¨‰’·÷�Uæs:iÒãd¢|Þ^„áJ§½7Ï0‰MdY©¸”�Á`0�"—ØKߨßÚ–lo"·u‡”N;¯ÊÜšMdñ Öµê ƒqMŠƒœ7ŸíÞ¨­{ú¾ Ó¢n^‡c¸�3#‰pÕ8ƒÁðÙî�zœ£žç\c±Z%¨º|I÷xü!q8sÚxÖ3 ƒá—¬T9¯UæØq‡>Nûl©é^6…‹Óþé‹�à䑎óžƒïƒ�Ã0E C²Ê|s¶žXœ…kpUyhãa˜cEƱl"Š•…~ælÞ¤ ×voú�Øæ­üF€a0 ;ÕWÀÑ#é̜ƋªÊgì¯Ð/ìªQø� 6Nûx±;1 & è�*ƒ‹e"¸ÌñØn³Å*ý@…öÍ.5§cÆÃi#c1�/·‰Á`0ÂÐ,A &+ZqŒ[Çm0[ãæÒÍë¤Næ4bL@pÒn‘ާ.Å`0Á@ˇ¢ÅHnVq[U^m´ÔyûˆöúÌŽêœFŒa�‹Óή4waI† �ÏÆ`0!iUGf[‰;¿š[Ç]¦·Ô÷ŸÊ3SÛǵà4b +\œö¦ëú7ØD’€'UÁ`0ÁAk?-(ªáÖqÔ˜›¯8Quhr›ØNœFŒaŒ‹Ó>Wf"TB0 8Rdp(ß ¥zn'a¹QiÊZv¼òøKmãÚr1†x,ƒÁD�Òä°?Ïnwn•¹Í¢£ÚËÓ;¨›p1†6§�SeéÀ&‚%Á`0¡F×t9ìÉ5@•‘[Ç]¢³4žH›?§“:�Óˆ1´p8í“ÅÆl"h¬ÁNƒÁ`B‘rØuS5&ngN«4ZRç¨(ŸßEÏiÄ¿8œöU­©;›p'4 ƒ ]zÕUÀß9zЙ¹uܶø43öUvÓ0žÛÇӾ¦5³rÚ ƒ mz×SÀÞ\*!s¯Ùj•áEF‚‹Ãi›,VÆóÌj且�Á`0á@÷ 9*0@)K{bÇ<ê=^';m ƒ :¥Êáx‘‘ó XÈqÏ«–‰r9�ã;mŒàÌܳN�Œ¨AßëÖ™û’šÀ‹uÛ �Œ �&`9W*‚kÏUŽXp¨âæ½�”ÓúÔ•¿Ãyä‚€œvvÚ vÜ‘(%¾ßÿ8�û÷«5K¶ÞÐÍšßY“Àyä<¹ ƒÁD#)J1ô«§€í9zÎãÖ™¬ñ¸�›§]c²& � ƒÁ´¬òà1°éºŽ—ø‘ãîSOñî½ c^ååQá´s«-m„NƒÁ`„9îm7ôÄòž\³3G?m¸ÔÍ v§]eÆNƒÁ`¢˜þ™ ¸Qi†Ó%F^âG¥î¶ÉòÕãoWŽååQá´ójÌ-…NƒÁ`„%3NBl|U—/2ŒAۼΚ•TTÄËK"»Ó®¶´bú`Œ×t`0L$‚ªË�Ñ:Ú¼Ä?ï`E!Ú/é�† q_'ÁN;¿ÊÌØiÇ…ÁlhU¥ÄFÒø¶f^ÃܸÌkZR3ñJvሕIaLj!ЪŽç(œU7.ÂÄS‡H&”i—"³ýWÆ[©1mo91=nï¦á´ÑÄïLŒ“…æ¿ñ‘më¼ÞkÕÖ{Ó}öù|$‡2þŽý‡óú. ¦¥Í9ï}7ÈÅþ3×Ïd6#6’ãÚ2ÈÚ·ÌVĄ¨Ô]n°À�<îÇt“ ön´½“¦žF&ºÉÛ‹Pc¶&Î?¤Í3[¬ŒDá³�õ8íPsÚÅyÙpõô¡“A ”±�)b M�»„N &BÕ¬!|;¸'å½kf»°Œ>Vyº=Sÿ}5Ä6Y·U'€qðǽJ³ îÜý;ÜÐUsžnLx/Î;§Ê §Šù騆xóPEÚgÄJN¼Ô6®-o/òÁû'*�äTš;ªA˜ÓI“nó“ù\¥‹$§:Õãúšª°qØ$F½®ž9 �ZôÛÀD) º¶‡©·á@ ¼ñ]£øÎß0Bçk§ŒV+ÅðËìHˆCœD ×û s ßïÐ6ØYÂù÷âÔ‹•[±ÎG ø+y£Mdé»Cªü۱͔x{Y-"²ºž æªÈã£Ú?"JÚçÿÙ#tXQœ{;m -ÖÞÓîiT�òÞòuZøï¶JNß§­±ÀÀ™µNY$ÁSê@›Æ2â|{§þ.á'Ÿ=^;Ïi0¡ Zw•¼QåÍÖlþÚ¼G �  KÅ"Ý«íÕ-¢«\¿‡K‡MòÖmö¬Žêú\ÆÉÚi‹CÇgƒWÛa"…DÇÜ·'Pw5™²ªvŸâ÷CéŽÕj…Ç—¹ŽÐyed<Œë£"ŽW4ïHl$_ä\†§Nj1Á "BΑ_mACºx}ŸÉb�Yx¤âŠó5¹DTu#åK�ÓdŸñúr”ë-™\Ç)-Ñ[p·f F@ê«cáø¸¡ ”J<îM£ß.„EܯÈ(K×–IÿvJXò¸½wúõšɉÊ2è°÷/°XñèžH%M%v8p“­Ìº;Wý(¸ÂöŽØŸ.UúÓ%øÔý^F¬äøÈ&ʉ Ô’}¼'Ä ®ê– móWñI/•›ûqƒñÏ�†uaݽԲ+(³Àˆ7 @g?ç¶íX dM®qœ7L•Âÿf¦€D Ð&.Lƒk'ÂÒšMÐôï Pdn�&8Hm6ï[Oár­Âö›>[j„2}ðF%äV™Û~øoåÞ ½�‚]7õS8uÚåî‹ï ¦–)íî„…Ý©×k>|ÁÏ~Pä‡k&è2¥¶s›J!†usR I-µD ýp ßíÀf8P†'ÉŠT4rtN£=UXc!z�)ü2«Á†U›¶$”´1˜ã³Ýàá;¨[�Ö쪆ÅkÊ)ï‹¶ð]•ðíÖJ¨ b‰¾ÚVÂ<˵sÛçSê@Û[�Ûöuäþ™Ó‡à³ì‹AKF8Ð2¡)J…ÿ€^0Û ïF«•¨–GC�V¢ýÛvlsr7öƒæ¦`µãU51sY=(«ü¶¾›dõ;î'/áõ´1˜@ŽgϨ» } õê¶s¾-‡?…NGÉÃ+2ÇOßG|äº:•†ƒ êÜö„[ç¶Ycà�îJâxÕ��ˆ�Ï܆ñj‚‘Ø< n!n#›TºsÐäÜÂ$ìÚs0�õÛßyƒ3b$µ"Ïš,L•r ì:©‡^­jÛÝ_ã#tèñ¿¿«ˆ­w«xïi{mÇÇwfA¥ f�?.pê0áÀ’‚�”×?.êBº¬"hi©0ÇÀªâ`…Ú*ýûãÿ…æ ï³ b§�Áø!)FqµÀ½ Öi_ͽñßtøû¤îž].H%Îg4¾;mLÀ¤1pØ7�ñ Y Uªeõ.o™‡_Ë[ïÐ^HÞ J±gSvÚŒÎ?R»*Ûª?¸�.4˜´¨/ƒGúǺ\;ô~zØfB ËÍD?r0ËÔÆ-àÝ+g„M&ä™–ºŠL±ðeI7ǵΪkÐ7ÎËò¾`ðÒªœ!­€G’ÒJÃß•Mý†Yi+ù¿’ºÍã:vÚŒÐZÔ$ŸýÅ.W,ºµPÀœ‡ %ž~3çåÎ|»µ Þ_¼ªB6Ü;§¶´½äövØich‘,­"œ7þ[ÚÉ«ÃFäš4°¯ª1t‹½â5 Iï¸K°¿º±Ï0OÕ¡ž;m ï̼¶ió¼ˆG[ˆuc¾ÅÅÞ÷;ŽÙxûoëÆr0›N_|ŽæÛêÙ—Ó”ðôO÷È€Xbsfï=Lþ¸„“øï餄WŒMÑŠJÛÎ<"nÿ»p•Q›/]„Íà<ø¢ž}¡U�Fqc"‡†²¢JÜg9}m LCžQß”vv¹ŽJü¨äï�0wÚV¨ÌφÌÔT¡šü“‚ΰçeR¨Ó�Hì9v4ÑDYë´œ‡"1edÏX˜ñ ç Ý^Êó¹Îµ; &$ÂÝY1¬Ó(Ým%yç’9ÓÞótWÁ¬±ž¾@ªèŸ_YN²�“ÿzPÆNƒ¡C/[鸩¢ˆ(qSñbÊPˆ˜e@Q§7¦%þ°sÚe×΀^[*t2"žš’|b#‘Èc ùöèZFô‡¶=Çg³{½vw¥ÓÞ·,�Øw{Ùæ¼½LáˆÚ¢¿µ•¨™r1×ﯫ€}gìÃX¼Uƒ¯ÝS W—Å 6ïgïUƒœæ—aÓ[ö s¥Î }§y¯MÐN ‹o-&âN ÿ¶ûϺÓi¯†Ëå¡ÝŒ� OêÊÊ;Y’kêB¾I u¤UÐN™ƒ&;cOØ8í‚ÓÀj ßñ°áŽÙ sÔ ¤µê.pj‚ØôŽã‡ß |Nl²4é<\‰dß{vç�Ú‘‘“=x^OL*‚&¡Ã†5ðÆwìjÚ5±Ï�f(ûfk%±9£Q‰á÷ù© ”{Ÿ¾8.FäÈô™–OÔ ´9ê c¡Y†çg¦²Æ ýgäƒÅÂÍ4ªoýXî(ÁŸ?(W~ÇI¼L¥EŸõ‹ÍÍ&Jª½¶5»c¶Š`iáÊ{›µÍÇÏÔÙ ñú 焾Ӷ}HòO ;o,Æä¼ëÜÖ¤ •ÿÀaÊ¢;Ú9Ž«tÜÎÏ�†+‘ä�6vØ¡Iñ…c]âžÖ¨…ãø®Ù¼½§¨ÂL8päpP{¯?t6?Ôóa‡h½p«#ZJ¼ÄÑsÛcÁ¥\~�èokà¾ÎöyËÏ=2ê~±†×÷a"ŸI á¨ÝÉ�ù^ô‡®Ã&ùWW72œ¶¡’}Ç ÿhó®�Õ"�1 ]Îk‚°þïç+i9홽múA›¼ÌÀ ÊeÜ®Ì÷ôÝjbÁºðí°óþ[æpÚ‰ ê% 1&�UáGkêÃM£:(oíÚþˆë‰ju>i§m11ú¯ë…œœ›<¤†÷ õêÕ:¼ÀÆ>áÀmjkÆ-æ}çAí•°ð1êNZÞøß {Ç4«ÕÞ‰Íä§zÛÆ�;±öMåðÙ‹uX=‹2Á˜Ä Ië~«ê~ר» ×OñþNLx�Ú¦ß- nk~5u+e±ÊlÛFÿ“’wÁ{…ýÁd¥7“Iç¶�vÚL¹~ýzH9lįë7ÀÄIÏ � Mº&¸öÒ¾�ÃoƤI†Ì§Ãùf!¬}ÝûØ`‘­½ÿVôü2 Ü;‡ºÍ¸ K§�¨–Àæ·èU�M.,„_fS§7Ž�!';Äe¥²Ë``"—«†$ø_™÷Q0¨ {lÂh ÷?B �Ùvþ5Tó/´ˆ©ÕßË)öÙÌÖ•·�ózO ¥IµðI˜$Ÿ ¢œvݺ‘Y¢Å�½]9Ž—ýÂÿ°!²ÄLéàÐ ÇBSŽú"-AìpXÛŽë`ÚöÏí™2˜x¯ïªlôêlVc°‚R!†­ Óhû:vÉO¾_ì8ïýj>üýug´`8îK¹&G纕ýºÂ¤íûy}&|8^“é?Œ®ž_§}¬¦lÒ¶p¹¶¡¢µ-SPÇ£mzxü æ õAD9m©T‚KµÖ(%®røn;¿óŒ{7�pwlh8ymÝœTÈLö=éMÿ¶1>ã§b×»¾3îÌÿ¾~Ý_íq½Zo�§V”Àg““(Ÿ{uT<¼ó“ÿvA¶Œ±•öÉ¿ý±M±ÓÆ8fs ¨jÜÔ}<Ä`µ•˜Oú��³vwÚˆ»hv& „ˆrÚL õá8FÃøMAê�¥?ûžï{ø|{oöI÷©áñÁô;ƒq�YÐþ¹¨½@AñgŽé­âÕi»3#«5,<üoÐÞ‡ m¦¦n%öhYÌ#5õ‰ã,åuPK˜ Ÿd;ÉJ D¬ÓÎÎÎ:  ‰ VÿÊaŽÒiÊÖO~ç·jü‹)ÞÛ[ØQE+Ž•¿i‰­Y]ü8�ùŒiLaZ­�fH#g|sçÁޱĺØ|á¼lçœÎm°ÓÆx ‘è �•½B‰„±+ÇGœÓÞ³g/œ8ÎmàjûÐf×!ŽãÍÿП�ˆ-*uõjfÊÅ›F¡ú«?pÎÏ}TìqýàûŽå-½Á¦ÚלêSGjxuÚî ‰Üݨüy5‡·÷a0|"I¨w=åµ#ÄXÔˆsÚ5Õ�¯Ä„‰>:Ç×¶¿ÎøJ¸¹íwŸfVE'¶yÛÙãâahßãQ|9ÝÎ/æB�6¾é½—8ʼ³¶VïdæhÑ�4E†À_&� žX^ì¨Ñøùž¾xjÓ Tg�Üj3Ûö5^æê÷ ù!€¡ñ›0 ’bÄ—§wPû_8›!ç´�N�æ¿CaøÄNÆkÚõt_Éc¿L$H%ÔÞ ÍWþò�ßhÞ¨Ÿ"…ìBïÛ«£<3ñc+£Í�«fxïç Ø{Ú³†¢¬Ê‰qÂ,»zü²k­EëäDø·/6Ê\©0ÃÅrÑñ2ÜQJE¼ÌÆÊi›9šäŸ/:wéLl F¦Õw�~»PÀ”<{O±qÍš™)Ðý•<Ê:Ò%0°ûå>ý?{w'UÕüLÇîl'K7ÒÝ!�€‚‚H)  âGˆ¤€‚H‡X(i!ŠtJ—t)Ívïìîô7÷-³;=ïΛ™=ÿß﹓÷]��3÷¾{ωÀªÑÁ¶_X„Ž~’9ƪ™0î%sûÌ«/àhÛ�‚7S5ð8Ë· @ˆøTö6:=Ò&SÆolö!·›V¹0G°ÚMƒì-S-'K¡Eh ŸYáØ–.šÆÁ÷Š·C`ÂÚªç!Ëòƒ6!äóA«wÓ7�2up#•Û̉uBE¿õ«")òJ.è(âƒS9Z½�µbõÕ‚„T–— ;—•ÌÙû0w¶£oŒËÖC¥ç¦êò ªÕ+¸Ým¦ë¨ZÔ”@—F2hZ] ÑÆ¬¹ë¹l"5³÷^È…½çs˜j\ó‡CËšìåÝžøU*½’ u*Š¡S})tj(…2!ìüÞ·©-±¸x.1]Ï,°[¿_ér%³Ÿ�gCÿ6yyݯ ~jmØîR{È<­ñ»ÐñX¨m¤Ôe›XÀSv)'�Ó®Œx)�d)uÒôÆŠJóÎf°6:n-^ÁV[E¹0Ò&7´‘÷T¦¢ÉýÌlçG`+G‡@ëçØ+0lY2\½ïøJò±_$ÛÝ63 Ù£èâ5Òr¬Üa}y¾†U%“«Ø#<�o<$%@])CúéOéA»¢Â¾²§È>ÙZêzyX{ô¬(›Ò¾Œx1­ö"^ÜK•dãwÜËYIël`‚v�„ÿ(M¥/gëÅEåp»^!—m¬Û²à6 ®˜¿5þœ[rõõ†J‹�Î_ƇßšO÷¹~b¨Óé>ÙØ„+)G­lKm’Ex¤D©¹•𮎶ÏÝQC“jy3‡_é~ÝãR{¥Ýé85¤«é^fS׿ME…àoª')¦u´xUË(ñ—ÓN¦;þ�¹ˆ¹Í[äá&h—ñ\t4hçÚ1²ùËepûÊ%'»†|ù¨lÍu'Ìé6°àæýx×¾…&¤épY9z˜þ]šÅ‚!ÎM[{µ\Ê…©ß® >±,ÚjŽñË¢˜$)lõ�ä7·„T*›³)�9Øví�¦ h7� ƒ&{v:ÜÆ/Æ÷üÂvǬ¨R« ;Å�g´í¤1XgR ÖCkúõ«"ü•Ú ìÀç�fQ«@æÂÖ¼s™±Æ?¯C‹Aæ·ôñ¡d~_–0¿®!þ}Gßhk�Üœwßð‰eû¨tøeF8OàóÓâ횺?¾ÔzÀž½)v�6ý,i51Ö8ªƒ:ͧUõ7öíƒ�°àGÛiG›U—Àÿ³<Âî<=ž)HÂ…7:N‹«ÕÞQRößWa×–õÐkà0®» Æ—’\|Z5¯E`€„ô+ô8hV…c üÝ€ ÚÁþGߨ·�1`#O÷ÚÛãaëÚ¼ËW þú8º³°ÍQÛOfÕûøÑBůC #!%S]gXîÛgcBAj9�9ô_�÷âÌ«aË’`J¿@xµ�Üìó/·–Ã_çsáÂ]ËSÔ¶FøMÇÇqö™P¼o�úå¤ÞjïCz'5T<!ãß vf|˜Ø IDAT”wM[êxж¥Û+ƒ`ϯ›Ùn!Ö<‰‹‡¶/½Çvleî‡ä•¶ì37'¹wÑÆ¿±ÖS‘†(òúvç‰~jº—¼[?haeÅxë÷ã@¥±0ý’W¨aîPóSõëÆ…@ó q%r4œZ B+¹S´:€ïÑ-ÅiÉì!AЫYáõñï?„aã=kºÙííV$æèáb"�Ñu˜LpgJCÿêT÷qϦÇy÷Ùn¸e§îÌqõüiøå›Ï;æµÑ`ë*«â² Ü5«U�¯–Ìgîoÿ0o5íºÏæ�söm%gd™S-FXØ»ÍL`®GOío9›™#†?ÏæÀ­ÇZ‹#þÓ+¢˜ö*E áç¶÷š÷ŸŸ÷\\+à ‘�'—™^†$ÿ�½Iç> Mמœ�ÿàch)%Ñú¨Y@„Ÿ�Çm#/æôô¸½ê4nΖÌþâ˜=æuZ§GÈ.7ïüË|°ÿôÕjˆŽÈ H$8®Û�e<Ü{©í·ÙÌñɰ`èÒÈr®k¹Â g¾t�‡©ñWµÛS£›‹¿³|{çG2³ù>ÿn#lݾ‹“¾Ø#8,ÆÏ]Âu7LКçóxº…-|.u¶»1�r!/‰ËN|°|,xo—]@ˆñêȱ̔äÑí[˜û£zø3G³ æS€Ò4}}ªñèÑDó^7?mmIfŽž¯'…C—û&vR6Ó#W¥0u´¹Ð¼¦>S¸N§ÓA‡—sÒG4iû<×](�ªÒÃÙx:Óá/T�Në#ù”J㥌G|ëK¤ )‰î_„PqdÁu¿9¨? ð óIú4E/ÎNp{vŸËabóÔp¨cû×–,¬[üµ­¢NÞPÁØ/é¦"µ¥øè¿ïˆ1�”ÌmŸìÕ¸�gm¬IЦ!ûb‡GmbÜœÅ8MŽ<Ê7›fŽÃ¿mŸÏ¤ï$bè’d¸ñ�Þök}šãûÀÐŽÜgöê=;bS¸Ë²´ddt¨[˜…îò�[ðî´�8ë�3¤2ó+öÝiÿ#•ÍÝ@Îñy9ó[pÿô1´‰¶Ý_„cýÎu72Ñ¡ï (?®[ÅÜß0)¯F3 Õˆ3¥.9ž ‹É€ }``{ö>'IF·Õ;3áÈ¢H�‰ML¡|cÐfíTvSÈùÌ6¸¢¼m¡A’§p�Öõëæ‘â¯^©"Ãkž¸´5zòmŠ­®tz±ŸÇí�Ÿ/ƒŠåb˜Ûãg΃ó—¯R9O÷Ží cë–púÂ?ðëQ9‡' ×Lwmø ÌuÇ~oý½`*ói|¾_µ*WÈKHFÝ¿�È�ù[©”Í5kã”p¨Y¶ð×–¤ç½º°xÑÒ_Ó™ƒmù™ÌŠNE“T«s7§Ã裡%*áø’(�ùò0oÙg°÷Èq·�ŸM\g;£°§7¨LaGÊãRÐ~”©…Ê�ìÖ{¾öü±õ{VÛtÖñß4¹¿òãY�–ž½†Ždíïûö.¸ßªi#xïíáðÛî}°ô˯Y;�' …px[a=c�@¿}÷%ÌYºöyÉïã&3?ó÷v÷m%cR«Zmc/´«Ì­Ü.°Ý¡ø^òÂ[Ýý©_ë/¾O¥VCçþÞ{9mè8ß Øxýš>—"îÝtöƒvÓv�<"h“‘¯9A�–÷Ä:C$4ÿ÷§VssÍ”¦.íÌg oÓ¼‰×í|dÔýò ݘ/Xĉ¥Q�–¥‡ÎÐYLi.`s5=?dqlœ\¸—;ÿZ?­þÿ³÷4²”îݳM*5¹›Ç€íÝ<êšv¾ž¯ 3îõœö�ÏcqÞߊ_­gŽÎm[1£ì“ç/y]+­¶ý¹‡9þº‘ùò䟗µlÌg)pæ6{[ŸÆ½Tò‹"™–æÊÍG&3[µb«ØÉ´u.‹¹Å׎ …ÆU 3½ý}öLûxkíseÊ"óɦh#;÷?b?`óx<ý§-°N³›üÖ‘¿xƒÁàp¤Rj à'b÷ VÓv9Úî¶ÿØ æ@Þ§ã+C ( vnXÇÜÏ/šÁÖÈsÕŽ Xý{¦1x+à^œÖ­×�-ÉO¥úRK9ä¨ °÷Bkm‡(°w¾iâo\hfI&Å­žd9c?`‹¼¬�›(XoYT´Éj¿Sqª·màa¦j…°?`ï5h8ìÚüëíºCÓõ`ùÜ÷ó÷ýZ²ãûµ\x½Ž,z"I>,øpä·-&�‘"*Uá”:ioËš —•¬Mœoí†-°áçíVÿ,–”�Ž‚o–/?¹åöO�¿“æ|âTûÞ&-#ƒù¼|îLhR?o꓌º�]UÁ{ë\_hGþ ­Ün¾.7—vœd÷ Ä©åÑ ,2f{ö'pæâ?¬žƒ+\lRFùèö“ÞŠùOf4Q”e½adUA´íRN2Ç™ —M'h7ió¼×ínÚ¬‰ÿ+ñ8Y1=úõA°æ‡’T>zœIÀ&Èö¢Ïα¸ç´xÀ&ü¼Ú¼8¶¯_a!ö%Õx{è@æ È{íA`Ù[Ä Eã‹ùȺë·îØõ>oöÞ‡3?󪵭#a‚wÇiñ�aGyÍÒª_?˜öjáerÍš\»ö®ææ³Œ”P>ö”ý€ã'¸8¾¾#ÖF6D[…ˆçÔ\ž†bjÇÞÆÑöN/ܵkTƒµ‹?¶øü”¹ŸÂ‰sÌ>W·–ùB7aÁŽg³*¾Ú==#ví;:�ž  Õ«T²ú^k�{Ü[oÀ«/¾`õüäúîîG@&•2‹Ëо¾o�.ÌQZ�Qw‡VÍaÞÔ÷˜ûF‚JC*nq³xÌ“•(�Ùo(¨5ÞQóÚ¬¾Àý—|³�û8…€])@xü�:~mYoÙÅdˆ æÇf¨õSô›¤øóä ÂlY²dêÇ‹àï3çÝØ#ËSñë6æ�ü"ÂBaÛ·_˜}ï™SÌ.ôéݵ£Å€��” /�Sâñ W®Áª¯óvÌ�2:¶ii÷ŸÁW>qšùñ×–ï˜ËQ^€úpC:üy–ûëÒ\Û25Üd1ÛîƒG`ÁJË¿OÞèõñÓ ˆ~:ÙâÈZ£¿cÙØU…GÕöëÄzÃÈn&A»u´xÕî¹u²÷à°sÓ·\wÄD"f¦£-é=t$¤¦ssýÑÖ‚d-y®zU³�OýŸù«&ñ‰ÉðÊ›%vq.Z·ÿ½£ßd󵾨ûÀá •H`ßOÏ¾Ä d®¶lq­\¸~›eZÚÓWšÕ½ÿ¨\ã9·Ÿ7˰OPØ5‚E½YKÞƒõ†‘CL‚v›hÉjg‚v®ÖR!�-z�[wð¸ m-`o¼ú2³�ËÝví;d×ëÈžf ë—x<$È| gKì Øù6þº£Ôm"W¥bÓœÉã fȨûê} [Æi‘=·:»2Š.‰5i&ܸs—»QÒ¨U{hñ|W·Ÿ7Cm€SqììZÁ¢?†×’÷b½aä0“ -âƒÒ™FrôP^AïšÍKCß‚¼';X¿Þ=àÅn�¡c¿!n=ïã§ö�Ü22³ìn³r…òÎv™ñÑâ•ÌAJ’}u*Š˜à�’©‡®3|³Ê]x vÏ3Ý›�hu‡„7‹©X^ò¦ÛÏK«´&lÏÂʲïDÊA»aËv´Ûõz½¾Ä0B,Ù\ÜŶ´ŒLÖÛüïÁCÖÛDyÿvjV­ _-]ÀÜQðÍf=óEäÏn PUÊ�lg#§¸¿ÒX¬RW’Ù_¼W+D´kxMyoÛ¯DîÂJÐNÎÕÿ+b£)‹ú¿õ?øùëϨžÃ^Å1¹¿é‹eP¡lL‰×’À=jÒ ¸~Û÷¦÷l]Ý^f×k{vöŒºÁžäæÝÿ ®å’K*o ~•ãÑAV‚O›¿Î^¼ÌuW¨âñùœd;»—¡…;iì—H}.D´sXMù‹¬7Œ\R"h‡Éw’rtÕ¸èŒ5µ5ƒŸ¹î„ƒÇL„Wzv/ÈE]Ôº%óáâÕë0öƒ9ôÌu¤4%©)]Y}xÛfèð²õkÕä:n§¶­huÏ'|ÿÓ6æ@Þë£ÏÖ»ýœ—’4��­c½]cÀþݰ_b½aä²A»V°ð�c9º \tÆ–Áï¾›>_Êu7,"%5÷9»7—\8×°ÎsptûVh×ÇûVÉju:f4ÙºTœP((¸<��“ÇÏœg®™“…nåcJÇt/B\d;;üDjû—j‡ˆv¼QSÞ‡õ†+Jmò ëØS•ÃA›¤3¥y]›¨V»äŠgZ._¿éÔû2³”Ìt¹¹ëÜ|>ztlÏìGÍwáÊux¡Sû¯}d碲¢ÇÆÙõ:rÎÎf*nݸó¯Å÷� UäÏõõ²O˜k±æ�”©]Û·1ûÜÀÑ@$Á«—xîî½ûvõ!OÄEÀ¦U©«~˜øÇÁÕeÞ7²(EJí*ûö s3UC=h£¦Í�u é/ô ð—�»™•àù©¥MÜŒ c˜ �ïîý&›X°ò &+Z¹2…£Ò{YÍÙMÚ&£vò% ß—ë7Á¥«×íêÛï{öC«& ™¬eùHPùþ6ßûÖÄéÌO±1ÿôÕj«)S—|ù5lß½Ïä1’δhf´¸„D§óŸ#Ä5wlZ…?ˆ¶e$Ë{W”N¤Ò8b�G–æ´¦LùJÆ`ÅgVmÓ–_6ÓYóW|Á¶�Q¨£\�f' ƒ\Aõ6Úá÷-5rr äí¦/[ëÖóÑš'zV”Mn_F¼„JãˆU¬틉hNw9ñágëaö˜×©Ÿ!„ÌygÆÇ ‘Z®pǦë)xœÅþb³|Ckúõ«"ü•Ú «Ìm‘€—­ÑäŽ6–˜CëW>’ÀàÉ}Ë×`Bˆ†—‡�†ÈúI‡NÅ©!CMwFqF“€r�bÞcª'A¬2´;ÆHîy˜;×™Ÿ*uPÆ�þµm’ÀGÛ!wjÓ­ÔkJoû"­¼áæ|Ú*PÀÀz±^ÆlÐ~¾¬ägƒöÕd�[‚6ѱ÷+pp'Îê „è«^§t~‰ý8´ò…[³¨U �bˆ:³A›àRz�ËÆÀ]/”þ4y»/aÐFQƒÆ°·°útœÒ)O}›#ð2æ6p¬2ò(¢5 o¼�¨vªâE™"— LÆw¾gv"[.pš!D‹P$†ñs�_XMV|ÿm ÒJ+¿íõReÙ¸ÖQâÕœv¹ÌbÐ~­šl¨³A›0¾üE|h-v¶ »½1~|¿r!õó „JŸ™+íߢH w\OÑ‚Îà ¢àt¸ï°ºåKÈçåjõ©³�giôLæž²þ’iÍÙflªTã9hÙ©œ<°›Ú9B¥�¹ä)ɹz¦@í•Ýlh#YÚ«‚t×ý@ì±´'Ô÷o¼äbæ5WOBößg(ò!ÆŸaR(Ä® ìöÊ@�.¿oüÆå¶B¨Õ´uÔÒ…ÒF¶íÎoàÇu?û¬íß¾¼˜NÈÖ’o«ÆÃµ5o¦Ê67þ¢5·ë¥:�TéIÆ#9ïÈL}vÛøXF ¨³ÒjªçºˆvO§�ë$¸BÈý„‹· ª&Äu?÷ºB÷ÁǪ=Ìý˜V‡B¨´ë#YüBé®û�<�à :–•Ì'‡JŠ�Ng¤âµn„rN°”`5ù�Š Áß\÷y§WJø�imµâ¥®ñõmïë)š�·:{„ò6dñn…àd½0ÑO ÃD[äB^×}B¾�Ú�?Áyrt)'™Më´ü5º-^»GÈGt_s ÷-#Ÿ�ûúŠ9<µï®û€bùŽ�ù ÚE\Û¼dMnz’çe[A¹dÿ„n�Wì ູ ƒö3I×Ït{ttÇÛ\÷!Ä>mn¶âÚ¦ÅkkžŒ¿ãÈ«aÐ6ÒkÕÒs«Þÿ‹ë~ „èytì÷QåÚ½´6 \õ \÷!gaÐ6Úû¿N9\÷!D߉ùožÇëÛÈ›•ú �+Å*]paòf¥:hïŸÐ-�ë> „Üoÿ{ÝÓ:/ÿ+ˆë~ ä¨R´/®™±M››�«I*…´9ÊÀ?®X]kÀ„±\÷!G”Ê ýôôÞ!ñ—Žöåº!î<8ôëÿâSr;¼3íu®û‚�½J]ÐÖ(3B/7o×ý@q/÷Ÿ?†`ÐFÞ£Ôm‘_@ò(÷(39±ÛmOøy.nAˆ’¿V-ÜxóØ�Ál·Û�í¢¨Ôm‚FÀFÑ•û¸:×}@ˆk¥2h#„¼OÚS ÚaÐFyU¶2�ë> Ä5 Ú!„�—À �*Õ2“*(Â"pÝ„ì�A!Tª¥Å>©ŠAy Ú,R¦¥Dû…ÄrÝ„�ýÒãŸV)W·á®û��=J]ÐV)³‚iµ�û´*m„¼KZÜÓª\÷!{•º �JqÛHZÜ“ªejÕ9F«}„ûÈô8×}@È^Bƒ�^eJcËü„}­4•¾¼Jgð×êAªÒçýäèù<Ð ŒŸÇÓò™ŸùO+ãs|P“v4Æ×ë !y9t�w[§7ˆuoKtƒX›w›y<ï¶AJž×éA¬1o’בöò7Þ6˜´CÎ# ö‚�‡0þŽéòÉÁã‘Û<-yŒüNæ?WôñüûäwÓÜãÌOàéùmŸË<ÿµùïÏ{O_¢�×.¿°ºÂsðôüb}¯È¹MûœßÏüÇÉï¸Æø™�ÿ9¢5äÿÞ3�I˜ŸäsáÙcæuy¯×@H>CÈmÒ–�¹"/—ÏM ˜ÿ$PÌ3üÇaRþÝr Áã9u\ÿ?F¾‡•Q6 Ì«fz¬šjü…�±Ñ&Bˆžg_LÆà$*|ËÊÓ!Üh.ÚжŒd¹�¹\÷y/—ö­4m�o®+ÿd«3!äk²uµv?Ð-Øý w¹$á?zµª|xÕ@.zCq*`“)£™§32ÉT2ÛB!_–¦Ò—[w-k?¹]5Hx`D-¿^8òFöp8`'æêk,¾�y“FgB¨4¹›¦íôÁÉôœ@ ÿñ´FŠ*^Þº„Ìq(`+µ†p Ö!Ä®t•¾ìô“éªP©àß©�üqå:2Ë¡€=çLF­Ž „Pi—œ««2åDºa@5ù°Æá¢ï¹îò,v쥗²®ÑìB¡¨Öåý¤Y>Øì¼—³Œl¹íWE6’ë¾ ú¬ìËÉš~lŸ0H‡šÁ"cTDÈ ¾€šüÊ9òû盿«Yj¤©õ$-¨ñ§”ï\Çu&^ýVŠJ_iÔs~�¹î ¢ËjÀ6~;å³u¢ÊBR™†­æBÈ%þÆAƒ¿XeýK.Ó!#ô„=Ä*u�ªòü@NŠˆ|~Uù÷»uüZsÝD�["hçrRœfFy ±€Çò¢Á\c â²tð C:œj�¡mõÅUåñ1uüÚpÝD‡Å€}?SÇÊ7µ®å¥l4ƒBœƒxÕ@!sÙÜLÓBRŽŽãžºŸ¡mýåUåÑwêøµãº/ˆ}6¹.âjã]Êa°Fù&¹ˆ�ÂEÆ["fÁÛ•d Ägs¼ïehÛbÐöMöÕM_W®**XÙ‰B¾Œ\ò«–¼•Æ‘÷ùD5äj¹›6'A{ó�œÍƒªÉqÖ Ä:‹Ûø�-Е†£ý0ß B¨ôñ3Ž¼Û•‘0·/%i �£Q÷¥DõÀh9ÿòó1’…œt±ŽÊ¢³úabÍ"„�WiðlÔ};MK®/»ýü»ä~%\­,Üåö“#ÖQ Ø‘rÖvƒ!„�׫$dŽ›©Zx˜éÞÀýÝ åÎI µ#düën=1b�Ù€�¢ÒWv¶A…ƒ5B™S3XÈǪݚ¨eÉÅÌk [Šù<Ð¸í¤ˆuföéºöÎ6X'Dä|oB¨h-f¶…�U¹íœÓN¦«µ Ä¥À^ÌlÀ~œ¥kâlƒ L9ŠB6‘ma$OÅ™x5¤¹)›Úܳ™ñ6UDºådˆufö£,]Sww!„J£f‘b&`“ÀM[–F±évÎ�ƒ«ËP?b�Ù€ýD©kèLcÁ¼~�BŽ"E‘H çý�r©ŸëŸ$õ«íˈ—”õœ¥~2Ä*³[o08µzÜ\}„B¶‘ä+dŠüГ·œ¦U—³ÎàõlïÃê¶®H9l„rÅó1·\ׯëÙÞ‡Õ€�¹BÈuäºö… $åÒË’F®gŸˆS¿Û*Jü9µ“ Va�j„ò@�"Dp) �b5°íÿå|†Û{”ØZ8Ub‹Ô�E!Äžá"8g€ 5½éqœ÷%¶³{°Ãe¸B!„ØÖ"J ‡Ÿ¨@Mi!™�ÏÖ׉”ó¯R9bM‰€ý$K×È™†Âe¸à !„hè#�½émùZz)ó ®÷|%v\¶®Ž3 …Iq„�B´ÐÞ§};]Ûµz p/µ —™ Øz§6®G!zÈgl“1œK “íëkÊ=8Êöl¬�°BÑ"åC€˜OmÚ£,]órþ‚ÓTG.+°U:ƒ‚‹Ž „²�,B£u=û³+ÊŸ¶ ÀIªTíþ}õøùëÕ QçM)†„Âã§CHxÇ=C!ûµŠ’À‰8öKs ~B޾V„ŒƒõÆ‘ËX ØB/¸€½sówpþø!“ÇÒS’aÕG“àÍI³ \åjõ !„ã/æ�\ȇl-ûSãË.e]^Ø2@ÄzÃÈe¬ì/¨�ýï Ë[ És°BÞ¤M:Sã¤øSšÚP>HÌ{ÈzãÈ%¬ì@1néB!w‹ñ�rȬ·»øBæÍù-ä¬7Œ\‚!„¼TíP•€­ÑdÙZC˜\ÈKb½qä4“€�˜«¯áL#Þ0%ŽB¾¨R€îehYowá…Ì»s›±Þ0ršIÀv6�¸Tˆ!„¸P-ˆNÀÎÕÕzðó!‹õÆ‘SLöÃL]s®:‚BÈ91þR‚õv?½�ygVE4ë #§˜ì, Ø!ämj‡ˆ¨ìLµ>Jg`ª'ÓɇŠb°�­Ô…Bˆ[Q~ˆ£±bübæ�i�UXo9Ì$`“ýw\u!„�óê…Š¨ì”\}eC^í: Ì‘Ý0@#„��— 1‡ý ½üŸ¬Këû×c½aä—6®G!ÏÐ0\{²°�#÷º¬7ŠV° NUhQˆ0i By R‚3%—ýÙëÕ—•gÆÖókÆzÃÈnûnº¶£3 ø‹p„�Bž¢I�ã�²´M�?Ⱦ�õÆ‘] ö�4mgP`–3„ò(�>¤«Øe/¹˜u}RCÿZ¬7ŒìR°o¥i»:ÓæG!ÏÒ<’Î(;!GWSoŸÖG6ì¸l½S‹ d¸è !„<“STÍþ(û“ ™ÿÍh¬(ÇzÃȦÂEg•BÈG´0޲÷?b”�®Ò—ÕèÁOÄ%ë�#«p6Bù ’éDnŒªÙöGÙóÏe>œÝLÊzÃÈ* Ø!ä£ZEÑegkõ!X/Ûý\ ØB>^¿F!OE>¢Ir«\-û;±æŸÏ|0¿y€ë #‹\ Ø¡R¼ì�Bž¬u´Pektyb޾f¸Œ“õÆ‘Y°Bȇ ȵl!ŸLc³Þ6©äµ¨U Nµº l„òq­¢é\Ë&Î&hF4�}K¥qd‚ ØJ�!™7ãl„ò|äZ6Ir•Na_öÏw³¿iˆÛ ˜€�©1DrÝ„Bô4�¢“ýŒØz'gÃkÕdC©4Ž 0;K£Ç€�B>ŽV½ì ‰ê!¯V“ çhYoÀ6B•´êe³Og$ÏmH¥qÄÈa«1`#„Piã'€'Jöõ³ § IDATƒv®Îð_†®CåÁaÖGŒü)q§�!Ć^;~æº ¥†:†)×½ð,ûê¼Âuܪv¨ˆJÀ&Ö\Í:„Û¼èÁ)q„*ej‹àF*� ™k¯)¾]Û¯#•ÆK¹g#lÇ6Ÿ‡_¢BÈ•S¨ìӵϧ« åżGTNPŠ=a;¾J\,`¿3!„Ü£U´N΍´=ÿ\ÆCœgŸÓ‹ÎÄXø!„¼–¿ˆ"�ä§Òþ÷7³·¿QSÞ‡Jã¥Tþ”¸Ã‹Î$ Ø!äÍ:”‘À>J)K¯¥h^JÊÕW “òïP9A)Äl�Á rô�8%ŽBÞ�,Eª ƒL:ùN]ȼ�SãìqºøN‰#„�÷«L/`óÎeÆÎj¢ˆ¦v‚RÄé€�Sâ!äÚ•‘Àѧt eªõQGŸªßoWF¼”Ê JçGØ8%ŽB>A*äA¨TɹtªìºŸ³¤^˜èç 1ï!•”8%ŽBGÐË3N,8—ñ¯g»§ÄB1Ú–‘À1JSãÄ´“Ú…-œŽ;¥� #l6»�Bˆk2!�ZqBo0]Ⱥ3¥‘5*'ðqNlްBÈç�â ±Ùz\©´Ÿ”««ºæšòðèÚ~¨œÀ‡áÔB!�ËI`ïC: UˆÿÒµí·ÜÉÙ8°šlµ“ø Ø!„Jh%�“qô®g_LT‘ðïw+/™Ií$>ƧvÂãÿ n—)Á!�f_'òL^Ë6™ŸÁáÔÚGÈ–‘µ«ÁªöÍJ<ž¡ÓB×sáLZ2½BžL!æAÕ@!ÜM§—TåÀã܃AÚ«‚tµ“ø¡Ö>UÎ>G™ 7ÎC±ë/UªU¶ú¾G·/Óì#4ªT|®1õó ”oaëF0¾~-‹Ï„pªyWæv—s‡à@rœ»º†¼@ecÀNÈÑC†ZOíGŸ¨ÞOÌÑ×^SÞ›ÚI\�œ«¯z3MÛ#![oùé™QâµÑrþ?´ú"Tj >3ôû÷òiHKŠåº%Ç=‚Üì,¨Ù¤=×]A>îëN­`p�J½g_“癟£®�…¯ߥÑ-ä…ŒA>V�VOgq#EÓkÙ?Y—'Ö÷¯Gí$Úy?wÙ±§ª÷yÏÉ8Õ; ÃÅ›V“ ¦Ñ'a–Fïp¥.O¤Q«<:XçSf¤ÂõÓá¹æ¹î òA¿÷î]Ê™OÛ|øŠ VïÈ€ Z‹xТ†&ô €òá¦i ×ÕnÊ“o_‚¥÷n¸£ÛÈÃu,+�ý�TÔVŽqJ]Ý™§32?n  v;è ™~2ÝéwÕƒº–—|*áÿËf¿¡3¥5=Ñå㻹î‚Ýr”\wù˜S¯¾õÂÍ>7{S:ì:�mò˜Zc€£Ws™ƒ˜÷zôh"3yÍâê ˜ãóGw`ìõst:޼í•ã„ZgðŸr"Ý0¥‘¢F˜”›êÉÌPé `ÖéôtWÛYz1ëê‚2Û¯tŒOì¸nÿÿê²›çŽàÔ8r‰L(„+ƒ{CŒŸÜìóc¿L�“7ì[å;ë‡4æ˜ør êàgòÜ»åª1ǦØ0ôò —û�¼W×òRêA›Xt!óV«hÉç}*IÿGýdE°¬ ­Þ Õê�¿¢|Èa£½|>°Ÿü{�ë.8ŒL�#䌱þ{£/ø‰Jnò0~HÀ« áa‚s+{—mË`Ž]ýaL/Ó™ÉÁјãHj<æ€Sí#ïG‚ö�Ç*ÐQ¼¦MœˆU½{2NýÎÌ&Š…ˆG}5äâ‹Y7Ùloãíì­ÃjÊ_b³MŸ¹†í�´5Eb®»�¼DÍ�@ø»_� K–ÊËV ï¼DHÎ`'¥ä·{³˜ã¥–r˜5Ðt;dûàÐwÿd¦A³S{@£§·‚y¦NeórŽçhémƒÁÀŸw6#¶ŒŸàÒ„úþ iž+1GWƒÍö®§h^d³=§V‰{›Ô„§S‘ën ×,2 ޼ÒÍìsIz&Pç¨èÍ'³™£m),ez�¼¾"T]@¢FÕŽî„ ­†J�g"…Bn¦jáa&½}Úùž*u ȵíQ’µ/W–Žf»ý4•¡ÛmÒ LUéË;ü&*­‰SËÈWõ®T~êÑÎìs÷tðÚ'‰ ÕÑáä;v5šŒ‹…eE°iJ˜Ésá" ¤uêÇ$a©qlÄ«X½l‡wùžÞ\‘\"1�»Üz¬awT°~™RqágIÂÛ¡¨ zhqj/\Â/Ó¥‚\Äc®ky¢•›¾@ÞËж�v2]Mn×íè[E6&@Ä{ê–“;àïXõXVvšÊàðKk"ľ©�ëÀìæõÍ>wè² &�âæY—ªƒ6“â@&á3�;2¨ðCAÌãÃ…–Ý™Ûí΀㩠\u¹Qû (5c�rï êZŠæ%r�Ûb~lŸÊ²wë„sk',x”¥5ÿÍÛIBrQßÑ7I3â&Ȩûßtgë/”}Ø�G¹n/埭¯)ç_e£-§¶6Bòùðw¿îPÏBúÐß§Ážó¾µºzΦ4æûb¼ÑÙ4{Ú”Šµ˜cíã»ðε³õ¹Sþ¨›HUéáFŠ–¬Îæ¸Wô=ÈÔµä4`Ëñ6Bv!ÙÈ®y "dæ«ØŽù,ÎÜöí�«Ï`Ž7:ûƒ·iö´·ËVeŽ?“b¡×ùÃÜt¹]°„­¢ó’FéŒ1ûvš–,Ðâ¸WtËžV�dO›E¿ãT”ú�²s&{Z¥#; UÃÝJcäùDäÍe•ü¢\çÖjww§¸ Ìë0ÛÙ7§oŸú…¬ñ€õ�ýVÇ€�� †Ö¬ë:¶0ûÜ¿±Z¼(ÉméCm!‹¿Š’Kx ñ˜ÚØ\"—šŽ�…˜P!ü:+„E2C�ìiÉ_¥N OJïÙê†[rÎÿ8L\þ>l„œðv�ê°ÂBúÐ wÕ0jU²›{d[£ª%+Ã51>vÂΚٴ=IÖB‹ ±äLJm³" @^8Zòàv›^Lö‹Æ'ÿ‚0í)*e2÷/ž�!T TÀÕÁæ«æí>— ³~ðÜ@rý¡êV4]÷ ��rœlJSê¡ã´8&Où¶™Q$í)¹u±ewÈÕëA¾ïGî:‰0`#d§c`Û J<¾ù°–mËp‡tê¦ ´“›\¬h*c�Z d¶yÄòd¸rßõQw­òbˆ âáˮÕäÞxHYðwPÕ_¢Çÿ-O8c×ë0`#6MŽ8›S›ÀcMPÁcRžƆ5†qóÿŽ1`#dA§PóÛ?œ1 ½L~%¯¼åœ!�°ýd|¼%Í©¶FõPÖúf/²Xþ»‰¡ Öt�Y9Î�¸�-‰™¸ðKZ·™ �œá\.çk¼gÊy·ê’¸­Š°ø|�€ë·9(ØÆ`¦¯Øe¨“Ÿ@ÙˉžLŸúâ�‡§ˆ$ ˆ®’€®»Â©9UëܾûÔµgùÁ:_Ÿ–2Qðaâ:û“°ûóaß‚HÛ/¤LlüÔ8üi$½ªr¨ÿÄÙ•ÑÀ+6¡²rt Y”ÈJßÚÅûõ$ž•¶*ªOàeX•Ør ¢ÏE 3 ®”þg¹W쬸 LzÂu7|–N£‚´‡7™Û$h•¯Éq�¸Ñ*(¬à6�j\íêH`õ;!veN›Ð'†tôc½® ý')BÛMŽ/±bÛœSËKk"5˵kã·Ÿh¡zLÞGÙÔÆu0`#jÆ…�›¹‘ðgfmÐø ç«™ç‘B÷äg𪀭×i ñÆY®»Qª¨2R þê ©RD2÷OÃzŠ3·]Ûî´èç ˜Ò? Äã-kI`•1h[«úõ×Ç‘`9+’%*aíî,È1Ó2¡Bøý£’û°‰&ãb™ŸUˈཾм†ý«]‰£‹#�#íTãˆÛòõh¬…%sU0ÞÿʵT¯dÁ¼×ó®v,ËÞe „Ì©)�gG$jýáŽ*œÉnVA”åÅ©N�Ûk6 ù£>ä~)ÿ^yh(¢+sÝ·¨îW2¸ºâ§cJÈÈÑÃǯ•x®•1h/bvzùôŠh8«þ”¿/™>5<Ðv#wŸjàÝÏó’¨HÅ“ýkÌä:8Y”GŒ¯_ ¦Ÿ¸Àú9PéS|‘Ù/i ¡«qTÜ@f} Õ�ÜH«Á:)"²7³¦±Mû¤°“ï`BO“xã4DÔ¶ž¦ÏÛÍMýëßìì›.ŠŒ ÉµãuãB¡QUÇ® izxáCûŸµ¶BƇL;¶h�ù<Ù8‚ÀŸs�Û•1am*¿æÚ¾kK6R»½ó’ÇŒ­_6rYŽ^dvEøÞÌZ6öÎŒºVŸ/êRNYß ØZNmyƒÁ�x�ÿçà =Å:”£V%M@A {�ÿêß[µn-`“Ѿ=›HHËû¢q`aÊíOxC®U»šxÆš_Žgl�¹¥è9(VëÜ:²zÜQ�Œ£ñr"Ûy<úW™ø˜ë. Èš‚àJu¸î*ncsGÍèÏwfذÉjò7_±N²ŠY|.DwžÚ_�è4-~þ *EÙ÷B3Xö~á@È^ö^«.î©&Ðá÷™õée2ÕM2�lÏ•dI»õX ƒ‹•ªäÛXæ'-ù¼Dă¿—Ú_H£ÿüD¸¯…}sàÀ'æK€>_�þ({Ë!eAÀîZÞý—7Pé°!µiA°&H’•Ï’ÚÁÿŠ¥%צó¿$iý˜âÂLp6S€Ol±X jµg´¯Rµ ×]@v*/soùÊ&…Y|nþÖ•¦äÚïÛ/(`dwÛù¼k”Í[�Ö{v"ĦäåÿcŽíÌd3^ ,8§½¹Ãó=?-2Ÿ-~KWê!=Û`1©J‹š8uÓµÊgÖ¸ZU !{ÄšÙk�­·ž±�L“»Ê§ö ÁaýwßsÝ  Ôçº ÈNT®]p;.•þÌHùpËSÝ¿�0]5ºöÏL¸ö@+Þ¶½W›Ø9Û±kÎ}[É™ÃQÍ&Ä•È÷âì8²Èü(ûÓÁÐÞ…ëíŽ*ã'‡§J÷ì¥Gˆ6Ÿ Ø2™ Þ3šën /õz™Â‚d‹MÕÊ”ÌQœïŸ{æW;“)ú¾óá·Y®-c‰ÑÍÆÇš}N™kùËŽ¹éw¶-òvÝêðÑ©KÔω¼Ãàà³°)µ©Å營±«�†²Çp1§¬ÉcÑNì¿v”Ol„\!-R�lÇIº£²ñ},ç)ó™å”ˆ¤„fÛÉñpl±ù¬;¤bç¬ùñh6 hg~ÄNÊnþKo Öö“9©^ÇÕ¯‰ IMº(n¾̚%ž#[º¢Eöep$m@çrÊ3÷«ˆ“à• úÿÎ0`#dÄ/V0BG9‰x‹š–¯w©4ÖÏ�£ÒCÓñqpv¥ý‹ÂØBÒ‘]œdóu+wdX Øú(¨îÉþõ¸² `KΗE¾‰ŒŽÉAªd=Õ0A¼¾�ê[ætTÜfw€��ѨrU ns™7#Û¾““´½¤jÖñ¥Ñ µ<»Îª]gr`öFÛ µ•/´÷d“Ò¥ÙÒÀ´]Lƒàv>°ããã=fµx¹rål¿qî£*…•Ç~>ÆÝ"¥¯þr,—@›÷cá¯�#!ÌÊ^j6¬ú=~ØïØu}²£Q@·[vV«*¬¿q—ën ä2Ÿ Ø¿üò+$&8V�6\çù"ÅÒ‚Û´ ~4«ny„¹ë´ãõ߻όg¶rÙcÕÓ/ã^²�s›¬Nw4XG¯ªÜ²÷Úœ�Æ¿ÇÞÍó†Oï7z6òz¡£~ëàsÛÓ‚5‘œœ ¡¡¡\wÙ‰ö”jÍò–ç°�­ëœ¦4@�ŸõØ-Þ‹­ÎtªšÔÁ^ýŽõ\æ{Î;þ%‚8x)‡³€½ñ ² `c!äí‚ßøáEQ¥–G|.`{¢ØØX جWDŒ[ÏW.Œý…P¶‚5ÙVÎKqŸ¦‡%¿¤Ã¡ËÖs­Ï€V”TB5Úå{¨W)ïÏþAÓºÐÿÏ#6Þ�°Iýé-›·‚Jí9…;uêÄu�hü ô~þÈŒÁmÜ‹ èßÖñÔ¡ÛÛ¨"ƒø°ø­Â©[ŽdÃç;3 WíY_”7Ì‚Eoæõ³WEüÒì鲌ÿ~n¤i ÕJ¦¼ÒΩ€MþBƒ¥°_à 2Â&9ŲGX‘Õáîò_œjW°>ê}¾žÞ%¢‚é'þ ד]1°½œ9ˆ§):XôsóÅG$´.ÉAíÿÆZ¾žlïö,Gun(ƒýͯö^6Ò¾‚"ö µ»í)Pbíš:-‘rÄg;·â±'97/HkÌ,‚DÖ9°SpÊùˆ·Ê–?ý~?ýë×Í<Ú–,`<ÿš?Éûs~2,º4rÿ ƒ;iŒß DÏ>åÆ7¨œ¸Àm‡J©”gAZÍq�~¡‚tZ‡ɧÅOÌÑ×\|1ó}r„S[ça‹ºr– H)ù�ÒØU¢E°Êƾgš&¿À\;»2ÚM‰gò¢Óôý�,x«[^mï·ëTÇ€íFd}>Q. xʾ•eï6Y­».ãßtWŸ\!äóxZ½Áàs‹Ï²…W¬à‡FK÷‹è螊‚àQÚ‘¿zRqŒŒøI*Xk+Ê]±é ²àï\.ÄB î@¶^]Mæn|£ñ†îå¥3ƒÄ¼‡œu‚aÝPѯÿ$©p݄ܭhýk6·±'ÛdûÖËó˜?W§RèX_ mj³»âÜ܈_­¸§…7TÌêsW8›99î^†?P×íé^A2#ÆOpÞ•vŒ_à�cW+‹³ÈÈž�vŠVîÀ ‰º IDAT�J£ÙU œýtÔµ‚¤¾õÐŽ~®vÉ,rêð“ês¿1@[š 8m Úm'ÅÁ±%ì”Ýìùa^ÍkRîó÷SÙÌQ”TÌcV³wl ƒu%Àcéû‰Xhü.+dR&sð¢$¸õ˜�@ðF­*ðý�Yi åÉ6þû8ë¾m´b~ì‹•¤ãë…Š~f³ÝAÕeƒ6ÝÊÞÊF[Ƹº—�vŠFÊø×i4Œ�§« -Ü×üí^× ~°¬ïÆjaIJdÈvâúnK{¡3sl·Cö]ï>—ÃE‰Œ#ò“ËÙ«Õ½iJSJÔY{ÎçB·Æy‹ë¦6®ƒ›E§âÔn¹F"åß[׿…Ÿˆ—@ëõCE?n`%`wˆ‘,b£�â„‘rÁ5 #äM’(§É¼¯…͇³açél˜÷z�qɃvuÌO/W�:¬ ,Ù �9ߎ­í:ǯ©à‡J¸pWeü;�ÂÔW™d,´l9¢,Ø•p È’ƒý�èïso%ù²oeéê'zf|}ÿ&+ÿÉ:çj;åý§ØèOqB‰\»H„�êÊÞ�HÉÔCˆÂ4è� Z×%•Øs<íÛTæçñ%QÌ´²9íêJáèÇ??}“½=Õ=›Éá�3Ž_*X0Ìr6TÂÊí…9G¯æ2Ѳ––Ž a¦Ä‹ZºÍµ�¨«÷éç‡/MȲCOèN�Gû þy¯¾ª'1ƒ\¯,Ú}3UÓÃÙ6ĵú¼¸:•J£Šü`C×ñÐ¥¡ š×”0¶N\·lG®L† “ÃÌ>G’™83 liÔ^Ô©›j&7xµë¿þs†:°»ZÙÛ]4XG*‡µš˜÷gîÖXÆ$aùíD¶ñ‹»S®µB‚àFJ«m–dõaÊÁzVÓ€h…ˆGõ$VŒ¨%aÕeåÙÇYÚ&μ\=ÿfl÷)µ€­Óé`ÞØá´šGa�]¯jM¹Î(;«&@¤Í‚;Ùw1‡9ìuã‘õ…T½šËa×iû&YfK³ q[¨êVÃwïY/û*óº.¾r´åUêéÙö·ãl n{49wüîÜuø}³÷ì¤Ð˦.ùdr: �AªeÑ Öddúqó�(^>®ž_Ó©ÚÞßÝPþîÈûbü"d|j X¨l ÖÙ6oK:Ìhö¹Ùƒ ØE r˜³nw–É~ç+÷Ôpç‰ÖêH{ÍØPxci’]ç÷“ò¡õs–Gø}æP[/ä“V̜ӗ­åº>¦wͺr ðÈèÚ~¨�À µ‚…;µ äÅeëë]KѼôD©khéµOÓ:Z¼ª¢Bð7Í>Q ØiÉöý‚#Ä•«·nCË&…¿äZ2Õ¦vœÌ¶°‰�³# ÷lÛ�.@n{Ñֺݙ%´( ή´|=ßV‘’¢iñ92JçjOô«mMG©wþ»ÇI?¥Êõœ¼çûÑY—SÏxZ°.*Jο%—\溄ӛ,µ´ õ—o¿p¶Y„ÜbÃÏÛaäàÂôkþ ÖqóEsîætøp�ù "€—[ûÁ¶¿­çaØ8Åüµð|ï~‘böqR;þÐ?¹ð|}ËÓéý�ïçcÖÏÿ¥q$nmv¯�¸]Oéoš˜E«£_)Ì—œˆS3ÿNhˆ� nŽ­ëלJã>Èé€MÊ¡ ,Dìâ)ò4䈬³òÒUÖ©(bF©Ùî’„$ K™3?À,ÈŠM±\áŠ,в„Ì‚“¤*–Lþ&Õj•°©Æ€g-`¿Õ]M«‰->ó‘ÒY^8f¯wzš^ݹ÷ 'ýðV±JdQÚg-ð2&5ô¯E¥qåBÀ�XøŒè7b ,Ÿùž³M#ä=‡Œ„¿¶|[pÿàÂH—t¸¢ý”8ø{©å©é�³Ã¡Ýäx³û³'÷³<¥Nt›oóüŸïÌ„w{[^ï 0»Wý¥–rý‚õ½ÍCs3sQ6LoËݾèóuœôÅéŒÿÔ®PÌ >·y€õ¸¨—¦Ä- ±¾ò!O ÌΆ¥k¾�÷G¿YðØþO¢ ót÷ï(!é?¿Ù“U"Àutq$t�‘)™¦�s@;¹…wÄ¥êìªóýݾ,«ûûIa©Jóµ©-µzý�¾<Ùæ¹iÙþa¸ÉýîGpÔït€â"³¹ÍÙKPЏ°IĶ<õýágëaîÿ†9Ûx¾u hT·6s?È�ŸŽ†©Ï’›¸Ó—d2#Ö°Ë ÈöÎ�€ kSáøµ¼ÓfÕ­ï»î=;Ñîó¿½:ÖŽ5¿-«x&22 nkd}쪊Y‰Î…S+L§øÇÏšÇ|Aó&¬äìÜÿ$ÑY¨&&n„w•6Áçóaö?Àçó¦Cbì“ÏG•«Í;t�¾v¶ ±büÌy°ÿç@"λK*Sµ~N Û‘ü„mÝgÆ[½žL¬x;˜©d5îËøü]ËûžIÁG �¿£b �XZ‚2ª‡‚Yi¾uZ8T-cý£##Ûï­3¿Ð�¶õÃ@XäûÅÁã'áÂeïÉÀ,÷WÀ{/‘˜ÝÊhöÊÑ >›ÎÂ<1?ÞVmjd™óÛÎuïÎúÄêó°‘'èÜÿu8¶£0ïÿÊÑÁÐ~J<(sÝ¿XŠ\G·´[Õ’Ø|ͤ¯˜=?J€?çF˜}nTæ°…ýŽÓ¸ITEVÔ“„ùÒÒ3à£ÅÜ�Tm™¶t He–/ipáØSz[¸>l¢`7'p)ãtÀÖ³´Ì¿Kß°ï·Yi !Wô:vmøªàþ‘EÜ-Bk>!N¯pþ³mý~çÊñ&¤é˜èäÒ€³šŽçæï,2XÀ¬¨/ª÷ë£8鋽<-X_L¤7þN]ÿvÔ/%œ_%ÎÒ¶¼Ö]zbÀF!=#f/Y³'�+xìèâ(h7Ùý£E�Þ`×HÛ’Ï~w¾`F�Yñpr™ã_Èö±fkâ�9¦3û á¨'ÞI£HÌ¡3í'¸\I!8F¥ñR„ Ø|Ok1;¼õ,Î „BÐi-ï1EÈ];/uë ë>ÇÜ—Kx°â혰–›ë±$h[«êeÉGƒƒà³�™�ì`ÙÐJ‘B¦ü§£’3õvm£åÌJÓ/6ãfÌ�?Sqˆâªð÷êû×§Öx)Âi±”¹ZphOœ–ÅÌ7�û¼ {~ÙÌZ{¹bÜ̹°{ó·àï—7]Ù¦¶:7”Á~ {°©Í¤8XõNsÝÚ^½›Ë˜#I»úÏ= Ü‹Ó2[ÈÈÂ2R42H�ªŠAàB9ê_ŽgßÒ�oÀE[§‡…÷ÿ:x.^½ÎY¼Ñ¿éô¾ÜLk¬¨B­ñR&/`óyÊ\08°m­wDËŽÝ1`#�ÒcГEh ‡A§Û*Î2v‘áÕbD°eªõ¤–�zóbæ`Y¤ŸÊ]ªÏ]ý¡jtáä`rjÌ_‰©‘AÆ^´v­Ñ® ÿ?*�—BÏFØ<‡W¨Ø»J!oÕíµa°gëú‚û>ánq牆9ÿßK£AbM*.Gë#–s[ä§B„Æô2MöÒgØhŽzã¸à0ó«ñÝ�æªðá5彩5^ =aƒÃ[­g7|Íz�àæå ¬¶‰�+²sraúüÅðÉŒÉ��X ­&r´ ®ƒ5Q·"·� õ ~�išÉ¬S¿¡õÆ9e*T⺠̞ë\6§K‹˜ÒHQ�JÃ¥˜Ó#l¶ö ¯½�yœãgÎÃñÓç Mó&Ì}±ñ7æëñ¡ðÖJîRnz‚Ó·¸É`–¯xIБïj ½-I4´x¾+×] 6ºŽ” ®‡Iùw¨4^Š\Ãvô�j–/[ajY䙦/Xnþ~yu•TCŸ–rØ~ÒsR]’©r’¦tæ @«•»ñ0Qó6§Áýx-ì[`ZëºEMv¯…;â·Y¦SÉ?ïÜ 7ïzßeÒr•«qzþ'JzkÞoà_›Zã¥XÁ*qGߨ¢0�"óó‡eëí"䪽i²mæÀ@øûº ÓÝ»àjÁ0Ó/¶ñiú‚¢gn«àÅÙ…u§´÷ƒçëI¡‰•Ò—ùÈš”£WU°ïBì½Pr5|Óñq%Fµu+ŠáÊ}÷Ž´ßí¥€rá…_H’SRaÕטéÒ×(Uâ\]>�JÃÈù¶–å)qâù^/ß?þÀz»ÎjÞ¨>,�ýsûÖ¿÷àÍ÷¦Q9Éa=jèk 6þüjÃVÈÈòÝ/-ûö†w‡ç%´8ô÷)˜õérŽ{d¿®†ÁÞ×Üß=/­‹ÐÈuÛ®�¤&�¯ UÔ�G”ÌÁ’“ü­Éðõ„ÂJ|ßM u럿j ïZ˜•ô©ÏðwÜv~65nÝ�Óó_K¡¬ÉåÕúa¢­¶_‰œáô5lšµïì1;2<¬ X5ªT‚ƒ¿ld={R¯.aÚØ· î÷íÑ~úýOŸ5´jÚ¨ X¤JÖ’�¦Ã¤9ÖóÍ{ŠœÜ\&!Ǫù-e°l[d«èîó,žWý�qSªDæiH5C®ÐÊ^9@xTÀz{ÄP^À– yÎ'f™Ÿ"”™ÜeMÊd>�L¥òeáÞÃÇnî�oàó�/(áIf,\Ûׯ�Ð༞µ+ˆ˜ëÅlM?›3gHÉ�ÿ˜ñÒ6}}ª1`›¦=º˜îþô]År„oÙ¾ þ{ð�Úùhãz:œV¾ðÑuüÚSi`¶¿ˆçT`­Lêβ¡CϾðG‘dž¦ltlÄ$è(ºmò+pär.ÄQÈúõãôð�=Hà.»˜9dà�3쯚ÿåˆ .\dö$6¾øn#ëçq§^ƒ†svîÓqt¾äu//�I¥adâYÀæ;°É7µh?v¶�äkÚ®£Gl¶}µñG9d€Écë6àš oÐáåApx[aJ]2¤1Ò¬]².ÏäoRY?�½¾Ù“ov3­‹ýÁ€@Öv­r"ØÁ¯à>™môxVÏÁ²x� d�pºšÎ¥‹Že%ó©4ŒL0Ÿ 'GØ 9zÖvióýOÛ`ëŽ]0´_àóø°á—íÌâ&äùt:=Œ™ö|±pNÁc¤j”;JLþË]’�/ÿÈ,°…, <Ø0Ùw™åkÜæyÎÎ}"–Îèz\=ÿfTF%ä�°ÅÎìä\:ßÖü!+ƒûëØî¢R©áëM?qÝ ä„+7nÁo»÷BßyY«Èeú­ÓÂáµ…‰¬�ãÌ-54+R´cä*nJ}µå°Òdô;b9»™ßN-7]d6ô“¼z‘Y¾ÞM‡“}öÙZö?¯|žº¬¿à,ë #³˜€,æ;µ‚ƒÆ^l‚\ÇÞµe=•¶bÛ²5ßBÛæM!,$/©IÕ2BÑMßîÉd¥ý1Ÿ'C‡zRhPY kÿÌ„5÷�ké¶ øéX6S“ïÔ,ö‚ÁsM·¯}µéG¸ÿÈû×�ÔjИ³s�¥³x{FcEy* #³˜€mxTÞ&m;z}À®P.ÊÇ”aòPÛ32hÕ¤è z8uþ’]í èЪ9œ¹t22­'Z©÷\MˆŠƒœœ\¸ró6¤¥³»)ÀO.‡j•+‚V«…;÷î33¥Mßáï˜,BÓÓ\Ì� ì”-<|9—9<É£D-|±‹�/%ù¦ö„Ƞ•¬�žÄÂ?ýÆê9¸2`7×ßÕ:h(d¦”‹øÉÎ.XFÎ)¹š¹lßO?€L*)¸?ã“¥pä䳯-[& ¶®YiòùðOL¶<íùùÂ9Pß„óݽÿ†�3Ýã<öÍ×aÀK=-¶‘š–¯Žçôõò'þºvhkñy½Þcğ®Ýtª}oT|©&ÕlBów�l#©Nû·•Ü×ét0hÌ{öˆ=•jp—ZûØS:_ g6V”£Ò0²Èc¶`d¥ÓϠĶ#¿m�ÀtÎüéïC›˜}}ñ`MüöÝ—_O ÖDÕŠŒ£\ÙÿÙ»ð&Ž´à¯V½XîlSlzïHH…„�$wi$!�4Ò{¯wi—v¹ôFzï¤'¤z¡÷jƒ{“%Y}¿�ƒe[’µ»’õÿ=Ïœl•Ý—œíÙwgær8(ÙšD_½õr›q¦¦$ ¯Óü÷>¢WÞù°Í÷7š0j=tÇ�m¾�­¹~æÁ{©²º&®ö(n6 mÎu·ÑË�ÿ]tgÅ“9Šî¡/´•Xê´©£gž£P4ÑwþÕ7+r^—�'¿cÿFõ6 G͋΃¤b¶ÃDZߙ¯taùí³÷$/RØ-ø�ÑéÓN¤Ÿ~_Jï>ÿdXÇ›}æéâ-u¶ãQ[X¶«æœÖñÙ¸îï_¼OO=3¬ÏÅ«-;vÒ‡_|Mgÿ­}vW͸¯¼•OÁÒÇŸdvúœ+Š$ú¬)iŠ�ûw‰f†ß4ÔÒ[’C«uØùÍÊ"»od¸`ã#:uô;©&ÇU‡ýó'o·ØYÿ¹v}ÔÎÓ=?/èóìÖz¸�u£«ç^Ðf‡Ý« [Ø�uSMÇw;º§^yƒÆ�N�sLžÊËPÓÕ3¬ôßÏb¦ `Lùþ߇O2{îµ·©¬BÚR¯ršw×CŠœ·AÈ®d×]­š%ÂÆyp¨Ãî—¦ù"’Û铦Î'ß¿ÿ:i5ÁoV°ñË«ï¸_òNœÒ¼*à¢e+iÃÖí”›“EÓ�;¦ÕÏÿë–ë莇oñõWŸ|¸ÕÏ×Úêéñç_¡m;wÓ°AýÅ̽qÖt"úç%WÓoŸ½{¨HƬ)fúîÏÚ\Só;wϹ)”–ô÷$3¶+Þ;Ÿ.P0¢èR«5¤7Ú~£¤Ê®ç 0�—äÀЦC½Lÿ4íßíu…ݳ°;Eßöû"‘”œBõ1>Žýå›/‘Éü’uÖ“fÈ+˜mÂvüjêá§_¤“��L·^|<™Í8oÉÎjõ|ÓÏ»XœÄÖ¨h }þí�¤Ójé§�㻌d{LšqÖawÞº1ƒÆ\[J> fìÆ£‘½ô4m”ñÐ÷l’ÙœënU0¢è»äÖû9¯ÓËK²n½ YókÔ !;Ôa瘸µ‘Àá•î�ÏÑÓfÒ‚·_•ìøíõáKOSJ²5èkliÓ1g´ÞÑI�eÉ¿,Yôµ¯~ü™nºâbR‡¹SЙ3¦µøÚIç\Ôâ²2�×+Nžcc؉ê¼+o 7þ÷è¡ïYALB#2êTô܇�ív¤If�²:Â’Úb‰j†_Úß|´$†�´{Ò˰¥Âvµ‰Õûõ§þC�²›oÊÀ(53ÚÙàj±³nôÔK¯Óµ—„^mI«mùG„ݾlk 8óä‹óéš‹•Ûð@Il£6 ÿ¢³Ï8ôÜ—÷fÓ´»{ùê¢GŸdvÊùÍ·™�w§]x¹"çuH”]÷LÑþõƒBXbºÃŽUltK³µY'vѵ·ÈÑ7ÿ«õqfæË «ÃžyÒñ-¾ê¿ó£/¿MØ›yíý�éØIã¨k^®ø}N*G7œ–L�~œ8åw›úåáÃ;ëGžyé°!•Žbàˆ1Šœw‰DÙõÜ~¦ã$90„¬ý¶„·Ä™¤”Tª¯Ung¢#]wéE”™Þò2�W¬ ¾zÝÆ6ßÓZ2Žã(8¼Ää©'Lmw\ ×ÎïÜ©í7vPçλž~ô¦8®Ïœy”‰¾^Ù@÷&VU¸ÿ\”Jãß“T×nÚB ¾_¨`DÒ˜xÂ)Šœ×î‘&»î“ªýºíw�ÔÚÝaK±(¿©É'Ϥ/Þ~EÒs„£µÎšyä®›[-zËØLw·çð„Í0¦µJlÁ°µÉìb'‘sú¬Ã&¡½qC:M¼¡4&jƒËaL=Mü÷M—ÛMón¹[Áˆ¤sÌ)§+rÞ%¥ÒÔ ¿°¯©å²‰ ›Ã:ìT·»Æè¦P,A TLuØ¡`ãÛç_Õv5°xpdÕ¶Fll6;öD´¿L‡sæ¥×Ð{MÖ˳±ÜÑ×”’¿ƒ—/eeGŸ¾üð‹Ý©ÿˆ|],ë=p¨"çµItá×7Uû•$†°ÖagÔÛb­ÃŽGl|›2)Þ_ªt(’Ù_Þ¤©¢üß"ûJJééWß„$µŠi~^ú¦i¿”äÀ‘#2ln›R�´fÊôÓè“מW:ŒÃ|÷ó"áÏÓ4nä0zäÎà…ýï½éºû‘ÈÊ…ÆŠêÚ:JKInö|÷.ámÔÓRIÕDuÉMwÒ×ï¼BIfóáÏŸd[Gõý/¿ m‘ÒaHfÞ�*rÞÕÒL^œÝÇ4]’CDï°�±Ùa5.¦:ì·>úœžãÀ6ŠKV®'ÏôÍ˽3a,=ôÔóoa ¯ø“¦7¥Ùó)Ö¤°Žsì¤ Ñ ©Ã8éì‹è•'¤^Ý•Eÿ{õMúàóŽ;ªÕéHsp€œŠì~IŽÛ/MÛqjÄvQɰý"uxųâ+‚Á¶¤lê„3gÓ/Ÿ¾ôýß½÷š"åI£åÃ_í°�ZM>h,õÃæ>Á\tí­â–¨¯<ñeg¤·ý�8ÄŠùÜùðJ‡!¹Ën í7I`Sµ4õé/ècRfm´è°;ÝÀíˆä OV�´€duΧòýE’ž#Ûwínöë´Øm¾ãŽžØì5¶ƒ×ygü½ñá§2D};÷´üßü£Wž ©¢Û)ÇÍ�:œ:[=�~Ñ<¥Ã€vJË”üzK­O’ã Ùõ’Úå°[èr#š¹Pç vðå?Ñ2eúLzï…ÿJzŽö¸ïñ§ƒvØÌųΌÛ›aU¨RƒŒc³Ý¸öíMë6miõó7Í›+Uh1�-×S›4¶�]Ÿ*É�¡]Ú]8…©q(ß"m‡ÝgðpI� so¸�^zôßA_ûúíWÄ�2âÑ%7ÝA¼ø¿ ¯=÷ð}ôÄ óé㯾möZZj }ñú R‡ ¸>ƒ†É~Î¥• Ev»¢Òaׯù”hÙ´u;ÕÖÙ‚îàeM²Pßž…´i[D£ŠÚ_Z.nhÒÒþÖ¬69k…ÿŠÕk¨wa�>äÐ^ÐÙªšù„?¹õiþî"»Ž]Qé°]2m’×½ïÚ.˹ZÒV%Öi³æ¶¸�äK�=ÐîµÙþ€tG¾åc³±ê¶¶Éì׫‡Ø‚Ù_VN�³•Y£ ¥I Ô ÿeŸ4ERú§i?—äÀQé°åÂÖc¿ñTÛ;RI©hÿþ6ßóö'_Ð93¥ù%^³q³$Çe¼ÞÖÇÃŽ?s6}÷Þü°�[Z^Aÿ˜{eBï‹ Ó€á£e?'‚ H´‡Ãù}L3$90DE\uØ}úËv®56Ñàþ}›=¿§¸íû¹×Þ¦žr2i4‡�ë{}íŸ R]Sôù«×†|Œz»ƒ’,æ¶ßx‡Ó)tÚзïÎùv÷× ¡þûœøõÖ»¨WáákŽ¥ØY@.JÌî_Y&ÍØõ¨lÝË’¢¦Y‡­W«êÝ~>¼ª‚OFMdzœwë=Í2Â+n»7äÏ=óìfŸ?9Ȥ³Sο¤ÙĬ¶&§ýçÙ—èÆËÿžyÍ:½ëî>Ù-VÇù·ÏÞ=ì¹¹×ßÒgΚxê™tþ?fÒÜs[¾½¿ko;æò5¹H¹ðÚ[šý7 eY@,Êê,õ¾Eû¥«7z¡Ë9b\³›Õ/¶ûÞ’]æ P7«´3Å™Á£ÇÓšå‹%?ÃÆ›{÷('[±Š_‘|ž�é²Jg-ínÅ2fö¾áƒàiÕº m÷óoÛÄÑ#ÄM5v…·sÛóš�s@Ÿ^d6iùª5a}žyýƒOÄÆôþ��²2Å-7·íÚM.WËTÏËî6lÙ¾3ìóÄŠKo½_Öó•7ÄÄH Çæî“äÀUA:lõ–H:lá3²tØ'œ~Žl6Ã:•ÖW·ŽÍœÅŸkÖ‡}ìEËÿû3M­ß¼µ]ŸoÄfÇo ñßÍó(Eo0×ÂÖ³R`õ_Õ gŽË×wÌ�É;˜`vDý“Ó'ÏÒ.£¹ãnŒñAÎM>ØVéRÞ ?­Ðˆq©8µ[Næ$+9êmJ‡ ˆM¸´¦¦Ér.ÖYÿX$íæA£³u¨n'šuØYFuÄë†äšxÆn‹<ÿ9ÉÏp¤s¯¼Q–ó°M•KÛY_5Ø2RÒ@T5ë°;™¸ðg ÄÆ±{¦H¿Rlàȱè°@…}H~·Ÿ§_%*ŽÒH«V9óÌêöM„YEµw-’©ÃPÂñ§Ÿ-ù9öÔûiK�4[f6u÷Hk¶ä'�¨Šjïê ÈWcШq´vÅÙÎ0vÊ ’q‰‡^é'ðv6«ÿÒqd—üDUq›Ÿpƹè°@6CÇN’ìØN/O¿—H{ ¼©k[†Vv[ IDATÊv2ˆš ¶†S¹…lYÉÙ휮IÒ¯O4ayÈèÔYs$9î²RÙ$Úy+˜£sõ�Èv2ˆª ö€4í§UzÎŒä€[k}²tØLvn>•í+’å\�¸:w-ˆú1÷ ÉÍfƪ�tRWÃͲŸ¢"h‡=(CûA¤¶œ›9œ1ç zú^ü쀴æÞ½B`Õ®ýQ.]Õ²ÖÜ1Â*tˆš vÿ4M»öDe³Åó-ÒgÙÙ�$?$6V]1ÔÝéZÃö[XS©LGÍä'iVXuª}Ší´Ã~4Û5 ²©Ú+K‡ÍduΧòý¸-Ҹ⮇Úõùu>±)íÊ�fù7’l–8Ÿé"ÃXö×ÞJ�Üx¹äç€Ä£â8±r¸Ø¬ovÛÛå��ýÞq+¼ch±ÃîdV¯-qøEz`6™¢³YM.Ò#„³Å@*^w{Èïeûm¨öR™Ó/aDá’©{·Â;†;ì±9ºç>ÙÑЮúŸ?»è¸.†ö"$SÿïŸôçïK~H,ù=[}�eÒ…ä„M$‹EµÊvvO£ôåÙ@-vØ£²t¯´·Ãf¾ßë¢cò ¤–0Ó?õdtØUÓΞÝì9¶!ÇN›�vÙ”“Å}£­ÉJÇÑÓb‡Í©(j ÙŽ3™F5 ÎвãJbò´™ôó—ŸHspH8#&L3gV ª¢!¶ns‡â®‘Ö¥c€è’­4)û�ÿ±èïú“š²…–a࢒}uÒ tØ9Ã'‹wãÕ¼�–ñ­ªLé8 ºZí° “5¿ì¨ó-ʼnK�~±I«VQªŽ£T=G�Š j"½øØvj~×Ó¯Ñïº�lµÕÄbsL b˜Š#�ÅJSÏR:’ˆÍ(0^Ù5I��: V;ì±9ºg¥ê°[âõóT.dãåÞ‚êñ!½Ïc¯%Wm¹ë*Ém«&�Ð\uìû*òÔ×�ß¿W× …u²IÉBG›Bú¤TñQkI>ðµõÀ÷¬©um�W&çê—£{Zé8@­v؃ҵʈ܉)¯0òƒð<¹…ŽßS_+^°ŽÞc¯¿÷:läqÔ‘¯Á.~�Œà¶¶YcJ"­Ø¬¤3'‘Æh~tº¬“e�­–u²Z�ÒáÆ�ã»î:&O¿Òq€tâv{͘ R‰XX‹&¿»�¼¬£wÚ…¯�â£Ïå:¡¹œâ×M_k|?ÉXÇ:N£%µÁDZ¡óÔ�ƒYèH…¦7Šê�çLâsj½ð>“ðœþÀ÷ ¬S ŒW�ÏÑýOé8@ZmvØÓµŸ¬«òΔ#8@-ü�dÍ�’)ëyÙÆ-¬ógÃìÂÀïqSÀç¿ç}^ò{Ù÷^ñyÞï;ø:{ž½îßhò¾{ÝïÞë}âgÂ×Ä'ÆÝ§&•Z#t„ñkN­³KNÈYcÙ#§Ñúž½®ÖÄ÷sZý�T§ŸöÖyª…÷±ŸH\×IÒÉÄ­Q:�^›öÌãeè°Ûà 1‹Ò[Ó”ÚðÀØd£FE˜p“ Úì°ÍZU¹�@h²Mê�×±ôW:�WHcØ£²u/¯(óÌ‘:hÝ}Ì3úµs dˆO!uاç¢ÃP²jy–ø1y†/,v…¾u ´›J¥ Ü>")ߪUíW:PVÈöñ]ôw,-ó\êôÒ¥ Ø~*ÿ5ƒ-CsLÜ:¥c�ØÖ:ì{F&eÜ´¤‹}$bÖróšÇg¸mJDZ%ìÂ)�ŒKVÝ¼Ôæçy^ 3ËÄÎú'¦w3\§t»"ªtöðX«ú³]®§—”¸çE; €D1)WÿØ´®†…/qçÚqiÒÝ W°¶Óæ?ja±ûömµÞ©Ñ  £�®ýôØ<Ãý�ÍÜj¥c�øÓîZâVõ¯ýL¿6}Π¤�ÕÞS6ÕøN§{ü¼¥½çˆ)z®¨wŠæÛ!™ºw ­êŸ•Ž:I6ÿÐsT?4Cû6kDÍë»ü”\ç äÕº]êÜ|^­'�ïôñiž4¾oðÈÀ}£—ç ‡?ð5žtjùTDŽ=ªØ£ÊÇ5yŽ£&Ï©¾ïàs�ŸeÏ_ùÚÅÓ¥øïòÊ0æŽSûÚs -§rêÕdg�:ŽœÂG²Ž+N3p;3 Üv«Nµ/Zñ´F‘ݺ jª3¹ºl#·A‰ó·¦fÇÚ Ëº6@`ÝÚ£ó¸;æQ:€hÀöšGXùøÕ •Ž¢ÃV¼}°Ò1D :ì&ø€_ðûtJÇÑSôÛç—æO:õy¥ãh/tØM¬|Ù5@G³á�GŸC‡ :ì&ª·­™¤t }~wC’Zo¬W:€ö@‡}О…^£t �å�]ñ˸Û^®tí�û M>õ„Ò1€4l{·S:€öB‡-h¨*é®t ­âßÌÍ›0ý%¥ãˆ:lÁÒç®P:�Öú·y6Ä3tØ�½.Cé@z~wƒE­7Ú•Ž  ßa¯�ÿ›JÇòXñÄU?�½å¥QJlj„ï°÷/ÿþ\¥cyÔíÞâyžS:�_Àë6qZ½Sé8‘°öÒ‡.^¦t  Œ�_½pÌÍÏ�U:€p$l‡m/ÙÝOé@µ»6ŒQ:€p%d‡½íóÿ­t  ¬}K¿¹ w쉯)@¨²ÃÞñÍ›·)(kÝëÌOë?î+£5¹BéXB‘p¶mïìØ¢Ú’¢Þè°!^$\‡½ü?ó)Ćmï<üB§{ßì¯t¡H¸{êÿ~4=yÆT>ÚÇ�÷æ‚$­Á€Å‘â÷öÄYþ+ÚÇ�JÂuØRqÙmiè°â‹«¾>MéB…;J\öú´¤Œ¬½JÇ¡cÚJǪ„ë°ý�QŠã²[Šã€tð{ ñ$á:l©~Añ‹Üø½…8’pvƒÝ–.Åqݸµwp¡ ñ$á:lW½46~ñ¤Ã’ü­r9êS¥8.€®Ãn�¬Ã¶ã@"RMÃ,qˆ' ×aK—aã–8€T¤»ÐF‡ ñv´Ž‹_|ÉàB ;l©n­¡Ã�ŒTvÀï×Jq\)$\‡�[kñGªÕñ$á:l—D¿ø¸µ ©2l€x’x62l€¸ƒß/€ì°¥º%îs»MR�a0 ×aã þHu¡ O¯ÃÆ­5€¸ƒ m€ì°yžç”Žƒ  ;lˆ?R­îˆ'è° æa( 6Ä�ѧŸ{?pÄóÏó*^| p|€ž pâ÷�ƒ��Ï ¿ø7Ž÷x ùxðu€x ~À•Ž¡Ež´å �>¥Nÿ€2g •;P`÷²ì^^lN/ŸàyüÂtPœJåKÒªÊRôÜ^Ö’õªâl£zS'·6Ǥ^¯á¨A隊‰µØî¹ªÒ{ΚJï?ë=�¥ã€ØÀTê<|n�'�»§žÆ¶õ~­Zå,HÒ,Ꙣù¡wªæÛl#·AŽ8)’dïw†|¼£á…¢zß(%Γ×Ï›¶Ôz�gíËÝôhÓ×RõÜžYº×XKÕ«v+"tp²%ÙNŸ1³óó=6ß8¹Î ШÆèúC‘ënÖŸ³ê¸ýGçê“£{A£"—’ñ@Ç y’]å>³Î±Øî dK}.€pØ<�Î_ìjx’5ö}Šž+šœ§pt–îeNE^¥ã€ø#Y’Žýì:Ç¢½õ¾1R� šjÝ�üOw4<Ëû~X–îÍéÝ ×›5ª ¥c€ø I’]d÷�f ¶ŸçµR@«Ê=³Xc_÷LÑü8³ÀxYº�Û®t\»¢žd¯,÷^ôávçËÑ>.€’¶ÕúŽ}xUý6öõÐLÝ;§/ÑqdW:.ˆ-QM²í÷\·`wÃcÑ<&@¬Y]á9›5¶eØŒîÆ«Ffi_Q:&ˆ QK²7Õø¦!Á€D¶ c³8?ÜN/g™Ô›.èc:5ÃÀmS:.PNT’ì:ŸÿÚfççÑ8@<*wúû>²ª~«šSyft7\5:[÷‚Ò1€ü¢’d¿³ÕùÏó\4ŽÏü^÷ñކçY듪ýæœ^¦3õj²)È£ÝIö²2Ï¥»l¾ Ñ #Ù\ã=ñÎåuu-W~~ÓÿuMR/Q:&�V»“ìï÷ºï�F •ÝÈzf�}±Z¥òžÞÃ8gx¦ö ¥ci´+É^\ê¹’ýÁˆV0ÛT*Õ�GñëÃîÐ÷*:øÖ ïU|A%~Fõ÷1š¼Þüøª Ç9ò½ì+¬[�°5~Ç7y�oòž–žã›|ÓòsüaÏ~ÎÖ�ßô¹#�qDÄÍ^k-¾¶ÏÙòq[‹§µsz�oúÄ ?Ïkßßæ|ýýmôú1y†ßE‡Ò1@tµ/ÉÞï¹*Z�È…21«Ž5Ž’>Ô*R#3€8áˆÉšÐ|í ðä½â#/|/V½nò‘[øÞÀÍ™X²°Øu;kÓµŸÝËt¶pIêQ:&h¿ˆ“ì�6ÿÑ•.�hMNEù5å ͨQµý€8ÁÔÔôú&z×:.!wxÿnv_@|ôø‘ Ke]•÷´[—Ö¹»$i–Ííg>EÒâ[ÄIöò2Ïœh ©zŽú¥iɬER  6Ã�µtCÛïeãv!¯s¨Ö`Ûº’“ ›CDöÖûư"i]­š%sú™O.m땎 ÂQ’-üí4¯©ôží`"ÁÖ ÷IÕˆ£Ö NE—á©)Ÿ‚_‹±ðW€*6$ámÛcó�»sY�­»UóûEýÌ'ê8²+„.¢${E¹çÂÏ+žÕ$k¨GrT¶ú ¨…D<ÃȉíHl=yµû@ò]æôcJúØ6¹w,««’íEs„d[Ë‘C阠me¨«Ê½³¢H8´œŠÆvÒ‰S™ >±µå™BòÍZßÔ¿/KYѶRg€ö ‰7›Šžè„d{âíËêì=S´?\Ô×t²p)ìU:&hYØI¶ÝËgÙ}#¥&¬øèlÝ¡-¢ cѪU”Ÿ¤[#¶k]•+@»ë}TíJÌÄ{[­wê-Kë<:éŸ:¥»áj¥ã€àÂN²7Õø¦IH(R �ÌÒ)uzPˆêдó¿¯YÕs–t—8H ½ã/q_µ¸ÔsÅ…Æ9#²´ó•Žv’½±Æ«H’mШhx&l8€í(Ó?M+´ß³šjÅví²ù;üžà<Ïslw¾úé.ÕÓsû™�ë–¤^¬tLp@XI¶ð§ŠÛRã;Qª`ZÃlSÄ Zލ»U#6Æéåik��Ê�~…#“Ž×Ï›ž]gÿ=EÏí½j�e”E«*S:&€DV’½­Îw¬/Àë¥ ¦%¬‚8ö¾€p˜„ëÇ!Zá+­¸•Ø›�vÚürjy­;Ð徕¶ÒÑÙº—N+4^¬t<‰,¬$»¸Þ/{Á3�Zuèn$@$ئ4lûׂƒÛ¿Ûý´¥ÖGþ6­|y™gîÞó/îgžÚݪþMéxQXÙk‘]þ$»PøCˆJâMyµØXŽ½Ûæ£6?[ç¬tXQáðºçÖÛílVÿ5o e¼–#§Ò1$’ðF²íþRŒšSQ®YÝö"À5áöøyZ[åí0[„íwø‡Ü¾¬ÎqRWÃ-GçêV:€Dr’móò�ë<�\)ƒ9K°Qì äÀ–)Ž8¸]l©ÓOë«|býö×{\­,÷^xÍ`ËPŒjH/ä$[îQl†Má�[ŽI-6V¡|U…—œ¾øÝ®hð÷b£Úô5ŸÚ/Uó…Òñtd!'Ùr¯ÇNÑsdAEqP«P>¡³ŽXŽýW¥'î§’¿¶ÉñyŸTí×ö5�¬t,UÌŽdçbb„†#q*9Û lm¥—� +RÄ6×xOº}¹Íqõ ˈ,#·Iéx:š˜ÉÎ2"É€ØÂ¶šÉöÝÖÒêŠøÙöúyÓ£«ë7þ£§iöˆLíkJÇБ„”d׸ùîNo ]ê`¥ê9Òrr� <,Ùf#Û¬"ùвø]³ýÁ6çü½õú13 —* @GR’]d÷É:Š�‰Qlˆ¬"9[³]çÐÊro\V#_Vê¾Äæ t¾ �é¥cèBJ²K�ARÒT¦ÃØ?’õ›¯§Í5>Ú[ïS:œ°m¬öNv½ã÷˘'( @¼ )É.uúHH#£FEfT€8Ô'UCV5-+õ�Ë_£Ú»m¾ñÏ­wüvÙó$¥cˆg!&ÙÙ’l«£Ø¿ØòI¹zÚVë£]¶øÕâ�øÒFç÷sû™ŽS:€xÕf’í �±Êå/”#I6t=S4ÔÙ¬¦eeòâgT{[­wêk›�_`�6@dÚL²åœ*Î$ë0U<Úü~?Õ×VS]M ¹] ”dM¦¤”T²� ¶ rr®žþ(÷P­;~*�³5Úomq~xnoÓJÇoBH²å›*Î`$»ý¼7}ñö«´nåÒ�Þ¯ÕéiúÙ³iШqG�x8Ѩlm¯õÑÎ8š>¾¶Ê{ú{ÛÞ<³§q–ұē˜É6k9Ò Çn·ç¸“ªÊKC~?KÊ?yíyª­®¤I'`V€z¤h(ÅÀѪr�Ò¡„lU…ç\áúÜuz¡q®Ò±Ä‹6“ì2g ¿�0VL� 6=<�?¡É’ì±9zq�6'{j¯(óÌÑp*÷Œî†+”Ž ÄÔHv2¦Š@—¤SÑÄÎ:Z¼ßCþ8I´—”¸ç±íi] 7( @¬k5Énðó©už@®\Á è$ÛæKH´•xÈ'•ÇÛç¾^£R¹O袿]éXbY«Iv‰#0X®@˜$Œd@‚Ð ‰ö„N:úm¿‡q2¢ýS±ë6-G®còô÷+ @¬j5ÉÞ[ï-W ¬è‡�lH :!Ñ/$Ú‹Kâ'Ñþn¯ë> §rÕY÷¥cˆE­&ÙEvÿ(¹±h‘a@â1jT4î`¢/ÅоÚÝðˆ¶{|'ÝSJÇkÚÉöË6’�„$”‰%Ú9:ZR?‰öç»þËŠ¡�ÎÖ½¨t,±¤Å$Ûæáså,zfÑb=6$.³VEcY¢]âV:”�}¼£á¶½×ðLíëJÇ+ZL²÷ÚåÅf0]»&ÃöÑ.�ŸDûýmÎ×4œÉ58]û¾Ò±Ä‚“ìíµ¾cä ‚S©È„$€¬:�ÎÑÑòR�Ò¡„ìí-Î÷´}Ì®~išÏ•Ž@i-&Ù[k}ÇÉF±þ–¬ãhT¶ŽV”ÅO¢ýÚfÇgõ3ŸØ;Eó­Ò±()h’]íTºü=ä EÏ—¢çhd–ŽV–ÇO¢ýÊFÇ7ô1ÏÀˆ6$² Iö¶ZßT9ƒ@Ñ3€æR  í?ã(Ñf#Úçô6�‰5Ú�¨‚&ÙrNg¬zŒd“.$ÚC3u´º"~m¶FÛÛÓd‘©}MéXä4ÉÞaó%glÍ —iähˆ�hÿG‰öÛœó½£ql¶î9¥c�S³$›í�íôÒå À*$زZ•%$Úƒ3t´¦2~íOw4<ë �ab'ÝJÇ —fIv‰Ó?HÎ0Š šlGÓµ´®Ê«t(![°«áqo€7NÉÕ? t,rh–d—:ä ë±BÖɬ¦€ð¸!Žío÷¸þÍF´�Ë×ߥt,Rk–d׺ùrÀ 9@èr…D›ç‰6VÇO¢ýc‘ëN6¢}rWÃ�JÇ ¥æI¶G¾$›­ÇÖ©1’ ®<Ë�D{SMü$Ú¿îsßàõ“iF�ažÒ±H¥Y’]'ãH6F±"—Ÿ¤&•*¾F´—”º/¯ñºÌîcš®t,R2]œG’ '؈6›OÅÐ6U{§=¹Æ¾úêÁ–áBè¥ãˆ¦Ã’l?Oz»7�%×ÉSôH²Ú‹CS«TôWmïµßáòï?ê‹n–ÔKË‘Céx¢å°$»ÎÈ•ëÄF� ûcDI–‰£áY:ú³<~m›'ÐùÞ•¶²›†&õ¶êTû”Ž K²í>[®³$¢‡-Ç•­£eñ“h{ü¼ùßÖï½´¿yrw«ú7¥ãh¯Ã“l//ÛTq’l€¨cK2ÇäèiY©[éPBÆó<÷Üzû¯Ó»¯›ØI÷„Òñ´ÇaIv½7 ãH6ÖcHÁªSÑøNzZRêa ¬Òá„lÁ®†Ç‹ìþ‘g÷4ž­t,‘:r$[¶$#Ù+Ê�Nrù}J‡q¢Ô뤅p3L&Òr¸© -KRë(McP: �ˆY«¢ �t´¸Ä#üÝŠŸDû¯ ÏY%ÿàk‡X ÁÐACÜ9b$I6$ž'W¯¤µ•åJ‡už\ŽxäOЊiituç¡J‡bu�Žê¬£ßK=äõÇO¢]æô÷»k¹­æ:!ÑNÓs;•Ž G>“oº8’léiÕ,ÑÖÓR!Ñvxãc&ãñó–‡þ¬ß1³ÐxÙ˜lÝóJÇ*EF²µœŠÔ˜½ ¶uîøN:ZUî¥J—_épÂòÉŽ†ç6TûN½¨¯éD¥c…"ÕÅujŒbÈmX––6U«¨È_K�·ÔxO¸{…­ú†¡Iý“´ª¥ãhÍI¶<ÓÅuj9ÎGꛦ!«^Eª¼J‡–ŸzÿJÛþö4�?¶[’úw¥ãø{$[¦Êâ ¦‹Ä–\‹šÒ œ¸Ÿ¶/_ÓÇ…xõÏ®³/þ «æ °LÐpÔ tL�¸š$Ù˜.�ÈŒšë´ÿ¬ðPµ+ t8aÛg÷»mY�󄮆ۧäêP:HLÊŒdcº8@LR —ê#²tTêðÓÚ8Ûæ«Ñ·{\ÿþ¥Ø}óƒ,c³ŒÜF¥ã�ÄÒ4ÉΔë¤zLˆi9f5eÕ´¼ÌCoü�j»ü¼õÑÕõò,š?.`ž¢ç¨^é˜ 1È>’­áT„�l€ØÇª��藍¢z?mª‰ÏQíb»oÄ�ËêlýÒ´ Îëcš)ü“|JÇ[Ó5Ù²$Ùň/ùIjÊ1q´¬ÌC ¾ø*ŠÖhcµwú-Kê¼ãrôÏÎ(0ÌS:è¸%Ù™F²uœgH\=S¬tTn6ä%7ééÿf÷ûhIMý\]Nž@|í‹ ÊѪU4±³žÊ�ú«Ò£t8[R꾜5G©È¾&ÛwEÎëqQUIU•î%—£å%%'OŒøþôYÄŸ�:ƒ‰Ò;u¡ôœ|ÒÍJ‡ ¹½ŽæôïI× íG©Âבú¶²„îݱž–×VF1:舲LMÍ7к*/•:ã÷F+ŽÆÚð,Ýgô0^„iä-b’íôñéžr¯;úPY�›ön]Kµû‰çãsZŽÜ<.'•ìÚ,6Æ`²P�Ác‘p@‡‘k1ÑÍÃЬ>dPGoOÌ2:‰­Ñ:{ýKHº?,ݵs@ÇÁ*�ÊÐROŸF,ŒæñÇïµêŸåžóXëjÕ,¹°¯išQ­ªQ:¦XVëá»üUá9kM¥÷Ÿûþ¡RœƒS©ü£³u/žZ`¸*o~ˆ‰µCÆÊâØ#;4Õ¥E´kãŸJ‡÷\N;­_ú¥åäS×>CˆãðñetN&]6°�Þ£+©U‘ݨvyI¼YkÔ…þù�–dzðx±1»]z|÷fz¥x'5øãîz$ÂöÕ>:WO5®­ªð’?ކöØ|ãî^n«N5p»/ìkž–mä6(S¬XYî½è«=®‡�Þ@ºç ð¼zi©û2Ö¦w3^?±³îq9Î-b’-ëÙ˜.Þ¦ík—Q]e©Òat(ì¦kYy”ßk�Òá´èØüNtÛÈ�46'_|Ê IDAT¼ûß•¶}²ØIŸ-uRymhÓ7UBÒ>¾ŸžÎ™l¦‘½ZŸjÞÍ`¦§ú SçóÒS{·ÒBâ]ë�ßµ™BbJÇäë©Ì÷ÖŽçY˜5®@·ÇVׯg_�ÎÖ½tj�ñ*�Š\JÇ%7§�Ïxe£óë"»o¤’q,ØÝðXYƒ¿ßé…Æ9JÆù“lLo‘×㦠Ë’+’)/ÞI©Y¹dI‘å&@«8!ɽ o!ÍÔ‡ú¥%‡õÙmû|4ÿ;ýø—‹�È.fÙEðï\bk”—¡¡óŽ1ÓôÑ&Ò¶²�,Y£¥; ú‹�qózcß.zLHº·:lÅñ/›­×6éio½Ÿ6Çé–_M-/óÌeÍ VÙNïaœ;(]û�Ò1IÍǓᥠŽvÙ|”Ž¥ÑŠ2ÏEV·ÿ¸|ý]JÇŠƒI¶<Ûw1˜.Þ²ík–"Á–Á–U‹¨[ßab�49%ëut¾�Tß0´?eõ!Ž }¿ÊE¯/´ÓÖbi/Z‹+}ôÀûubcRÌ�y´™Î<ÊLCË7Êõ*ŽææŠ� íëŠýôÀÎ ´ ÅÔN—$µØJ~Z_ícÓ•©]\~ÞúÖçû—ïç˜Ôëÿ¯À8¯»Uý›ÒqEÛN›ÿ¨78²éÚJÇr¤‹\w¦ê¹Ý#³´¯*K[0’#ªJö’³¾Vé0FÉž­H²@r�Í&º~X?šÝ·5¡_¯x|DŸ.qÒ›BR]Z£låÞZG€žÿª^lŒA§¢ÿg¢YS,”•Òò¾œì•i™�ÅÖhU} ýkÇú¬¬Hê° Fä˜Õb«óhu…7® ¤5*uú<·Þþ+ûÚ¨QÕ×Åp׸Ý3ª÷ãÖ¦ßôù›_(Gk>ßÕðÔÐLí;±>}k²cDMù>¥CH(n§�êªÊ(9=[éP ’™FW êCgõê&N•ÍÉÓ{¿:ÄfsÆö5šËÃÓ»¿8ÄÆpœŠŽb ÙS-Ô3·õ�J†%¥Ò'Cþž}¸Á^GÏm£ùÅ;É�ýº:´d'Hs I6K¶mžØþ[ªŸòùΆ§XS©T�YÚ׎Ï7ÜeÕ©âîâþí­Îw”Ž¡-?oþb—뉙†Ë”Ž¥5boXï äÈq2vÁ¡mù¦w øýTW]®t ÇãjP:ˆs;gÓ=£Ó¸Ná)c£Óoüè Ï—9Éí�ïQ¶üûU bk4¬‡žfg¡±}Z/¦Öß’LÏö!6†ScÌÿ»g Ù|ñ¿–šÓ«U4&çÀßV$mCµ—|Ö•ˆ5<Ïs+Ë<²Æ¾Ws*ϰLí[;éÿ›câÖ*_kŠíþ‘BkQ:ŽP,+u_:©³î‰ ·UéXZ"&ÙÕ®@w9N¦C‚T}MÅ�w³X%î³{u§k‡ö¥þi)a}vs±�^ûÁN?­‰¼HYí9V-.ñ\yjwÕJÇÑ’I¶[¦$SÅ N˜µšÝ¯]3¤/åšMa}véfÍÿÞ~X¢™Èö”ûèÞ·kÅÆ°bjÿ˜d¦e¦dSË×fµš.Éë!6†M.ý´¬ˆ’î?êªädÀR„¾i±ù¬ø–�öÔûãz°–Ô{9KJÜóXkú<›jžkæV÷MÕ~Éð<‹úáéŽ÷ JXÅ÷iÝ 7?;1ÙÑjü|ªËLJ·oH„Pô bU–É $Ôýè’½ÈF‘260ýí 4ÿí*ÅçP°bj/~S/6F+\%±Qn¶uX·ì–×u³AðÓ²óÅÖhE]5Ý¿c=}UwË 6Û¥WŠFlL©Ó/Žr»:@Á´Ö°©æÅvÿpÖ~(¢»›¾¦áT®B«æ×¾išýÒ´ Rtª½JÅ+|^ÿG¹ç‚ÑÙº”Ž%Mµ‹—e›1h�d@l蟞B× Iõ?{vc0!Î%äÑŸ,vЛ TQ‡b]Ñà.ž¿Xæ[£±}õb1µa=Z_×=*9� ›tèûÍ=µw+Š©t9&µØ–g³-ÁöØýdï …ÓB!$”†-µÞãYûlgÃÓM_3k¹Š^)šºYÕ¿X5¿e¹ JÅ)· Õ¾Sc7É–iª8cD’ ™�Aw�LÇä…Wë³Æ w~vЇ¿;ÉÞ�8uJ[ºÉ-¶F½ó´táq:fˆ¡ÕÏõ1[+¦VåõУ»7ѳ{·Q=Š©Ä56­<×¢[#»‡§"!é®pùÉåëØ£ÝÁ8¼�ÌÕž³WWÐÙJÇ"·­µ¾ãü¼XK/榌kä*zÆ[ßÙ jNïÑUœþ=<+-¬ÏUøéµíôõŠq„bÖb/ÝüjÍ¡ï;¥iÄéå§Ž5‘®•ë‹t­Žì9Xl «`þnÉzp×F*jpH6HÌ¢SXÏM‡ÿ!`ûqW¹Bò ª†y èd¢ ð¼ZH´§öMÕ|©t,GÒ?pf¹N†‘l�‚A£¦óûÒUCúR�5¼H6ìñÒ«ßÛé·õîYd§£*©öÑÃÖ‰�±š8úç$3�u´Yøºåë VÁüÒübcüÄ‹I÷»·Ðj[µ,±€ôXÁåNfµØŽÔàã©RH¾+…ä»ZxôãoÜÚçð�É$[ΓQ]¢ Õ §+õ¡yƒz“U§ 볋„dš%Õëv{$Š”`sè¥oëÅÆt*ú¿q&š5ÅBY)-ï¦&�Û©›Ø-®­¤{¶¯£…U¥R‡ `ùµØŽÄ¦Ÿ³ð·Ð<ÌhŠqEvÿ¥cF¶$[­Ra /ˆHarÝ0¬?�Ý»;é¸V6Z>‚?@ôõÊq�j¶�$—p¡üî/±1jNEÇ 3ˆûuvjýòg|Jý0bò¡ï79lâ^ÝoíßM~ëò:26ýÜ¢SSW ¾Ë›uÎ*�;¼¼øÈú6Ξolì{“ï_÷óÍßËþ¢`Uää\úùF²‘_@ˆg¦Ñ]#ÑIÝrÃúœÓÍÓG¿;éíŸTeKìÊÒZ�Š®:ÕJgN2‘ªI¼¯ÊO7¼\CÛö%V0¿p5ûÍ bk4´PGçk¡ ýõ­~¶¯ÙJóŒSêqÑ£BÒý\Ñvjðãæ @"a›Q˜„¿¯¦XkZõ*,½Wé0”Ö¿ô}åö×dlM:áÎ[ôýOüô°ç•  Ñ´îytýÐþ4&'#¬Ï•ÖøéÍŸôùR§8r ôÌÕÒÛ7eP°�ÉrÓÕôîÍ´ð/×a…ÄÑê¡ý½;?S#V0?i¤‘Ô­L˜ÈÑèÑÞCÅÆ°bj¯ïß%&ÞÅ.gË€ÅW¹³WÍ[³?a_ú�øYʬù3…/y$Ù +­�½ü£G7ºuÄqx86yéÕïìôË:)kÍÍg$M°›b[aõ뢣�{±6½QQ…�î}»VlLNªšÎ™b×vZYúÏŠ©]Õ¥—ØVLmþ¾�ô¿=[i]}­¡€Â\¿™QvGž;ãš_"ÉÉÍÔ‡n’ê CëÓr�ô«�L³í´ÖíB"‡+´uí�ÖÂ�™�}\'6Ƥç茉&:wŠ™R-­S›“[(¶FßW•Ò›þ íŽzÉãeð~Ÿ¶ò©cW!ÉILèœEï�0‰ÒCL¬}~¢Ë�ôú�*®Ä:×öX¶ÙMãûµýß}ûþÄZ—Ý^Nw@øù´‹�ѪUtâH#�w¬…ºe/’Ôè¸ôÚ:ašøõ»¥{èüuËÈ@5€Ž†÷6˜�d@T±¢e gL%³¶õ.¦ÁÃÓ‡‹œâšêšúÄ.RmK7¹Û|Ïò-ñÿˆÛÚç‹eN±1§¢†éÒ“-Ô9­å¤û¬œ®bcÉö9k–È.$¨JŸ™~¶÷¢]žôf¯iU~j,¦ñæ�â×H² j›8‚.Ø»Õ÷ÌÿÞNÏ~eÇšj í.ó‘½�'‹±å…Ù¬ðDW ÀÓ×+�bcºdiè‘‹R©G [†±DûäÌ\²øÚÝ`—3TH¥^+½S;œ||Ë7ý¼Âk+œ]Å–¥©§sSW’F…Y6í…$¢âÙÉchvß–_ëW¿ÃzT¹°D{@·–«uí*Ô|©í-÷Ñ™VPºU-V{ϰ6_ÇmUkhóÄ“©×¢/ioƒC�( #*ö¦Ð;5#ÂúL¹/‰^¨š@—gü–»/;:ÚîΤJŸ…ìÂ×:•Ÿ’Ô.ꮫ¢\m]»Ž�$Ú팞ÝZL°]^¢¿r«‡þÚ‰ý­åfÔsôÚuéTØB±­F îÉ¢ûß­£Ï—:eŠ ½ðu==}yZ³ç‡&¥Ò¨”tZQ[¥@TÐÑÌJ[A;Ü´À6°Í3Cc§3RVS×öîmÙ)œó3Û òñÍëP4ò )+›ºÍ“¢vÒ9©�™‹þu›:ßž»+‡$$72;ƒ¦äå}í¥oQ-Y ºjÛL°�4Òˆ$[lóÍÅ>ê“×üÿ§» Ò´?‘?(è�Ø(ñ5™?‹_ÛüÚëM¥záQ­ Pš�ØvÕUGuë®j‡JœÃQë7Ñ3•“hŠekȉl¨ø(•q g^’lˆØ]£}~õ­ÚÞþ»áp@f²šFôÔѤêÛEK¹éjREášaxýñT§ ¯ù„k®ÍÅ^Z»Ë#4/­Ù顊:L/�–×°Óƒ³›/³8)£�HN§?ê0š ÑeU»h€ºD²ãÿlïQ‚ÝÔOö^âVb]t5QŠŠh°±˜~³Š£çí1Üúr$Ù‘ü$3›ÚH]üíHÊ «�;Å,¶F ž¾ZÑ@ïýê÷é†Ö½ý³�®ŸÙ¼(ÑÅB’ýŸŸÖQ±]ú}³ر�~ íQ;ÞCަé™Q;Ä+秤·û8êèW7gǼ6ógZçêLßÛú„<ªÍ¦Óϰ®%=^Ÿ†$–ªÕÑy�»}íÓ¥‘o 3Ç›èò““(ÅòwZQ ‡>¨£_×)·- ›ò}ù´$:y”‘¸øË©CbÔ©èô &±1ÀŽò"rTSJ—Þ¤OJS:ˆ¶o0ß Bymlhb£¯z®Züš%d³Ž±Ð…SÍmn—Õ¯‹–¾¸ûð-ˆì.^L̆êèÿÆE·K&Ÿ^POÛ÷·¿ÿȉ$ÉŽà3 Qò3›Ø˜t«Zœ®Ïª»G£z:»é±ø±Ú\ì£gØèºÿ³R÷œÈ.[¾_å¢Ç>±Q•-¶~F›zá›ú Iv®Ù$îGÿcQ‰Q·Ó“N_Ö Ø– 1ÓqI›£vί…äº1Qn�JŸ…^¨š &Û禮lWñ– ÉŽ�½ŽjvoP: €ØÄóT»g3™3rÉ’ÓUéh ¦gåÒ¨äà7KXÁ³XÆÖ[¿ú]½Ø˜ã†é†Ó¬”–Úüb‹AE÷ÍJŽZ<ïÿ椧¿°‰ûJGSNjøk©³SØN* Ú K`Ù6i¬±âˆl„ùêVñ¿]{ôÉÓÐÿ. ÿ&Ý×+è?Û¨Þ3Ëö–ûÄY Gl>óâžÑC�d@Ìø´nmsgµù¾¿òh£+‡æ¤/% ù졯¢—«Ç‰ÅÔ¢‰%ÛOUM ñE{ôIv;5T—’mÿN¥ÃˆyŽÊ}äó4PJ—à[?Aìk©¢8ÛkxÛ¾øšÅóýª±±äòªS’èÜ)fÉϹr›GÜ:¬¦^ºÑÔì”ÈF¥Y¢]R½¸XqÄO—8ÅÆn¶EÕ%'†¾N>RÛöùÄ"v%ÕÊíÉÝüæšdÏJ£)y�è§b$Ú ¬½žÔ�ìF^C¿Ù é$ëÆˆÏù™mPÔìFRÑ[Õ#éÊÌßÄuãÑ‚$»ü^7ÙJv)@ÜpÛª©¡ºŒŒi¡¯£�Ø0<9�Ƨßjð�Ån ½eÓ�Ÿÿºž¾½?;äÊä¡òˆîy«–¾ý#úÛTÉšl†M�f’ÝK¸Y!3ÖrÓ5ô̼4Êˈþ.w¿U'ÛþÛRY±ÅM{ÊýÔ5«ùŸËõB’ Šc•ÁåøL£j¿‰¶»3Û~c;°)ïk:Ó㾨Iv;°)°b•™­d'é­iÄiäßê"wGAðŠâ›‹¼´bkì�Š+îuñÿªhþµaoÿÔ’›^­¥Ÿþ’'¹néúêH?®}U>šq_9¥˜9zë¦Ìˆ¦·³h½[¶Rcï<«ùÒ„iÝòh`F*­«¬Q *€Xuî3RVÓGµCÄm¹ÚÒÏPJGY¶G|¾*Ÿô3͘ê(ŸIv„|.§Ð”Û nÜc[|Å�“…NÍÊ úÚ ;ÎßÁ­Å^qDûêSÃÛ«%�\˜"üo }¸È)Ž–·T%;š"�..W’=¨»Žþu~ un£¢y8Xµðë_®i÷šòXñùR'Í›–´^ÀUƒûÐÜ…Kˆ àoÝuUtcÖBZÓ�K?Û{ŠSÂ�ÔÏPBÇZ¶��kßò�lMx[:F*KÝó ÉŽ�ßÓ1î˜(ÁçÆïO<¹±{ß Ï—ÖøÅuÍÅæ¤ÑäA¡m÷Ž3&šÄæö=ñ©�>ú]š©IjÒFØ«gI˜dçehè_ç¥Ð€nÒÌ^éÑIC?=˜M3ÿUAÕ®w—Ó«ßÛÅÂ|G:§wݲxU¹âöÄ¿ÁÆ}b“’Uí«”³"jRIS;h€!ºËq�dGH®}°ÂyöìÙKÕÕÕ²œ/^è´ZêÖ½%%EgÄ äÅöÒ†ø�ªÕÑܼA_{ýÇŽ3Šýæ�Ô7_Ú% lú-ÿ°Š­¼6@w¼QÕ½šsR"ŸzÍö¼Ž¦$G·þ#™ŽÖ|K*)°µôßþ+‹Î~¸2*[¡)íƒENºôä¤f•ÙÙw·�D×-Z©L`—ضW‹ì…Thùorç§u³éݱ†mfóh§'xm˜ö`ëÅÏO[õã"ÉŽaþ¹ŠV,�þÿéÅï¿/&ƒÁ@³Î›E�:çáJòúyJ·ªé¿—¦QŸ¼èt§lzuãë7:èÙ¯êÉë ífFaNä1d&sd5qd 1¹ŸÐß@wŸ“QÜš:'O×¼PMëv¸Ðº^HÞÏ::üН¯\›Ngü»‚ö”Çç~ÙŒÇËÓ+ßÛéò“-Í^»aXzâ¯MâöhGú¥¾g»÷•®ñ›èW{O:Ú²-*1±­¸^«Ý,1ÞçM¡�Ô‰~²÷¿?5y-õÖ·~mÏòÆií¥^+mtçˆÛ|û7T^*ÔW Ç,££\�dǨôôt¥Cˆøo �+ºö úü«\Tç¦XâvÚxSØŸ+®ôÓYU’ÿà(~•ÍOç>R!N•¾MHÚOÓ¾‹š¦fcÛ^ì¡môåò–olœ4ÒD3#ø÷4õÄ%i4÷¿U-ÎPèÑYK\�BíHæ[²£ÄGW>WM嵇ÿ\=ö‰�*mºò”ðêo°©ã/\•N'ÞY׉èû¿:貓šO¿OÕëhVŸzcÓe€˜ÆF‰£¡Ì�ÚG,~£fTHïý¼nMMÚLC�Å!½?GkÛËÖö„uH²cTffõП6¬ß t(1�ã8štÔD¥ÃèpfuîNÝ ÁGßû-¾ ž�é£GHÃŦ‡ŸùPÅ¡»)ŸŸ§ûÞ©ÛŒ±&ºíÌd1Ñ‹ƒNE÷œ“,6��è»?Ä5Ç./ÑÄþz:~¸‘tQèÍw×ÒŠ's¨¤ÚOK7¹iäQ~o IDATo…Ÿ ;ih\?=¥ÙN*~^ã Àµ¶½Ùë?ÚI-œþòiá]ìeX9ºoV2Ý)?^9\úby�äæÍ�Ãú#É€ òu5TìMiÿq´5Qˆ†h›;3Ì÷g…œdÇ*$Ù1lÒ¤‰4tèZ/$ÚÕU¨.Þ”V«¥‚ÂêÑ£PéP:¤k»õ úü—+hÍÎø^ëzÇY‘]x\ød•8ªÜ–Ï–:ÅÖ¿«Žþ{I*¥DqJ5K¦§�6ŠM*�ÒÔío˳_ÙéÕïBß“”mi•aUÓ?&…׉#Œô•ð3»lsüB{áëú Iv�ä$šÞ=Ÿì*R *ˆeÍ;h�'�ö{“#>Fž¶–Æ™wE%žAÆý´ÌÙ�øWA’x[09 ÉŽql‹ª±cÇ($�)é94$)x"úöOñ=Š}ÁT 夆ŸôÞõfí, ok¨ {•‰QÒš¡á$·Ý–\Vý‘Âér7ÖCûzœ‰ çqì—Õ ’ZÔIö‡µÔóí@›?÷¸胿öÚÙÙ}Fçp’ͪ’û)%¤µ£ ›§Ú¼WKšQ�æù#2‰„FU-GãöyΚKo&‘«Ò•…kîQ•kºISãýÕ$S<÷¥I¶‡Ó¥{W¥=wJOï4@¡�,\†ä’¬#š¬íÒ÷»ÅßJ£@„ãó°ïƛ܉mõÊ©in�P§l–œ³ Þ‡.:þ>ÈFG¿ß�JË„SÅ"εcEå GÉiäç v%ø¹Å8#2Dæô}=›½Å–0 j‘õ È JehúáS”fïÏàÍÌ"­ÑÂmiONuÖ+õ&ëf}Ûd§39VÏ"¢#QóŽî ÚĨ¤·>ª#tö@’íá *ÄM‡œ±µÙ11¢ø›ðH} ·yýFkf4‰wä/SD�ãIvbŠë“E™TBå +¸©ËoUósÙðç[SœJ°3é ê³øí˜Mj'ÛyW/¡¤³þ«Lú†�þ=­£]§Ó]^<.1ÕLIi–,#º/(µ&Ù. …w_ÿ›J}›’â…oprëk«{Ùâ´äÄyaðA¬kÄc½…’¬Ùq²õ”miF÷hôU ©D4k×�d{¸*U«PšVK'Oœ:�%“Ë©eËäï¯:Q\¸…+l·DZ·=•çhÜÙêÝ&³ó å‘Ó«åÕT¯œŠªSæj ¸=Þ{ÝŸ+<–›ŠÞí^Õ8�`ÛR¾�‚Ûú5}~Z7ûþyüŠžKÀÿ9™Nw97òš”f¶&Ù<±1[ClØ–hwnèŸå¶ñ5*"Ép!ö~õ(ÝlÝL” ³Pª ´�äRÍ_þ’l ›þàŸo¼«[··¸Ã‡Kؼž­ÿLâaê/ØÔïbyûÈ‹Í9�+%§ÚeÕ\QµjÅ•‚VÖHè�êjúý�óùßoèØggY¿$q£Þl{q-¸Þšo¹¬§ýçt´ï¼Ž®ÞË~x�‰%Õuʨ¸Í )f^вñeãÎT›IvÉ� j]¼mº|C€¨„ÇrçDk2}ßú÷§5qÅ|•D"1ÇÈXó¯m¡*é�•ä¦J*I1Ys@“™”&‹Eiý}É­¿"ù­©Ô–é3…Ž9'!*éM¡c°¯/›~‘Ûö$àµB"¨¬�ÍÛÖnóžQl&1…¿JáB+”GF;sÃ’K6½˜�þvlàÏ­÷E�Ó,”?\îôpOs슞Ž^ÖSÕâYë)t-] I6ø„$½…¸�<_N¦¥‰±H�lW¹0ÅOåÃ?Z“i‡ßÒMòOO²ÃÔÒ«BÇ`/¹F.yÄç¦Ì¬B– ´i%*Ú¼ž}y?u�ßÑîP¦ ‚– §µo �Rÿæ¹ëƒí ç‘ÑO“"¹ó;Oéè£/¸"bbÆÚyU-–åúÆ1yéÕ|Q´ën¬Q¸«ë” 3ÓkB›f&s.Š<ŠY¸Zv…�J— ‘ÿaݶʥä²jÛj%²$6>Ý\ÔU�éjyü¤„ŽÁ^ò:ÑÊ%ûîë?ŒM3•ãã S¬hÁ¾yÀcT £7¢lÞöÕ6Ï®(.•J(ÈOBÁ2®ø[K\0RNec\bíïãI5ŸXå]­ÎâTõv!Õ¯ ¢½ŸD?½ÌúÁ_¾k  · tç¡õK|¢‰î'˜(ÎzÊZ¹iõžù…~ï9�5n#Ï—ubâðªe‘dƒh±™¯l„úz²Ñ§ ‘iäÒøbÁ²Å‚å;ŠË·[“Ês|>ã‚ê�¿¾”¶–Ïçt„õ÷²]èìŽ+WŠP|ûçMÓd>žPëÃS9QÐú_nK¡i]B²\ÿVL>Š ô§›Éž}Ð ¡¾�h t/NªeR‰>&@vК@ÿ]± ߬ ïµûîxak¤/Ý1pÛ‹šÔð£)�³ŽØ:*)ͽÎ\9Ž@„ŒšÕò£Í{Ó\ö˜ŽX¿=…F´ÉZİsé¢4jÏJÔ‰¿ÆxÖ�úÔ#½ '`Õ»Ùôî:Ѫ¥åÂä?YßUD?œhýL£«–\t2åð½T“íâ-Zúó¨ÖéÊпH£*Å”Ôâ?‡î*£u#"¨Ó܇ÜTnw‹ –Ѽž¡nG±àe©û‚‡¼<_±¼ Z72©ûŽü<Ñî}�^ÖqÛŒo?½Žý´¨­¡ºeU\a½§¬§¦[èó­)´öoa[Þ±iêßü“J]ùg¹mP¥24åàIë÷/ŒrÿX[­£ ”¤ïëO-“$½£þ¸^^åb6Ê+t<|z'F5öͪ)«Î¦þy-ÉXOˆ^‰V--Ÿò!ž;7ž&Ùré>^7®:ðm2™è›‹èâi�ðu¬Kl]¡ƒ‰&lOgبŸÐÎÝ2Pë©î˜º!‘ GÉ©RÇ ]•* §¯ÇDP‡ÙÝ:¢-“J¸‘óÜNuÿëh:M±þ¬ÏVÇ®_QMÓº†Úõ´[‹<º]0ÍþîñËwÎ…ù´q´s öô¯Ó9;ׂg‡-XýG2·yºìf¨dRêpù �»t™—8¾ßú }ÏË3ñ«X™òT¿i+*XÔöL xžÎš\Ž3PªAœÉ5±nT@5õÍ‚ª�…ŽEh¬MXßòþ¯ZÿI•¿ÝHŸ³çž~ Åbá¥JFÍ(åêÖEÕ}ùx.W{šd«å÷~R>ñ²jª/½?K®WZ“ëSH®\©P¤œ.ÝÕl¬\é½èmšÉUºvD±¼rúszµ�gW…mg,íÆ�œ;‹µ¤b+X ªí<™Nõ†ß£÷ÐÐVÎ÷Ïn÷ª†Îß6ÐOûܳ¹ae?šÓݹ5Ø+~Ol}´PXÁ8pŸ+çNsóê[Íé�íŽÈ3±¯ùlZø­ðm�¦–^û ´Ëh�ô¤Ð±x™„ôïVaK¸�?4tØ}O7È3¡Ë†)~éPRó¾JJž„3Ï$Ùdÿœª\Èí­/>™Jw®_uM0>F«Ë~Jx›z®šµ¯`}Y¥lgí m›E}>�§#—\;Í~\û`ª^BéôýãÍÔfZÜK{;ÿߎºûÈHss1%}B‡`nM<ë/íJÃ[Q‡úY§>ÛcÍŸ)´J#Ï®$£·ªe_VG›.l[>o³kë/$W*éõwZŠG¹‘l¢ âôïv×àCNœ=Oÿ·égz¿õ»6ogU·§ši×ißù2š,ôîÇqôùЇ×h3oTVÓÞùy©÷âGtúºók€_+¯¦A-œŸ¾½ç¬Ž/�wø~'®ê©õ´ôÝG‘Nõ¢Ö¨$\Åñ÷f>püÎÏÚ*ˆÞoàÜè53óÛ$úa·°òù&µ&Ø_çZˆÙ¢7hÜìù’ͰÑl…Õ\j¼öý¹i£"ðË¿Ú@f“™:·kióö½CiËátš°Ö·ì÷Xð�kƒô�� Í/ÃúG9,œ®Þ7R÷�(EëØ¨.[O;¿·óÓ¶¿Û•–«"d¬õkËõãÄ<ä¯vüó™­SŸÙ-”Æ®qü5æ…³éáÎb³ãØïüT.pˆ;(“Ók&95•:|8„ÒÒ0û\�½¾¯'�\‰4ë\JÓ®|˜|“б€wû/É–ó—d›œü{¬Óè:sô ݹ~ŵø˜•뿦]Ó’™“H©È:zûNu5½Y%/õ]òˆŽ]ñ�äeÉÏItð‚Ž–ô sª²wÑh9íœE§¯hàòxJN{y²­QIiíç*h3‹N¦µÛrßB*!ÅL�ÇÅÒãóPt¨ãCÚoVQÓÕ{�v¯‡n\Õ�¦w qjùX&VŸUz·ç÷ì-ÔJ6s ‚JæÏ¾ÐÙöÝûhÒÜEƒÉl6ÓwÖdûÜñî ÀÍYº’Voø–VÎ�FQ‘YGT‹ç•Ó®¹QôÙ¯ÉôÅŸ¾‘ÔX,úðÓGÖ$[ŵÓrf­2S0RFß�‹äÎ/ù%™¾Ú–Ê=v&VÙ»H´sÙf¯Åñtì²k+›3,¾ÎsÒÂ>aT¯œÊáûÒ+”KÔcŸé»î§”ÐÄ÷C¸Ñîܺo¢÷ç<¤$½Ž –ÑúQžCA¸¥kÖÓ×?þÊcT¾‡%×݆�£ ç—vˆÕ½T�z$¾ÊáåÛ»”Ò´:ð=¢š.þ,©TJïõôô2›Fw÷åµ òƦÒÿkçöå™týâ¹Ü bñ ‰Ô¶çzóõº4aèn„õEýšrÕ¯;Ï{H·ˆoª 3_b£Ú÷¨û[�Ô¯i@®k@ó@ncÓ²?^ÿ˜ªWRý Ž'±l2Øÿf< ëÙŒŽ»Ê�ñ4±c½ûŠŸC÷cÓìÙtæ–Sâ¬÷ÕpÍÔŽŠg¡·þ¸ý?sÏ�O6®}µª“ý¿ÁÅ«×hàG“)Më;Å ]¥æë�ÈÏ?ç¿k�õö*u^#¥*÷ˆÄˆ<ò@Oñ.èÀ·neüß-*ÿEè8À7 8]ܵÊU­ÉmŽú`ÈXZ2y4=Œ½çò˜Äæ¯öÐß»öÑ‚)ã¨j…rYnð“Ðæ ‘´ó”ŽF®NxnTÖ›}±5™Û¦u ¥·sèGl�Ð)-úй‘0��¸äõÁc~ªùNÙ�H�’ÍÔíMÇŠÁE…Hißüh—ÅñéÏl€oÌ¢ÈT¹¨’– 'y6ƒ×¬MÛ ñSèÄ 8C¡TR“÷º†GÓ3¦‡‹­5W˜ZzuXåÀJJ)ùÖ›xAZxyÚRކ~DóÇ !³I|-\�-Ç<~*•(Z˜–ÍžB*eÖuÉlöТh¾*�þ9å;#hã¿J  k%4®}0µ¬íØon%¦˜©åÔW.Ï­¥¿$Q|²)WÀ�ÁŽß,ø1™6ìð­ïÉ*EFßëœÖÄÿõïšòɧm£õeôñz×t‹N hHËì{¥'$>¦žÃ?¢¸‡�xŒÊ;å‹),tël¼�n‹¬÷µ\*Ñ ¬P+¯FzBèX˜§I¶„Ȭ�J´³Åí‡æ=±§^Ù*5¨H©rtí É–Rj*QÖþ-.fôпßð¨hªÕ 1Øñ§Ð¡x¤�{Ðë­:ÒÌq#©n�ªYngU¤7ŽŽ Cõ4pY<=m}�›±©ä«þHæ6¹LBÝp›»n1IÖZhá�IôÓ>ßL¬3Õ-«Î±žÑh¢Á¦ÒɳçyŒÊ7°¢gÑù„Ãcˆ±=—¿BúpXå€ � É}¡c°%ËH6OêÉU ·jOÇöþCz�oµ°K$ÇL›CòEÓʹÓ)0 kåé%•´A4M\—H¿ò½µµ ;ÀÀ¦’ï:�ÎM¢ãWôÔs‘o¯'öWKé«ááÜÔüìlÞò'Í_þ�Qù=ûÏ•ÇFn“bÁò}Êù7:€œ¼0’ÍO’­÷ÐéâŒL.§·Út¤_6¬:�vûî}jò~ú }êÑ¡�Í}¦t¡̓¨Ó܇\…j_T±hÖê쾪LŒ’K2SEØs×^V(�6ëlH%ógŸlç “Ñ|ëïcØÊxw†ë1¤R‰õß?”ê–Ue»Ï�£'hÔÔÙ\zp¿Wß~—¤2ß-’ÀZäí¾§ÅwñL�Jéý‘U˨e”(t,ödM¶œ,Z‚këuöØ!¡CñxòFStžH²XÿǦ�Æ>x(tHÏ‘Z¾â…c(4$„Ò´Zºz㥦ùvÑ%w9xìÕoÕ‘&�L ëÕÎr;+¶fX¸5É6PïÅ�¬ ¦x¾è9ªB%}1$œlbjÀgñ´ÿ|Î5@®Ý7pÛ·»²ÿˆð“rk|£BdÖónJ65õg›ZB~*)IŸ‰ƒ�&'¦²ÍÂ�D³ó“L\0½Á¹“O§s³bP8U+n{šükåU´zHõ\èÝŸ�ªøq•óc0©ÏÈñ\?zà‡& �ê5n&`gz† IDATt‚ÑZßo÷ÜWñÒ¡Š-ÝËh|{êˆR–êâ|<)ûãNÑ[(@éÙÓá4k�$;o5x�Æég³�c2›iæâeôÇöyŽÌ95«T¤á}{Rþè¨,·±ÖE«7|K›~CR±Ù¯µx»Q¶·?xO}GO ûqÞýe_“æ.¢åk7Òò9S),$8Ëí +hßühšùmý°›—�^ýï5Õ6(Ç}&®{üÒÛ^lüôu=�vÉ£å^ŸÅ�è»�"©H´íQíÊE´mFµ™þ€§ŠàÈ»‚ý¥´vDDŽ=Ó¿þñWZºf=�QÓ¦{ßl¿·x»Tƒ…öÞ×sKÄâ�Bê± ò«f €3ÉfëÍÖ$Û³§ëDæÍOåªÖ¤3G ŠGÚ§;µiúVŽû°©¢ã‡ô§ÊåÊÒ¬O—ó™ãXR½né'¤T(²Ý'(0€†Y桽»Ñ‡£&Й —xŒœµhÚªV±|ŽûD†‡Ñw«–P‡¾C¸YàZ÷bã¨E×>Ô¦ÙÛ4¤×6÷û¿ êóNW-.Q\x²3«{(5Ê¡ï1óã>-ý~È»gS°e[¦F‘"›Ùã!R.Ñîói<½ì=· ¢Î ³VÛÏtç^,õ1Ž’RRxŒ ˜juëS±Ò9&x«$=ë�-®¿±Î¥üÛU—/tÎd$›ylýƒÏZÇóÔoÖIö3ü5/M°ŸÕìÍ´hÕ—ÜzMO4qøÀìg±£ßƒzvå¦÷�gË•ç¥ v&öïÚ°nmZûÝf7Gå»~øõúõ¯í4ò8ªX¦T–ÛÃ¥ôû”<ôË-Mþ?ñ.¹Ë&§�c"(@�óHÙÍ&š¶Q¼?§½ØôÁ+âé³þÙ¯IgƒŠ+…ÑOûµ4uƒx'¥ *èó!¤Êáã„­»ÞwøAÁSlšx³ŽÝ„C‰:3ŒO ©DbX1 f~éQ¡cÈ�ç’l�BÊۜɇZÓ‹Oï‘"£óQ¹jµèÌ‘B‡âÊ•*éð}*•+Mû�wC4¹çè´1¦‡r¥J8´±"…Ü dÒéôÔÌ$ª\¾,-œ:Þfa´æµü¨I ?ê»D|#›¯WPÓ'½BíÚ×WŠ~1/èhíß©Ôå�ìGw™¯øqk¸[O{`}ŸÏtV¹LBŸö ã Óeçð‰Ó4lÒtQMÓõ6¾:MüQº™ŽÄ‰'ÁVÉ$É£ª– THî  @n=—åZ_Ô±|=qºÉÂM_ òðuÙLý¦­�d?š}—ì(äž{0eö’´fá®ì˰uæs–®ä!*È-O~Íùºã§Ïr…ÑÆ ü�š6ªŸåv™4cdóüm#W+]ïù‰I¥¢J»쯶¥rÅÅ|É⟒¨~E5ÅDæ¼D¬@„Œ>NÝæ‹£FB“šÒ9k½�LÚt}8r<]½y‹Ç¨àE¬-«/N�K3Óñ‡âI°CÕÒ묂¸\Bž9õÀAÏ'ÙJ ¯‹ã´&k’íù_†1ší½®\¿I¯µlOõëÔ¢�=ºPTdD–}Xq¬Å«¿¢{ö !€wbµV®ÿšVÍ›Ny"³Ü^º€œvÏ‹¦ù›“iÃÏ^¿Ú©a€]û±ŠêŸþœäæh<ÓˆÕ ôíØ¬ï¯/bñbòÈíî-.„Ð@­AÑ¡Ygcdú|ãw\ÿx7M¼ÃB‡Á»{©&:õÈ tv+$ßÓ¯¼=¡ãp¥F²¥¼�d3´f*žýA`�Ò£Ù^mçÞÜü‰OH¤6=úS˷ߤá}{ØÜgX«@êñVu™û�î<òÌÄëçýiÔ bö}�™ÛMÔçÓGžNcÖ$zÜÚÖ]§Ó©ñ¸8šÙ-$Koèød3}¼>‘öž×sw`¿ƒƒïÓ€æ�Ô©¡?·4 SŠÖ½ÛqÒ3gŠ–‰QrSÙ³›|Çz^úxÞb�;øã«2ì辕`_ylä6±hX@=ãíÕ8¡ãp—,Çd È�‹77ã+€D%ÙQy©|õWèôa¬ÍB™’ÅipÏ®T¾ôóÎoÞ¾K³—® gÎ;ýØÑy"hH¯nT§FµçŠ ™L&Úºs-]³ž'%;ýøŒJ¥¤Ý»pmÍž-Ì¥7hëŽ]ܺo{[�ùk4ôê+Õ©võªT­B9 ÊqÿøÄÇtøÄ)úwßAÚ{è(÷œB’[þjËQÝšÕ¨f•J”'<ÜfRŰ/®l]üÅ+×èàñ“´çàŠ} ŽÂHà¸ó—®Ðí:Óà^PÛfoÛÜgAïPºg¢®Ÿ<¤-*þƒ{¼ûІ&vÌ~M[Rr õ6–îÇ=à1*x™Þc¦ø\‚}1ÑHדē`7)ì7º~>å¡ãp§l’loIöc�¸Žü6hÚI6Ï^«]“>1(Û~Ö1òÑÒ™“¹$¸óÀÜ:OG¬þd7zf‹L&£&oÔç¶ã§ÏÑ€�>v4|NÇÖïR¿Þ·yû¹š7nÈm›~ßJó—‘e©TJíš¿C=:¶#�ŸŸÃÏL�_¯Çm™X¢:gé*:pÔýíÕü5~Ôõ½6ÜÏàhåo6*Á c±­^­ê4¬Owîz–|ÿ¼õoúìËÿ£Ô´4w„ Z´êKZ³ñ{úbá,› å‘ÑÎÙQôùÖZö[î€<+"HFëGEXO³Xf}ßÙ°ù£{t0’òô­–ŒçŒt+Y< v›b~ÖŠR®:wËòm·h�ü_>H5ˆ+É�ŠÆh6OXÒ9²_o»Úk1ÁA�Ô¥]+Z¸r�ÝÏÑ«Ó{Ù&Ø/ª\¾ éõ-´~ùwK0³K°_ÔºÉ[tòÌyÚ¶k/w¹@¾hZ8eË�ß¼å/údÙj—?;81z`›=‘s‹%ß-ÞnÄmÌúï¢åk7¸üy@8I))Ô¶çzóõº4~È›ï¬(ZÇþÔmþ#º|W�«W®èÐþLåòeÚ¿|™RtìôYZ=&E†ç\‰×UZ½ó&½Û¸!}0x]»y;×�÷^‹¦\K4>ujÛ‚Ûþüg7=y†×ç÷úëŸ=Ü6oÒXªUµR–Ûý”úzLí?¯§ÁËãÉd×Á[[s½l`x¶…XÍÖ×Ôà S¹>ïày·nO•jÕ: ^�µ&Ø·E”`÷(ëߤTˆ|‹ÐqðÅæ¼Í²aŠŸ�>Ðwâ#6åSk´�¿B¡c?¦ãgÎ9õlêûç fQ‘˜.ŽÎ~/N‹ï1bòL*S�–Ï�F~ê¬W¯”VÒ�…Ñ4am"m9ŒJðr*ëw�ÕC©LAÛË‘V—cÚ‚¥‘ZtíC‰�«þ›?:Š6._d÷ôþ±5õ+Ö}M¿oÛAFSö_X"ÿî[opëÜÙ:mð-WoÞ¢Æïu¥>�ÛS§¶-mî3µKõoD�ç=¤„dñ|~u¨ïOÃ[g?i�½²ž×(´è¹*ÕªÇ�bû’3�¬ vªxÞ×ú” x£X°l»ÐqðÍv’ªøU*‘˜Ì‹ãóu��ÆÖe;^ËIPáy¢©B�Útêmgå‹ÎCŸÍšBa¡ß—Uýž±x9mÝÁk A°µc¦Ï¥CÇOÚµ?«t;}ágÜ6z@nm»#Øúé÷­ ,«¨n/•RÉMow&Á>yö �8�tzûÖ8²Êèßÿú·1}?xŸ‹| ; ³î‡Ÿè³™“©Xᬕ„£C¥ô×ô<´qg*}²Ií¢€ùÂå´nd×=;³—¬ _ÿÚÁcTà¨âe+R«®½…ƒW§¬ ö=%Ø–¨_4Hö�ÐqÁf’-—’6Ÿ¿ìØícu>‚H5Šsý\ƒf­‘d;!4$˜«“?¯Ã÷MNM¥QSfÓ©sÜ™ça_òf}ºÜéû³/ŠlJ|�Uº_©âEÚÑ´ àøL„© –æú@ «òûõ�¿ÒÆe )À_“«ÇqIKÓruØë{Ö¸‘\1¼±ÑÊ6õü©Ç‚‡tî £ù2öú˜Ñ5„Þ¬ªÎvŸ³/S¿1ÉdBk8O–·`aê4`„ÐaðJl v¿ ¯”í:¡d»À4&Pv€¯$;Í(γ°È(Œf;€UÙ^4u‚ÝÕ¼Ÿuëî=:qºOõ#ýþ—-W2·eź�'ÙŽ\c}Ë_ì]n�Aã¦ÐÑS®)P–�ø˜š¼ßƒ¾Z<‡ŠÄtÉc‚x°Þﯵì@3>A¯ÖÊú±¥´~Ò±‘Ë#—õÔi<Mâ<° ΫSFE‹> #Ça8F£‰«Î’lðl!áÔ{Ìd¡ÃàÕIk‚}_D vÿ u Êö €�²O²d¬ýù"M¤#Ù F³_N¡PЂ)ã©FeÇ[k<ŒO Ž}‡Pš6Ý ‘y¶5ßüà’ǹrý&7åÜ‘‚rŽ$Ùÿ{×ñ‚3¬¿µ«ìLl�úøÙ èÿ–Îwéã‚x|4c×öŽM!g3f^T­¸’ö/ˆ¦IëÓoÑ[ÝhTRúrx8�ξhåw¿l¡Å«¿â1*p–ŸÆŸú�ŸisÖŠ·:ñÐ@±iâI°V x¥ 5‡:¡å8’ÍWéÖ$›ÍÌ’¹¾•®Û±ÑìŠ5ëÐɃ8`—ÖŽËYl½öº%ó©Sÿa¤M÷�Dûð‰S\!0W¹~û•*VÄîýÕ*·ÎÚžuÒÕ*–w(¶ž~éšuÝÇ^7nÝ¡o~ú�k!¾éöÝûôn×>Ô¹]+êÝé=›ûLîLý›R§¹)…ѼV·7¨óÀloð(žz ËÍ„Ï'W(¨ÿÄY¤t°c‡˜‰-ÁT1 f�™c½T¼T¶Iv„Zz‘Ï~Ùl]v�RœG&ë7m�$Û�¢"Ãië×_Ò‡£ÆûÌT¾·kEö2·ïÞs(ɶ—ÆOMÁAÙ‰µåê�[”šæ¾öJ§Ï_D’ ´î»ÍôíϿѪOfP‘‚Y[Êå ‘ÒŸÓóÐî3:±:SȽH…ÂJZÒ/ŒüÕÙ§˜õé úm ›‰¹þpìT Ê:CÅ[` 8-l±Ê±éo„ŸôÒíS5>I3˜­I6/ÅÌ].,2U¬Yךhï:¯ÅªV¯œ7�V®ûšÖZ¿<{»¤d×�b3¬Õ™;ä�Êãð}®Ýºí†HþæÇ0l™D—#¸¥*s&Œ!¹<ëgL½r*n 9[¯=îËDz˜$ž/µð¼úÕ4¹SHŽÉõ‘“§iøÇ3PØLd>úEDç: Þ³&Ø�`ˆZÎI¶ZÆ[’-Ö ã™6o�$›½;·§êÖ/̬h–7KJN:»8§<‡>à® •ŠpÝ ¸Õ¡ã§¨A›÷iôÀ>Ô¬Q›û°õÚLË8h´ã¤Ž>ßšLçQ�Ü£…ʨm] ujèŸcbͤ¤¦Qÿ±ÓÕ8'6ÿë5� /%t¼9«§�x!Á°í¥#Ù|’jw’IUê¼FÇözßfWøwÿ!š8g!דyýÒù”7*ÒîûV­P޶lø‚:öêµké´é:¡C° [Óh0I!Ïñ­ä9î®þ]$&ëÔ`fö§+è«o6ѲÙS¸zÙiPQÅm/JÓY(!ÅLF˜Ø,³›>ÞØãZÜô]œ{l7Í€a�íÈïD.“Ptˆ”Bœ;€ö›~¦å_mpê¾ ¬¦í»RÙ*5„ƒìob¿5ÁNÑ‹#Á–H$æ�ýkð—:Oô’‘lþ’l1WÏÔ°Y$Ù/±yË_4ùçO¿¼­[»^h&k½óŠý¤¬'ó/kWr=³÷>ê¦hÁ×oÝ¡E Ù½¡ù¹uÜ®,ìö¬ÒöøßÂÚ¶êÖ—{�Ì�4–B¨) QI¬›8—5ù¢?¶ÿK3/sÛÁp¯úM[Q�×Þ: ^°{Ï=iEò] 6ÀËa$Û…CB©ú« éð®íB‡âqØ(Âú~Êöö±3æQ§¶-éÃ.zÜ9G»¬Ÿ48gÓoÐè}ìÞŸ­¯Ñ·'M˜½Àå±ø©Õô?=;œ¿|•šwîÅ-_hÕ¤1õêÔÞúúñ�ªÅÞêø™s4ï³Õtãö¡C�\`ߥX’í Œf¢ÝÖ[/’â‹,ÁTÑ¿f~Ù¡cðd3’m²X¸#x~rqVÏÔ°y:²{Žœ?cìô¹´ëÀËv®ÿþG:{á-š6Á¡˜m›¿CU+–§îCF“Ñ$žB!Þâ׿vÐÀ]Hãçg÷}Ô}…Þªÿ*mݹËeq°×̧3&94u€½g°>ÉlËT¡L)ª\¾,å�Ž"jÇ+:éé::sñ2í?rL4u,àåÊT®NÍ:| t¼0Xë]÷ôÖD[ß‘`Ø/Ço£¹ä‘F.�O3šÃø&Å þ$[H5ë¿Ivü)t(¢tôÔ®ÇíÆe )À_c÷ýŠ*H~óu4‚ë“ üa”f.^NSGuè~†  ’ŊЧŸ¯Íu !ÁAÜk†-#È­Sç.pð+¦XIz¯÷ ¡ÃàEšõ;ïÞûz2‹dP&#Á¨‘ß_Š5zvxé�O„ŸôâÍdó+|“¨3S¤Ÿø+7hÚšþ³�,fq¯ð4¬˜Ù;»Óêù3êí¬T*èë勸þ§¿þ…)û|Ú±g?­ÿþ'êÔ¶…C÷cý¬›6j@C'M§sNô@g£×ƒ{våf3€xEDå¥îÃÇ /âÓÍt8N/tvC‚ à8{’ìK7“‰—$[L- r¢Öh¨v÷iï¶ß…E´Øèh�¡chd¿^ÔâíFÝwÌÀ>T®Tqš½d¥›¢[–¯ÝÀ4kÞ¸¡C÷c3VÍ›Î�gE©6lþ…~ýs;é ¶Û'±êáïµhF�ë×#¥B‘ë¸@XAÁÔwÜt¡ÃàÅ��‰O{@$ØÎyi’©–^ä#æ±>£Õ‰TÜ3Æ9¬`Çþ[ÉŒ5¹2÷³UtæÂ%úhp_‡î×¼ñT´P õéGÅ=Åì%+¸õ‘ÓÇwêþÑy"iXŸîÜ–&ëß�ÌÍý¸ ÷”*õŸ8‹d>POãR¢‘®%…Ãn,Á\1 z>é1¡c›—'Ù~RÞ¦±ÑK6e�ô¸Ð±ˆÑK“ì<~2^«¿°7 oH²™×ßiAûþÞBÆl¦½Šk�b6[¸6LöHNI¥c§Ïæúy¯Þ¸E�þ×…¾X0››.l/–œçäÐñST©\»Ï™žÜ§Ï_$mºÎîö@ì÷{à¨k?Ó?Iï·±½ôá“§sõ|iÚtn+D¶xÚD*Q´p®ïeØl‡1ÓæPÂã$îrÂãÇÜA;{«Ô>qÊ�ဠ=GM¢�pût‹‘ÉL´?VO©ñ,‰”I$†áUÊGð8›ÀÛxÔH6s?ÍLey©eî~r…‚^}û]ÚñËB‡â2F£‘ÆLŸCs&Œ~é¾l4ôƒÁ£\ÖÎÌ`0RçéC«æÔ¿[§—îÿÓÛ¸ä+'_~ó7ÚZ»z•—>Þ®ý‡hõÿ}kw¼Ïê7z"­údÉå9�ij{иÉ\’êJGNœ¦åk7ÚÕ‡ünlÍXø™Kž—dé6$ãµRµB95 7Èí’Ǿu÷Í[¶šûÙ^ÄZûLœ³Ð®Šç»¦¿wíuIL`Ÿ÷û§|1ö7#±8cäRIúèª�%ƒ•’[BÇ f/M²eÒ…ª¥×ÒÍ…yˆ‡ëøPkf×øx:·c£ÙwþE©ÉIB‡â2{¥zï¾G­ÞiLÝ:´¥°�àçnßwøÍüt9Å'$ºåù7nþ…¾ûùwêÔ¶%ui׊«*ž‰Ëúcû¿´tÍ:»§©�œ2‹+ØÅz=7zµîs‰0{'+Tö(ÝÌU 5{õšjG”QüÕ«¬¦±Ðq€Iö+QÊ¿]OŸc¶Xé«•jM´wÞÑQ­(¥×ôÏ®ýÆÛtçÆU:}x¿Ð¡Ø¥t¥jÔ¼c7·>”ŽÓš¸„:!ÝwG¨_¦cIMÇÊŠ�B�98ý ËIDATÇN”YuÂjykÅê»»# {°©ã{îé(¯¿Œu* —jÛ½ݽy�âãb… G‹– ö}»ìñô& 7*gÝØ(µ£Óv‰ÒÈάPK)¥¡c€ÿ85]'Zù™�Iv¦{©&n+$§!‚ ¬»T�áhÁø¡d4„À¦ð<ÑÔcćïÇiÖ1æ‘ÎÌ�j�H¤�%‘HÌ�JjÞ«.ÿ^èX +§2Óüþ²#1�ò7“�µ\�3XŸC¶iäR*&§0µ8K�ûÑð‹háÄá¤Ój…à9þ�ÁÔwüt›·¥,ôXo¦ÇºŒÓdëe¬—v½bÁò�½Ëù7’ù^Ùt‘pzø·v´ò3OI²3±j’‡ãôO/«d.áRH)P)¡ ¥Ôã[€ùùXíÅ´hâJM~,t8¹RE¯ö›J{cÍ”nJ:Ÿ£QHõ¯à_•Ã<ŸÓIvÕHÅúŸ®J>M7Y‚\�+éL–Œ)åvèSË%äoÍÀ5 v*!�uó³njk¢.ã91WªT4rö§ôãÚ•t|ÿn~Ÿà©”*vŸDI5‘ £Ó|’J$¦N¥4ÿ+&ß$t,`§“l ‘ù•håŠ�wt#]�PÒ�ëf¢G.80+‘Xsë/Èš£[ϳߕäÉ)==¥gÎgžJ_دh“nT¬i·gö‘�Q§%CzéÙ¦M#ƒöÉùôŒó†tmÆyn¿Ì--ã>ÖÛ-fÌ,ðZ)É”ª'›ÉTjîTn=•Z¯“?¹Nª°žWYÏ+Ÿ\ÿä<·=¹{ VƒêYïÄ¨Æ 8&WÕÂjG«>ó–$Û•Øú#VËÃøß5.|t‘,˜ÈŸm×È)—ÿ�2éuÖMK&]:—ô›ôé›.=ãzîög.ëÒŸÙÇz٠˸ÎzJX«b”™ÌZR–¸JŸ$µ,™•=MXUO’Vëe…*ã”Ýžy>3©E2 /x£ zÚ[UŽW—��«Ü,T%¹^7¯êÓ=÷t]x¾Ì#ä t$Y™�†Œ$ß�NfƒžÛ¸¤Þz�YŸþßyv›Qÿd_vÛ“Ý÷{ò8ìÔb2¾üÉÀ9 IåJî³…;U(3’VvÊ]ÏF^•ÿí£xr›BÉ%¬ÒçΫž¹ÿ“Ûdâï@¾¡Ia¿Ñõó)çäN®?ušV�8§ÿ@g²º" €Ü�ÊܦðÄ#0[“úÌìÀ·=wÙøôz‹ÙH“é¿ýLFî Ûž½Ì=æ“ûYL™×?{?Óû™ž<.–ðÆšdJ¤2.dïa¹õT*'É“ËRyÆy‰ô¿Ël_îöÌûd¹,{rÙºæù'ï‘ç•�óä:î2RÞ©d’ä%5�ʆÊ:p�\’Ê$¤oQÄoð·—Ó¾pE@@_’¹/º¡Cñ\‹ÙúÿŒ�;o½î¹óÜí¦Œe Onc—-O/›2®Ë|,Ë�õßsX^xNË“óæç—GX^hmó$›·³ódÎá¾Ï?oFÉ“³ÿ�ç.“ôùË/ÞÎ]–f{;— >s{Æe‰�óR®PRÆåŒ’]æ®çJé3×Iž&™’'·?½ÿ3ûHžìà X;Ü®¥5-’ûBÇ®å’ÃÕÕó(Öì�•÷ñ´–^™27’4Œ\*IoRH=¦^^å"¡c÷qÙœ°e5ïL?œ|Ko²ø»ê1Ä®v´jYóÂêár)i…ŽÜÏeI¶ŸL’0 B@�'RŽY,ž;KxŽÊ‘Ê�,±THî  ðË¥ÕM¢5Ò“c«�{,ùœÁlñsåcx*µL’Ô¨ zJ½|ÊEÒg;¹€Ïqy Ñ•䯔ZA¡KO¥î¾�b¬îêÇšD"1—“o¶&ÖSój¤'„Ž<‡[útÈ$¤TÑ¿ÆùDc“/Ï¥ýl¶XPiDK*‘˜Ê‡Ë7½Y@=%J#=-t<à¹ÜÚ ³tˆü÷Yµƒä;îèÆl¹‘>Ó�Ïà*E‚ä»^‰V®¨®øž ˆ‡[“ìL ò«f±í|‚±é¦«Úe‰:sA>ž 'AJé½raЎË7 –ïÀzjÈ-^’ìL¥Cå¿}T-0†�OÐYŠŒÕ÷8§ï–¤7çã3ð~rI"™f[ñ`ùßùý¥G…Ž ¼¯Iö³BU’koŨƳ텛$‰:KL¬ÖT66Í\ö�ÖTêAº¹äC­¹¤5Ï+H°à‘‚•Ò;ÑÙé¼þÒ“ÖÓSùdG£ü¤g„Ž |—`Iv,¬ByˆJ~£Tm±÷N)KT¢Î“ ·Ä$¤› 'ê͹ËÖóì:­ÑŠþÝžE.•¤kä’?ëdM˜ÃT’ë!*é-ëv3T%½nÝn+%·¥2+€=<1ÉvJ€B �Å :$t,ÞhïôîÇ’n]ª,t�¡l‡aýc^oõ™ÐqÀó¼&É÷9ñùÇ‘`x–³ç/ .Túppá2…Žþƒ$rtå·/'Þ;ôw{¡ã€¬-üwƒ9?å“©ü’…Ž2 ɆlÝ?²ý—~ù|²Ðq€mF�6àÀ¼þÿÔ÷EU¡c€ H²Á¦ä;W*_5é¡ã€œ%ݺTåÌú9+ËuÕ[èXI6Ø`LO >0§ï¡ãûÜÚýK¯ B¥Ž|µÅ ¡cðuH²áE’}3{dÓÏ„ìwæÿæ-g…ЂbJ:_†$žsô³1?¥ÆÞ*)tฃómo0ûÇü2•_ŠÐ±ø*$ÙðÔÅÍËfÇ�ÜÓ\è8À9Æô´ k¢½£öØU5„ŽÀW!ÉÎ�½¿w»ºuÃ(¡ã€Üy|ã|õ3æ-/×qćBÇà‹�d=¾vö•Skg~!tà·þý©[Ÿ] n³ÕBÇàk�dû8}rbžŸ Ø)tàZ§×Í^ÅíÀÅ�  €/A’íË,fÙ¾™=™�•С€ë±é\!4¥:UèX|’lvháÐ?µñ±1BÇîaÔ¦Z0øïWF¯xEèX|’luîëK]8ÚPè8À½¯�­uvãü¥e; ë/t,¾I¶º¹sSÿÖMè8€7ÿÙÜ�­ÏÎ_§É¡cðvH²}Lüù#oœýzÁ¡ã~±N"Á…KÈWô”бx3$Ù>$=!®à¡ÅÃÿ:Æ�¹ýÿm0ç§|R…R+t,Þ I¶�°˜ŒÊ½3z¶˜Mø7ðQmJÈ¡…ƒ·Õ¹¬®Ð±x+$\>âŸI�Îè“ò+áÊé:?¨oi<õË á Ÿ:oƒ$ÛœújÆšô‡wŠ x†Pµ‰îú«CxÁ^ㄎÀÛ ÉöºŒéyîâýÒ÷.žE�Ì�~ÓH$³«Ïb±H-³ÔU�çvbŠ×l–²ß¯ÐaØÍ"žx¹×€Y±2\¼búÝŠ$VÆ"¦¿3îoL$ï_ì½ÖìúX�ý¾ið™í[»¹úq%Oÿã:1~Áñ®}D`�dû‰Ô¤MN³‡�tZm€_PðW=ž‹¿“dKo–›t&‘gP%€7B’í#ÒS’„ŽÁ^é)Éa®L²ø’žœ.t öJONÍw1A’í#Xâ*t öS¬ÏÒ¦ˆ(ÉÆç-€[ Éö:뇨hÖó‘¸FÝž%ª‘l$Ùn�$Ûˆé¨:ƒ}+1}†épPÀ-�dû1Ugt"ú‚ð,1}榧¦„ €7B’í´"úÀgÒS’ñ¡¢cHךŒF¥ÐqØ …ÏÜI¶ÓÔ5Flñ0â;¨�éâî€$Ûˆiêƒ$ÄŸ·À ÉöøÐp?±}ÞêµiA³Y.‘J�BÇàM�dûñUÇô51$fŸ¹~A!qBÇàM�dû±Yã—±­ÉfØg.’l×B’í�d¸_ºÈfŽ1¨0àzH²}€Ø’VZx€‰í 6“žŠÏ\WC’íÄ6}Íb±Hui©!*�¢Ð±ØKlŸ·ŒØÄˆ’l Æ#뺔¤0$Ù &âü¼E’ àjH²½œÉ`PtéþBÇá(¶F,(OÞ«BÇ`/1Ž ‹1fO‡$Ûˉñ¨:ƒ}qNGÛLWC’íåÄúá‰$ÄÕÅ€A’íåÄxT�ëÁðM³Y¦KM :Gá 6€ë!Éör¡ù \l6bb[‹Ù"µXÌÒÌëYovݳûr·[þ»Îú…Ajyö²õögïcërN÷Ïö1^¸{ŒˆBEOæî'à�D*5 ùî/‰Ðq€ðþÏüqDjæ#IEND®B`‚kubernetes-sigs-kind-49aeee6/site/static/logo/logo.svg000077500000000000000000001772231524365506300231570ustar00rootroot00000000000000 kubernetes-sigs-kind-49aeee6/site/static/mstile-150x150.png000066400000000000000000000175711524365506300234560ustar00rootroot00000000000000‰PNG  IHDRx±ù¥gAMA±� üa cHRMz&€„ú€èu0ê`:˜pœºQ<bKGDÿÿÿ ½§“tIMEã !¶i�:IDATxÚíÝyxõ�çñ÷¯ª/©[Rû¾%Ûcs0‚pBH×&a’™$�lH²s$ÍfgfŸýg&“ŒvÂΆgvg“Ì“k!„rpæ€D@À6ø¾dYWëì³ê·T·¬Ó–d6|^ÏSv©º»ºªºëÛ¿û"""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""rê13}oõ�©P„†íŸ¶ŒOÆö†K�{‹ëÎôe‘±;¾æ§ª•@Äe!ò„KØ9q©â)±Øâ2û† %r ‰°aQ¹Kíì0ëæGXQ"âš¡ñjpO}cêÚ™þ@eì8&nqi¥2â »!Þñ“DȰª*ĹsÂ$#ÎÐkµø§úÆÔš™>fŽ ¨oL‚_Jâ!£ y¥@1;ê°vN˜ÙÑaÁã\à¯ëS±ñî[¦Ÿ¾ïæBP\P:qѦµß÷Oø¼·;Kh×Ì “žJ»¸f¦�QNL�cb"Ûn8"îñ‡1†WŸ–'z¹¬OZ "lX^bÈ¥KŸ®oL•Íô1Êñ)pLL9PAà8QMе–½;Þdë¦�dÓ}£Zp ,(w™5<Ër ðž™>>9>މ©’®1„œcG—{ ��%qwhª£¸³¾1�éã“Ñé›<1s�J ¸&¸T£2~˜sIOu\\>ÓÇ'£Sà˜˜Y@ ì\e=&,쩎!‰¶*à³*ë8u©åèÄTR¼vÜŽAóõI>ˆ“HBYì˜_n�¹1—dÄ£=ël–þ>‚~@�Lî‰ÉdPà˜˜ÅÔZØ9Öÿd¦¤rYÒù<íñ2ì67ù¯ J†¢”9cÿj…X–péÌùøÇ%|±¾1ÕØP—l�ÂË' À11奕Ð)�Ùûé[ÛùíÁ}¸c(¤I©ù9;çE °ÀÁºãß—ƒá ‹Îç²ÊÅxvlé Ì-s™ó8š”ê¸ øÐ0�—SÆ@�cbú‡kÌŒ ß5PO>GKºoÒÊZ¬oÈç L ½šƒ!ëÆýº��å!RÙ<ùcÉø‹úÆÔê’ÏNÙ”q;~/OKñÒʘÊ7ŒÁZ‹õ-ƒa9Yf”ýŽwðö‚ëp¼ËøX uX––ÌY |½¾1uÆ$~~r’”☘þÒþå|Ï£'ÕJ"QÆ‚E éj;B>ÓslÀ ‰’HÎÅÌ`;ß%‹ãe\Q³�Ù Êx¾»…W;;Èû>ÓU�S]áÒ“÷iœe¹øf}cêó uɽ£½¶¾15XFðƒØÜP—Ü?cômN�cbÊ 8¸æ n¨ÖÃ{9´{ sçT1wNÍû¶ {Žã†X¶ú\æ.ªÁޱ\`²øÅ÷[VQÎ Õ˸(±Œ£ûËèØo¹{Õ Ú–·òhç>^Lµ‘õ¼) ǰ:¦àçi\ËrðýúÆÔW€ê’ƒ2Rõ�©uc{ÔŽ�õ�©�6Ô%�Në}‡Pà§bÏØþ2Žã¥8|ߣ³í¾ç7;ârt··0gaõ´�‡o-ÆÀÊd‚TWs^l)»wFø÷-9ަúð-”½fX[3‡?¹`·U·óóž½<×ÑJ_¡0eÄå!Cíì0;; 4§=|ÛŸù¹œ`ÀŸÖ7¦¶]ÅÑÃ> l°« À…ÀcÓvQßA8ÆÏ!h]Lqç™ÖâûÞvi°ÖÇZ;åýXXSÃÙ¡ÅlÛæ{[s´u§ƒá Mp’yϲqg–Í{ k–Tqëë¸eYŠÇúöñLûQºóù) ƒÇ¼´Ã‘>�®\0$¡‹€z,Ÿ±°Õ:áç¿øBv¿o —18µ³†Z8¦„Çø9½c1† W�N7kÁq༹³¸©º†,â�7]¾³=KGoÇ�[ ³+æ']vÊã:àù–×÷åxó¬Z”àú ÎçƒË»x*»�§ÛŽ�Êå&=€”šó/*w™_æ’ö,]9Ÿž¼¥à[|KÒúþ†²¦6„ûš�¡]ô ³z÷\þ_ÿjö>ß ;€l\ôµæ}3ýY¼(pLŒ¶r ÚIDùܻΦº°ˆW7žÞ™£+�Ã1à(“õ-œ¿2Â�•ñ×ßM‘+·£Sqû¡½XÀp¼e€¬ïÑQÈ’5„Àº#/±¨ËêÄ\ž~5K:gqKÓ7”¦@(6Û˜Ÿt¹êÜ×­‹qö²07o(ç¬ea®¡4xY©y‡c‚å�ý9š÷FXSVÜŽKo.OG6Cº0µ÷§"ÆãÂòœmÁbx¡o?N­ãh¡ÇX哼зœÝ¹¹§Eêðt¡Ç±Ö'ßÓIÔu ¼ü¸_Z‹%„Oº½‰ãe~ŒãŽW↣¸ÆðûîCü¨eno‰ƒ7Âk-–ùe1Êmœ–NSLi|äŠ8‡[=~µ)CU¹áæK˹yC9ó“.®á�áK·V’+Xþ°-Ë~ÝË–}yæ'>òž8O¼œæ­Ã,pà°åœDÏj"ä8º…Ÿ9Û¹aùÜ|Æêþ*ß©ààS;‚5.¶˜Ê)]Ï:,�´qSåë, wxDN–Çék=L_ëAÊCåcx…GwÓž>+¯¤jÉjÜHŒîBŽý™® %妰°"YAo{˜ÞlPkâùÐÙëó±«ã,›çR[á²wEy~[–{ÖÍ¥gG¹|m”|°‹3†¸iC9_ûT„~×Ë»ªÃä=èê;vîkö¸xm’¨çà,­Ù> Ö’ÊNÇô°&H9hóâÌrÓÜž|ËÝg“ñÃ\ßÅ,·_�cÒ(pLßË“ílÅh05ZîñV¿æ{»ÈõuŽÃËk˪8ôfPðYª>þÙ i·y|ýÎYÌ©tøñ3½Üóp7½ŸóVDpŒaÛ�=iËÜÊÁµøŽ�C­—†*©ˆ„èÎMn5¬!$çYzó–ž‚%[°ä=Ëîš»Ͻ‘RËQÖ`}Ç˵^°çÿ° sËQk\CPYü⢯5�=Ÿ'£Rà˜˜bÃD(øö¸OJ$¼÷ºk)¼‘Ç�HTLMŠÃÀšH’}MÇîkƒ½¢Üà8pýºï½ FÍ‚e‘`¸ö• C¤z#Ä£†Ù{Gm]û[<’ ‡D™!1ä ¶”££×ÃI—±8^ƶl×d>Ï’Êú´f|:³ÁŒ÷^ЖÄ]vÖ†ív¶û²Á^‚µ_潯-¿ã¡{6ÄLþ…Žñ+m|ss>`À1A=BðóÌ¡âƒã8Ìš•äxÿñ Çqq\ã:`œQwwÃ,ò+y±ÅÃ1Aиæüל#w(‹–Î ñ‡íYßÌÒÒéqÇ•qn¾´œ›.)Ç÷ý¦—ƒ­Ë„8oe˜ò¨áâ³¢üý'\šÚ=¾ûTíÝ>Ù¼¥­ÕåÌYUléèZ:Žã°ó;ñt˜ ‡{ êõèÍÛþÁÈ 4¿3ð{`£±Þ¶†K+:êSŸ#èV_J¥‹ªR¦ˆÇ85Ô%m}cª‚Àá[°¾eû/ÓÚÜŒöåH·Á÷¦¦ådlç~"å•´ôµ²´§iÄ*]ßZ–&«HV„I¥}Lqî—¾¬eã[96ïÉqë¥å\¿¾Œï>ÕÃ+;s,›âcWÅ9Ôæ±»©@]m”Ö.Ÿüº‡hÈð7wT‘Œ;|õÇ�¸Ž¡f¾Û?¸°o¡¥.XàñÒÞÝ8Ž¡«¯—ßÜ7xBk‰WTR{Á» GFžs©àÃŽTžÃ½ŸŒ :©= ü=ðzC]rèÅý °¸’ Åñ3 5å_ˆw(މéoÙd�l&Í3¿|˜};·ãºî4�ä´“\>JrÃb©LÄ©Xs%Õó³u×�ç¶f‹MÌ-6öñžsbÜu}‚ý-�\¾6Ê¢9!þçƒ�üfs†o~n6ï]ãáçûx÷™®=¿Œ{Ù¸#‡oáù­Aßc 6¬YfØ·é –¾¹×uiµ–LJô2ñ<ŸÊä,–®XÅÜ‹±Örܰ·;HiÀ ÄÔ��?m¨K¶�t¾ uÉÖúÆÔŸÌyc€Žâ828&¦?pøÖ�•qÉÕïcѲåm:Èþ];¦a~Øbòã<žêîå©_=ʇ¯¹‹{S.ÝA–%x©awS�}¬›¿¼µŠ¿û“$ó“oìÍñøÆ4mÝ>÷ý¦—úÛ«øÒ-•\tV”7÷ç¸ÿ·½Àðµ7¬+£,³‘ß¿ø2Æ)ÎÌ6´ÚV­®åŒÚs©¨LË¢ %íq gXJí%àoF % uÉ AVF¦ØÀ—º»¾r1ÁdAÌŠ:̉¹,XZÍšó/¤<^ÁÖM±þ†ŸdÆ6a~U�‹×­åµ=žìWÜØy¸@[·Ï ë˨ž¦µËÇu g- sæ’0µ5aj«Ãl|+KÃ]n÷�zæùpá™1®;û?øÑ÷èèìÆ¥JÖuCÜðá?fýeWã éš[*ÝÚQ ¯0¨ÕEðç uÉ—fúzÊ1ê;1ý?‰~S‹õ}.«!9{î°$ø@‘pg„‰ëŽ?އÃáNfý˧ƒÛÕȇ.)–±ñ-<ò|¿Ýœa×á<‘Üu]‚?ûPW�cÇÁ<û[ üë/{ØÛì ¾…êùan{w7?rGZÚF ÖZ"Ñ(‰Êäˆ×Ƈz=ºrÃz”üðø$|f2‰8&¦¿õSÁsÂZK¢²Š…ËFtØZK"ç/?÷i.<ïœþšß÷©^²ˆ¯üégY²hÁ˜z“Zk)‹Åø‹Ï|’‹.8oÔZ c ¹|�~˜ÚÙÛ©«-càSýbõkÍüÿã‡)îþf;ŸùßmÜýÍvþó?·ñ…i§qK–+Ï�r¾?T–;üñðܳ?aËŽ]Ç `ÖZæ,XĬ¹ó†�Ÿzò–C=ÞЬ×fàÞ†º¤Ú^œb8&&]ZÉìÀi …B,Y~Æ ¿´¨ˆ—³þüs¨Yº¸ÿf7Æ�ÎdÙ{à™L¶.Xß÷ûoÆR *ÝtŽã�D¸`m-Ë–,:n•®1†ŽÎ.ø�ñ¾sZY½42h|�5ËÂìm.°ãPžÎ^Ÿ]‡ l;�ç`›GOÚòëMªç…ˆÇŽ Ïr }OŒæÝOðÌ /�0ÕcŒaUí¹”•LJUÏ©�ioP¥üËñ¦C�™£ÂÑ‰é øb‡r~p3Ìz,®^A4#—Íå€Þ²•|â÷òòæ×Ù¨‰ÙÉ*Ç¡võ*®¬»„ýsÉ…çÓ‘êäþG~Á�ÃMœ¹¢†[o¼žÊD‚­oí" �i9ÇqسÿO=q?tݧ¹÷1—Ö.×�ßnÎðì þãØ´'Ç®¦}ÙàÆö-ܸ¾ŒYþK|û±'ðýã²l­%9{.µë.bÀÀ~¥ÝÓ•óiî–EyøéLÐ22¥8&¦ 胠å¨7àÆµÖ2gþBªf͵€Ô‰ŸÿäǸôÝëèHu±tÑBn¸æ ΟGͲ%|ø¦÷sñºóxk÷^®ºìnÿÀû¨L$øóO’sÏ>‹Monãœ5«Y8ÿøå)9ŽÃ‹¯½ÎÖ×åãW†‰…ƒ±,úr–žôèÝÀüâøÁЂ°þÌ-ÝËý=H_&{Â$k-kλ�y G®~=Ôë‘ñE¿ðÿ4Ùô©K�cbZ�îÒ¯ï€y?°ÖRž¨`Á’êQFÜ´XkùÐû®åý×^ÉÃ�=É–íoá8NÕ¥1†\.Çýÿœï=ð;víaÑüyT/YĪ•5<ðècüûOáû>L_:3¾Æ�áñ_?ƒßñ,·]VN8dú‡,�ËHKéñ3—D¸e}=rG[ÛG,ät¶ÅrŸs.ºtXv¦?µ‘–Úh~>Ó²ŒNY•‰é-.x¼!ñ¡TÎñúÆçG|±c Ý=½45åêË6ðÔ3�ƒÊ( †l.Oo_ÆëŽã�Ë0ôöõÐ×—qœ�ã1@¾Pà�Gå®�'ùÊíçÒœ%Åbç‚"aÊ9}<þØýlÛ¹ç„åŽUµç°hiͰ\Ÿ µ‘\¶‘¾ÝP—ì˜ÂÏON’ÇÄd èá[[ìè6øö]\³‚h¬Œ\6=ä±`rç_<ý^}ýM¾þßÿŠ[ÞÛÞÚ5ꛂ`s¤¥•æ–V®¿òriæŠ Q5Ž€ú÷g ]Ý=|ëûßeeõ¡ИF#7ÀÓí8Ü<¦ �µÄÊÊ9÷¢Ë…Ç:²#–m<ür’?/™d “º!H¾ÉŸ÷—s$çÌ¥ùà~L±mƒ2™,ûâÈѶ¾µ“‡~ñg®\Φ-[Ù{à Ý=½´§Rì;xˆ¾tk-‡Ž4 …hmkçß~ôî¼ã?ñßþìnÞØ¶ƒ×¶l¥=ÕÉxGÏ1ÆÐÓÛÇkoî8îÔ ƒO,x�3Æ17|k©YuÕg¬–Ú(XØ×] çKm|«¡.™š¾�R&BÃ"M@}c*L0‡éMXUâŒÊÁ¿ÚÖZýá·yå¹ß=D‹Œ1$«*éíí#›Ë�Fˆ—•ÑÝÓKee©Î.\ס"§£³«Øö£_,ÍÓžê¤ày´µwàû>ù|�¶ŽT¤»§—®îžþ±>ÛS)i¦P(ÐÑÙyJ ß÷Y\³‚•kÖöŸ‡²žå­Î{»‡�.à› §eU&noi¥;ï“)XÊCfP+Ò¥+Î Q™¤+Õ>¨ÊrhõeéïÑž3ÒóÍ(��*\×弋êH$*‚`è[Z3>º=:s#Æþxz¦�[ÆF)މÛ �.Xöxä‹÷Cp+ûÌ™¿€ågž…ï°¾‡õýc‹õ�M¡VZ&mÂÄ©2øx­ Fs·vÀyù~¡Àœ…‹©®=ŸÖ´ÇÎί´äÙÒž'5rÐxøÇ†ºä©—t’)Å1q;Z�ÎØßS •óI„ 1×v ®ëPsñ{i-„ÈeÒø¹,^>‹ŸÏáòø…\T<ïX`±>ø~�¼·þ€; zÔN^Œ)MsпrìÿÒ””Æ8AzÇÁ8Æq1Ž‹ã†pBá` GpB‘âÿa¬>—¹8Ù–,Åy«�Ís;ØàË uÉ�3ý�ÊØ�šéÜÓ@}cªøpYiÛÀ{y`V¢ôËLñWÙ÷=¬W‚F!_ ¥¿ ø^¾XòÅíÅÀÒ`‚uß/s¸ H \/¥*à�Á€b00®‹ã¸7Æ ƒB°î„Â8nSúß ÿwûÿî­ãût à`O<)ÁfàK uÉ_Íôç)ã£ÀqêS_îÂcÕÀyTÌ�Mãý8ì€mñm‡¿ÃøßÏï ÇÖžÄÍýPþ—R§'eUNÎ÷€(p#°H1‚²£âèÅÀ±»Ëë¹N!›éŸ ¾ÎZ㠾ˌš&ày'Asò'�-#Œ*§ ¥8NR}cÊ‹$0H¤@BÁ£Têi½P¬PÛø�?Чö}þíwé-éÄÂû¶\^ÿ¿P*t÷9ÖX®H©ôíáíöí=¥=u纄çFÂðÞ™>–)aùƒãço¼î;ÛfúPdj)«2� áòK� 3}SÆp¾ç¸ïþc¦E¦–ÚqL“§>WçøAVæí*jà¶'ï®Ga±œŽ”â˜&½9w¥1öÚ�ÛŒ¡'ìØC¿UÆde'§d?ß,ð-•6]]ð�³€7&éýä¤À1Mv‡ãvHjÃÀ–Vä> Ùœ´yÒLé¾|‹ÙßùgßrÛ€ÍUÀœI|_9)pL“¼o\†g íîÎhË—|:3‘}δoÜ~­kÖ¿Ï"3}l2µTÆ1}¢ ÔQsOŠe‚ïÏÐ `ݶÉÛŒÇô‰2 Created by potrace 1.11, written by Peter Selinger 2001-2013 kubernetes-sigs-kind-49aeee6/site/static/site.webmanifest000066400000000000000000000006521524365506300237140ustar00rootroot00000000000000{ "name": "", "short_name": "", "icons": [ { "src": "/android-chrome-192x192.png", "sizes": "192x192", "type": "image/png" }, { "src": "/android-chrome-512x512.png", "sizes": "512x512", "type": "image/png" } ], "theme_color": "#ffffff", "background_color": "#ffffff", "display": "standalone" } kubernetes-sigs-kind-49aeee6/site/static/third_party/000077500000000000000000000000001524365506300230505ustar00rootroot00000000000000kubernetes-sigs-kind-49aeee6/site/static/third_party/GitHub-Mark-120px-plus.png000066400000000000000000000051151524365506300274630ustar00rootroot00000000000000‰PNG  IHDRxxºÆà£PLTEÿÿÿ_3™øàtRNS  !"#$%&'()*+./0123456789:;<>?@ABCDEFGHIJKLMNOPQRSTUVWXYZ[\]^_`abcdefghijklmnopqrsuvwxyz{|~€�‚ƒ„†‡‰ŠŒ�Ž�‘’“”—š›œžŸ ¢£¤¥¦§ª«¬­®°²³´µ¶·¹º»¼ÀÁÂÃÄÆÇÈÉÊËÌÍÎÏÐÑÒÓÕÖרÙÚÛÜÝÞàáãäçèéêëìíîïðñòôõö÷øùúûüýþ�¡0yIDATÅÁ�_Ôwð—÷ksŠ%¦’|ÕSÛ¦%a`%ÛZµ \:7cnRÖÜÔf«œÚlË,×ÐX‹v#tÂQDŒ‚9GKN§vÜœ¯?%ÀÁýz¿÷½û~xø|bÎM‚´-©h8ÜÜ>0ä„àÈ@{óᆊ%˜UîMû<~Šüž}›Ü˜Ëžöi(èy:ŠåîöÒoc.ÔÙÔ¦iáS› „³¶‡iê©uÂ*gý 30Xï„%UýÌÐ{UÈÜíoÒ‚7 ‘×Þ - îu!«}´Ì·é²ý`” Œ6Ø�–ì&*r*i(x—ÊôÀ´?ò—À¤-!*ÚS¶F¨XäQ˜ðgÁHi+gÅ£HaK„³"²†JBœ%¡(ðsÖø  +»�³¨/:l§8«NÙ k`‚Ë]½—™¡Ë½]3AD«ƒLP ¯îµÓx­.ÀýL\�ËÇ~¦ÌßÙÃ4ôîœ�)®KLàs!Ù³Lt3*¼4©³3^e¢ç�¤0ÈD�!ÊöÍ!š0ô-¢g¢`!y˜d-bÝúl�Sη¼ØX]ºF[”“³H[SZÝøbËyN Xë˜ÄƒULv!^ÁÙKÞSœ Avñ�Þ¸ôv!â¹ÂLR…8Î&ù‰lv°Û‘è“üˉXõLÖ ËþÆdõˆád²6XÖÆdƒ· ê Ú`Y� ª‡/,뤠3Ê(†eÔ”aÚiJ®ÏƒEó®SòG|"7LÑFX´‘¢p.nh¤ì ,:HY#nðRæƒE>ʼ˜²‚:‚EQÇJLj¤ìyXöSÊ1©•¢',svPôWLp)_î£$è°™¢£PâE›ì§d4JäŽR²À[”¼ E^¦ä-~JÖC‘õ”ø�¥” A™!J–¢’’— Ì1J*±‹’oC™jJvá0%Ë¡Ì J£™‚°Ê8Ç(hF;CPè<í À…| `„‚3Pè#Qp y)�òQJþ …Þ§”|…>¤”„lPƦc”,…2y”Œa„’(SJÉ)ù”©£d”ü Ê£¤§)é‚2Ý”œÆQJÆÝP$kœ’£x’¢û Èý=‰rŠŽC‘ã•#�¢«n(á¾JQ0BÑv(±�"?Eýv(àì§È`?e[¡ÀVÊ(£lx>,›?LY€¹AÊ~ËŽSœ‹ ­Ôñ]XTK­˜´‹:ŰäËêx “ò©çJ,(ºB=ù˜ÒI=WîAÆ*¯RO'nØE]‘dÄñ³ëÔõnX¦¾sw"k½ÔÎÅ'šh`üØ2¤iù+×i  Ӿ¨ö½Ûö{Æ+üÛõ0ÏVú‡qú*ftsÚ5&,|!Ä8}ûÖÚ`‚£ä…÷™‚Qµœñ &¼ýóUÝLðŸ¦Ý%90�WñÜ_.3µZD99ãÈ­@Q%²Z(¸Ðö ;®_wLs�ˆQǨþ»|ãÌâ3\»¢uAšT�Xö^FÊ�5+?u�Év@Ç.šóŽq*#°“îeŸ:}4¥ Þ`Œá\ «õžLT]õ4£‰VãO€ûRgÎ{Œwõ6èÊejÁ•H²‡±îVmDÁ‡Œó: ´0µŸ ™óïŒÑo�õ�;ße¬=0ð SêrBP`Œ¯(çY÷¡g Ü2•Àí`Œ³¯x€%{Ïý�äųÏÙ`ä.¦²:N2F1¦,o}i.,›|áÐFј«ГÕè&­á:”Žô-@7OÂȧi¬7ºòÿ˨ƒ˜rÛ"à‹Ý-n|¶üÉ¡¡‹ µiÉ¡‘Àz ¨C.¤a! DD 5F½³æiÔ©AJuÆè|ü3˜±ØuE¶Á„šã ¾~äÀžÿòD›Ÿ90 QO¤¦Ü ŽE0 QGà˜Tôe h”}T ÓòÿI‘E=ùHCÖ J4Ð(ù]ÒóýkL¦Á€Æd×¶!mŸó2‰“xoG»L Á€Æ�:�™üfÆÓ`@c¼f ™ûÚ?Kƒ�±ºË`‰­º�QŸ‡�Q}ÕvXe¸ƒÓò``1§y¶C‰/�pR uqRð÷ NÎö¶PØ“CZëXèÌc `Μ›sn’ÿ)3PBL ŠÇIEND®B`‚kubernetes-sigs-kind-49aeee6/site/static/third_party/shiny_goose.png000066400000000000000000021226541524365506300261200ustar00rootroot00000000000000‰PNG  IHDR´;áDnsRGB®ÎéPeXIfMM*‡i&   ´9BZoiTXtXML:com.adobe.xmp 1024 948 1 šüe�@IDATxì½ °®ÉYß×ß~ös·Yµ !9Æ)SQ�ãØcC$�0ˆECy)’`WÙŽ+•ªTR)Wâ ÅI*UŽ]±] d@2±Ë6ˆ¥D‘Y„²’�fF3wîzöóíùýž~ßïž;BBËŒf¹Oßy¿î·ûé§»ÿïûÍwþO?Ý]J†D H�D H�D H�D H�D H�D H�D H�D H�D H�D H�D H�D H�D H�D H�D H�D H�D H�D H�D H�D H�D H�D H�D H�D H�D H�D H�D H�D H�D H�D H�D H�D H�D H�D H�D H�D H�D H�D H�D H�D H�D H�D H�D H�D H�D H�D H�D H�D H�D H�D H�D H�D H�D H�D H�D H�D H�D H�D H�D H�D H�D H�D H�D H�D H�D H�D H�D H�D H�D H�D H�D H�D H�D H�D H�D H�D H�D H�D H�D H�D H�D H�D H�D H�D H�D H�D H�D H�g�γ§:5'‰@"�$/\–ËeüF¾õ­¥ó_ñ®Û~/ë·Þ¼,å­å;¾ã;–�NqŸ!H�D H�ç7·ýAóüîjö.H�D xFè¼÷ý¾xõ©ka:�ýï§§ãÍñtZ‹Eét»¥×r J!½,�¢`ÑÐû6.�eY.çtÆ¥ ÄÜF-âñøÔÚ¥K¡qgÙy²Ó-÷:�ßY.XÛ|`QfYÿâ/¾òæ¯øŠ)†„¦•P–‰@"�$‰@"�<ã¤à‡4&‰@"�<ŸøWÿê#£ýÁþ_=:�ü_ãél4‡èÏ ä‹Á°túýÒ'Gă2J·×ÇÐ+³%|Æ.»÷¾0Óßñ^F_ äë‹zKJúÞ~�ËÚ"Q³Y™Ï¦eF¼˜ÏÉš–£ƒ”™¦"²eçèÓ±Xœl�Ö~qØëÏp£ÿÓoúb/ ϧ·*û’$‰@"�¼0HÀ ó¹e¯�D H>¸îwßý‹úÆÇ/_ù�Yé®ÏK¿Ì;½²„Øw!ûÎî/!û�µuòzLô{ucö_6/É—Ú/É“ô·€põ§ÌxÙ™WqC�yþ †m£€†€~Yòz¡¢ñÀ@ÿÈ_”�-ÚŸWÃÀ|‚Âd×’t#ÁÍ+WKÁ3a>—2›—!}ÝÚØ(Û›?·6üõ§ÿÈ¿y衇tCÈ�$‰@"�$‰Àg„€›dH�D H^мûÝïß8íh<ÿ³'Óe/ºe¸¹S]È>.ý�Á¨tGk¥«{ÿp+ï•©¾ý"Ñ_âê_/™»ËdôÂ@à/¦ùMÜՠì=]3©«@r_óªl�L�U�…èãä„ô²ô(p �©= Ü«h8=-'‡‡åäà ïDz|r‚GÁi¹÷®�2è-Ë ?8 †m0›½ë�8¥ñO0>ô~ý×½ûU_õUÓO)”‰@"�$‰@"ð¢E€¿02$‰@"�$/<Þýþ÷oœ^™ý˃£“?q4ž–)¤¿3X+ƒõíÒn”þúfÿ¹ÌòÏ™½_8»Ï/ß‚�^WÿfF¿[™{xüKø#4ÕPÉ|pwò#ÛAØÐguC¨�ÔW³�Rz˜ßÆ!F?X"з þÃPIá>"ðú2?=)# #–)h¦Xâ prtTN��Êôô¨<õ‰‡É«û ¬cÜØÝÚ.›k9Jy¯„7þ©¯þêS[»õ鯆;–!H�D Hî@š?YîÀ‘ç��D H^p¼÷þW½ç_¿ýèdúmûGsfô×c H·½^ºÕ†u—±wÿ”uÙC`+ÁéÑ^¹zùr¹ü‰'ÊáÞ^ îºp¡\:wo‚¢WÁÑV·÷fü÷l*C"�$‰@"�ÜÙœýëäÎF"GŸ$‰@"ð¼EàÇÞókpo²øÍãñ¬ËUNaÐçï­3þÃ5Œ�~Üùgóe™°^~J<ÚØ„™Ãæ]‹ïB|§ÑroÔai½Y-ÑW´ ®Ó×(P‰=iê?ÝÐÖ³Žé0 4:¢,Ò�zi™t·¼]J°D÷át†¡¢êµ-½j\õIô±`6¨§ ÄR‚~[Kô(À `½ÏÒòxܸQ®`¸úä“ådo¿¼äî»ÊˆF7ÙØp½7øGÃaçÿ,O¾öµ¯=H/ŸZ†D H�DàÎC wÞ3Ï'‰@"ðBA óCÿüçÿîÞñâ¿=™á¾ß]÷þÁÚV)£Í²Ï þÔÍýœ–‡ÙÇý°ø..ÿNœ÷˜õÇÑ>È÷²Y«/—è»ÐcÅ=Uo‘uaQµØ�¿’õzß’û*¯„Ä]ý´Ÿ¸ñPÆ.©£mW¯û°EÄ^nØÅµ_Á&Ð'u…�º$çnF‹jŒà, ˜³|��9M`ò_8jÐÜ P¢ßãD�©K�ÊG>ô!¼…(–��õ²Nì2]!8öðg76¶¾%½>C"�$‰@"pg pæ¯�;cÀ9ÊD H�ç7̾wô§íׯ\?úóÎ(ˆéo0Û¿É®ýÜ3o?†)/ØÅ&3'ÄZþ0TBožEAªýÄàýÊÕ"~:žÉwv5Ûϯb�uêÜ2 ÐbÌÔ7y�j u?Œ èoësÐ@´oØZ°–…~=Ø‹€ ” âo}.Ó.1Ðÿßzþ CB£ßòÞýÉ—¼ ÿ.XL'œ0+#Q¼I®?ñdyâ‘GÊÞµ«±·À.§ìln• Ž=ì`@éÐ�MÑÐ;±X|çæææ0›•!H�D H^|Äïþ‹oX9¢D H�?üÃ?Ü»QîùàÁiç+Nò¹{ø­a²i»ù{1ÍÇôApçò^gÖ!¼í嘃P‡m€_¹ ô[Xå•“ô”oëTïs묻q”CÆÕ£W€!ä©¿ª§Ž– 7åU¦ÒÿÚ?ë)XûШ U6TW��ÁÂö«|Õ†û†@�}0ƒP©)³¯ÜwÝ#@³Ç Jø70\»^ûÝß�åK–HlöGåþów£ƒþèi€ áˆeÝî”S ~i<>ýUN/xb€§A§;8‡ò{gó齓éä¾éb~ÿ“מº‡Á’öª�£Y€ABœF£aÄ.YˆkÐ[pbÁMÒèÚ§ÑCLûì{p°˜/�‹ù!Ã>(ËÙ �Oö�Ð|´˜ÎNËÅÑìt|²X,�—“É #?å@N<œnmõNîºëÊé¼¥®•¨0æg"�$‰@"�üðsŸ!H�D xîpgúï{×{ñpÖÿ£³îf™v •Ûe¼„øw™ñg·þ%nýÁ°’½"Ì0ÆàÔ|¹–GaCàƒlK¼ëå(kyc ˆû¦¼rû�UN—~C[÷¬‹¿”Û{cC+3øÍ}Kð•rã¿V¦•w‚VÞixË%áá_`¿›ÛûÐC¹l]@Ì Ñ‡%yþÓÓA#€› º7ÀŒ#].0¢³ëóéñ1›>Uö._+‡Wn”-6Oôô€m¼Ö$ìfx¸¬`@ý©'œ—c–œ°ÜÀûÙbÆæ…‹rÏËîçHEN) Þ††õõµ²¶6â~„Φ…öÕqU¤*Zÿz<‰�^³LÁý–,_`]CðâxDÀ©›"RƉ–WùnùÄWu|(sò&ì§0�²÷à ½³ÅYØÝ¹ð㥻þ£ozÓ›>N›ZJ2$‰@"�$w<ñ³|Ç£�$‰@"�<'üàOüòÿ¶8ý'3hî`«,GÛeÞß,ö°Ÿw4 ¸dý\•G²’eÂ*Á”TVbé}Í�þ†€šÙÔ¨å¨kŒ <Ê?å}5&Ø…V�T¶5´y¡çŒŽÖÐê^µÓüòb×@¡¹„¦¿·Br ™þ$$šrgá%Ü0åðXcæÊQ‚Ëñ˜Íûe‹£9 L0ŒOÊéÍCâãrÀé‡ûeÁ׿1ôYVÐ/§±êc�Üoíl—sçvËöîNqß!M‡rfðÙ„ÁlêþQ'>äÞ} ÌssEåâ¹µGHü‘A(b³5¸Wdž~‡UÅIøÌðÆï ›=Î0VL8rÌ5™�Æ`—/_]å+7�N¶·vþÖh÷âßùÚ¯ýÚ<¡>¶üL�D ¸Ãhÿô¸Ã†�ÃM�D x.ø‘þ«¯yâúäßÍÊ:ëú™yl”%³Ñ3füO—¬Ï‡Àõ8Ö/Žðƒd’…øÁ«K¿Ä“å "¶dÑDjüû\:oˆjÆg~䟹�6ÎÜaç^:e4zÚ˜ü§VíØ=ÂÊÀ½Ä?ò"Ý�Ü`¼�gô£¼Â#@’¿œDY�ù÷SC€uk—¸€v÷€Áßd†~m0Ä00Å@0.G‡å˜KÂïi¡5÷Ü}7c¨€F�Þ×~@ëa°-=ìW?\þ«‡ƒM‰ŠÆˆ {T„¸w™�ùÄm^’;SŽ�ü¾­�í¿ñÀßø$ 2$‰@"�$/zâOŠý(s€‰@"�$Ï  €Ý·½ë¿¶7»·¿öRþ6¼ÍÙ~ÜÍ!psfž™ªeº_¦ÌKü+û“ü²û}c`�:áõ(ù®DP6Ù>@KþIRkp†ßབྷ÷mZÎzÖ`%× ¼?k £«º­þ`ãŽOÙ¶ âƒã„DKæƒÐ7ùÊYîÿî¢1@ú+ñ'æßjÓàl5ͰaÌþë^?go¯F7A”Yëd{ÁþíÉv¬Ýg‰¿ký�áŸbLXàÞ¿¹¶F×ÐGÚ{gö•‰þÑOëÂÆã¾}&Ñ}ûÈ5£aÜàζô°<È>«jhóô0/ŒÆ�{eë³§�’Fl¬KÄF�GD®aHhð@ÿ Æ€£££rŒñã–Ìu%¨Ó¯�66Þz~m÷ûÿã¸IW2$‰@"�$/:êoñ‹nX9 D H�çÿèGÿõ·îM~h¶„I÷Ï1ó/ÇÜíÂ!û½1³²ÌS—.®å8ø7õêt%ÿ\±æßY`ë3`2Î/aKì[r.‡<›é3yðÎÛ m9ÙQÏø¬ Õw¶¼õhÛ¬F¯¿ÌÍZþ ÿ�ã*Óz ä÷Œ@Bݬk=]è—¬×ï@εeè 6 î—�õK–¦ç³X[ïl{Ý�Ùs;Ã3‰eñYÝ÷%ø ò},î+û_¹öÛ ^_ôˆ ‘—¼‡qÀ´Á{Ú­›r�!!†MqÈ ÷ÿ¨K{VCÆ>)ׅ̯Ó~OÕäIîëƽ§0Húé/ûX¦Ÿ›âÐ/ÝþGHŽÊÁɤܸ¹Wn° âèä”} h½dv/œÿËAï],Öÿí<à«YÞû¯ßûоú�ÿ`:C"�$‰@"ðBDÀßÑ ‰@"�$‰À³†­óÞùËOÝ8ž_šãâ¿¶u® 7.•ýCX~o×rš†Kʰf:/7§o÷ý«ä‚ØeÖ; ÆÒ¹ÏDzڧÿk~ �Û«Íoï#>cˆrYp[÷lY i…[ï麢˜Ç÷Ée7‚íR&)6­ �­"™½}@eêl{%ÿ¦íž“ð=ñ2î%±ßàøÄ Öðìߌþ¹Ùž|_ã@mI6×hˆ�¢>ÃXЮÛ�¾ TcAo×êŸ%ùQÞôÙ“ìk%þq zx•˜¯WClùô›‡‚y„÷Œ¥'z–ä³WÂÞá!Æ€ƒrˆ1àð”C0N Äkkû×Ùûà;k»?ÿ•_ù•GÑ@~$‰@"�$/@â÷öØïìr"�$‰À �ò#ïÿò§¦¿=^ŽØ�ýBé°Éßx.Ù*emã|Á›õØ@¨³þ®�Â’U×äK¬¹$¨Îþk� ‡KyXÌ÷’lû“Ö”ú%ÐAý ¬õ+˜«4E·ÍàÛ†ýàŠÐÜWÆÙö¡Æ–·z¬Óö©Í‹rò£,ÆrF>ú/�…ì2Vëz9þšg|» æðòµŽwá ;õ|H¶{´åŒ�ˆë0i@A¿ä9ˆ¶;ï3FrÍŸ³™^¢md¬ocHüÂF‰¾ƒcö\½¶Û.ýˆS½ ’{úÉR‚Øå]胆‡¶/C^†v €u5Xnw4ÌO'쫤ž>(C?ªl‡¥ .*¡�äµF7Œ€÷ÈdæC€ü›áÃp™ƒ^ ´»Äxðäµkå&ûÜ`ƒÄ1}°”`“†ëí�þɯù.jEÕЗ‰@"�$‰À �æ—ðÒÛìf"�$‰À �ø½¿ð�“²ñW§Ý­2él°ÁŸ—û ™¿†hIŽ!§rGY]]ïO²½'6·|Hf½‚TRw) T<,f›y+‚¬+ß\ÊUCA-¯äüV¹r·×Q^YôÃŒ«žënï}«·�ñ¯uª^ÙèÙz­¡%ÿµÜF$ù­¬1†Žfl•DË5[r/̾7›ÚCëGyc4°Nèƒ0K¶%Úø/Ès”™Ï3î¥å\Ô ¹fìêv)€-0-Dy_Ù&S7üè'F€UƒØ#rè 6­G@ôO€ºÔÌW}Ñ6iÉVe¶Ñ”“§Ëˆ›F7ÛºQ¯ÑsF¶Ö«õɦ |ƒˆµ X²à¡ˆÖœØ´.]–L0˜<ùÔÕòØO”C6ÜØØ,çΕÁîÎÍÝ£/þº?öu7Ô™!H�D x! Ðþn¾úš}L�D xa ÐùÞwüÊ#ÇãÁ˦�MÖZoqUòï€9Ü*&bažu]??EÁì!sg µ%ÓMqåû cáp/il¹%÷«:Á(«ŽšG{$Úò áR¿&OÂmÙ­ü[÷‘oYsÕŽ4ÌÔîD¿«ne ÃfÛ:·BdÂƃ¨£,c‘;&l$•LW⻀zap£u!ÓÆmÚÙ|‰�|Ê*èµÛ¶Óq :µ$ÿ«wÛ'¯Õ·2 ¸ˆzè@�]mÉ¿:tµ·Ï•ÔÓtê-eMZ@´£‡‚y!_u)ýkûBqô;ñ)K.GGj0×~Dª‰Û¾µúZÏcC—ú½§›ãG,J fÿ�Ý Ï&‚.èö1`°p¿€+W¯•ë,8asÄÍóçYβy~cc£7ÝÛýìûÞ÷ä[ÞòD†D H�Dày‰€¿��D H�g�·¿÷ᵃ�<~4]¬u;ƒsp´M.Èg âÏÌ?¼-f\ùõéôÜØ�Yà–üCÂ*·ÐËÿø ´€zGäx΋ãêö9$Üj´þ-òÞ̳Ìûè·m¬šhÇj^+SÓ²RËné¿%SËd«�ã�·Lâì}­ãúý(§•ü×±Zr+ëU㸠º1ã¯> 7ù¡®): Õ >ê¡be�p7ýˆ5üÚÂÊ`"ÃöL·3û�.¥c@Ôwý}�ocûD= m»­Žè#"ö#®¦�Jèk[öBÀ’—Iï UëÛvíW«§ŽéV¾å†›Lô¹Ú%jn� j]‰=G#ŽË ëT:,²À—ᔣ÷Øà±½›å&G!NgÓ²±¹Y.]º«ŒÖ×Ëñé‰{ <øúüÉÚZ~&‰@"�$ÏÚßÂçO�²'‰@"�$/HÞþÎ_~õñ¤ÿ;“ùz9™ Jo¤âk­+W[Å­@Æ[I¶$ŽU?ÀÀû tM~%r‚ãALà>€Ú^Ûä-²%Œ¶‰aŸ&«‘Ay9§yÎàW¹J╱¿Ö‰^†l[v+FG”kQ®ê¬³ÿÞI¾k›Õ ñoÉ?ì˜P—@L] ٶ͸$õ5ÍŠvòZ’/­µ^•]¼ç?óƒdŸ‰[�Æ·ÿ#'Ú°—*š6Cë@^;û¯1@@+ÇFÔ«}EiÚ§uµ³÷a´P¯yM;µÿÊSÊþ0Ð eÚ¾pwKO[¯-·±¦�>]j=È" �R{B‹z 3Çx±ÀÈÐeI@Ç�™bp:¢o7Ž�ʵë×ËMNÐC`mc£lŸ?W6ww¿wÖïþϳٌìY�£¯úª¯:Žfò#H�D xð÷2C"�$‰@"ðy!ðÝoÿ¥o:8êýhgx�#þvËdáŒ?W‘øëV�z. oK ë~^äW†VËM›i?Œš�æêm0B�œÇ”ísðÐÅÞº-1GŪ·ò)oú]²[&È R1·Ñ~íntFZ»~V¿�Ú†µc“¿F®•Õ~°òhÚ�Äk•¹6Wkð8Àè«ãX‘hç¯%üRÙÆÀ2»M¬|´cîb6žlëDºÍ‹ò*ïgÿ!BÝJ´ƒÔ#ä¼�ÝGZö¬NËë¬?•HÇ­÷�ò¡Kû×\ÜñG¾ö±öÝtôÿŒ ò¨Wåì•cjãÛÓQÝr.�Gª”ÉÑ5…{y?fæÐÅq‚JÎ9žbîI„/Ïœe½Ñ/˵×ËcŸx‚™ÿƒÒ[•õí­2tÞð ïÿÏä’€€,?�D Hž'øk—!H�D øœxÛÛÞÿ¿ÌÊúß/7Êát€kþv¬ï”6i âß�äzŒÇ×áö.×r3@Ý®%Øò/gÚ%ôA€É“pSµgÊy¬räÖ:ȨӜÏÕ„ܶ£ý&&]uš 9¨7ïãAÕûÚí¶óVUQ«Ö¬u£&õ†ë›e1ž•édä¿ épd Ï[óÊxºŒ,:¬Õm¬sŠÅ ì•G>ñxyìò“eɃ�µï??xù_yÝC¯;¡¡ ‰@"�$‰ÀsŽÀ™_Âç¼/Ù�D H�ßó]¿ñŽÆ�ÿ¦¿q�ÑÖFw˸¬—þǬÁõ4´3è½îâÉÑmމãöygûV¹l�«’d*ÂÝ Ï¼àiĽ?[:õÂòºA’�?ûMõ¨zÚvŸvMi�¨ùuŸ€Ú¶¼ÒöÏž 1<ÓEú � ¹¶¿ÔiǨnI¼ãF®ÎüW�í>AœÅ 0öBF½‘žëJ/\fɾ¤z ÑŽ#ýˆÃ`Ùªn$‚Ô‡>ë�¨u…¼êˆ™úhÛqÒ‹Ö`^´ÙkÊ›vcXĮ́cë‡A€ÆÌ·ï�®Ú~ÛÊ m´yöÉt½º¼X]fäW§Ñ·Ì>E/ùö¾öµÖŽîóîÑzˆòA¡Á4ÛÆ ýKZ˜ñ·»sŽœŒñmé°¡%çUÎ8ZÑc,»#¼]Ø+`Šš x?òÄãåp2.GSžÓ ÷ƒ¯ìü�ÿê5½fB#�D H�ç �øé{ÎZφ�D H^°|çßûµï[./|Ûœ³Ô§eXf½Í²¸ë?îÓ%8þ-‚d]À´ôØø�SäÙ`«–ûK$1–¡¶qx @¹‡^#TÙ4B4å"ˆ¨f9×J„¼ØD�Ø<‹ÕçÄGš<úgí¶Ž:%ð†ÈkÚˆz+cAm#ê…,}CßYòï½\2âh³ÑG^Ý#€ûÐ]É}x8F1²^5$ȶ⅛yeA°4›¶„½�5_�k�G=ëÚ?ɯºIšOÒ«Õ¥ÌmIkÐ@"Ü’Û1Íù|Ôl¯:–jPg5¨«%ê£'ÄòVîúÜIh v«5˜§Þ0 ù×€ÜY�ƒf €ræ¢?z D¿ÔW/džÄzäU£@�kßh]Yt,aÕQ�;‰¾¹Õ@ÐÄ<£jпÀzñyöºŽÞz†Z¿’}Ó>_¢Fo-oh”V#…úÕepCËÐ1G²D¡ƒ—‹�ô�™ƒÅŒ“ØV°ìMYpãj¹Âòü>aç[¿æ›¿þ×BÙ§øçÎ[ßúÖNž,ð)ÊìD H�ß�ö—ï÷L�D H�;�¿ÿ÷ßûC�rî[Ër›YÌ!›]‚Ø�‚Už’#5úÜ·Ä¿5HÖ%¼1s߇8ƒ£^å\A¢d æ#º]ÿ_‰1´ŒLÓºÇ{š€DÖŒ8M òŸúb_fI‰­k�äö»Sî§ÑŸ(#3dCÆö«þ6/beü'¹äcyblBØÔ¯J ø8(ŽrÛlë›®x0{ã¤Á†Ô†LCÎ¥¨•¦V@ÛŸ0@û�I=¬l½Jª!Τ£n�ë ¤4£aÀžÌ3­þ3yÑÊ"¶X9uIð5&˜¦v£WãD�Ù'W’/cŽ«âkž>tDQ£Ï<ôu—­Cm£5RGÚöMÓ~;¶¶?΀ìÌ�áoÜðiÅ>øøç °JóÌ�{Ðh´Ú#òšº›¶U¡�t•oëÕ\ÞC�šr†iõUC€½V¿/iPܬÜó~Œú, ˜”{å©kW˵ý›"zuýÜÆŸ}÷¾éç¨PÕªúiACáS–?M-ÿàïÿì÷Ÿl|ÛæúK`%;eÿ€}ü9êO—g9PåT ïÓ r Ö \âåÌ7S¼uo€JsƒÈKæƒÐËåN7c>$ïü÷=¸;pK‹Jd¾´¥@¬p±¯ÃRGL²Å[Yë±)[lJÈl.²^º÷÷¸ÂÍ¿!תoÝþ£/R;ÜË=É@‚gßdbu£ÂŠE03+RÒ=:ô/úA¶§#Ì1@,ÀÁùé6XEmAàc|ºéË4•«qMÓºÇèÉRÁÂaÇÐ%ÌèhÉô-C€X)ÚrÆÚ†ý³¾T2Êm»fQTëá§žå­!@Ïç±Ã_¢¬ÞÆ`@íƒ!Ya�x+cˆ²šßàö³Õ¾:Nû€ W›6¶�[}µù€euãZ ¼–¶^ÞÓ tÕ2ï"Msj²Ë­Æ¶- ñ"Gf Úè6]C´ÇC«ªC‘¶wM‰?mK •뻢!k>™–�ÍÍ2ÜX+§®Ü¼7Ø8p\f'œð_¾ñÏ}ý�$ÑoQÏ8H�Dà™@À_« ‰@"�$‰À§DàþÃ_üîãÃÁ_îv.A_v™ØÝ€Šc³?‰¬ÌŽC ¹1Mìš q¬ý'oe€ø˜_ ¸ïË ÉS�õ`ÚC›#Ö¾`¹EDq…ÙÒoé”ùö¡lz"ë´¾V•QORÁ'ÃFëi0MV�^öLÇ=¥”iì�„ûˆ~ÄQ�º*©ý¬±{ œíwí#c,<7!ÔÀ¬Úzè6]�¾ŒâB M|Ö 1oëÝû€¨ã°"ß—Z«Ë|B¼üæ× ¢Œ¨^¶‡Û¿:4DL¹ÏÚKlúì¡0aO€ãmm”!×ÉbZž¼q¥?=Y;H�DàEˆÀ÷}ï¯ÿ­kWÿC·{Ž™ñó�^Î/Ge0• ¬&\ùù% Îó\‚~:³¿=žƒBm!E1óÆP™¬D `iC·Äâ’ðÆÜ/+ò��·# ydc¸Jš™%‡iö™yï£W‚?`]@Ï{.Ü]Ÿ•>1ë�@â¯\kè¡Ø2 µ^¶c»Œ6:4™bÀ %�Åsö×8æèad±\Ž(k«—r¤•£¯§Œ¦¡$t"Dh“’öJ€%Ã� fä«&ýZ€=²ž¤+.ÄŸìPË£�‚ºÌ3ªqè"Y¸ðW�Ü™Ž\>(_‚ñ¢œR#…ƒ²~�Û¥/¤¡æ•èÓŒyÕ`}ò`ÐÌà·zí{íGÓOû¡®¦�a1ƒ`�[Þ¶oN½*ù§àWÂ6¿ÖV‹æˆZ§æEz¥ÇÙ{…¬ÛÊ™nùAì£Í6óŒ,_„nxP¶ÒI9Êe#nrÈ«†€)€ û9L0ø”a¿ ¶×KcT®î•ǯ>Y>~ùåt>)›;ÛÿÇùû6ßòÀxÀ@†D H�DàsBà̯ÙçT?+%‰@"�¼HxÛwÿÒ__Î/üŸãÓ­2�¬Ãß8óœ5ÿ=H´„WÛN‚Vž)"/<~@åQüìȨ%µ}é2¤[z¹ ò_=B¯rþ‡Îv#½6–\©Å ˜Wìò1Õ­Ÿ-ØÊ›ìõ10ŒˆGƒ^Yçlö!F€!÷t®÷'”³�v½$þ’þ ûÐÃ%›µ©·]`½Œ6u‹w‡wg‘%ôšLKü머q÷w¤Ý ~yŸψ­;�,97Þ±ÑÒ5Ь•4ÄíŒE€d¼‰ÍCÇ™q�t«qïU�âk>hRè6åUumñŒ€l›EM/ç¶g¾}Q�™ñA&K–c21y•ôÓcì¸ö¿é‡ýl mZºîfka{kµåHÇ=mSô¢öÍŒ6ÐNàb^ôù‡&_D‡W_º(óéÝ "€ÌÙ¼Q'Ÿt µ•QßYYÒ eÎäUý´ÑÈòV5:ª.ÒÖ£WÈ {¯Ãw‰çï ˜j ˜kZ°‡Dá½=Å+à)6 ¼|år9Ÿ–µõõ·¿æ®/ý«¯~ðÕ>€ ‰@"�$‰Àg…ÀÙ_ÃϪb '‰@"�¼xø¡xzyôŽÅìˆÔEˆÌ&œ²¦O·k×%(�ÄÈ_IlÃ}Z@p0˜[ð¡àT¦¡@�\g�«$W¸$ÍzÈ»BKz݈(‚äצۥÿ®ë2«¾>\²¾ŸMò–Hþ²l®õÊÖú°l­�Êú¨ë$k Öpf�œ‚—Œ­ÒºJíZâYgÂn*(kÍqÜM£HŒ¡‹„o )žáRïÎðS΄£ø�kÂX%Õ€ÀXÅ ]íxe±Jh ˆ=4 HèÑç! À I®Ä;àkÇAܘWb\*�qÖ×<HÜÍkô9Þðvhgþy±¬Byú±`V:N3à¡E5ÕíÉšï=eæß ŽÅ¾WÂ¥ô[â/e¯xTê-Ï4_��[À�º=$ÏUôt¢²|00·Ù“Š‘F5ú£­€±A$ܵõ6]û½24²1¶‹òŒ8È¿4•-!Û�öV6 ¶Æ„Ã8€ ƒ¾Æ¡§‚ý � ÚÔT}°}0—;è¯õF@hÏ¥Ææºa_ÄÔèÅ}ìp«ÌwÅ!Ó™){,ˆ€mFsµF€®"йUNFÔ©p˜ohÊŸ.ÿôûFÖ.´UŸÈú/tÙwÓäµíDW­2Žšú­BÐ`h�@ãé˜'^ÉÏý)}Žœ•¼gGåÑ�²gÀ ÃëüÚÆ¥»Þøàƒÿù•P�‰@"�$‰À§A ùÙù4Y”$‰@"pÇ ðã?þãçn\îÞ89Ø)ËéK!t÷0i»}‹³@°—ÝCfë™™ì¬CVpD—ÙHþ!´a�C²M·†€6ÿ6€º$µ2{ˆ�†ƒðmyžÜH²�¾.›æ¹Z¤�¶—XáBí~CfùG”¯e ò¿»†€ô=çqùGǶ9¢Žnÿuã@‰5}“¸¶ì‹ž8Œú£Hº¹Wn•§8ù¢/èq¬æ"ÔÔ ²oz.¡‹q9>4†"5C^É?Ñ€ÌX�ÈìÒ<£Ô¥báqu�Ø28ÅâÅåŒzŸþkPm»7�F ="Â@Co{æLüícŠ^CN�•GJ]�¾6vÆžîV•mä%ý].1“áÆ¨”%ú¶ëãŒã½·OÖm ös9� g^¥ÍP~dbn<âåÌ~cäÑH Ô\ªhg÷{}ví±#à �íq›6ÿì=·èqÈZNp¡£•mâVo7rŽ8žï™üù7�¾.hô“çÐ[šãþ/ºJTì#aG"ØÔœeQæòϵÈ8ŸbB:'Àõ×ËÑñ±¯ØÇ¶v׿öõ½þáFEF‰@"�$‰À'!Ðþ2}RAf$‰@"�ÜY@4ºïüÞŸšß¼ }›^€ŽÝÏìÿyØ D>|ÉYûÞI,˜³€•_Ap$'bdc ?k˜Û{eª7?;A†aCì ñÀMÑ– Qv'JB'YÁÉ‚ü5vï3Öø“ÇÒ¡5föý�>èì¿×\iwCÂ�«<ÌÑ#ç‚ü;KM:¸¨ë¯ƒ~UêGAsGD¯Í·C†¶Ü´l®ó*ÊøÚûjp¼t#Glö×ȸtbÆ„]0¡O§ÌîŽ\¤§ŒsÌýCKugæUu#Dé#>a¨}ôǼm½z7Ôž¬ˆ¿=cзzÇhd¤Mh�÷S�d?ô9dÂË€ºQ‰¿Árgñ'²êÒûÅ¥£$&ÌTKxC6bÚ'?t3¾¾ k¼XèÖ®³Ú8вɢ÷ìõ_ ä…íÇqð’ÍgàêËÛ^¡½É³»ñ"­ˆ~mÙÜ@+^ÒšŽ¬¦gmýª·©s›ŽZG(D´QÈŸ‘³�­ŽèK[Æ�#›ñÝñ½¯:&¤•‰~ãÐ``éïAx€]ì½�Q`Â÷a¾N,\3îoìÝdiÀ•r|z„§@ï©Ñöà þÙ¯ý�:®üL�D Hn!à/[†D H�D üÐÛÞwÊQä£ùd ž½aæ¿@þ]m.Y‘}q-Ù8�Ó×8ÆîÌz}$5Èy¼ÎàmMžõùÙ "£€Yà`=„~¨T[—¸q ÏÙgfùº�ù>†gô·1Fì²�ÿüîf9·�€™–úSÆfê4Ã"iW%±1Û ¹ " m[BÀi¸yò ëjØW›Û2€UªIè� �n j a$}µ´ÒîZI;Ð €ô‹ÆN!ÿGÌús�À 1hˆ£‘ /”ãø„ØVÐæˆâ2mK«="]Ë” 9û¬´�Í'@ø+5ÝÔ3Ó-ù·žmô²º˜ChC¦ŠaG¢”½Xb‚ôjh.ž½=u “1KI nÛåÙÒ¿iWÇÇ>ȳg#›5ê€VÒa�àãu Nym§êV¿W¸×·¤»ÉkË”o†²góWé¶NÛFÜ#ÞÄáAúÛ¼¦ýfÌѶÊVmƈ·³"‰F ðu ci`XA6ß¿_¨©›Ij0bÖY¸<@ÃÙÄ=Ž÷Ë�ýëeÿd¿t‡åh°ÞýÆ7þ¹¯ù{˜!H�D ­2$‰@"�Üáü³w|ðƒO>:û�ãmffÏÃ× €d�8È}]Í ë‚?•Àãz_I<ä$Ø™äBh¢n™ü)®H“:© ƒ­u¡vApl'xR;iq‡™bÉaÞ®SÖ!ýÛlôwÏh^ίu0l•�­ëüiRžD¿Ý° ¡ÖŸÀ: V„&–œÕÍ×ÚŸÁ§ 4âg£V¼Ð)KkC$«®V㪈²Ùn2ãx@ñô�ƒšc8…žpœFN‡/Ǻ^3òæåê Àx#ìè#—{0­´²5T£GŒÙ¶,úÝ0ß íM,?ëànþ«{=š™2c,Ê›WgüM—yz X†b¿c®Ë4’uÜøkÜ"×)Ãát‡ÑAc�5«Ç«ã±0MÂsCï Ÿ%n)°_fÃY2Ñáå\gù‰6©öi¬b‰v<ßÚÖ*¿yjÁ¢cÜO+âþ©ò½­o]‡OkÞ™xe,LSÞŒ¹‘·ËõAFËM”Ú6åÕÐÈ+èûÊqB·z•Ô½$0Ëõ‡e<—ñ„½xÁ{#žß¹ÉâãÀIÙ;Þ+Gãýr2?šÖ:ßþ�áO¿�D Hîpü•É�$‰@"p#ðîú+åê'ßuºw Òu÷z|ç :¢/»c§±ü†]˜f‡ª±‰{™q;ïBÌ‚Aºb†‚ȽåÝ·eb DUc‚i á)³áæS‡K.´ÊÒ6€ÇAÇ£ýˆ76eg{­\¤¯ÜÆ Çùèk,p†ÆÄÑz± ¤Ù¦ø¯á®2”sU:,‡ÃÁ¿[¡¦ƒÞÊ\¥ÎJQ“°5™¶SCM™/¹‡éÁomÑ~KÔ¹tkLÝÐ�|ÈÿÜ\®1Œvʘ�÷'Çáê=e,f{ç�àÚg(!:< ö°-õR³þ(5½rÿ·]ÆZiñ­>·ûPÉ~í§}®ëõQì̼c aÄ Lä$íÆŽ¥× ãÜ=>sÞ \óçìîßïo–é©k&SŽAä’8/(ŸÍ™çÇH`ßzzvp�û–�!†/�iaÑpõ¹ïj PC@6Æ e<°Ús{Z/ï%×õÞçÞ”­.uVå�\”µ:š±­±yÊ�3mÛ`áiõkŸl±�õÝkÒ¾‡E|j¾+–ëÍPûTßÑKbóHd™-Ñ;†Ð¸³âöÛÐc0’fï#–¤si÷ý }… Ï ±3Œ"sðZrFa\Ô½ÆìíB7†üO[¬§QÿIyõ0v â¢Lç ó…Ör ³ø„\+½Äuß5çõªò[Ç>W�ÄlQfì?Ýö=„°Óß%Bú»AîONçåðpʆt�Q6}ì*äŸ}Æ,o8Áe�òñ‚ÊÚþ9v<Óh‘E÷€N�ðõ�Áñ�÷ãâÎzÙ`=Ç®çXßqn{½loŒÊÆÚ�ÙÿYYg'üáb†ŽºÌ/‚Æ@ ñ£z]RôSóR>_4B{T¡$>^Pòëò_ ó¼ Œ�Õ´u<†ïsÕÑÊÛN›O{Muº…¨ùæÑ7¾QË´j£oö# <"È=€&­G@‡÷½ï àÌ›„,ÿè—OeÆ¿)F°9øLñšéq¦{m�Xp­�ðÞë-ÐùÛóáÍÿ顇r#‹ ‰@"�$wñ»s�7‡š$‰@"p�Ÿøî.÷ Ÿ³-Èó3´#óÓ=�±¡̺ʃÈC `Ð�º`�À"v‚ã§DN3û•ÛÌ%J¸#Ëu,o8O#ÇÚü!„¢·Ð]¼£w�ú%A>8µb8ƒžr¬ß¸œßZ–»/ŒÊ½wm—KlQÐO!ÒÕZ!eª5ƒv5i™ëO]{µ÷ÑJ”*s[P” Y—DÆU³V^}ËX#Ñœ‰šêgr>9)<•hKßèmi ^ɽéÁú›NË)®ð'ܺ=)ëÌ ’m°ù[(ÁH²àZbŒqŸRAê}4±‹~0KpòYB ¥‰¶?àŸTÒ]öÉÆ¢C1 p­ïóüg´'©¤U =èÅ`3G)¦Œ;ådöÅåÊ�~yòòõrùÊÍríæ $s\ö0ŸrºÁا‚•héÅ;Åàœå–òúLÜÃÏqRèG“kß%¶�yú+¡wÇuÜÛw·ÖË]vËÅs\ë�òª�N¹{mY.°ããf¥7Þóâ³##6Ñ;:ÆÐ�mÑ�-öYèQÂÈy7‡ÌŠ»Ooï?ý™úÀƒ©ò>îõó°„�¦3ê´ÄØ@ –㙳WÆrÄÝãb(±‘ŸwZe"¿Æu˜1àðNÐ !ѯï¢Ô—ULºõÛÐx¥GƒÏ6Ð8ž›7Þë]bÙ­«.i¿wæk@:å=òxÁÉâ¨\?}¼lîôÞ1Þü‹\c“!H�Dà@ þÝÍ!&‰@"�ÜŽÀ¿úžýÄÉ�á×A–ºöo@ M�¤‚k±sÆòŒ–¸KNœj6î�‹ÌàÃCœuö¿�ñ_Àn—ÌÀ+Û‘ºæ_YHǘ9�ä_ïgF›_%#�ív'e À…­E¹û\)wŸ” ;Öû3“Îll‡ì³ÎZýæyê s[òº_qp@IDATÌÆAòÄ�¦ô˜B„=à”£óÂ@Z½„$ÏðÔÐí{á© Z(‘„ö˜™—Üë)€u‡ìj�Â;‚õþz™³Ÿ<Óõ#Üø7†k�í~9=>-GG§ì&¿Æ3ä=@†YãŒÁã&ÇÍ];`6ùpT~õ7q1ß(û‡I7¡�‹}e]:3ãØ}€›FðÐâ_ |OÜàpý­$¶}øŽËk„hÉ3^BX\Œ=îñ ·À»$Ü?š•/:?*¯~ÉÅòÊ»·Êý[Ýr¾?); F�õ΂Ï@;ôÝÓ*N ù§®M鯕‘Æ�“Œ×¶ ý�ñN)ˆ‘uAÉt*ác¾qi`áŠo2‹ fðc»Â:qn ‡[ò¨e›¤…9í´Ë$ý¦[òù~§�kÉ¿øøÎʼnæû�rúh]îâ;Ë�õf ø®ºÅ{žßtÆÓg…iç¸w®±áä òOËh­óží²üæ×Ûë�Ôš!H�DàÅ‹¿ �D Hî4~ìÇþ¿»§�®]ž@'„u(Â&ä²rVÞ3´K,Âu¹5øëCüròY˜[fi�†�n�ÙH¨6bUºþ{c0-ç6律ÃrÿEÈ?¬1Ý]¸A\�EôY -Ñ7nÉ?“ ©A"ç5“´cÐå[l§Ük8eÓ·)Äê—k½uùžKð®‰ïKh™ÑîcÌéBz+Ï–(V/ 1}NAXº¯kÇ—àÉ*}:ºø/»›ì=°YÇëåÆA¿6 öÈ,z¸iÔJîÞßC 6dyŸ²ðªŒ³á.ÐEr�a¡Ë,ÿ v>Á«Àsé{£uÈügË—òÄSóò‘‡Ÿ*}ø¤9>-�ÎËGoî—ß|â´Üå�{wÊ—Ü{®¼âÒEˆýI98¹Iw�ØëbV†lœ'¾ fÅî�1A£o%��æŸf‡8fÐ÷�wµ»ðÔ�C¼Z4Î ãr;C¬:í¿ß%É¿±|=vý7Ñ„h‰Ûº/…±25V]Ü#k�6¿ÿ¶N5"Ü2˜o¯íu|‰4Öq£.ûXubò™Sæ·}}¸Ž§Å.K6öËøœ¾–}®ýð÷ÿÌoo]Úþ/|ð?}ÌÚ�D H^<øë”!H�DàBàG~àçÿ6›ƒÿ÷½ã ¥7Û†¹ÞYò¶é!ÍìíÔ â IÕ¥bÁ¯EðYÄaKd£–A*žîàìuÔ‡·¢28‘÷i=±]î±eòZ´U�3fø‡¸µo çåž ëåe÷¬…ûÿ6Ük@s]š³µ bk=[¡%\g‰¿m}ªüÏ·Î�¯ø„«7¸Æ ®÷J‰}Îý²Ö}ÂFonö6a?Öö“/œîËßeÇý>À÷¸\ÛoŪÃç!yÅœo7Æ“ôwëå'€+7ÆåÊÍyùµ<ÂÌÿ°\¾Ú)×÷‡x°OÄ¿?<Ç3ss¿kôÍž¨šV].€®Ø¸òÞgCCŸ�­º{?O=ÒÞ×\fÓã}ªRuøô“ÀÛä°#Ž])ÑyZ!‘Üž²™`�µú}7ÅS˜±tÁ¡?;.£ùq¹o»_^óÒóå}ÑÅò²�n¹4˜”sýia èr‚ëÿÃBÆŒÒcrçý8Ò�Ò ›vXÖÐåûÑá2îâòïR—LYÂ2w_zfP�×{{[_úx_šü�q$ôw¦­�´hÄH‰,×(`~\æ)³*#Á½_&· ¨Ç V-ÙWBý¾X>ïöØ@u×2bÆ«ÙÃÓ%üuÙ•²ï©x_Ç+`/Ò¬ytk«÷ú¯û¦?þÛ¨Ê�$‰@"ð"@ þj½’CH�D øý€$tÿñßý™ù¨s¡tOvØD�•¿�—Ì™á,lÆ7ƒ,NÝ`ÎYRX©ëÊ%î ^’6ùäwêÖ �:k¨›6x�Þàu/ô@N4 pbm@eäIP“%ç— hë£eÙ-Ê¥ÝA¹Wîû/õXÀÜ5l¦Ãúe‰Û€¾yä™õž­à.ø’ÿözz;­!àéùŸë} q[ß™ÚêÒ-1«¸‰sÀÄòpvŠÓþ” ÝÜà”çÆ‰ Üw™Ñvó¼Lœ½û ¯\áqQŸ]`Ï3œû,=®ÇŠúù°\Ý[”�>z³üûß½Z>þ$3ê�3ÓÎNÿ]6_èíÒæ&äžíõ€}Ƈ»õK=%ãqN½1x…­�þÎéo‰T9�﫱yT‚¼bt²N3`‰®ù5p‡.ýêãˆB¤,3²ÔÑKC³Š¶�pŒnù8Ã@2eƒÄÓéÏò„1ž¢kzµ?œ}Ûßüú÷9º ‰@"�$/\Ú_Úî²ç‰@"�$Ÿ1?ö¶÷=~¸·¼­w¡,ŽF�¥�Øõ wÔ  ÓñG?ǺA´%纋k�_Á •ØÌ%§á`&÷á‹u¶?fþÏä_C€,Ù ¡NK>¨_ â G¼ÍËKÉw6–åå÷� âžû åôJ`GüX³mûöí鬕ÏT8kðè¾ÖÐÿ¹F’g0<}(¶g[þ“$¶í/¿[7¸Àâ?Åx2cÖÛkÉUÈk�ÄóÁI´ç�Ø9û¸ùÜo�Óé:õ6ص¿SƒðÿÎÃå#�•'Yý½Ïò�ó÷|q9d7ÿÃÓ nÿžØ‰w¦âû ̱Ê0#.™• zl]�[Ÿg¼/Pòÿ4Ÿ8š¸DÔs6Hò|K±Vƒƒï@Ÿ÷20r­>ûHÌ!í˜ �§M–3ôÀ`8ç�Z—írR.pŒäË/m•/ÅýåܳY^ÖÝÀÁ‰Íy™Ø oˆ©† < Ø“¢îæO�b,Ž 1Z0¦iðÅË¢ùbH¬É ‚íà“È3í}–Êx�>ô”P®>ã^ä×eÊU\[½Ö�+êSÖ>ÔG¯šº�ÎÈkÚjúcÝ•€ò û7 ÖºeÀ! »œœxÔ$ß/îkš8�ÊñøÏŸnœ–µõÞÉÆÖð[ßôgþØ»Q‘!H�DàˆÀí¿¶/Àd—�D H>3~ìû~åâøÆüê€YÝ.ämñtqëÆà¢7‡ÌuÙ!Ý)A׃Ç}Îp® üd@$%1ºð/†JnÍ )�Å:Ûßz´ÇjP.< �m=Âsœ|LÌ꟔­�y¹¸ËzHÿ«_q®xŒù:åCôö!‚]7ÆcêÔžM€_âß^-g$b—øöæˆãY6ׄÖÐ`¾mŸ I3¼sžÏ”™v “ÙÏíCÎkÛqs÷¤… ¬]– ô˜Íg¾›Ó<o¶ÜaÍ÷nyøã‡åC¿ýhùè#7ËÕ›½rº<ÇÒŒ \Û;¨‡DXã î=ô²œò¾œ”9Ë z‹]H2ëâ%ª°KÉ¿ä·Ã,½˜yŒ ¶wˆÃp‹ÖJÖã¥hfI„! ,¼+]¦§ÃCf~ÚÒ›`È;£a` gË>°` Bªž0,!ø¸AŒX&QNöðŠ8-w6Ê+Ï ÊöE»åe›ÝrϹse ×ÿýí³óÿm®3†éé jdª§Ìø´KW$þkS¶ZÄÚUŸSCØãù‘bâøb6?ò+!ÂO¹Kª ùÈ9§Fȃ…ÕMWãB½o ¼ùzê„7N´£.Ÿv�éxìøp!ã34Ôú5Ö|¥7‡KºxÔð:Y-ú5Á»¤7D!§p,!þzLÙ0p<;Ä[è˜UãÅÝÿ_~ýƒè{x&1:õgH�D xþ#pë×öùß×ìa"�$‰Àç�Àþ?ï=\ë]Â�{ ¸U¦ð›Â¬ÿâ/ùŸÍ�!S ~Üe^#@=� ÉD�4bHÒR±2Hþ M1ÓO¾D?È¿Ë ðío‘Å¡—|�‡·²’ÿ�µi�ÿû.�8ê¯[î»Änö�›¾.íAþ!*R Y Ïlê?3Ü£%–Î6¼Ý�ÙdÒ}Ý©)ã*1Ã;¢ÍSÆ´ym¾÷ÊJZÛ`ž¡%õmþ§ŠCš¡ÕZM|v¨„û¶çâ…§Å<öcpG÷)ëàñ ('Ú1L¯³Y_;_ö'½ò‰«Ìò_Y–_ú¥ÇËÞþ ì1Ãϳ_Ø¢¿ÅÑpÝr4ᙌ6Á×øÔ�ɯ{4hNð�âhO\=bæ?£|sñìjʘ‹{èlè ÑÈ­©[#õ^éjûµ5G�¼Š,ÿ.Çġ<†)÷ñ·…h•~«£¶«¼K¸¢Oð8??,_ÄÚ’×¼üþò_v®¼ê<Nç�£ ›d¬³¿AWy¨PN¹¦#æ¼ žÐ;š!Cš{=c\6ã1{ºö{dÛð’G¿h›ÿÈ×Xbç0°˜2>ÏöÕŽ^‡ž"«8êsÏø4´›ªOUÊ…qH](T»Dߘ¢è“Iïõf𪘑§¼z,WÖ2O:À°À°èà&IJ‡8)ìo\f¹N·lnßò¦ozÝßäw�D Hžçð¿ø ‰@"�$/vÞóOÞ÷å'7¿=ê\äìw‰Û(3Hž,|ÄŸbå‡@ÁÿPZþø'¥¹Î*Er#Ñ`–¿$z®Ø7€¼ºÉÃ|äžnˆý̇3ô!kÃI9Ï.ÿ÷Ý5*/¹{=ŽûÛ`R7î8¢ v#½Ð-ÛËþ9�üù$åO'äí}KÞ%òœí?>fÓ½É$ ››Qð�–üY'f«�Á{Ck80Ý’ÓŸmо!¼ñcݤ«°ÕÕ£ »×ö3Ȱޓk¸™ù>:eIóM ê{“Ayü;ú?¶W>üÈ5vô_0žsìþ>('ŒiƳí² ƒ£.îá°XɤÏÛ>hx‘<׫vHãO%Œµ‡­|×x5Ÿc  !ÁM:¢ÕG+!6¡¯ùÞk�è1ÆØW¡3’ñ~D=Äm­ÜúÞÆ=ä\ƒÒ:F„MÞñsx7¼d³W¾äÂ�¥[åK/m”ûñ è�÷KO+› öÀ¹§AˆO™ºŸ¹T«¾ ÑÃvT’z=:xNÌ0T#mÓ¡z5ß%Æãw(zNAµi‘‡ÜYÃÁ*É èê±.ãbÄæEj=Êbi�cou�^› êiâã—©¶Å�.ÒÖeéÛò]ö¨H ,ëè²Y`wÁQf#‰‡Å`X~`лñ—zè!¬�D Hž¯øS�!H�DàEŽÀ?ý{?uº»ö²Q¾[NÜ~Tgaæ.˜ù׭صâ~f¬ºþ¿’5÷�àHðÜ`Ê-û¢ÉaÂP�Q Y  ÖxÖ ÏÐ#®ŒÒ]ý<{œuØÛ¬ù¿÷â0Èÿ}—ºe—%Ë©3¼uÇÿ˜è§Sq,Šà0耤F�7Ÿ}h‰¹^¢ï}¸šÛ?‚飣£rõêÕòØc�•G}´”���ráÂ…rñâÅr×]w•{î¹§lmmÅ.òêÑX ¡ 5"¨«më¶X†F¨ŸM\›^ez»"Ï�päAɬ×}º½C8}>,ëÏ —XŒa‚W÷Çåá'�ʇ=(ÿþÑÓòðåiyâÆ²ìŸtËhw�Ç.=�a®xløœœ™žS_¼»Íx=7Ák6“ÎØu ^C´ãeˆ‡Ì;æ‹¡Á&¼Ï.JQŒº>»–:‹BEÂRejޱ9ÄŒé–tK 1aøˆ rÚ¦�ñoC5XaÜ’ä2c¯/@^oìÀr‰Ñâ¸\\[”/º°V¾ôîíò²ÝaùŠû/rr@)çy�GSƺ¿_:x€¬Aðûìpʲ�‰Æ(žyíoÛ?bò}¼ö76ì3M>cigêÍ·hEüÑf½Õ^mY£¯zàqÐÜG}ëx¯^Ó@f·ÈŠ+òZ™¶¼ÙÄ0ðñ™ñœ£]Ê[Ö÷ÿu¿ í¶-™BQÄè«dZ…Ÿ[hÉx%`h…<µ¤]RgúÆ�å·~ë·Ê>ð�òá8îG£QÙÙÙ)_öe_—rz˜¯.ƒGʵiïM·íµq ß º›Ò„§Áy›l3äºôZ`x~Nû:³ 9íÑŸ˜�GÍÍë‡å·?ôxù�ß¹^>~c­Î/Ò¹{ÊÆöZ9�¼- ÁípÍÁ{¡E€7 °€(‡kN‚èNø^aʼnÊ;ÑöÓæ£“Q€L¼Y1]ÿ šêÀ”ôR¦†ªÆ\Bˆ7éZP…ªÞ�Z™¯â„¤MKô P´1‘ÒõŸâè¬ñ6!ÁÆcc8b‡{vX¬•ǧGåÊõqù�½§Êùþ¼|õi·¼rƒÀ¹õroo½l@~×Ñê²|?ÊÝŸ©Ó}ŒÁ‰Rgþ]ÒgcBÉ¿!È}cð%¶ýØ4Ñ~Ûkú¢Œß=ïCžT…®Þñ'úJ…¼_ T(ä?âzߺþ+»ºYÛ‰ï÷Õ €ã‹�Õo¾õŒ­ãØØu¡þßYìÇx›tû›xFl�/ÇA²AçxrÄé ‡¯šO'×Þùãï;ôz¯yèë_û0ª2$‰@"�/»ëå.Èÿ]»ýß‚\¡vÒîb�.B´$ÄYJÝÌ¿E •ùlÃYR}F�DδnŸß�}ìcåýïù�ßø�ò‰O|‚Í9ª°!ûÎòïíí•ÃÃÃòªW½ª¼ô¥/ �=4 ¸d@]­nã–üG;1†ß»×1jŸ Ÿ‡Á<ù^Å¢Ëڟ׆¶šq¦œGIû¬Y?âˆ;\ù7×Ö1¬œcÀ‡ìBܶb6¼Ó?, Õè�÷Vƒ%gìýç:öXra+2ABÝúï �°w„}ˆNÙ·HŸ�ÛÛ1®ÐÓ ¨‘õýª5È£3¸h<ˆú² ¡²Ê­fÑ©…I‰qÙ®ùa‚¤µ2 P²ÏG š‹N·W÷¨D|‚áñ¤<) 6êÏÊKïãćµ�²vî¤ ~÷”¥órtã€%  ·Q òV‰~ŸÙ}VPSL °ÜÛäPÂÁ÷C� gÃíOºÞÑN+äË¡>=Çq«èÖ3oŸúJ³¾œMpC¿>ëβõ};¬í1‡ºøÇûkn#£Î³maí`…„×÷[ƒGs &¸Î0®\;Ú/Ç,Ùß»^žºvP½²]¾ìžs,à}msr€ž¬£§sfýÝОxDboÐ/“±§ @˜mŸ+Oĵ¯uæ�|:PGγ&m~‘ùõù{o?­©—�¤ Œ„¥*IjÉCБôJ� ÊJj$ 7‹ƒèBô�¬òÄ\rgÅ«`–Ë ZÂÞÆ ØŽ×ÉÉIëçÑ~z 8£o¬AÀc[C�§¸Y {|èC*—.]*/ùËÃ0pÖ(Ðêm;¤ª¹‰¾9Ô¶ðéqŒál¹®æõùTÑ ivžK 8²Ž~vXÓî¦�—ÖÁøžÂ±wó²5ãŒûÅa)W»å*÷‡T™à¶>Æ(䀮_ð –LçöÐç1Œqúîþ®—×ñݰhÏ„�»¦ƒbß_ˆ>‘[é: wÌoŸ R@Í=;Ú*ÑÊZ®áÊ?aœí¯÷zô<¢ŽþVE-š�~ÊkN�5ò|7ƒ“ö�³gì¤H*Þ:b{Ï‹•I#t�ûþøa9÷ÔiyùÕeyͽ÷–?Èñ•/]ë–möÚXá¡ÀîøkºXRÆ|¸?¡Kòú·¬‡:f»<Åð53A³Ñ'z¨YN/ÈŒqUÒ®Ao‡jÏ„Dè£N|{¬ÛÔôHL¯Ê½9O’ð»Õ\4 Üï›î!­åýÞ¢ee¸ìSÈóÿ— LxYoR:£K¸0.•Óò‰kÿ¡ôÇïø»?òsïØõ¾÷Û¿î�ÿ%¾Ä1T„2$‰@"�¹ `õò�F~&aÕ¹•pC'W÷mÂölëS‡*ÁÛt›Hô0žg-¿­ðÓÜ„4•o¯Õ¶ßÆ·+˜@l§„Žçã²wå´\¾þHyäÑõò.�/_~q§¼d³ÇŒ�rp²(“Ó“ø†uGëemÈyôq†÷Æ„M{ž ±ÖcÆï”_W¸í“ ÃßÝÕ›�œiI¶}ök&\F1ÓßæsU_Óˆ4rµ^­SóBº«FdÃ`%�$èªF€3ßCØeõÔò[ú«¬G/òœ0.)ƒúèæ´²v÷+Ko”ùéû-ì}ûßùÁŸüöíwýËŸøKßòà7òýR �cŒåÀ,¡×û fë©åÒÞZ…ã¿x´Ê‘svF߯…yÆáÒO:¾Æ‘n ”,«ùMÚvÍ‹‹wÈïo*|£¤Û_An©RûÔÄvÑúŽ-ê´ùˆ9¦eƒS(øÞ FxIpD©ûRL�¿áÿgï̓=ÍÊ:Ïç·¯w¿ys_j�*,´ Ô±éK@cJ´ i¤—ú�é6&¦#f¦E'¢;fi�îq»uÀv DDĶ‘Íb§ª(jÍýæÝ·ß¾Íçûœ÷½÷fVVMUYY7ï97ßß{Þ³Ÿç,ùlç9¿õáû†¿÷‘?ÿÓ·ÿôÞÂzô¬i]ñ!!!!ðü!φ±„���Z�Æ÷OML¢Z�ü,|„J³©èëÎw×Nà%„}ŠÏ;ÂÎíȼR8ö¾…¿+�0r©[g(Ì5¥!I<�“&ª•}Š %眈 ˆÿ†ÁTk ÕÿZ•+ÿ ’JeI>Eo†ËËä÷6HÝÿЪŒÄëñÔ¯³ÜRO—£5üêQ.½C;¶ýíÁIº„"I‰Ï <*b^ €8àÈ‘#.Ñ—±?÷² øâSíÿbH@6®; ipÒ ¾BßSÂ<�iP^H–EB ¹ña4,ô–Õ90MŽ;o=À÷ Ûj¬Yw )5*å#DÿCŽ 8�ÆØ v" E/S‡Û=T °—o¿91E2�¡Ÿû/Ô¸^qT±×mlt›væÂ¼U.�ì!æÇ±©I»m–yTî ‡41dlPG^$×zÔz-ÌL MÓ�B€½ð¬Cîì½Rª~’Ö�ŠÀï?™52á;úúN²yxZüî·3 Òò¨À¿µO$åz~Å{ÙÌ *—Ÿf¹Ûö'ehëHÛ§)#@a°AüØ ³€nìShÌt¸¡bcÙÖkoþÍ}lø{úñ÷½ýM?ù®ÈÌ¢‹ˆˆøî@ 2¾;pŒ¥DDD¼h ðÉ�|ò_m`­¼R.YARÝ^�»tâ Q˜C _*úYž@ÄÓ|0x!ñ…ƒ¥‹¡/¿c§Jð íwFa#(I-•SyG®"Î7e8 ú0D'‰~fˆQ0îøãnp·°^EZgˆ³Ð”ˆS•/’3ÇjY¤úuvªry¼æ@=�Ž3ÖÃŽ¿ãu+�·OéEe®¶'ñl‡K°(eö«1D؈ ·Ã‡Ûí·ßn:çÿÈ#�8 ½ @6”Vľ…ë¦1ô¾ÞN„™w\o÷lCA]~Àœ# 4ÑÇ5†4ÙGúÜ(Pª¹B±bù±)k­/ÚJkã�ÿáýyçï|øÏ~ýÿà§~)2Èè"""ž"àùÁ/授ˆxÑA ÓnýÛ±Zd Ó"þ…ăy‹Ð—:¸H8 A…(<�ò ePäE E˜ˆ˜N�z|"ÖE (�;QšJã�¤VøuN^fѳ<¢‹«Ð–õ oüò‹ " M�PÍÃD�u ªo»@ЫFÊWûxÓâ‘ZËëájß®G”— v©ÝÞz÷‡†‡X¤FÕVùEØKµÿàÁƒvÇwØòò²_¨«¥æ¯ëÿÄ Pz…‰ ô©ÖÀääd¨ç:ÿªï»�ê™("*õ(D6ä娹ø3v”qh49§¾>!Æ\à8@“£¥º"Œ°Aš>²ü†Áò9ìº�áX»ï2îmÙP C@V,C0Ëh&²íGZ n[«-[Y?oÖíRîÓu;0Æà\@y˜gôùßë²Ö˜ô΀®Zq~¦_kˆÑÐ8$K…ù©e¶ûœk‰à ~ÅŠ vé!Ü׉çÛñkø|U$évü0WÜ€ê ,Õç{üþÔæeé-/y¥á §z½½IœÒééÀiÊê( j)}æß&öš$®êØ©Ûäø” Z\¸¾d›Ëÿâß¿ÿCÿâ·?ôG_Ù�¯¹ç®»tdt×�ȸ Å,/V|ö¾ûŽ,ÏoÙGYráRzIê�À—þ2D…üBÔ¥ "Á zÞBÖ%ù—Óéº×Ü1v/̓�jðŽÙã#�¾�ÈP�¢ˆÓÝâP”h@ìpºVÁJ:÷Ó�# Å „>u�ÄÉ Õ©vŠ'/%¸Q/çå'o5\éû •±S/%…äÉ[¹äTJ(!ôM‰BBûzäDЋi‘†É 4¤î/-©÷Ëâ¿®S@Ì‚f³é7ˆø¿õÖ[]k@Ú×Ó] U¤>xÕ�¤ŸÞ/Eò-Æ·'�ެ•hw-�c“YkƒÐBý¿;ذ–®=Äp]�²z0a æ†Ø-NŽò+†PZ{:Bªc9Ilæ!ô™Ó´WFÀS7Rˆ'¥94䊊J~œ#bºômµµ…±ÀU;»¾i‡6&í·_Ü2[³iŒaNÖH ï@Gm6€R�–©u‰øv\AÌOEiíÊP£[bè¤Ä~8LC:ò)Ì/ÔHüa�„8ÒÓx5î£! ã[*^†‡‘ &€œ×®¡Wý!h»=ÞJ•E´´xÜé•zÉ£891GŠylRÐÙŒàÈ•”º’±EÌW”…l|â MÏpTekø]@[eéû[=ÚyïŸ~´qh.wäî×ܽJ‹¿Ï‘ðl!ÓEDDì´[£'%:Ÿ¨b¸®/l[H=(7Hµîˆa-)¢K¹ñ‰°S\ ¦îÄ7é¤ D¢S¦€+�ÊS� ëf'L{Ååñá[Ä¿V¨�9å’ÃIHÒŽð¥[ / „Ô©L¦’çwÆãõÛÐDÊÂ@a Û0i¤´JhX¬tÛ¶Öj[ƒ�cGoµ±‡lkm™µ·TkÍwÖßûÑ�jo9öŽ7½é|ZW|GDDD<3vvçgNc#"""^䀀ÍüÎÿù[ÃWßõýV­Ðçj·.u‚`Àyå‘îy—¤—sÞz:î‡Ðé@Рl×C§YwÂË"|êA¤ŸPN|@x÷Ñ%A¡sá"…üì1DgŸ³Ñ=�ñr õ½AËJŶ>˜³¹™Œ™+Ú©c%$„mH˜6ÂiÈ–„0—„úòÿ˜T·±D„HÒª7ýâ꺑Ÿqã�6¨�Äèü>tD¯˜ ÊÍñZ¯Îšaëeéj2§fø¾º3@NÿÔÀƒ>hgÏžµÓ§OSOΤî/-�W¾ò•vç�wÚìì¬3 ĸ^NP ZâÈày§þʯØàB_½Pa�5 $YúÔ·rmÜ ýíá3f_|`Á¾þøº=¹Ì=÷mŒbØ®5äAQf€©×•ÑCà‹D»Ýjg¸8ÿ?ðKqÓ½ú0½Úyˆ{à’cM¹ÝŠíS?k&Œ�Ô[`j³ðô˜³Òõ­ÔîX�T“Õšžš²3³vtŠë7·c&.ü Giêh>g�½Øy=Œiv™ëÙ"s¥ã D;�áŸû@¼Çš.%þÅÐlð´¼�1˜„‰Àw]ßš,<;Ìz·/â§g$í&ßîå'äájq¾=UˆR1y·6! ó€fnÚV•©i-;yêaçâ鑇c-0 ‹|oÂDén®[Ü%*™¬W^ñö×ÿØ7)&º����g€@ÔxàĨ���½�Ïþå§{¼6Yˆ;©×KÄíDŸ$ˆŽŒC$ ÙK÷kâ D4*�ŽìHÎC1Òp©<Å¢¬Ü‹êá�Ú^¶�SÖ£ªIìÈê¾ç!Wf±MÐuitIæÐIßBµ'eCx>Ê�+á­w‘!m#�¾i8™`@HBÊgè—4 �œ¸ç-j"4�¾*W’¿JqÐøoHwµ_©r‹ MiˆÐ?uê”û�;æ¶_­V]Kàøñã.ùBÚ/„£û†îÑGð¤µë+¤ŒqD„C+1(Y´r0|&Ð897n[-ãÀ–5 ð0xº² •›�@“”v8€€õ2DÂí_§ùä×`²~tˆ®Ôwú¸ú¾ÀÃü J³NG)0¬|�0§JØ�hrýb«Ã±’‹+vqeËo 8>3iêf³<,Æ,Ø ßjPN�›30žÉœÛlsÛD¢£zܾã©Õ¨c;9ŒlÍ/‚bHÃàóò·–ˆ¯-8|41L¾5ƒ@~Å…¼ž†8½Ã§âœQ¦rEÆ«Qï¼U²–¯Âõ•¦0åzd¥½<¾n™oj_Êù”WŒ.˜“ÀNĆcO ”ÙãV›>lÝfÃ6ìÉ…åoüo¿÷'¯˜ü‰·¿éÇîS3£‹ˆˆˆx*"à©0‰!{Ë‹K¿835�eý<�.à.$8© ©–“ª²â\ÝßtÁèE0(‰Âùx}ƒÏ‹°P¸ˆNð«TA*ŸÖBÚC^ÑJY î*úÍ3˜@Ÿ¬I’×¢®OÚ!t •±®<þã ÖN|º€µŽNè Àüˆ[\L �@˜VÔ¦cƒ>’B¡÷Þbo”!úT«¼ò?½K�¨¬±±1¿PþNõn´äDðëj@=b(Ïõ¾P0 PN`½Ý'�ØõCJ� A꿜è31fÔÎL?gSµŒÝq¢Œ¢’ÿöÈÖ6—€mÿ»‚%*ìdõcäÏ£åáÌ/mÿýè|z™qv@jîB¹úy|@á­D×ë�FëCk.'†1úm` 3ÃQ1V̧�NÓV››_Û´,dž<8cS\—9‰ÁÀ2Z–«Ûµ�ƒ×e~÷È7Ò×cãÖ¬Åñ€ÅÍõ¿øõü™ž™øÅ·½þGß§öD!!!!°�ÈØ�EôEDDìY|áÓ_xÉ£ßþ¶Ý~ä„1kW�ê Ri~ÇÕA¸‘nû{�vi ˆ–".Â!ÿ èʶ¯¨@P†'’O^^Õ'i_µç†Î¦18;†j<Ä;zÌÞž` Î­x¹"8Tg %Å´Ä´Q¢FVê·èl  "Hu-1]¤ 4”ö‹jÔ&µYmK ÀÅ#ŸáGÄLÊ�_ð’q?ÙP¸…¥éR·!Ág(þyG ær‚SðñÖx©«I�åsX¦½'Xè:A¥ŽT¹ŒF¿@·´VµÕ­’=¾Ü±Õêæ:J1â:Aòùq Þ9¤µbíW§ù”‡‚ÖkC2næ@r©»CËŸ �#aVŒ7þĬj“\Vð E$ÛÃôº¶ÁÓÚØ´KC»´¹a“•¢šá:Ê“6;™áȶÐ|áô†1$~2FãÏtíÀï6 †6Ì-cýi�Ÿæ4%Œ 7Žöñ­†*¿»$ÜÏô'áq•áéÜ£2éÑeþ�=¤ ~7>êéB›ÄL �ÓºRáúdÿ ÍÀ×x¨Ãë£=*^~‡µÒ T.W­Óê[æI™+ë�ØØÌ´5V—¸yaÉ.l¬¼÷7>ügï­³ÿú�o¼û -‰¿‘ç@„@„@„ÀM�Fcã“Rû¯sž8Ó„ Æ/¤YR¹€\§ä/o!þBò!À¹]]^*ú°�A@1$!tä^t�ü`ßz‹Ðá“d!ea|é(t„š.2bÒ ñÄ[à§Îùå±üÀÆó]¤ÉÒ3_ã!=e#V¶W©��FK�Y�*�±:GúÕ`¼EJ¹�@Îg &uf F Éu&_抻2†ÔŠHG!PÕ7åó–êí]ô²ñâè̳t"êu¦_}O�3PøP˜âÒx…Kc@y®§üÕ£´IA+Ca¡_iK/ï%¡I„$©"¨r9l#¯œ—’|xü¤q©!@¥KãR¨¶s.¬ÏІ % ¦š>PrmD¡2yÙIÛÔ?À…}¦,{%}[C#GÇZª\Ý9sô -œ?c½­uÛÚÚøÕÿë#ýÕZ.ûÛÿè�wÿS RÓ£‹ˆˆØ·H¶ñ}ÛÿØñ���=�{ï½ò7ß/CøÞuË6ØèX-1ÜÏ•@7è—µ’ò.DH¢eÀ5e£²ùFû8ç=€‚‘ÀžŒ¢ÞMòH¢.B-pÞ’rÊ \T�"ß� ç\?j¹C˜ Ú¡³ÉY,f2]«W:67Õ±SG:vëq¤Í•%p/ºmnÁ àL9”ŒŸ-×[Ì1p’Ž: ÊDL=NMH¿`ˆ�Ò‰�¥Á,÷¯ça~TÆÍjXR+�ѦªÃHVuîÚuè³S"ÄÄJHµ¼º§üì&àS)g�t†¤Rý—K©Ú0B¨»ÍŹ>N$ŒJ�…¨y�å[ΣܣÉCBå 9 ] $hS„¤9köóvqsd¶röÙ.Øg·ì‰¥¾mõËÖDe}„!I2ÁP²rï/'8ºÝÖl¼‡pÏÄp&€À!ð¡?�U`h 4‘v3m;ý®Ï1�t|¤ &€¨yýNÛ�ÛÉ@�5QbmM�×јµ“›å¢ ”8‚B5TÅ©€À "½–ŽÂä‚ÄŸ/q÷4j¬�ÐN½EXÓPýãQ?ü­ŒÉrS˜÷%ùV”;§£ƒÔ>¬B“ü!A¨K~¯‚½ÝQV`L( ´Ë™îšD;Œò‘^™}ΑPÌÈÎf˪¨­”«¡Üžö1ŽH°£Y‘¾NTÑ–À>@keÅ6±ÐáæŽk²^*þÅé¯~ñîw¿ûÝa£ -Š¿û{Ù7Ý��ˆˆ¸ù 035õîå‹‹vË-' ¤E)þž`ã|¹ÖÃ¿ð€¼»”Ž@©àA¨•'¸qWzèd'ܯ̤“|NßÙDÂ-kàÒp‚ÚU ¤{L•9êZ­˜±©z‘ëͶü/ZgùIë,>håµsVî7i®$ë” ñ¯ÒÉ섈ȂÐU&¢ *À™bHÀ[Dø*ð9¸Ž¯€ıY«b¬8yÈrµJsVåðvF€S K a¨š«¹‹&—§PÜ• ‚Ý)3àò\ßÝ/ ‡ÓKîq�;¸œHràíª/ýVZÆEŸ°[a…o”÷+æJØi¨X›·7f­•ÚÈlYoËÿâgpÌB’Ú.Æë¤¶¾_�˜-:ƒÐtb˜/æ13•yLp– _0Ö4µÈX#> �†´ËÄ,CÛ…¹Ý!¿ßh¡ì0¶FP÷ —¦@CG–¶Ô@“E�[q�c “†â�†Æ�WCU’�«"U¹ýöZcZïÒR‚�æ²ti-¹ô[o}òÖ’ó"øN¥þ;{HÈìåîNGZg@è˜~gŽx‚TX±:ŠD*TÉp@Õ Ó7ÚN“U˜'0Q˜˜Úv2h>d¸:PÌÌÖ°g4'ÆŠ%›åN¸ ùÉ–]Ì!ðBÆåGz†®#Û²&îè6q"ü…ˆëqôœ´BÈ%Ñ g›•†X/Li!,QÓ/Léüç@IDATò6VY…[Їkg¬³ñ€µ.~Ízk§Ñ,Ø"åÐ&'š¶ÛÁ$f†8 ¡a¼i3D—ß\Öíq•`¡ŠÚ¿d~XXÏU!ü�X±¿iy®JËUêHB¹@Œ2ƒZvÒ/a(¥ù_˜êŽ´©ó³É|8üC¢R¢Im�!@ýzô­÷è^O§–îh3§£jÔWêÜŸD{Eè;IDÏœ#øóhhˆn#቙¢­mmye�õŽ.l„Ð*ú÷P É`€MNù6/RxˆÞbÚìŠòù«ðm—4bû{oxÔƒ„¾÷{ßñyoX("oÏÁ/)|Ž�8ñ aaÌë]æSŸw-€„«J“1ËF�ÙMxf «š£Ü€ô{iù‚œ©ÙÑ£C›;0e5˜*OÃçó;Áð||¤í¢@=­y4 ˜¯� VƒIE¼–šˆr½U)ýCL5]%(Îß¾=½z‡'ø•†oòù[�*“·òªl‡ …àHϯùµôå¼ýž/Ä« Ei­ÉNIÖ™$äp­òaÀmVÀ˜ìÀ!p˦­<1Å•‹òœnذ‰�…ÇxE5Wè¿ÿc¾0‘�¸ûî»u¦(º���›‘pÓqì`„@„ÀÍ �/|ê/_wþÌ9;qxέ¶�¨ ËPHqfÀˆ3±(•¡�}—šC¨¢*+äz ¢"Dt�Ÿº…‹/'éœ$û:ÎËQsåQ 1D$ô!¼9qì×Èå°H¦r…”Ë�€\ÉzV¬ ±Ö c¢yÆ+ß´ìÊW¬¼úˆ• 7˜ÓutÜ â!Ø€d -™¼Ðü@:yÅúrY�X j›´6(gƒ>´‘øu9ó;eÃîªõaˆôGh¿ ó5Ž>èþzȈ© TéªÃÄ)›”¹£úø‘–Cn¨mNÍ@H(XÇ!ò.‰RÛJ— Ùus">}Ì’ô-'béJ—D)Ò�u|Ò¥O$ÿÊ+Õ~Yÿ¯ Qq¼ž±âIôÌuÝÜV“+36¿Ù´ã\®�SæpʉI³flE1æ!À²0^tœ„Òx¨XŒ&ÆL�kŠàÓÜÙ«.ÀÙ'£w!€V°O¡ÞNªj.{*1ÄRèk–¡EÐSF’yã·wøº#¨ÊV¾Àô¬ÂZq;‚©¶9È[s£og›—¬v~Íf§ÇìðÁi;x kÜ€ùŸÆÒ�)`éSÌ·õA¡´m4\ÙB‰ñ¢•N�32Œ©Ö½ f•Xs„vŠ�ˆûÐs…Âi´6çÞä3ø™î¡�$%C(oÁËô Õ�„+‘œê–ø�'ô\yÃúSüP>ÉäaÁµ| Ð2˜®@º>cÐäÉ·L…S£ »ý–ötþ¬�;}fîÉ­fû7ÿøÏ{õÒÔìÛï~ÍÅE!!!pÓB 2nÚ¡�‹ˆØØ\[ý@ B\ÒWv‡€�…üN¯� R Ò;‘w¢ÜÏ× ‘Òœ ýB–…@Kò�âÕ®Š+d[*ÍBÔI戼#×þáL}Š4qÍ©6Ã�ŸŒ*T-ñróˆý!¢äö%+t‰BJϱ¿u€T�L ²¯?Çï)û©Nw‡ÃêÝ ¾Îyì-ËbLŒ[Ÿ²N~‚{Ö�@¸´¡Ä¢¸2›.BU¶dþ/F…:ϯSJôÒëMêõªçê‹ú$¿\úN�B_èßíæxÅ;mI[÷´íñÀ7)Iõ„2|qtc#u :1U²%.¦oc¯aƒkê6Û0WPG0×4'Rãm|†1“†‰K¹ P¤Ñ Úrª)Ô¥ú—í±Ÿ@ _­Ñ—÷i§¿êíÎ8…¾‡X�ëò\W/W¹RÙ´ÈpäEŒ0Ø3ÖÃÞG-�Öp…›Jœ�ÏØ‰cuÞØ €è•ku[hÚt°5Àš‚˜4”Áô[BãÙí!‡Xáì|¹\²L4¡„Âö–»_k&é‹'ÐZM[üZG>Öý=å �Ö¼µ�?£ò•?Ôö•ï¥zZ•šå­ò8ÍCßwT$~ý© šu²u°}bƒo!ZÇ>ÀôÉ[ìà-·ÛÆü%»ð装ó g×ó>2ÄÎÂñŸþñ¹ ¢¢‹ˆˆ¸Ù 7ÛˆÆþDDì|ûË_~Å7¾ñå¹Ó3611Îá¶¨Ë Ÿ3Ý9 ๊¾pgœ�táȻѿÎ:2MœÔÞÅ,�ôMóTXyr-éyd¹RœòdŽ[’Cò’Pš^‰˜RÎçÊ¿êÿ6\·nkJdÓª¤Ë»:¿ª jô^0?bZ¸€Wš†^þV=yêô6 EÜ«M0Øh7׬�yÂê+0ju «ÑB˜�`Âx©d¬m€4Ttª“^�Ú®/ïáò‡_Ln2·»Kê�ólôæO£Èqj«ó}ôÐÒæŠm¡m±°µhm ×Avö°š$�&sik øÈ ]’L¸Jò¹€O_Á©6¹ô¾âïs�k ˜ t€ä{s¦ßÅà]£a«+’ö­Ñ˜¶™©šž«Û™/U°ÂúÔU™C¸Ö§n p„e�¡$ö,Ue'ì {! öö¨1Îé””ÞŒ3‰äkJþðr»Þ€xL•±]"Ù?/ŧúåKßI°f—Gh^‘`;½âC˜3ô©µ½«ÍËñÉi¿m¡‰±„Êä¤Ýþò—s}ઘÙsK‹çßó»÷ÚÁ©ñï{ë›Þðu]„@„@„ÀÍ�ȸYF2ö#B B`ßA`quñ#Bا¦'8ë*ÏâÄn„ÖcáÄB°E¡¥D>PÁ/É»Trü»¦­ˆáœˆ’Ž„y'ø²pæ�GxŠ„#Ó%�¤{†¥ÿQF†ü8n C{b<§Ð<F~ñß_¶QwÉz­%Ëcü¬X‚�Н—')r�öi�ì&û3:Ú(«èª3?¨Á à^418›ÞãF‚jÑ­¥‡¹ »å «`+`Ä] ]ê òÜ¡ãHkÉ›pCh»·�_'*ÔÏ4Ùöû©!ÛQ{Äse4ÎÞo��EuX9Îp à#¹Òž´ KÖàÅW=vtÄúê”™OÉ[•Ýß*Ðs&ñ  AàÊÚ·Dϳ€€Ö—3°tð]Ä-Na=l 0Ø� øð#çlã›—&íèáYìTœ só!7| é1„qX,8:PÂW6šM®)D}@#—Œ£ÆÐ5‡’ÁñŸ2¼vO·3®AB¯ìé¾2¦D»/ÿ�äžNýØÞ»<ŸBäT—ò§´�Ö¿Cøîxùwïꆗ¦£]ìŒxd 4_,bH±ju©ÓhmnÚ…Ó�ÛR»ýµÿø‡¶r)ÿ–w¼ùÍâ™ãO„@„@„À‡@dìñŒÍ�ˆØŸ¸ÿ‹_ü©'¾ó­[¦§&�þ�Y»ÝDò’ÌÙvIûÌ#ì– qÆ?¨ûm‚Ÿ0áÓB¢%ùÕq_Ië‚B®=DZ8wBd¤Ðc!Õ°L¢ŸÅ#RµÕ#î‚â‹Yl$ÿ£ö<×^²L :½Su|4Ò³Å*7 ìò¥H¾üWwŽø�Äè�¶Òï… /äºn[ Ó_µÑúãÜ @\uÖ¬2Åyà*Òβõ`ô BRuÈÁÉ™iýê‡üþ ~ýÞ N³'uú?ăÄáoÐo3F«CÎd*kÇgˇ »°Ùáv®‹T(ÑPÐÔ)„‚˜§Ìá5މuYaO�>8kGÚÒü›?{Ö–ÖV?òþøÃV¯Vþå/þÄOþºÊ‰.B B B`¯B 2öêÈÅvGDì[|üã/5�?êtÛvàÀ ¤S\Õ¶± ±Í�÷Hf%•×ÕbºO\ÆüD¬‹òw¤WªýBŽs ðŽ2ŸÿR�—EÅHB/‚¼R¥ €åß*GéDlH`@™˜#Dh9*úøª2<6X³îWþqþ¿8j’BªÇBØ%½ÜÆò�5 õ"LžÎ©^©= ™—‘Ã$­ÎЖý/�Z6h/Øp¥d½ê!+Vgè¶ÀÇ@óÐT§U~ZEJJ$$í’OOh‹K;=2¤íÚíº–¾¸Ãw÷@D‘œÏÆHL!T7xç­Æ…sãÆÕsuk6·¬ÙiÙ¦9© ëO¤gFsF“F°õ��F¿ €R®\ª9}ðF÷œ! fž³¸dì´{‡v®æ /�á* ›õ­»¸Ø€0k3Ó%;q¢jÜ hããŒcÜjÁ:Àø ŽIøßÇ@!l_ÿ"ôU—ö�±ÆN·„zÃ8*>Œ©Ú¥4Ê㓈dü)¯’$.½eCŸ!¯|Ô™¤Ùa„rÃ5ƒJ“Τ¤z¾Sb§œËëJËLãõ]®rC|ËvOœ”°CRÐÚ Õ"MŸrz;ìµ Y²ò_¨ÀÄáø Ãåõ®m¶íü¥�­mVln‡Øôt¸B°„×Ra¾¨„5â„?Ì5í A-go>cé�Ê„ßó11hGÐPQ—3”Ä“…V'þ�Neˆ·Cð«LUä= eñ%�oשüJœû“ï4Ñ^êp-‚n¶È…ËH`‡üu´!¦�G+à°­--Ùüùó¶¹°øKïýØ'~©úç÷}àgßðúŸ§¡qiåñ!!!ð"†€oÙ/âöŦEDDDì‚Àßþíßþ¯�Nóõ[�u›��âìnõ]Îþ—‹H° ©Ðû/”r¨´J $\ˆ4o=BäƒT–o÷ŠƒË*^ÄßA-7ø�xs¼VéÈ/DÛ‘pÞ »Ò@Ä|ˆÑ)�Y «áЍè×°PlrõÞ²e{h)HBï܆�ωA7 ø\ÞHðó¨þ°î/Éya@$ú%=´*ßZ³ÁÚ“Ö[yÄúOrZaÙ À¦ã"ôIÆÎDˆ†þ Ô¡/¢ô„>BM(ÑÍâ’.¥Ô‹úîÝ Ã�··¹Þ¯-ðÚR᜸åP�ã«f;Æ� Žs ‰Ê#d÷²D1º/…¦—ìP !aÎÜ,`|áû!(_þˆÈ•t>#¦×{¢ÄU€#Ûlp;€®ÌW,_GS§d�vóö•¯>fŸûüCöõ¯¯Ùâ"<1 Ã)3É”W¡zôÍÈiáX�ýTJʼná£è$i(AL…¦{MOˆ3<½Ê �§»,}’w;^éBiùaÏÚ SüUaâå¦õ¨\ü0Gj•†R‘øÓW>¹ý �´„°‡Ðó¤V³!·%4PXãæ‹Ç$Ê“vÛ�wÙ«~äGMVzÝ·ýûþáðÿùðŸ|¤·@­ˆ.B B BàÅ þ—ˆ.B B B B`/@àsŸûÜ¿éöZÿªÕÞB=·ew¼äðæ5¸ÎaëŠ;ˆë!~á¼ý›—…vdqH¹$%,Éé@öîÈ=?A%^8,¸,öôx‹P£š”8'½¾¡&`H‰ 4<ÇEdT8”%xü³Xâ/`ùºÒ²RÿIž‡¬28cÅÎ<Ì€ŽUÜ`&æE8Ðö ¼ÚbÑâÕžp5!—ùÑF{A’õ[¸u@ºÑêTLIž �mbx°ATÃFÜ¡^.AÑ“¡A¯ÔåÄÇ/.P|é/„:t\O’¤ ©÷ÞïSúA¿Ð_1qtoºÆˆ¿Œ%)“t¸ ×Ljڨf�®µd¢Ó5@n’¨&ðTNê;m¤ù�šµŽ~àœ€sˆûgüyNHÆÊ_š�Z¬bð…¬¢4n°, 2?šÁHø:Öh²VµlÜäÐjleuÓ––šŒe‘q.Fñ‘„kAÃyÜÀlÌÁhD‹æ¡nÈʬ?b°9â×…RW^W R­ö£<ê828(ã¢"ú¥òïMò¶1 ¾Å$ðø$Mð“–„!=LIæœò‡î$eñ­²îoÏ�V’Þþ„ðí8ÊØñ“Ž}EJBd§´�´—|ËSûÐH÷%åó=ÈᦕtìÖS6>7c¹r™ë1›/ýëû¿òËo½çm¯úè~ð¿ò+¿B)ÑEDD¼8!þ~q¶-¶*B B B BH²ôö_ø¹?\__þgßþö.Ü{ík~#m’°%H¿�Y‘¯rBS¡ÁøYåwûI�^]ïNé<ßòK­[jüz«t zDlF€J“ }¸n�… ¢@a¨ÒæÉ[â¬ÿxv™käÎÚ˜=fµÑE«ŒÖ ×­20ò:]šñé—3 xI")#„Òf ýÙD+!ô ÛÜ}Þƒ@¢�-�¡!1qRãØƒúH§È'09Q¢6Ü ’|˜"l•2uiºô{o¼½ꔜwÁ{úš9CI�¾ùÉÁ@ÁÕGUº¸7Û9Ε·¬ÙjŠº³¾˜JV®$ÎÀJºªÙ-•ât‡½*åÀ¿»aIptÏ ‚¦\:'}‚zÈ.x*OI>4�>·!Öe#€Ã!êï�!š-[]Û°%ìœ=·…ü�ÙÆËl´‡¶±Éq6ŽBâÀ£iPòŠL­Iii®$´×.">¬#'ìÕ,Òd¥V’ÎA‚�‘„q”4Ó›š”±Û¯´š_!Ì;¾ËOD8DyI'(¤i=Ž@ß+BÖ�ÆÓ rõJß”ìÄ(N†N7º-´ª6=wÀ&gg±)PåzÅÁ÷ý›¿ü–Ÿùo_ów}ðýŸúÔ¯ì2F!!!ð"€€Ä7ÑEDDD¼H!ðµ¯}íèß|þÓ÷Ï_<H’ÿcÇÚ‘£‡�À¶@˜E@9µ�]�RÔBQ%Y¦ªcY0]I÷9/"LHºtÈ{ÞBÂÓôž[qäñ"T O@ ½d¾)ŸòœøðDH=I`7ä­ ¡¿a¹Î÷‘/Y¹Ð@ê�Ú=i�B°�7r^Óoh�²J‚/&€ú!âR5ñæH9MïÀhXwý‚ Ï=„DtÛU’Ð^Žè&��Çl8õLa®H‚nÊ_§½4¶šÓ0aüSAþÍ[RÚ!Œ› ç£Kˆ…§ÆKv|XâZÀ�]\Z³•5¬ÀôéÀ�éBL"jõ9"Ãjª#ÌQŸDúðqâW´¢ÊÝs‡€àªq’ÛÆðé¿!.Œbšn'ö L@Ý õ2ÔØaرƒ%ü­MluÖh´mn®n'OÎÙ¡C9«b4¯\™†ðšÐý>†2¤'û!Ú_t~¾PÌcH�+ ±G"焽ö)V8v¤ýIéÅPФuÉQH£íaóñ�àM{¢·ÖéN¦íx"Þëà•$Ißa yÃü IuKŠœÒy-Éç�!†pÖ ÔþReÌš0a·:m«qàØ]wÚ�ãGlþ‰Ó¶xæì&_ò�Áû>ü'_855þ£¯{ÝëÄ¡Œ.B B BàE�ÈxQ ClD„@„@„ÀS �ùüçÿæÿ8{ººR�±ã'��Ïàçúµ®ˆjaª"â•7ñ"ŠÁ¸ÁqA¸EÜ Á9wÞ+=~a·øž�ç(9ÑÏô(½âAãêÕñ'i¼Œvå8ެÐJ™ Ë÷/q `ÙÊÙ-¾±M@æ,Ä¿g"�õÚ�£âj‰?ê(NmSù´Iº�ÛtÕW³µaÍKOpEâ«Õ0^Æ@šn NZ=α Ïø©Œ@¨ ÷%ÍMýÏ«IY7îå¬ ºâ�wIÐØ4i䑺~£æÙ›ŒÉÕ0švñãrvh2 `h½VÏZP†*A#á"ÊÌ ¤ðÞª ºç �í(ÐÊmàOÃv‡§a»}iʰ>ò\ªòtñÃì�a÷Ø‹vî‚�>;o§N²Ûn;l±Á±xlC`=¿ª“¹�b#¤þª³×ís£@Ûª•"Ía6$̵`T”uåT?áÚ6vµW{KÚhíá{W˜Dö‰Ó cawU^êc@é©g» ]~m‚¬qB¼*K_¹í2wÒ*È›¦öÒ`ñ:Fô¡Ízë1S¬In…ÈWËvèŽÛíÈ-§låâ¼­/,¼æÁÅ¥Þ{>ðÁ'Ëç^öÎ×½¨E!!!pc!7þ±ö���§@àÓŸþì›76Vî=wþ,×ýmØÄdÍ^òÒS65]·­Wêqþ ÕÓg±n+ŒDTˆª�Tüú�äÛ¯e…õ0¥ñ„dP&W}{PçŒb„¼;Ñïï]iÔbÊAÔãñ'bœ�HDBõáÑ â�þû»éªÿRٱɱc §ì§HضND ’Äy݉Z¹Úã‚M18@ÒûyŒBä”ó¤w�-}ÇúHìòã˜>/r:„‹š$ä»öþ§³Íê¼þœžmÃöF:'Ì詜ÃOÝô½ªÀ�ñ"É×µ‹™LÁjœŸ3;2�³‹SE´Ü €= Žw(^GA4÷Dg©.Í3%þ ýõ oFÐ �/ˆsF�@ëXûT ÛÁ!ÐÇ!M©·âý �¯ÆÄ÷ m0}´4÷³ÖÅBÞ¥Å>6ÎØc�/Ú‘#svF¤S\ ™gŠ`&Â÷ è_/8O`¡Xe¸C(ÝC$ý§ðd>�–º=̽É|Øö«?»ÃˆH\¾+š¶zç=E’‡2Ò°4�Bus‰Ž&¤.e(¤!éÚOaéûŠ&1ÿ‘óXsô5—×8²\‘T#Š0çÆn³‰Cs¶2?oKç/œZ_XlýÆû?ؘ®Ï�úù7½n)­7¾#""^hDÀ ñX_„@„@„ÀÓ@೟ýì+++Ÿ™Ÿ??§«ýjõ²ÝrëËlzËÝö­o,;Â]*g9�» �­-\Ht@J…\ YNë„q‚íú Uø·ã¯xô—"ÍÐw^†˜®)à¥$¸v"vhNA”‘ÑÙ{Hg©Ë+^¤DŽc ùQ+ûëÿëh)lBü·ÜR|ȇtÄ› `ÐHÜTÖµ8ïŒN; úGnRSÄ‹âNÄ“’Zëüzc…#®BËm�µÎbÝ:Ó·peâ„•$ÒÌr†Ylòùq õÛ¡t-�Ûyœ@§©"f2½ñù£Qqf’$ÿŠ4ðŒ0˜( irÔ ;6WµåÆ”­÷›6ßÐ�J+õrY@%ŠÑ ñP¡*9Ì?½£»VÐZsªœRxû·à~5ø†0ýfPÓ—±Æ¾Œ{$ãŒ1¬'Žräažëy€šûæfÃÖÖ¶¼WGæ,ü�†eÊ/„^”!õ¹” 6ìú`À1ÒÖ2+p`kå Ûš?Íàm®ŒFuƒAM*"z–›Õù�'�s"]c«Áað5Djb ]ßY_?. ÌÃjqdG9#¾Þ/Ùù�%+.nrƒ“|¨—“=ÑpHúÜ % ªK§ÜÍ äëÙ/ÍO½Ùž¥)0Ã[£à {Èi¼Fžq`� TÅÌQ1°k`ÞèWó?8ÙМÈXf@Å é™C»x±gó—myáI;z¸j·ÝzÒŽ«Y�YÔïv‡ÖæÀ Lß(0´k¸V’*ñ�P—OJkÑI¬'ÕOš.í^ˆOÓ*^ùC_Ó®{�êõ¢Óxv0?Â$vUó¶âÃÂðð~âÄ¿ûIÉGs«‰]„ªU8 ½þ�67�À¸­TÊV¯Lذ2rÆØ:ácÅ’½ã%vðøq[8wÁÖΟ/4æ¿ôÁ~Ð …ÂÁ·¾õ­ ¡Òø!!!pý!×Ʊ†���«Bà3ŸùÌ�•Í•/ûѳǥ6{øØ›���(E„!ÝÄèß�3¹²pŸÍq &¹s¨nµ^„™ÐS0kèj¼ õA§qV[çlÁÄù–DÄýV®jëÈk’OT Dì:â BëD€B”ÏKW|x„À+Lj²2ø&3~º>/ !1¢}BŽÅ¬Èaý¿ÈùÿªÿÕÜšÛÈ%G†¨‡ëʾP§7ÚkáçœÚ�KÚª/õ#„êW}æW�__@Û ^¸™ ˜¶–Í–±üä,Üèå¸&1¦ßN )(Œ iŒœ(V‰Ç*ä_.üºwÏý$ÚÕî0Î�xæ�¤ƒa.‰¿¤þê³à™Em¤ u`¬jGf 6]Ë¢íÑÅœ\ Œ.ÆI&Œ2¹4oȫ߬OØàßÕ€è}.¤ZïÍ̧¸±+øò ©þP‚þ|4(F×û‰é£küÄ`Ð1]­'æÝ`ûºL}ö•Åå%[\:o�<¶d'8ð²—Ýb§NllLWÿqDIící¨}#ãxˆÜÚ›Ô,µ@šCþÁ7áZ°Éü }¢e)ç@9<�·W}kÜ?•ÏçXßNâ©BV~²v©'4+ĪZeK\XÞÔ­=5ž@Š$!yªµ Úº8r  V¦Ï¤göÛjŸcP0i ì×¥z‰Ö�l £ˆÚŸ§O·ã§NXWGΞµ çÏ_zÏïÿþÙÉzý‡î-o9›¶#¾#""®´íE!!!!ðBà3ŸøÄá•æÖW.m®ª��ÙôôÒþ —åe™^Ä9„ò©¿ˆ}Yñ—Å~ÛB�…KJ•ÉNÒ@Ë“†0·dM²¬Äz=�XTy³HÇýà=‡ïG}Èïˆ0*Ú¢ƒ>äô!wûy®xÃz·§‘±> ãqß{�øŽ‡ë[áÈÊâ‹n‚mzÖÍÉAÇÆ9÷xô¨Í�´Cù­fh¥¬�Kg€vHjŸ[MF+KòWÝ'ú9;uœŽ:>.‚]EÀä%Ý”ó»èÑN�A:9ºÖÎ�\K£¢+¾>.Ì/� Ô¸Dw­zN­îŒÌvIÖ«„' DÚzì®±ØWÒ„QIÇf§œ�9ÃØgYOýòdØLª•öØ÷ÜqF€[›Û(°ì5 ­ ,ë_ß…|Ñš 1 ÊÌ1˜(YÌí{:f‚ɸ·D300 ÔͧЮ¬êg‚�þ0¿¤]’ô ^Ø”^Ú]kBH7äxƒò¤½ô}t»ïšži �¸^z{Œ3aCŒŠTxšF¡ré1›tŸV>Õ“'o…'ËÚÜÜ´‹çÎÙ<ÏËŠ³“ïzçÝo|¯"""®.ßÝ®C±È�����ûî»ï%ëk_èöºÓ²=yø��öKâ_À’V@’AJ!Re@«ˆ¸Zo1ôH¦4’ ±TG,…vJbÇÛ¿ÁµeÕŠ•7Š^ð™o÷!Äý5í q£®òåù.8 ×ƒ ÐÃpq�ƒSNWLžN—81 T&eeÈßEº¿VlY7ßÝnØDæ’~ÇÚC6—;A³• Âh9?â|v‘>t@òE ^?E4O�Ô0•ê{Ñ*5æÄ»q¶93uÒz§~Ì2§~ÄFGÀ¬~Ø• ³·Èv Xº>Fízbpoºî¹w8k(“ƒûrz‹••Õ·|ÝN¯ ì+�¯Ù—ŸØ²oœiÚéÕ‘µF54*@'Œ¯`¶Íd’f+°‹hÈ^œ@M]�éGCØ›F˜|0Ö*¥‘MŽçl¼žµW|ïIŒæŒmÎêœf’ýˆ~ŸëA±ÅQàü|Î� ³¿¸&´zž=Q�ö91z=ÕúMçIâO˜™D…_µØ‹C½y®Ù¥ýSNL»@ü&³ÑÓJ.¯ô×âB�×’Sy´OèG ­š‚®.e¿i­oØò… 6æŒm--Ûáé™÷½ã�o|û×µ6òZ›óEDÜä{4º����ë�?û‹¿zÕÞüS�,­¯þÒ0Ÿ«L˜±™C­V\àlh^gqBz…¼æ¸–NO øEÄ*T(wð;QKJ‘¢Bpɱ»íw´„œøDê$_ ÒÒ pZˆ·Ê ÁOØ�¸¡¿ÉÊ›“°»�_a:Ûí23üèJšÛã0?6°Ad9›Y± »dc™ÎÛ/CL7“Ò8ÊÊp\ ñ/”>î“ïú8üWs~� Hù» \XfClä¹×»‚=€ã¡ ð¤1 õ?÷.F‚ÿ©÷á�…‚:õ[3GW¶a¡/�ñ³¢-oÂjô™70•|”ÓYªÑß=élݯÜûóFöH¤Ò^@ý]šKZ=Œlnn@È./Úââ¢--­Z§“ãøRÕ�Hm~8¨qMàÐjã?0r®¥öVk¶‡ñ¼n‡ëD݇æsMë:Ø¢þ�¡$Ÿ½S{sMd¾ïs‰_6 |Ï!Æg›O5•Á¼Õ\|ÞSo÷|¦Èçè´Çw8Ðf*©ÊÍ.ãã6‰UÅ©™;wþÜ÷?ôÄc¿üŽw½ë5÷þîïýÁs,>&�ˆˆxZ<ïíïiKŽûûËO½~msëc›­­BiþÔ ªþ“XžGêõ=Dý³€Hê¯.á "�G%AñÊ Ò+ä7hBJ¨mªàÈ,å9A*¼üÖ� í—Àö¤÷’þûƒäMÜ‘k Þ.ɾ4º Ø‰@ªß��§K¸Ôÿ·� Qïý·rÈ­sæuÑ&²§í°=l³ö˜MÙÈÂUZ 1Íÿ6j¡y˜2¤Ã×ï¿!Iúåœà'C�\§Ø¢…�êqË~…Uoý!«ùËŽ¢?U4!Ôr±ô&?c¥·ú"·Ÿår:ÇŸçAOCg»Ô2{ð¢Ù§¿zξòèŠmôËÖ=>À0ˆ‚dMAP`ŒnBÀ’’À» =d8{X.Ù«¤ €.;½ê°FÚh8�ìÐÜ„Ýzëa»ýöƒvä°ÙWv¥ÁÏ qF�˜ŸL oÊi„8v;Zq #OK8e"e$5wßaFi*ùÌò)¥ý†|¾@µbµøÊõüaÝ‚B¯ÕIëàZ�jÃ×�%Ñ¿›J‘ôè›ã™~ÏÎ?ñ¤�yô1ë4š6Yû·ÿä-oý£FÀµB=拈H!pí;_ZB|GDDD\�O|ò¯a£ÙüÏ+›ÃCªS›³r½ÊUYXªûÈøÒå eZÊjüÈÜI“±.Àò*�~AB³këñ# ‹ÛG@&…؆#0 $ù‡�×Ul&b�c®î¯#ˆí‡õ"îuÝ×�øaOçÿa ˆ€º8ÿ/Ã_Rÿ‡€ =�€Z·ÊäHÀ€z»œëå–­”? à1;˜ý¶ÍdÎØØàäõ&¨7ý¥á¼m‚ÜÒ/i•ÝËÀ÷]û¸@…§ € jËm˜ ­ìGNYåø+­zâûÌæ^†QÀCœcÇh¡®8L‰)¸` _É aôÀ}öºD Ôý7˜{�r³ù_Ý¿h_xà¢-¶ò¶Ù“í„2£à X„ƒ„΀Ù!æöènŠîj-ëöLÝLÒ§ ‚5Ç^–cO#Ê–)>7~ä`úõz üC;thc�/µ[nÍÙ¡£fŲY‰rDã÷¹6pÄÍœ†âjNíKÝd¯Ó~§}/‘è;NÚÌ«š ºÒïɵv9ëOKýÑ~˜úUþ0+¯ePœqq-“<º1Àµ½\cAIýâÿgË «yDø"Ï>yÚ6׸Zµ\þÜ¡f÷¿¹çž{Ô©è"""ž3®ßáËçÜ”˜!B B B`oCà¾û>÷?¯nnþê¥åuÇŒÍ>f9°ÛL1‡ª9„r‹sï`²…rƒYUtø•Å~'ð¥O눮�V!¨+Ü$˜0¹‘¤Cî'�#Û UœrÞá[  |Jæq �õüI¼Šô‡´~w·×/¢WŒˆ@ðêV0s‚@ÀI—¡Ì<È~Ľ2ÚäÚ¿Uε®AnQ–T T¦ÊÀÏãåŒÀøA¾u»A@Ìy]—Â+}§UèÖ Ì õ˽ nœ³Ñ"êÉ•ºekÜ P�†Ð@FÅ„¡�ΠC0UÄØïÎ)Ì?„µ†ý7›ä&Åe›®¬EÖ„pÑQ©ikÎi6Ë úúÒ_„¢ƒdÏýhw ö4tH(ì3Nij¦¤éÃ�3jÕ2êÿÌ�ì8GvúlÛ––¿c_ùºÙ«ÿÎ1®;-q…`ÑP޲ZI¦AYsH¾¥_*h�¢4ö*7vÈ$ çú)ŸZa!êåþÄà¨É†ÓÖ蚸ÛMm%Ÿx%}Á�jÎqK@�cm4½ÔÖj_ÅB‰>úáÖŽZ:„IR²ƒ·Ýn3'NÚÇ*Î<ñäk¿Ý¸ÐßÇ>:0“;u÷Ýw£r]„@„@„À³‡Àö–øì³Ä”)Þýîwgèïüø{—WWßÑh£²ÏU}ãSSVþÒsX)»g  ®ºƒõV)N#î‚`¹—-€Šˆ’Š¿Þ~ @{ :èoâ]ú¯0voŠ�öèGø ÏB”Ë`{VÆúdhO<ºÀ�@½§#¬ÿQÿ—À)?B=×èö ´8’‹1@Žøñ$gPº õJÍ·˜9oµÂ·l¢€ô?ÿˆÛ(rƾ€UðpÝ9Îâ9;�E0zÅÑ]!x£Ü€3nÈc€]`Ó­°üÑWZ鎿o¹ã¯¶vý¸µ1d—ƒÁ‘Ã:yd]„+ìF¢Æ�F`?:g†ô± �“�Äšu°›°ˆ¹‡ûîÚç¿uÁήíáó›ÖÉÔ¹Œ¢ ä UàÐÒõ9›ÎÝýÀ½Þgbº¢T<Ë,Z2að!Úšµ­3û9æ„®É0O!OZm\¬'ÌDr¥é†8P¶Ûn×Ñ€CvüxÆ&'‘þ³¬4?Fb—‚ñ&ûÆF{™¾EÓ1@:’t_ZNÉN™²”D`»Su)2Ñ`‡#J5è–Ú|�îùh¨}Ò€„�v(yôCæG‡Û&ÇÇ¥8E´¿óð`¡×î�®=ö•¯Z&[³ µReöíwß½q�]‰Ù""ö¢À>ðØÝ��ïî¿ÿþÂ;µÙlþÈéÅUÎõmâЫÔjÊÙF»k¥Š!«�ïÂS©ÚUôAŒó0DX:;@ˆ�8‡Ð)”Q­‘®ÆR^!»¤ÍAêº;ü!;R?úÓ?þãn`·bÕ{7~Ü@ŠMŒˆˆH!ðÀ õGž8ýÐâÚú±ž$úþºÒªÈ[V«EM ‰ó;èAÚðú#I™Î¤†G„3gh¹ÇZ²dIÅ\òO¼® â¤05¬?ÀÃ%@Ó#‚Zé2aB‰�z«3¤’’ ƒ v�Ø#Å—@Í](I<‚9Š¡\8J4†œë×U�²ÐÆJ—Û�y:Øè`@¶ú”/µÀᆱáš�gž°‰üW¬ž{ÀÊ™Ç0bÅQ€LÕ™èAÔ\3ÃpW¦?E+Ñ:Èé†IÕ_xç:H¯G¨%—»2TÈ à°^:dý¯µÂ­?lãwþ˜ Ð È‚t‘¼ `:÷?„€Ôu"�#/|ûot�"êsÌ=]×a¾d!òÖÎ3Ëf�\êÚ±øÕÇWl¥[¶­Œ0Œ*ޤ í1˜†ºþm¿ÂïF�ßó¯ßÉð¤mHzT9í=;/ù’Ö©q±ß`t`–tƒ€®æl°‡µlv¦d·ß6gÇ�MÙKn3Œâ[;¢}E/kÞÈF_¶ÕZ€XÖ·ÔæÈ:¥î‘êw&ch—ìP¯ì�¨-bHÉ…øàáÅ@ °Ù]·È}_Ù6%"¼µ†F r”ŒCf¶zé’�{øQ[»x &lƦêõï}Ûßø­Ý%G„@„@„@ ßFÓ�øŽˆˆˆ¸:þëç:uq~鱿¾ÿ«ÙlŽ;¬«ãÐÓƒyˆk‹“TÒrÇ7ùA>Æw@v…ë¹j>ø›ÎÍ;B*F�8¤Z§«øÄ0�l9œS¥|g†‚ˆ|wªC9ø7JÂÄpó€èm`¨\!¼;’o¡ÂÔ• žN|�(K²¯üj«Òê¼­õEå‹èå‹7ЏHö$5šÚjo‘@Ï Œ€%+y2º õ^¿£[ª¾ª%ôO V §žëhK–±ãA}ƒFõ`Z@Ðö¡b›ËÖ_»`ýÕs“ž3Öê»C`áW"’VL™ýë`1„2Ì&VPx”Y“U³éZÞÆËHpaiUH�[sR3!L=M,Ÿ¾û|{¾çšüÚ»’EàëN§ÒO­ý0è"ºåOÞ|¸rÓ™¥ÌÝ<Ò”la¾oÍÍu{ôá5ž)¿5àewb#`†¬ûR”ê¢ö>B먂½äæÖ…30rf×J£Gíb_Ë%Gt´—Qs._ØsC»<â†üøÿ—Õœn(i{ÓÈžî¢ •�™ëm&@‰5XŸ›µ—OÏZciÙ.qsÀòù‹ßüßÿ㲹ə׿ãgæ/Ó’â;B B B@ˆ €8"""ž÷}öwo6{{üÜ’5[ ž(_óDQP:ø Ž—Š¿²>Ä¢Ô_…^Ê왌9I÷_ÒRQæ"3PM.ÁçGÂxD~ÿ5y„4 =ub O’ƒ�t¢¿Š) -€�GaÊëQø'äÚQI§º©BÉUrð‡ü¡MN®‡<¯ŒT è“RKâ­GL IÿQ ÿR¸í[±¿aÅ!·Œ–y¯£Ù€ÄìVÌ ?þ Éãwt»dŽúy\µáƺ¬km b”� Ê6Ã`sÑKOXkü€±Ê]Ξ°L Q$=s)ö&Žl5$п±�¸µkäÄ4*0�4‡»šÓ¨not²6 Âáä[f´²Ò�ñŒ, Jx*tz«¼6$뙽|ó•î7Šq?û_òxå@ Æé�cCˆÿ,v$ò4ƒ˜k+[î7x·íâ… öÄ;q²fÇOV0˜³Z¥ÀΚ±•ÖFóò® òúØÐ<+btµ”)ÂÐje±òã�Y�œÚ€JÁ­W̳w*óÚœ·HMÀiß÷öùw(S¿Vî ñ»Ú*í�jq‚‹[Öì´­ÇS‡1]šž²c•Š9uÊ–Ï]°­å•Oþß¿ÿÿ²‡åþÑ/þüÏþgÕ]„@„@„€ŽxF!!!!p>ùÙ‡ÿùÝo}ç/-5ÿᥥê›±ÚÄ$Q5kA½�JU$¨5Ë*¼Té¹D ©²$Æ"À…³¹z>!­�œ&)\IHžB•4ìUõt¾Edéá_x܈yUâ8®˜ »Ò|‘²…a:r'5†[Q>aN?tEàH}£�¾Ußz¤éÞÑQ⺤խÙJKÝ›6•½`ã£ÓVžF `‘úZ䇸G[@ŧ}ýk„lj¿”0¸ø/À§ú'`IûAjÅ~6ƒæt¸@´é@W�Fg˜+UÎ0‘V¢orï?³«¤è�ˆ؇ˆ €}8è±ËO�û>õÈ¿¾û-ïúÔüb É?„ Õ¬X™±|y)™+›$æìx®ŒüÂFb|ÿÅ’‡ç þEél´¤þ‹Ó;ø]ª£(�O'‚,0 { x\ÕŸ¼N%oÅ“Í=g,$HuJ\«G¡(�nòD’_¯š'ô“·Rò Ú=¤bb !ôÝO˜4Dì÷ ÜP�ç]à^wü<}øæ`Co‹ÿ�[}ð¸U{gÐX¥tTr©bˆ1Ã!éÔî¬à#)»ê"Ì-s’Ý07 ”‡�•«ø+? �Jqéáˆ{ÈË\aVª!ý/×`ØHóCWÂÀØ5.7¬7°bÍ0�^"K÷—K[ó6|°ÿg–[vi£k ÖËV�1´.|bH#€É‡æÌ �7~{¿êݤªzö7'�K×¶ö´à´¿6 ~„´^»š‹Èæ|i…Ô"äó¬?=ínß.-®Øù‹+¶„fÀÚúÈŠØ��?†õÉÚm4O�6å­“@›Ÿ3Â&¸k®©Ajï dЄm°„îò»²íótHèKØïS ·RÆ9—†æCb?“¶oëm˜ÖÀ¡69aŽ�0åZ[«ÍÆßû‰·þÌ»úm?wìc÷~ð϶«Žž��}acÑEDDì{|ü_þïš�̯_œß@¥x=Y¯ÃÈT�«ýJ0FXõw�ý&Nê«|ræÒ`ÇÖDÁ;R&”m©S§¤ÍRß”dL²për"êÃ|¡z KQ@Ga=DDgø"M:}SŽ3È¡oeSî�6”!šËCy‡||â÷v¨=¸“vÉ&ÁˆFŠ¸ë‚€÷Aع,‚?<]m’wa�̯\²AqÞfr�<-¢ê½I0ô'$ ˆ>mSûtnÞ™\èm㈀`¡k o”“Žƒ|!Î=Ô…3ˆ×bµu]_Ø_µÖ:Ê ¶¦[ŽÛFH(sÝRŸàgàÔ›ýé4§üè  áö'2Ì$:0^-q·û˜-£PØBR)� \D;ätäÄ'âþáﵯdú�¬_Êézð[± ´9À'MÒmÖ�ˆ}¿% µ_™ŠÑÑþ áÇŽ¤]äñÄoY›±N'g/5Ðhpk@ǾñÕy»ã¥Çì/ŸµC™Wða hTáÓ�‘sËüjÞ©˜¤Mz… Q�7Ìí4)…•š’ÂïêÍÚ�ðÙd¡ ƒvh-® ìë(eíßú¿F@†g¥Ë5�Ï©NOØí3ßoG76íüé³¶ráü?þw¿ÿ;ÿxv¬þ¿ðæŸùIþÿyæÊ¯Þ¤!!°G!{tàb³#"¾;ø/ÿåËoumëó—V í.’}ˆ¼l®Žuj$¾Å:Î!v»"ø bKe$MB°�TÉð¬[é3“K4¡Ýa•TܼÒòÔNÖþ"|‘€ûñq¾œñ»Q;Ò‚Š ÓÛWy²å6ìüÙoك߷»¾ç„½â{gíøÑPûñ…§hÚ¢u¾]oêõVñqãäú®ÊS˜é�¶6øÓ˜]‰�DZ؟tó̸ŽB¯Î¨ïLÛ�hyi_©üë ¯Â´ŸçÑ8Î5‚§n»Å¾ó�m-.üÄ{>ð»Ãߺ÷¾6a…WßsÏ=�ë²»²è�ˆ¸é 7Ý�ÆED<üÍß|ë}báOŸ<ß84àœò(ƒt$s”©@Ô!‘JqíÝ@gùÁ:Es\'lU¿ Vœ�—"´Ÿñç:§3­RAy#‚_’}¥!ì‚va°žKˆªr“ÂIq"Æ]]œ#­¼ ÓA„�Fc õ‘V–öI«zU‡[»VV}Sfxô•:o-j·Ò«nþAü AÔÛ‰~©úZ00Ú¨ç®ÁèXáN÷…nǶ6 †‰u› vr®k•܆•KHÌsˆP×Ôuõ[5€ô»¤\eÓ1EBÛÄÀ‰ ¼ANPÓõ~ˆþirÐr@?ƒ1㌀ ×f{\MÖâ^»Í –Ù:b™ÖaËÖ¦¸5㈴[}Ôèˆï¼ê1>!…b=”.ëRïÄyÀžúQ/DÔ‹wa�FŒÎöaŒФ«fü©uÝ%¦«.ñW—™®­²§úûTìž¿>°$IßIê$I:ã·Ë`Î9»>`¿ìÀlƒ|e[’ñP8®~5(F6Ù‡²²ùL Æ\™´EëÉú(W‰–Pÿƒ`Ȥç/¶lyåa{ø;§í¥·ÏÙ�w¶£Gj0£Hª½}¥LjtÔ¿aHéoÛn‹Z•64yó|é÷vËwy(ƒè�m,Éãu„"w÷Ûm±$k_…„kÓâHéù’2½våÞiE(+MÏ ´¥‚õКh£±$†-NìaìcúEwo¤­s®Ïßz»Å¬Cì,ä­FÞ“/¿ËzÇméÒ‚ÍŸ?ÿ}ç—Wú¿ñ¿w®pÇËnýg¯~uªÞ¶SaôEDÜ4¸r?¹i:;!!!p% :²ýó¯ÿ›õõ­ÿa«©óé³ II_Dº¤Qø!Eb¦$MˆäœvË@»;�ë>H•Þ.­"«hû,ÄŽ�Í oh"¾å—D‹3Ò9ˆ&�<©ª:)®ôC9âtm^žtIÂ(7—Áº>ñ29§ûÖe÷Zd{x`L€(w‹mgäAˆóœ±ö¢;ñ¯@ÎD¾ØçÚ© CW@õ_êþi«¢0M:¡kÿRê˦†Ú.É›k+ÀP¯o„s8ÓÙ'H�üb¿ÈÈc#ƒD2‡e²\wòÍEm\´Ìø4¦mÈ�"ò³"‚_‘-ºЇV#BÇœÉCÃH†ò‰ã!ŠOÇ-mÁ^zkŒ�MF_Ãxú1bÂÄÐÊÃܯå¬ÎMUæK)' `‚1pÒ¼U÷£Ûãx¦A¼ru_ñ}eVíš#Oë4‡xȧ’JæÔ¾ªï \€,Z[Í6ûÕ¹ž-,.ÚãO,Øí·°ï¹ë¨?ž±z­ Õ}Ÿ�l‘ßCûž,%"-Ç?”!Kæg^×Âì dƒNZÃÛÛ›|û+ìqAË@飄I:Ï-¿göpí þ™¾=Í•?iúËÃÓRõö£[—G{±^>áW–�þ§,~Ü í@ýe!ªßYŽìŒÎâÚ�æØ_?òHó7ÿèÞáÁé3ÿàu¯[»¢ªø!!°‡!{xðbÓ#"ž÷ßÿÄüòè[ëKÇ67ûHkA0±ä_È×��q�’Dñ�g)�Oq"æ¶t%•TçÁžGúJ1¹4o‚TnJäÈïßžTñTš•¶€Ò©þD\+† `ÿÓ‰cGÖ¤®0m·ZÖØlc+ k_\þŽ=øÀwì¶ÛÚËï:i'NÔ­>VA[GW~n²>ÑXb+bߥÊ10Íá6ë}«Ñ´×²‘¢GlUß…ý[Ì;1¾4ïÃÞMß÷´jGP­ííîå‡üÛ _ëDëf; MôÜÞÛe_-ÛÓ—­¦4߳ĴÕ1�|µl0‰sÜ�ãüĨď­/,f/,,®¾çÞ÷ÛÌLýØ=ÿMç¯VS ‹ˆØ[ˆ €½5^±µÏñé/ï¶3ý�µŠÎ�†igI³Y,J#ù!é �s 4MR}�HáS�QÂÉj%BƬœÈ…ÈQb!zúN‰}••îe¨œ´,˜òP-X¡äú’‡fáà‡ qF@Êá:[íÒ%UEz¡ R±VÕRÝÌb­Y5iA‚ t…Rz+ÍÊæ DâKLp†¿Ï̓ÌÙ8ÈOØÖpÒÐxr}ËYX±Ç..Û…%Îù·¨¿~КXèî£îî6L„Ò°eµlIQË&r-®ÿk:å÷mPR^!ÆNÓ� æ­ž¥è®à=(n˜Ë:·Ç[J[…ȇ†–ÑÆÁÇ-€NcÃzk—¬T¿h•ñƒV¨�Ã:jí9¤ÝŒÌk•ã=ÝÝ3•»ãôµ;v'foù$Å׉c‡WÒE�Ð¥¨Ì� <’Z¥dUÎÿì½Y”fÙUß¹¿yŒ1‡È¡r¨¬!KE©TXØ´Á�—¼X-3ÙH�±- «_º—û¡»W?´^ܘîÕvÓØ m„©@H¢I½,d!¹�QIB¨J5äS°aw2•]¤ß1òÇŽµ‹Ä Y IÌ'ùã%JZwmþ@èé/ß…Î…ô!9ÏÑû1æ´&¸ž?+G…~�d*±çʰ;ìÄH¤ïIkwŸ¤nGÀë(†ÏÒ©×]P‚M!n�f¿•Áî£Ûi7ØuÍC„içkã†ÚåªØôzÆ®²SöÊbÍ^š]¶‹+«¶Üâ€?ŒsõG±@žê&FIC€£žK+vm²ˆŠUÛ*»â@)Õ�z<Õ@DµÀ&‰†P7=ÉzйWN¹Ð_íÞõdŸd^L¹@Ðâ§.+qõNݺ –]Ÿ±\Åâî$mB6]!ïÒ� àä?ˆµ3{HõŒè~¯Z{çËaGê¿‚…D¨Õñ½2V$õ_Ì¡PÌZ)‡  :FSP\ïÝ׿óðHr¼ûȰƒ�ÇŽ„}®®N_ÁÖ‰lqH婾‰ÔS~ƒ�ØÉôluÆæÊ¦-,\´³¯êä€6u0c¦�À€^›þÙìlZ¾Ø‡©)K,HTÑYéÉ\°ZašÊ¡:®÷šØ®aÞ W;Ô¯5òýå­‰Ysžb`VðrÌõîÑ�3Œ½l�YZÂØì1†;0±¥ŪŢí;~Â*û÷[ûs\K+«/üŸÏ~Ä&Sù·½çÇßñŸîQõ“b$¸ $ €Û^òj�÷>ó™¯üÀf½ý'³ó CúQÿ"F¡ÐãäÈ6Hð.v„ ’û²ØôJë(>¡irBæ|G$h‹ @øìÏÕNI•JÏ%\Ù; º'"=vNè{8/E„`ðÌ»Òß&2Hiµ[®zxµô‚ç§”*; l.bJT"*ìZsǸžZ&ÂßÓ—Âb $ Û ˜T,?nõNÕ–×;6·:°/¾|Ñ®nfìâjß[+•ã¬û*†Ù8¶M„¿NCè÷;¤8gZê¶ÕüÀÆJM/lZ©¿dåÞš±P„ÚCñ€?—ið¶9€1â–¨�έÐÍ[åž»þãb»"F©�$ô¥ir€³?éË@àcU;/†0í5V¬¿vÍlõ²ÙØ„¥Ø%L0þçÆìµ‡° Èt@þÕjå,CÀ¾ ~¢V©ß:„öá!(¦W|EŽ!-¡ PêÙ*&MŽ’TÏOWh¶Ä%¸E `òn ¯ˆý4’8ÝŽtùÉŽ®Ùgn¬T`ã¤i›m|�Pf.ëÚÌLÝ®\¾b¯¼ýíånWJÆØ{d®rÅ~V}½-j›ÌZ›ǽˆúÎZ³e«7Xbž›zäQ›xè!›Ÿ�³5NX¿xå³ÿá£Cͧü“?þoÿðE%Á ܇H÷áGIª”@ �ÀkƒÀêùŸm6û¿>3[·V¤¥' ãeÕ’Ù¹�Å{þ=þÚÅ’Ã¥£¥tny=vh§Õœ0u$- n¾óCòÉkàJBŒ)ï»vwEïÂ?`x¾óëñ¤�Ò‘?oo=ƒ Š¨Å© 8¦{¨ŒçäBÁ:ÔÉ‘MªBJ¹k·º‰á+12è½j2Ï�´e‰“�¥Y_„`Í öPœ©Ý�ÿ*úým{ùìš�¿¶nW66m³?�Žÿ8çÜ#-!a ûu0üWÆhV˜vÚ Ï”[ÁÔûh¹c#¥5+§°A0gEÒ!Žap‚�v¾'D½…HÒ]Þ.݈™ìÀ  ¸‡N•Õ7U�©—ÃWÄ¿TtT`ž ínwZkÖ[›±Þò¨e*ã|fF\lVÒÊÅEˆ•[}'ï;ï Q™‘ÿ¶þv‹†×áíM‰3ÄΫ`$qbípêt‹ã§RÈØx…cK][‚0€ƒ[Ìôãváÿ†~Ÿ¾×…)9è0Ð4ŸëøN 9•ñ§±Ø"®�g|2¶›ÌgµéRV*�[eä -/¯ÙÚZÇ®\=o/½\µÇNOØ©GJ¶ÿL¿Â(oµÈ¥í³�æßA*0V2¾ª‰ŸÏœÕ¥ù[ †˜�a.P=àôúüâŒcú½³ÅLœgÁ÷Ê RZÓ¼ž^ ê¯fhÂ⎥K—Jþè*p×Å=pâa{äÄ)k=~Ú¦Ï�³‹ç/üîÿñ[¿õ»öíûÿéþàÿîY%? Ü×HVàûúó$•K �@`7|îóÿåmÔí} ‹m,Úcµ«þ½Ž�/ôû]$[úý3JA¾„�‚,ìn@|ˆ:cûQ„»vÕïâߢM…ñì(šs‚äœÂå±á®€€ÜE©táYHžïÒë¿ÒºãYÔN$“ýŽúë¤qT’»„èÓÝÓ1�)îi‰ø;ÚJ �Ú'M„M©ÞéÉÊš¡¿Ú+Z©záü²-ÖsöÊtÓ¾v朽zµi‹9kb¡WÜÇx%ÞÙÇ1€ë6¨[£eý,j�ͺutÿ1­eåRÍÆÓ›6‘Y¶1[p €BÓr”í»ÿ"‚ÉBur}WÞ£¤ábJDm™v`ð{ïœê¢Ë{‡C__@U _N¿|^1²À=ݩ٠¾d}Ô2kÌ<�1F¥(ö‡úPô²²u§/E>!Ãà'\�[IBÂòW]Ú»9�XãG -g|0¦D!ýo%¸'ÕbÆ*ܽŸÂ$�Ž%‰K p;ÁÈ)}�.Í«Œ*|í¼k®×•‚I 7`(UF1þ*©¦¾mÖ1þ‡‘Tñ šåùÊ««vþâ4FGìé§�Úc��ÀÀnŠwSÍW"‡¥®¥KÇXjÎÓPÿšs5û2üY£>ÌwÎõuD³‹Ò�¡*c_lôÚ­¹ÛšD¼†”«9/°ÂZH½ Õo›5Ò�ÎÂØMs̩ҵ»=?ú´ÐáíÙÔéGmòÄ1›G5`æò¥_üÅèÇÊ•_þù¿÷ŽÿÎ3¿µ–%o%H ð-†€Omßâ2’ì$H p' �úìg¿ô++Ëï]]Ù°ZCMÅ£ sò‹C7s0’‚¸:úš=ƒp 9¾%’Ôu/E”:a ’æá¼®™�'àHéH$A®-à aJŒßwþ#BÏÏŽFf_꾋L¾½×îg kûiÂÓܵk¯;x”6•=mD2]л"®E!¡O™Úmæp&Z€Å}ÞÏCŒç¤Ó/tŒZIšÔÏSoÒÞÖü‘ôÑ%¾E<øn.3bYv§Ññ?s¥n_=³d¯ÌÔlfI{-Îb:+ò´Ó¤=ØG¾ìþS~š]¯lj…:²[+øuÙ‡¹2Ž®ÿ#¥Yûޱ{jôŒ=žyÕŽn¾`“ýeßrBY `äBÞ0h¡ç!cY2h˜a΂8f`dèÈ ¡ã”{·�ÄþÓÀR®ŸÂСt‰]”?0TG}ƒÀPç6úÅuè€^¦h•‰)K|Ò2oúAË~3"D¤3 \Ù —h{A3ÖÄc±z䄯;¡ \Ø~[X¼ç{o~è“n$�Þ‹ z#ÞÂ>G;ö2›äû7±Áqq®o¯\1ûú¹ºýå™e»¶Ñ±&ƒ <³Ø¤ÄÓ½iARêƒ 'Y¿÷ùÇ�Æ­jf1Ôlv½óè�—1TIæ~&NÍ\škÙô†QеïýÞ§ìè‘”=tÜŒ“ñ°_Á<ÐY‚9Ú¶*¯A,©²|F}9cí¶æû¬Û[qF(EŠp–‘P|~i­ðjz}¯¯ãkV6·çT�@ü‡|C\4)§§[PÜš¨Cˆ+z±ÉŒa–±Î’d�ZÍVæçlþÊ´«ýøÏüð�¾“5ó¶kê—ü&H p§ �HÜ)H&ù$H ð-�ÈSêSü¥ß__o½óòùºî©)DÑ«ˆx‚•¡ß/½L7ÎÉMm"²bô% \Nø»Î¦2á$Áñ]_%%È%„쀳8:…¿Â%’Nyê¥ð^À”ô.åûå ~òß² ä ÙR6JP1+|1RÚiJ#{XeÊç²nÍ_ ‡HWšc¯6›Mv³Øµ×1V•ƒÖB\ÿâlËf6ì/¿±l y›]ÏÚJgŸ5!ü»¨tx_;ô¹åÀ(ú¦½´ÛíP)ýIò �­Qôü÷³û?5X¶C�Û×_°ò`ä±X¤ d(KðÒ eM~B¨|ÅÌ‚½Z¶ &Þ¹—NCìÁ^õ ÐÐÙ₉˜>9È™À8�½ÑÚ°ÖÆ’¥×9eatÝJŽHD’"Ã7⤻pé;ûŸò°�Kòo«®àÚy'�úNø®Û!ø²C‘Eu„sÕKbd‰9&Æ ý"Ë©‰K p{`ü†‰Ö³Ñ¬æ.ž—£Ð¨_zçÖ˜ᎽرÞg~ìÂm2—17~ê�_¶#G+Ø8`OC=¨¿¾N8P>!ÇÔXûÜ3À¹@[ûXÆî´ëV[_²ÞÒ<ºÄË–ËcwCwR…W;% 1c‰¹û·&H¹îp7숽ïTý-z¿X&jz€kxÒa–%úÜ*å¶fÀQ;ñpÉ&+%«·™ñ˜7U�õ„±�Æx~ËV6±“R–t3^\U#ž:ªŸÖ¡¸nxï²SM¼j¬CqwÔ†ùoÇóPýÜÖó} ¶>L™b("1�çìO ÌŽölßþ¶4=có/ÿW›½F÷·ÿc—OŸ<öèw}×wEœ—¡ o�w ஂ;),�@�o�çŸ>·4×{~}­÷ôü’�+½T�Ì/³kXAËBC€d�´¤9º) (��è Ä”I@]ˆÅD°µg¯ÔzF»Â“ÿ*�üމ°§»�!/†üÁ–”t;¥SRòö8îNüé²�Çu,·H«�q¨ •ᔣê(…ÿýstñ¥7 ö6A8…ªJ??S¤29DRy}~©o¯^š³Îm²ûÏqWM¤#Ò±è? Ì`6hg~1/#l¾ Ó$# ždcÀm Ä o!"€‰Ë§[6RhÚd®fý7Ö^²Jz ¢fí Ä?ßE¾Ã>0[”§G#e�Š˜4úN$*‚ìu»N-ÃBNþˆ| w`%VE‡#ÅñÉ@ÄÊp¤Œ+ÊÌx·‡{³n�ü,–È{cˆÂ"2¬o,‘bšå°KCä AòA¡rñýz¿G>p?4Ïá§oª¾·NЕ˜ppX‚Ì©�ÃQ×ɉK p[P‡Û1�¨÷i4Ëÿv�ôÀèG)4는P˜û\R�>ÚcŽì3ßæ‹˜Î)Ì¢ôìâ¥M[\š¶«ÓmìG2 o§NCäCì2�èÁ6d-›â0ã®és¸üP3•UÃo;†#nî¿Å×vf ¢||Ýâ1Àn;ÕösH8\¬Ø¼jSJ:iÜá™8<[ì¢ �ùY;òè£vòÔ£¶#àâ+gŽ?÷âËíÿçÿ·1U)ú‘ù‘úvI‰/�@�» �„p7¡�”•@ �Àžxî¹çJ+ �—_}aõx£Ž|§ˆå$ľޡá)”}í :–ÚÐî@ÐõB¡%já4¢³¡¼<܉Ô8>PñŽèˆø NLƒ­ðDÏÂà…Ã=B…ÀÞBIÜ…ÉÅážQ@(câ?ÊÜoÎÀçw½CÞ:k9žéÌ�—·…ò$ž¯ ŠÐoQ—   ò�EftÐ;誫j/\°kKvîJÍ.¡k½X±ú`ÜÚ™që(�e¤çŠ^ª ]Œ ’Ø\û׎?ubKítÛj“Ú/íN¿lÓæ`”sMˆ¸š•»ë–ï¬cünÓß°;.BzÀ7É #¤š²h¯À—ÂV�€æì?éþ nN~~/œW‰±ÆŽ¹€îª¬$´«˜'|WÕ‚©ì°ïåéEäêRëÂ¥�€Œ¡ŸÉQ~Ȱƒ°@lŠ€@L]øSJ4H•~C€|Šà¦këô¾GH—#žJï E 9)hÛÇŽ!r]î¦<âø@È„7!ÔŸ'½ôð;ÖI _ž/rìV«×7»6=³l3 «öÂÙ[o¦l­†ñ)ìòÐOMa°ƒh�-©>­ :Ž-Kutôašmš»Ømvb39,b³óÕË  £„NÔB¤ï´#ǰ ¨V>×±b¾�ÑÅ–eZlÚ´Ô拈Œaɞꀊá W2ı`¨†#Ùb1ñía˜“É]t�¸×‡s$ÖûjáëfØÎK'z›«^è(,ÿaÏ"æZªV8ß¾ÂOûõ¹I÷‡4°‘L5ìô÷Ÿáð×¾bܦð¾–ñZdøVP‘¨” ô¥–Õ�ˆK—ÐK—@àV!÷·�ïktEs9sO`HÒJ}�¸øÎL3oÉÀ§¡âF¦˜¸d_³ÐÛø]Æt¯…¤ @z2sWÑtþ™GÿìÏÎÚùs#0B`ÄŽ6›Ôé ôw91|.Tž¼-©Ù€¹œæ¥° ^»91v‡°§&ªès¿˜%š÷dE5÷³Î„5&yæÆv<ñ¸=ýˆ]xá/s­Zmù×?ñ,'…ä�ÿäÛôÊn5IÂ$¸óHw¦IŽ ¼üÅ_¼xhq¦~öÜ‹½ÊúÄj7�þä:ÃXTçìùv ¸¥Ã„+„XNÈÖx¯�ivYä!bå»B´÷ÕÇj««/žýÆt®]…ðÅŠú>hiŽQƒà¯# $B„1ÏŽ h“#dB.@Äd°.Ç¶Š„Ø}çÆãßà­Yq,ÄB�¢àÕqñ�_¦BÍ„¡ +–¿êÏ;ˆ¾�'íÛk7[»øßWÍéTv!WÏLÈ’ïú׃öh—ÜÏ–æ=å£cèܺ²Ø¨:¤3Ukvs¶ƒäìÅ{åÌ,úþuÒbq¾xÄj½ý�íß—ƒ¨b?Çñk޶ƒ¤Yk@tUKÅeçZdxÄLR˜):ß¹%qWÊÍõÙц Ë“(8BË kAÚÒ`º£ìÙNp àxjÝ*©M/èxŠ92­V;À`"8 EV K–T€à§xÃáÌ^ºÃFQØ­;ï^¶²Ô“˜(q¦ºÇ¨kø!Då‘–Á>C›Õ~¯}1á.f RbÈÇ\¡‹ây‹Á¡cþ IŒÔä +L=aéñ#fÕ …±/¤&DÓ"^AÞRë�d„ ®2ˆPœêëH3}Êz0�>ªˆ*}_µ3À94B  Êx¥#þ$+ºr�SòH¤ô€3 ¦µåæ÷úö®µÏ»ÞD|>Öô q¦~Æøv¸âè½ô$z47‡ù™‘K¿Õ4¢,2Hú¤Ç£çï РwF/ z½<»ÛûݘàFmÓžÿÊæèKöøcSvúôa{æ-ãÄ¡ºEZ¦j£ÏEEô§úl×[5R]£©bØç×»ª•®à|îõù$<ï–×púxFTØÎœx?ååG¢íÒvDy{�L”É€cXÅsiœ·î:V®üZ�–û3„•PÓ`g,î;ò�­,,ÙìÕi[ZXüÚûÿ#VÉä¿ÿ½ãŸñ’Ÿ î8vòw¼Œ$à Ø?ÿÒ[—ÖŸ_[©cÑaÁç×g�‚[é(?¡&BÖA)rÎýöá…#A1já¯Dï´FDœ£5~ˆ‹‹\ò,2Û‘“-,Gù+4hŽýÀT�ؽ0Ý=?£Lª6¡æ˜œWÍ õ†¤ÏîbüAí¤#v�à>~‰Âsé™÷Á�Èš¼¸‚nhëèXãçÜéÇùõ8Ñ€=xvK8ŠÊ­öWíÒôªÍÌaØïÊ’-­4!ì±�-S�PŸ³i{"¶�ˆb©öQÄ«5Â}þ¤\€a�¶5Ñ H±ã_m¬ˆHk.Õ ¢H@à‹ÙR†Ip¼Ô°'ËÓöxöö¦Ìóv*{‘£a Ô¬ÏnxÆ�¡åßO¥©�h;ê”í*bØDpõúưêóú�ìˆa¢3H@d©¯í •¡�”KýÃwWß uóÞ¢42~€µo¶ô­Ï1u-DU[Hš¹Ïƒèç»u Œ�ƒ*½ºm§ÕüKzÆÆ}›UŽ=c�Ê~`PqBW†Ùã}.`+pôøhyàÔ� Š‘äÐ¥½I¹A¦MýLƒØ"ð]½ƒvôa$ œQúsõî‚eŸc'ktË/7ì?}õš}ýRÇfÖ+¶£¯ 3Jï%.�À­@`·™ÃÇ·gw,î$ ıÂâp½_ÁçT­¿»�s •¨L¶Ã}*'Ôƒü'Vã‚9šBï�¹ô©§NÚÉ““0rv`?³Ó@†C†q_dΑé|1 Ä0Í£n$b³ «æ±™Ñe§<-I*1j™ñ{0w5Êœ‰«õ&¶jAõÂØ wÍ7„²6ÉiNpQý5?‡v(t»Ížtè'¤ ØáUZ­õïÅG±[o©è¨üøÅP›ð$ækžö¥`Pël©Q¥xÞX]µù™[™›³úÊŠíùÇ?ûCïø­8�äž@ �À��@"pgà˜ä’@ �ÀxîO¿üöååÆ§Î½�¸x¡PD¤â½»Š¾>ÌÄO3XœäÆl£fvy®f×WìʵuÛ€þÜ�m„ÎÄ É¤"(¸#j}‰ïo9'ø…ÞÌ…öy«@¸2ˆïg!ns “bZtý8@l‚h"þŸe÷?½nûË6Ú]²R…oÈÎ8•�¨g@;U‡áz1uô0TÄAâ½ômÀݬ¢¯!ŽÜñìqŒ¾Šn /¡z„º((H]ȧDÔ‰Î�²ƒÇ(�Pm ²öô�ë pe$*ØÅë—§¬¸ÿiK?ô7¬à-¶Y>eéʬ˜@�ï¡dAªB²!‹©žú‰z°,‚˜ᣳB=¹?pêdÁ âD„EP‘–.ý!"„0n If³’T‰�Cªç$.�À­C`÷þs}(ý“ áÙzïÕ—wºíÜ”Éö“rTŸßf0jQšˆÁ›jÛ×_\²K——ìܹŠ�~ü ê%;p�Ù†#le0°Ä+:êUêl­¶ˆ}æb1ä7è¸W?ažÕ1«¨#¡ÚÕ†]œÍ`yÐËT½t饨ïUá)Ì?ª«ÅΠ%o©¤C¼¼ÃÅ „�у«©)·›#n¯(%“½ Y³­ŽLÍò,[…ƒûí¶Uö;j«×®ÙÆââé÷~÷ƒXú_~îÇÿáÿ¶[QIX�¯š±—@ �@�;�/|öËïÞXm~èÚÕMÛÜ@篅˜`ª Ò‚È:» =tþ�€ˆJ² úMÄ‚;üÂ/^“‹‘ ÞU7Å<¢ �Àijü¾[ì/*LhSpUÒ“�+îòBôˆîɱëbb%}þŒˆBÕ !v®/ìvºÑi…cßÍõëN·V�#Õ‡õ®è}.Ã`¥ÎOgéÊ×$òŒŒ ÑEéÂËc¿+Ôu˜yCȃåðáëæµ—M‰þf³°Y$!áïꞸ"â¾/"=Züz¶Â:غX\Ü´•åy»xñ‚½ðÂ(L€#H²ÃSf æŒZó… b‚]T¸˜'$)6ð#Z™=‘qÌr:‡ÉŒy‡TØ$Éb]SµˆYiΈäYar>Ìô¤IR/n] »÷cOÌÙ s¼:¬§:)$/[! Õ MÙÆü¢-\�þ—ÿæƒÿá_–2Ù_ûùwÿô{Õ¾Ä%H pëH·»äÍ v�ÀsŸýÚ¿¼¸ùo¦/¬ËX<ØHBm C`ehÝ +­Ý�N[ÖéÃnGŒ°8Yá&¶—¨Ü�QúaÿP’àN �'Õ¹r]HœÂ@^g&iŠw~œCA,�Píª€`mÙpdKù€Ü€ÔIÒuâ¥# r£2¥ûØ…êäi«·ú÷«Ùôü²]�[�ðorìŸW¬Ë#%”x1uÒ³ñC�$IÀ.2ªµt«NÕŒÛ1@M¡ç«  üŠÕP� 0ÆîÿXfÕFlÍ ˆý§±/ ÄM¢ón·ZƒÛ{o˜à»Zž�}Å`Å€ï(õÝ]µƒxA\_@ߟZT;ðäC!eë6ú} *" ÑâÝznÂÖ]•{œæ>��„'-S?Êî[Á0´A'é�<Ä­Hú"ߥT@Fƒ�9$x‘�� ‰ÃTs�Kù«_¨Ž2(x/aè »�ŸxÀy×0 AÉFÝEÒ$Äœe!]ýWÒ„ÞNéÉ» î-˜35’ƒSŸ–/ �o�ÆR.Ža,°b�ƺ½úÊŠÍLoØù³«œ0bO=yc�c=$+`NÂÆMžù�ù©QìS¼lfÀÈÔ¥¡Ã”æóŽÊSi¡ÄP‹ø7®…fÃmÂ_õåò5ŠL¾‰s[7IqûoLx³÷õVO–59ÀѺÖf~lw:¨¶a ‘:a¥T,btuÔ&”4€­Î/þó÷ìþy·ÖøäûîŸú!ì{WàÆ*%! DØmÞH€“@ �@�× �Ïüá_üB­ÖùŸšu8ùM' þy,úcî|£  a+ñ`7†Î_›�€Œl£Q*ØWtf'¸±_÷Ø*÷˜€ŠãâtN³³"”GÒŽp‚Dƒ{�à×N½Þq»¡aY„±7Ý…«(L¶d¼/ãºîÌ„yñHq†²ÓÞ¯0¹NŠö´#­²i— Ê]ž©ÙìRÍffçmYÿ^šd%Ò›– t±Ð�!d«`Á¥zæ¡¢d\­ÃQªÒ­8‰p¶!ð³¹Êó}dÞ ?hò9´-¬ÚÉìª==¶`o}ÕN ^°}�—l´¿f¥Tdé‡Ë­”~û慨i·ºç¥ïÇ÷ÁìÂÿ˜¡£o_Ý…çH:I°�YOs^µ,ý7øNëéq›³C6—:i ©Ó¶Q8eí2ÄaÑU8À/ŸãxF¤;*œ¦PÅÔý(ëÄhÖÆGeñ_ø]Òû•�‡,jÙÇ(öÛ‘ ó@b¹*u}0ùðRÁII€ôÑiÖñœ´–Î�á4NñH»h1âРNSÏÏ×íÏ_Z¶¯_ìØùÙ¢]^BÝ„q!‰K ðàA@Œ_(vú¿f_d‚ùÙ¥‡ Í0QåÐùÑ]ÆEQúgŸuo°a'Ž—í‘GÚO³©Ã¼(¢Ù€3n¬Q_³*Ggˆ0†gH1Œ+Ö ©yi µÓIÜùpÒXT­b‚?0:ýÙ™ŠÕ¼(û-{3á´ÖìíÔÅ«¬×ï´Öv{Ømát16BN¡¾4�œ:i @¼æXäàl)¹éKWlezÖÒ¬™ üËWì‡ßú¾TÔ°×_•ä�oH<˜˜ÇòS%�N pBà?ò뿾º²ñ³‹×jÖ†ðO¡£žag»„¨ŸãäÒˆE¤Àô­Û™ÑŸÕN¬ÒB’AÔÊ9 ŸØOpôHšˆÀVd„oD7'¼c¿¢w¸è=/b8oO¤€@4†<·JÛ*7.K;å^†’(O?x%\î{œNìÂt°&h Dz Ä%…^§’ÔÀûV×7l$f½1°‹ÓMÂÒú2êÇ6�vû�UdO„k×ÅÑÙõIòMSíšrI‚ Ï–‘êà…úýuþÐŽ,•’!7‰ýkï_»ÿ:m±ãd”§}ˆÿïK­ØHoƒ€K Ÿ¨€ÌJ"�†Q`@,_gÉw09�ЇqDTè­,|`vþ…äÊX‰ ü{òŽN1P ÈyüBØA¾EÛì�ÛÒà°Í¤¶«\WzÇl¾1fkKÈøyÃx�àÍa¡cg›"þÇ[�­À(ÀH±»§]o³J±�ÁG�XÄ Hd°Ý 1xgyýàŸÐ ®%á1@]­Š™Vjokႇ˜"R3ÑJ\�[€fÐï£G�€ ;×­3¶D´ˆå1ö*)˜Ì€AÄ^yõšÍÍ_µKWêvòä;Å1‚‡9X¤\‘ZÀ$ó’T­˜ÕØ ößew<%óÛ�#Gesùb§E6ÔE³b´z)çƒ�;~Ë.~7¾ß˜Q¼¶ß£ÚÁ~€‘­{¨aøUnšEÔBÙ9( ú&å©5Ä{MIS¥íȧíÉ7¿Åæ_9kk³óÏýÈÇz¿öÛ¿wõ±#û~ÛÛÞ&®Lâ$ø&Ø{ä~““è Þ¸`aOýéŸ|ékóõ´³f÷ÔX¨‡ðOsD� û úX´oj—…D¬ˆü‘þ¢ˆM$ ÁA„¬'%ÆIÜïèÁvœã,QZ!0B‚&! 8UƒÛV>yÊ/~ö4Q:‘„](‘@²@Ð;I[³"©!Zümp&7æ&܉ pœvwÚÊâžýލ—‹>¢=ü2ÔŒ”?„þÀ–ÖÖmnqɯÕÍ®5{ö+ " )Áû&;úm¨Pµ)Å»y��æµW±©ë³+Ògç¤B”c÷9°"TŸ[p ‹²KЃ»ÐcgªÏŽU…�ñHÏ,ÚSùi{SᮯÙA{Ūýy+‘>5àØFöcØ2§b"äî¾s QìrÀ[ÒÝHä_»Ê®¦à_—6Â0üB�!=íÖ÷ìÀÌ�®¶‡î­#Ø"þ÷Ûâà¤]K=f¯´²ËvÄ.ØïU¬NŸÖé D䇡/6±ýÏÁðBÖÆV€J1‹*@ßöï+ØXe`Sûóv˜k Ïx¹OZÞ£Ž=l¸ÁÇ×IçÐÇÈ]qvY,îBk¡ÏB-åÙbfƒ#Ž´¿!¢,8-ýîÇãÏ[aqDTÈ)nØ)Ø¢8Cžcïp>þ^”�Î�¢ËÚ�”V¸¿%qäNwýäð¨°ã¬g>"@uÉ*¼ �—”÷ê†ÙÌÒš]ãœãevÿ(zjGc�E=qr¬³C$�þ|¡äHO»ƒz«åÌ’®‹‹Ã ð,„ºvR3B„H*7 …×î�E¸ÕÞ.D¼È7ßqÑ,³Ã=†îú�\Ýöa Š:@¡_cß_õ€©ÁÎ9øÒ1„_{¹w4¥:ƒ °óÄþ£oFkt, _" ¤}úR1̈…è×.¼Z…¦>ß­–·e;f³ƒÇakG;ÏÛTÿ+6‘ºfe�ÎL¶ #d‰µ�cò�¸N ŒŒ*ÜdìOR]ઠ‘õi$ò·Gç^øè”`sÒ�NÊHW‹v49]a3»Ï–ÓÇìjû˜½º~Ì.4ŽØ™Í[Åà&ß¶I_艊%½N±ðrý|nrâ»èô‡,T~1tBÁhE¶úìú÷ì@µg§ŽíéǧìÑãUƒ�ípÔ"õôþ§>È¥]3IÉèRÿ»_]Pƒü©+’0b¤©§ÿ™H`“d€T„ÎT¸ÆI ߘiÛWÎÔìkgZvi±k�4|·Ä%xð  ¹ Zßœøg~qi(ݵ’ivÖ\NOø{å @IDATÇúès¦“±øaæ.^�Žr•$Y ¡w1Ò©: ƒšUÊ]Ž�@ �ÀžxöÙgó“Å“W>YÿÒÁV ‚µ]´t#~ˆA³—�Ÿ „߈Iòí}!ÁiY×�!:Zø¥#/M?]±Óâ.ÜDw­ñÑÍ£¡‹@ŽBØŽÅ^§tQpðð« å!Oˆ†˜QÒCŒ\(qŒ\(�ž¬0CøsvÄ`0O…)›>þ6È•6v,Qÿ&´ðû ×—mq­f›ìÐ4Øn’¨Ñ(Âßw€!zˆnÞ"*UpPÍð;‚ÃEÏQŒß›ÀI®ºÜªS©*Qp lvU`TÙÅé£û?Xâ$€+`¼N»ýnë^Œ½е[-ú޼çê Ñ#:ÿB¡Ý0íOaèq.!âB·µóo¨§´ù.+Ý1[²‡ìZæ”]豳݃v¡=f+ÿ5lX´Éß‘S%xËR·dWº|x=Ë&ƒÿÊUàBHº¤]ïÛ:�by­eK…®�í;~cUW�c¤šÄNÄ,6{sä;~ãÞÕ)ýŸ:{$¢®!��¡¡{ D0h/¾<‘Ò&.�Àuz­sÜ}ÑÂËøõÉÚû¾æŠ v¤~®Ñ¡µFóf˜»8f¤…£þdL¹�ø r»BÞc¾õ?‚™¾;G~©6ª��n‰þcašÝ¸V¶Ãu@ÿìÐouŒ_—Ó)Düo¦¸ØÿeôýÏt¸šv©Uµâ»ìuœY#5�fíìчµã-fÚü”(¦ŽZ«Òõ=y �øîpípúE½Ý±& åRʦ1$xh[U³T”.&ü‡‰ÿ›"Ïßzà~Ó—ç×- ®ë¾C(påD‰.áê7$VPâYè – =5]ŒUî}æ(1Õû¨Ò-ÃMÎf'Ù¹oÚK/7ìêÌ×íØ×&a·ãÇóvô(Ù¤±CV d©ƒTì:¨�Õy§R®¸@&´ˆd× WÑ‚±hþT‹½\<í¯æÞªÓ«îñ:¦0Õ'¾ðîðëYëµj.° zÖS–WO§FÉÚPŽv0ÊÚÇhà±Ó�Ù¡#Gliæš-\�~åßýÎïZµXýžòÎùså—¸oT$ €7ê—OÚ�@`|á_©uú sëÍB·Í>*ÅuüEøAðCj‡?èüKìÂwUY�·0‰°|‹ HŽ0 1DÐ|¡,ä[ï…8!zÕñ*Å e­8¥��˜€�ÕV.ºmW)柳|W¯ˆJémJ0RbR$J j²N4\Ú4[FÇ_†ý–VÖ­ÖÄn1‘’°°Ã/©}’}€�AT“a TãµØ”„­x< ÑÜVLðšï"äU¶ö·%²^D}"ÛÅúÍFSË(x,Z@L-ÓÁRÒ#�ñ;![þ�_siw6¡ÊúvÕÔ)té€3(œ]ãañΕMZÕàØÃ&ö+Vû%ÄûO óÏÎ{Ê^\³óÿ«ùªuŠ÷'âžžænÝ]bĉW˜b4GÄ>ö0ùÕŸúy`ã¨P12’q¦ ñˆ» Y]ÞìcÂlG~‚�$vÊiKôÝõœ¦¯I à~wúÛ}qgm½þMÄ�Q/�s.ù�9°ç›;óIžÜŸsÎÖlÍ�åÍGŒi¾†Áà36 DKé8@µ ?óƒÖ„�Öͱ¬³…â>ìæ0“Àplµ×81`•SdVìêµ¶MN¤í±ÇFíñÇÛÃ+Gì”°»Á‹ý�®æ-ßå×xcÜEcQêõ Hét�›ŒAghÜàãùl·,BœC£å(4�»‹=ñsÌÔŠ‹µ(@ltÔh˜Öë ßSv/È™oì’C•]þ…xGbº:ÍAý{ZX©ÛÌšµîZ¡w•?×°»þy8î¾ñ 8Þã{\3µE—C‰}—€òwC–ÞT}§Ä%xP!Àº&"çýXó�ûùõu1Ì>�x*IÅ£%ŒÍa!$’/“„ë…�æZípt®Òd³#VªÀTFBk‰5æVíêô¼]¼¸b�?~Ò:Z±ýûÍÆÆ�V¢ x Žš•±M1.3Lâ~‘¿æKxÒäê%yínå'ñ{çq³9Lo LñÛñÝëáóÊv�W9kðÒàíRtjO�¢òap‘U8¥¬‚QÝõfÝÖZ5ì×ämìØCV�:hÕ¹y[ž‡píêGå?"©¤÷þÜ¿ë×¢¬“[�7Àâ3'�L °;¾ø¿8U[íÌ,\«§…0¤Ñ;¬ä+ÜK,®ìöv˜"\4BÇÑÖU¨Y-ÈZvµº}ŒŸ•È� y¢ðC VzÙÐ= =¾¨;ÑòÛ�DÙ(�‡‡õ<øCnQŠ=nzÉ ˆâ¯Þ qP:êáåà ì(–Ò™ÍPëÚíÇö¡­qœóÂÚ¦-®®Û*ç;¯aÑ_»Ä"ðÅ ‘z@8 €@´Zë§»ŠÐn®&ÑÜAš÷° °]Í­„:©F]RŒÿ#FÃØñ¯×ùÎ9FòÒ¨!8€–”yËulëÿU¬ÿg‹ûˆ9¤K´OÆÅ jÁ�±*¸ NÓÖ{䄨JŸÜZ‡�Cš:7õA‡®:y6ìö[ÕV8zqu0j éƒ6›=mgÖGìÂJÚæ°mQãT+NòjÚ:~Ú‚ç÷síó#ùâÒì.q̃ þ9’/âø©T‘¶B÷U3}·>u‘Õï&�õÇVÕPA êEÞÉêtõ7õC¯÷=è­»Ý�w}ÛÛCšF_^\² ÷í]_JÜçóq`hÈj^g¨si6ŠçDõs.ïïÑ]‰<-ë‚3yf®“¾â´fhÎèq$,‡ŽB¸ÊB¾N�„™ÖšL=wÎÐm6Wí¥o¬Ú™3_A`ÒÞüÔ);��€}“dAÅ¢ê"õ˜ÏسÑ1¯*- S2‹Á¼N´&tKNe„Æìõº'Ø=’¨CÝwwqün)dk%Çœ*æt& ~ÂÅ@¢E€^sŽæR …åD"´·I[Û¹Í^=zÈö;dµ…)[›Ÿ³ùk³ïÿå�ýÎû«ùâÿüžzç¿Ú½6Ih�o/$ €o¯ï™´&�Àk‚À§?ýécé^îâÌ•åtª#±þ_½²aÓWÿ¾üeNyú„½é‰C6 ?³L¨ÃûÓcò“0Œ*[>\É[ðS÷›dáÍÜ#W_Ë„ ìÔVj‡…? €?*2ƒ“ĨgQ©Ôir� 5[ ÕÊ)cŤÚdì0¥uY z®óQ�#«£v|bÄÈæ®Îص‹—áÿþÈoþÂD±ò¯úïÿØÿ°U™Ä“@àÛ àÛð£&MJ °¾ôù/�ZYÞ<·zmÝš›zËí·b¦ÊnXÆÊºMŽ:Ó™æü•óìúÊÄ=x‹Î1v$^k1AÛ.^œµ0ÇþíØ@Xë—?Vå­×£¤"Ö ‹bò©þbÔP1es§Œc7üõ‡ÃãxÏ,~Hî îÔóB� }Tã �Q⾩ù£~îÉô£­jPpËb$æÌËmÿÊê"Øl`†•è§Ê訿\ް2vJ æ8–’CÓŽ>¢jW§70J{É€+ö–§OÙÁe;r¤dãcÔ€¹HªiääDsZj\¼ê pÕIõÔ¥:o·a»n¤ßšwH4iåâôáiëYÍÝrqf�Ø»÷:<äY6=¯Ë)a:&�µV¸€˜­ ´iÖ_IÈu™TÛ�( �,—Ö‰ e‘³C§€ÕCÙÊÜ‚MŸ»ø/þÕ~õ_œ<úÐûâí?üó¯£VIÒ ngø=0�L*š@à��/|ò §×š/·ë,�=Žâ,÷|š‹ˆ4»~L�tôY˜å×δVU=-ై²�š®‰8ÇNˆJXøE"hŠÑûÛþ/Â}Æ Gòâ÷q~z7 "Â7ÑåìeHÐ[j2ÎYÊÕe7Û/¶t$[1J5A™1‰t§ è#:(‚OD¿¬ü|÷7o-Òn‚­Cn°¥ÿWgÏÆn-ámÒvhgO �’±—F²â.  :Ë©½Á…�øi(FÂå0RÚ�& ’ Žß �³'Zä²NŒ žÜ�ŸŽŸKƒbT$µ.Ú¬¶’§ª+⿟iÃóiXž¶Žn”ìp{Õžª\²·î?k§«_°öu,[‰zfú“àUUÞW[µó¿IžîH�ð{+NuïÈ®ïga2dt�ȦùfÁ †qýU®·ÂÛJå5ÒeùÞ|§6çÎ0ð—âÊŠø”åãv»É·+cåÒfÓÇí\ÿQ;ßáÞA‚ÔUp— öTK±Ðd B¶:Ôc@}Jðzr¯Øk­ÚÑ©Qû›§ÙÛŸ·‡×�œ '`WÁˆÏÂP2$oZ-JÁ�Ê`ÌËзå{Ûú¦q?!é]tBžs´_uhQå6ã«“BRI‹ Ÿ&8tÖBŠ#$ùŒ©ªyûò™†}þkëöõ‹5kfÇa€È¶„ÚÚà?‡{MQ˜w7ùñøØ»µþwA•õm õA¹¨/º_cs¯þH:uÙ¨ŸûƒüRÃù‘jG6уG„<õªÆH˜15µ™—ZÌÙMÔrö0G¾éMGìä)æúQ¦Æf§ÕÄÎÏ*õm2?I 1ð�RRNÔ“§Öj†5Ì¢)¶Ûo1Ëû/’ºrõÀxžÜª[¨‰j$‰¦Ð¾¸Îñ�`ê+æ3êáu;1�%�¦×cX)§x>œ·ag¿]–æ™,L‚°vFµ``&¤8®5Íý¯¾ô¼üÉ÷~ï?ø©ŸŒsIî ¾ ,'q |›Bà“¿ÿ‰§Ó�ü×6æØÕlçë†èǹÄóè67!,@¢YKúÀ]‹~X“ÃYçZÃËâ�Gh†\¸ÿ¶è2 ²Ç†tò‡%7¤Ö‚¬JñË‘}=RàvZžqbD/óçºæ¹�FÜþø e…úëõ"FøDèwÑì"J)†�ÄU¼ˆ4é öÙ½ï±ã ùekÐ�³u›FÇa³aS„@„ð'3XÎTPYjG†°Ü€PsÕxØíª[1ä#&ÈkuÙ¸�¼´�\)"ô•;weíÙ‹ ¢bT[¢Yº¥=Tzˆ�Òèóƒ� ã Ÿ²Ã…¶íË­ÛHvÅŠýMDÜK`ÆŸòñŽ¿‹Tü» UНÏQKUÔ묺«_lç§–ˆé F€‡ú�^J[[FuÊz²á„ úߺ݆=!1ŽÜ[ë�bèï ]í³Ëýcv©÷�]¶y 6è N¨oàæuPãUžÊT‰M@GÁIÒD{àG�.þ)ôÌ–¾'í«ßÀ¢ñ£!Ûìü5±§Ðà+6õ`T)©�YZ#DŒ”F(œ¶ãP~50½,ÕÉ+ãõ¸?ª�Û?ðÚiT 2FÚéwXÑ×d_"0I$¡ï«8¥×3­ð~¥·iXìÔNžõG¼Ñ= UœœÞO\�{�¸÷Å÷P‹˜Ý»NÃéÕ�C_ÞN¯xÍÛ!;}!Âç— SzÍÏáÒPI»j–T™8’vµ//Ûìüš>S¶'÷Ù±ãU›Ú_„Ù8É)©ë¬‘¼#®XÀè/ÓV‡é A%'Ð9]0̳0òú¨}¥áîI­I;í¡žºæé¸}¡Û£4~ŽSkXSÙ=ÛÉ›Ì{9͘`ÙÎ~·„;òæaGvÌLäŸbmT1å?<3OeXW¾çíßo󗮨Õ3ç~â—?ü?QÍæþ¿÷üØ»ÿ.EíÈy·¢“°÷;Àýþ…’ú%¸üéýé[W–žo¯³{ ‘åLá–+þœTæZ¬ò¾Àj]B>¼¤iE~~u¸!¯ù KnZ¾…äh±åIuàY^¸\" ”28$Žd¤¯­�~Ç?TÙ@D(: µ¥ ²âŸpv‰�±Á¢.Ñu‰í÷ „'bkXï_]ß´Äù—ëm[mvlcKuÞÉ”9úŽ:zýÈX�Œ˜©,‘/QUBåîò¯ˆå0�«Ý@Fu£^‚d@Ä`n8f€œ @­©°ŒIIŒ”}s˰C^ ÍG³�g8ú¯\·R®FŸ¡o0'ý¡_G7}(.s›N„Ÿló ¸Ž{B–¡þ)W 몔™v„W_Uõ—J™WP±ðÑ�©Ñ@Ìž¾M�›™qk¦�@üOÙåî!»Ðá‚0�þÿ"˜ã&„¶ìx۾釤NCiä}­ Ðxðq¶õ_‹¾Õa— ^ EòMÄ�‚™°ÕÑT+}»az]ðp’{áw‰ªž•4ßSbý’ŒÉÒÏ$Õ¡#ÅJTºàÔ€@üg8yb’!>þÕ݉y¢6G,G‘DlE¹?ùI ðÆ�€�š«U�y‚@fzÕº×f­_]­ÙôtÛ.]šƒ pØŽ³gže¾ß�¤QH·ŽÊ[BÉz+�bÉ%g#1ÖÆ-jkŽì±ðfYOãq¨òµ"†á× Tjxî ßGñ!Mx¾Õ߸ѻ奸ÝÂCYБ䢦ÕÛ§[~d+@2uz^©mÚÔ‰‡ìä‰ã¶põª]øÆKÿÍ/}ðWû#Åògæ]ÿøïÜj­“÷ÜH÷ÃWHê�@àAàOÿøóß½¹²ñÅÕ¹ºå8ç|´<ŽH. ôÃ☡熅`Eôü¯'Ø·žµ i÷ûpµt†Åu8jë=Å*Ô‚ßvü(äÁ uð…ØU.aük÷TÎóUñ8mð¶ù`‹Û%1i½ØÓöªžÙá—%à–“1uà;®Ò†¸¶Ñ¶ùú¦Í/¯Ú ;ÿ:Ò¯ŸE÷»È1ˆèYÖ%5@áù÷|UCßĤÚ8¬úà•º‹?jaÊ1 \T Â<` ÐTHØe�`á/�ŒÙ¥dyžô™^Û*ìꌤþ[±RzÆ ºÿ½:êõÚÑN´ÄCÅDàÕx]BœTšÂnÍù. u 5�Ú!˜Rb`e€dʲ3¾·ŒâÄØP;‚tˆÎ”—qBÂûMDí9+›>ÝD”µ‘Ÿ°Zæ˜Í´ŽØtï¨]l²ËˆüÏôe ‚"ö¼ÈñO4+†ÚëkÇ7o}€�à$ûÚÿ�Õgd¢å/Í}Rz¹bÒà|Èñj<†<0úQŽ·ñáœî�_°Sû¨´˜cÌ.T°Ã|#Û ’"u�˜1¥�å}’5Ä%ˆ—óp}K÷+dû»Äa¡_+§¢u¿¯¢ %.�ÀÝ‚€æM‹’OÏî'ÄǙ³Ñ)%á¬g�uu›Ÿ¿l/ÁÜž>ÂN‘ªÛD~Á*™« x³–'¬€hdigàwÑVéÝëòq{mQ‹†o@už@*JrÌ‘0ÝÕ?D¨«<˜êÀø…z¦%ʃäúÔ¼‰*ê�Ùrú˜-¦±—Úý?nW{‡l®7†!@˜Œ1�B6@O Úr;¢2·")ñõ5<Œ‰PÿÐLÚAÁbȺ÷f½Âͳ�ƒ#½�»—¦ð¡o¼GªíZ+}q=Ä«F;þ’À�À¥¯§ž¹Õùj¤Œžªï7 ó8?}ÕÈÏÍûu�¾ó­oe “¼ÜßÐøÒ(ƒP×Xqf­æKæÇ,*pD÷0ò:ЂÉÜ7€1×ÂØM"þË_]µ³gëöò¹Q˜“vê1³}ûurÞ¶UPèb–ù^=%¥•‰ šÃd 0ÃtBÙ¤ô€Ó\ ùÕŸÜꥢ.;Ÿãðøã$ñóÞ÷Pžà°·#�—Òºt‘jÆt¤YÊëϳϻnHp€= ¶eÁ ²l€6ØjEÁ|Ú?~ÊŸñß×Zm|nö;·™‚M�åØŸQwÄã¬àP:2èç¦nXšD\‹(Ö9ô .ŠˆˆŠ­ÅQ‹aü¬õL f´® yCØöz¿­ýa­½¡¡Ûéƒ/&¢TÊpÒGuUÉÑùP¿#BÓ¶¸!ÃmòRUˆ;ÿÞÁý½³#\ŠÓ�!`¥>¤g!ÎêMjB »�¢m‹�¹>Œ©¥$�:mµ‘×b©ge7ü§¹‹w} ·ŸUFß&£ÝBßù—ê‘úŠRQYþ5šw\ÀBÏN—D)ÕÏü+Gw7\ÇmÝC~$ÄáO\�7"´ÞiLÅó—ÆŒæIæûÀÐ3k™Ôß|Ê΃#`$•õ.ÌGHÂq"ÍÜr�I.Û™‹—ìØ+;ý¦öÈ£vðà˜sc”!¤äÁZKrÄÿÅ�Y]1ØüÐ<ä£QõÐÁ¯ÿy¼~ô´ÓÅóâÎÐá'Ïq8`‡?ž'·‡K,®«àuó…âõ†’m×NaÌL4.“FݦfF¹NöéV(XCK’…°gÆÿº-ÍÍÛô•«�ýÊdzÿï~ÿ7.,¼pñÑ÷½ï}@âÜ×H÷õçI*—@`w|úÓŸû¾ærýsËÓóœÛ>fG'�X>‡5sÄüûå—A´¾Œe{ƒ¦5O¸xŸÌwƒYœi1”’|§°)KD®EžÃâ©ò‡U¥Q�~´p†Åò†4Ĺѹˆ�ñÄž�¿¬7ýrõ�!u‹‚I'rÐSFE‡·´,Ëœ,�cñp‡ Ð>$HNýÄ:Ë*ËB«e è»/ Ê·ÒiÙz»e ¬p”’ô±u®²@0�®£J`’BBB›)^±É ~à'XzÑÛ»™z¼»Ní¨RUŸè»ò$‚U»ý"±²ìàˆðÏaI>�åÿ,Öæ3ìdTØåGÇsb°h“ùiÛ—¿Æ±�³V1 "-�OÁü@(s öa×^;»öˆ– ý¼#é-8'©m¼ó¯gå/é5/ÜÕ¦Ð!tÇæ<¾{^ëm==a é‡íjÿ�½Üœ´W6=ØoK)Dþ‘èÐñ�˜ D4�_TaÀdAèâS(ÔBä¥ÅQKˆ!|› za¨Iøõ„zu«¿+œ/B?q#Œ¥|hýK’/ÒÏmÁ�‚®o˜’Q-QÃꨪêúf8p_8}#YnGyROà)u€#ZEí5&Õ,‰Õ2¶xÖÀÒ½Cë¹zDh’·V™»í�¿zH³ýÂ=ùv`âK ð‚€æ’0GÄ�ÖÈÑ®½F Ó�Ï9éœÙR§bÌ1ÇÁ)æžN1÷ acVk! pfÍf6íüùe›šªÚ›ž˜²j%o##l|3ejNêsro²Ž0®Çš§™ (HWX‡‚_esípqÀõ÷‰¶¶¦Ó­�a�Ú©|Tnìâ|¯~i•2#܇?äÊn¨ªÞ¨³Næ‘”:`Xñ�ž@÷¡Ùm!‡´ Ü}MÙ¤ìÂÙó÷K{ÿÇëÒD»ðÈ»Þõ.q¸—@྄€0»Ä%H ð€@àÓýÌ÷m¬o|nõÊ"{†;và(Çmi—–Å‘>?¾OòÍÚ�@—qC>~ÀίpçÄÛuȃô7®•7BÇ|–Pÿ�òÙýý8C-¹øý¦e—…WõÒâK°ßñë!ˆ… …Ñ+Žb¯4Z°åD�q“„~1º,æ]vQÛ\-ðAìç­/Bô_«Õl‘c�$ ÐfA·"Ç’N:ÿ*Rº€zÖ.¬\hNØ�Ï¡ £@1P¤Ë-‘g8âµô÷îæ�ë/�@=R²W¤„9DÇê¡R@ß¿ ·¤”…`uªz›Vlsu9ž.5g•ü«欜Z°|o•4d†¡' ~zÿA"ÀÅ+è1<ˆº9†F‚oæìü yˆ~EÄ¿¾6}Õ /È=}tùô~t4»í¬­uK6ß®¢ã¿Ïfºm®;n �LŒjG i?›žñ —j“‹þ'x…\C ¡½¡^jÞvï mQLœÒwà÷Dk£�ÍsÌe>nâ1¤µ+,`ÎŒì1áHÊ(“AŸi·,nÖM�)€ºs›³[]^³³ÅU›�îÚ‘#£vêáÒ‰'{g sgî”1Yf £WcWucWã8éò…‹[àòܦ‹G|Wv*;vq™ “8.´YG› (Ú½³0k …œ«A¬ …¦\K£e{껞± `7}áÒ‰Ù+3Ý_ûèoÌÌLž8ñ¾·½�——@àþ‚@¸¿¾GR›»Bà“¿óÉ¿ÕÚl~¾»R·ý%DóX‰ Û“ïi�ÍŽ"È€DÿÒÚeÃï„¡çÆB-ŒY»©Z¬]‡B1âàùíU"~ÁR®�yåϯG‡4Zì·Þ!H�ÒÅ.N«{@ÚE¿ÞÕN‚ÈßYç]®NüG;¿Y‰ä³ðê?Ï=�dC_ÇõÓ×îÖŠÀKR®§·€ÿ õÌ7›0–a`ðM¤ÑÙóÚ…u² Kð’ P˯�vbµ-KýÔé=ŠOû 6ÔIè�`èõuæŠâï�ÜòÅŠë’w…œ°kŸ™Ë!Þ/ëê™þ1úWÎtl”óüªYŽü¬cbÙÚõ%Ë`ä)s$WX²ruÆÆ²k6ž¯[•¼ .ú¬€‰·_L#. !îçAHè­;A7bà°¿"b0ì“/°ñŸb§%ë}Võàrpëë�â¾Kc FصΨ]n–ì2yLÃüªa÷"ŸÏ[®±A›]ÅH`»³Éë# ½û° QÂh ²ÃD¸™ú v§ã?•\è·øÕ¼|üº‡Î)Ò£Ç84J#�Áq@§‚á;s­VÇOhÓ·¥oëÂ:$¯vçF&Õéå¼à(‚G÷mWÑ“Üí1 Øôbu4¤ê¨Ý}SW `Le 0dE¼Cû»Úy¤âþÕeœâAŒÁI‡òã:ud§�ñœŒŽqõ`P¹º’`Jò´jÉ6Lîvû“òÜ[hžN#ƒñÇ]ÓM`hâ †éYsœ‡iíÔú'–¹µ/¦.ëC—»ŸÆ>‘EŠPó�Äý뵎}ãÅM;wfÙ^~±`�=>eO>9fGŽ’þÓaýñ%)*Í× ºT¦Æ±K’�˜ YÒë04Ê>Á6ÑM•öpÁxê‘+9N‡+‰;EàâtŠ'Hˆ‰jäD�S>ª³XµÈêÈêŸ��Hÿ$)}¬ówÝâ{urÔj,â©¶Òh¡ã�UÿVÃEþW dk¼'‰þ�(�A"& yháw#z”ådŸ×‡@\ ñD0 z–‚nøsä¿þï�Ã’<ê ªD؉`ÎÂɃð•Ðí/f;œݲ nyˆß ;þ¬;çzëVD¢�Ù´ƒ…¾(6l²P³*ÏEvʳÚÕ>©ćpÑà  j»¯+ú¶zåu8å%bQŒ™‹Ó%�rÓåVå‹b>¨(‹ôƒ»PÍTÙÖ­j×ú% ýUl¦ÅþùÞ>>Å5À…ÞêìE’â¼a! �ç’~Ü5&>F|žTð!¢ÉÜg˜¡;aÑœ®Dšÿ¤î•fÞtƒ¤ä­Y³ C+6;×´õ�ËvñbÎŽŸØg§N°C‡™Š«Å,¦¾Q@ŽÀÈ×8N)�\{šãPÁ ËjX0äEØgà"tu”ÀM�7`�´6š¶¨%Ì!üú<Â4ßʧ�á7âÐøMÝc¿|qz ÊéÍ0î� iõÌw¿ÕÖ–ìÚåéCsWgÚ¿ò¡_�O?‘zè½ß•0¹ÄÝ[$ €{ ÿ¤ô»BàÓÿôw¯Í­±×ê�(—l¤\±j¡bE ý¥´“&£4 È�²¾´‡LIåÜ~­>Z¥•î7p÷—´�ËßÖË×Õ-^"=㡸ø9ŽŠÚÕ;œĄ✨¤®Nüo-¨"ÑÙe$‰£0,®ja_ˆÆýÚ¬º30ß—ØÊ�Ý\³yŒû-!æ¿ÎîƒDý[BB8æP»Œ)'úA>0ˆÈ9„…JR”qA@îwD*„*­×Úá©4‚‘òàw¸9<ß-§:I‡S„“ëø£_@±œiAÌw­‚ÎqдlgÝR�²‚ðÇÇC6ÜÀH¾mYÚ¶¯Ô±ˆá0–ž¼DäEÈIZÄñLvŠ‚ÝˆðM®y€Õí´7Þ"Å0¦èêÙ®�DIf@ü÷1â×ÁSƒ£-דv¥=eWZ%›nõm¶Ù·ÕÁ GC"ÕÀ±—㤩Â4ËôF`ŒØJªäŒ³e,a×%A¢Ý*©À\P=Q\0™@*%á1¹¦Pê@½"Äî›¶õ5u†ÐN/)ýÿx÷ŸÖÆ=**†¶+)µ“s¯ûn|Ú ¾‹ÕÊûF\GÚ®æ+L"ÿ.•,eOC`ô�Ì`ª½núbŽû¾â¤urbòÑ¿€1S„€AF)¾SŒãó&�ŒÿÒˆðØ $.�Àêÿ .ÍOÌÚõ 8 Fü>D4hBg¦¨ÔÚDÐŒ²©y�W|Ä-gÆ =Õ·Í… ››[³«Ó›vùrÃ)Ú›¾£j“iãè\^o¢ßÃR`N_µÄ­šS™à$ŧÁ-Â_3ƒ�uÖéP9ÕmwÔ»Çj6¸Þâ°PŒò�SÜXF£d#ݯÏn(Å]¯\…?„8=ძ yPÞÍVÍÊãU{lôq;zâ0.-,´?ð±ÌW;ÕcØh“2q î À={Rh�Ý!ðÑÿ¿­[o~¹½Þ¶ãûm_uÒ�±±F›Fß½C@gÛK\Ý~2ž•(_ºYx{ÏÑJèRh¥†.1@à¶åBN[�þ®ž® ¿á½8�ò½ÎÅAžEœ�W åBàèÑž$A)E”µÁö‘4t=á®v~¹tï� þÿ³÷¦A–%×a^¾ýÕÚU½Îôt÷,˜…À µ„ýÏ ù—R84)…$.d-´þ8ò/þsX?¤ %‘pr¸X–d†+üK[–C–@�fŸžÞ»ºÖWoÏßwòުꞞ0ÀLwO߬ºïÞ›™7—“™'Ï9yò$þߺ¾Éªÿ0Îê݆ùïã?Fux†Ñž¹‚™˜í¾{4`ƒð¦—Œ‰‚áÀpà|ÎïQZaÀ»€‹DÖ»ax�À‡þàúk#~*Âw` [#ÔüaúÙçßa�{ÜcõG95`üÓ AÀ|À(ìtÑX[¨¡YÂÇmÓ€ýå<ú:[#j“´ÍQpU×ãƒ`Œ~#�#0ègÜŽBí»¯tgo‚˜{&MÍ­‹Û½KÛ®¤ýúRÚ·ÒUöü¿²¿œ®�—±ó°�àgŒd@h>а ê°°¿q·Kÿ9†PDf“U®Ö«Sƒ4@4g›ˆB§¹ª±¾[� ƒ­_.AáaÈ»]QîÛJÏòNJP˜öÃlD’t�Ÿcr;áA¦Ö؇yòƒ6û–¡åàÇ2Þ;—!Tæ/Ó‘ñÎÑ:Äûýt‚vÎdŸÅ>F&'[höR}0âH2ö!óµ&gÂE[hí„¶‚¨0eéö Æ}SpBš‚æÞ‚ ¬|u¯ p� à (q„�à™¦24b|ˆg›¥sŒ–o :Vü3./ýøÈí<¤óÑ]fh°Ñaå~>[Iƒá$½úZ/½þæ•ôÆÅizìÜrzö™§Ò9îËK rª ßíôæÏcÜ‚ÜjÎ+ŒéÐ\Tøà¼Ž @µúƒâ”EDuLG1éçIv"¦+ýåÓ2+UN[09óq8óÝ9¡½_I¿Û°"í˜#}Γ¥©H ÿQJÿ¬Ñ É2…`ا.&Ïi»Ë½êþ·Ðù¿¹ÍQ~ãw ƯG ‡0SöÊô˜Ø.Ó6‚’’ñ?T¯vÕ_X±(á _†“¿1ÃŒBF‘M)<ók”×àLä¹:*í]¬ú·f½°Ú¿Ê*ý*ûü»3Ôª7Ò¬w‹ò¡Ò�—« “/]du5~×PcM�Åßh7@ªe ã@jˆ$ æX|ž‡¥|A!±¨v€Ðq+c&v>hõí‘Á4Z¦0X2[þú™’"߉v`þ÷kicºóÏ^ÿÁRzs€”i¤À‚:u(/b£¬åÁsb«È-‰!‚�´˜ÒJ§㦉doÊøá�Ó…<-òEñ•6U#!:BÔÒÇÜþ<}@g?)Ò°ÏpÙ2¼2ÿ‚^gÐQ—‰x"¬½ßOα¥öår1,¼å X„põ�Œí)lµXÁÅ£Ë,vv…“'°Ñ°| «Ú¼3~#¶i`¿cg”¶û trL'Ò?6!ÀaL+¸ášñìQŽÓÈ#Ãæ~‚JU–  90æ‚Ù-qƒ¸E›@bQp˜¸ÜãÒ±.ßóœVâ¹riƒÃ猑@�Û¦iŒ•@UöÛ­e˜xì ­ ö‡.¾s#]º|3}ã{éÉ'ΦO~ò‰táxvYl‡Mä}ž½¢¦¢ûîD£±3€´À/º+KEûn~øððÛçƒ$¬{df˜9én�W®ÞçÒêÜ“c~uÔ')bXÃüWúæ™+Ó&´€=€a?mìma›§ÁöÍNZ>µšºhL<¢­¢·®œÞÙÜþÂoîú‰i%(áXÝ?T€�ÎU.î �ö•ßz¦>™«1§ÇÖN§ë'ÓjëCίì bòt*Öü ”/Ó,3³($5Rt™eVÅŠ”ó*mžÄBuŽO2C!!`$'2'|�Ϻ<Ѳ×÷ôKF&}'S–°LØw§JH{VEý «Z/„Öâ`Hõ¥,×â(¿-T¼o²ÏÿúÞ~º±³—n±â?]Ƙ›„„ŒƒlfBUİâ[‰XÍíÁ–Ê~íJUÞ®aCd‡~Z6è°‡¿Ë1Ž�t™ëb¯‰Ê�>qŠ€¢Žq½6+ÄÙpc&4é@1ê§Y3`—ãÿکêÿªDéœ-2˜,Y¹µf¬­Çå²/Úì+ÙÝÖ9ýÊàÂçn·Ò@^Ñ"E¾‘ñÏ=‘t¯Ò÷“;|º[š÷ÚÏ’f¦_&Ľ¼^ÖÃ1-ì€!Œ½+Šr\j£�s¬ƒ€ª�]j¤>+„këÇcÆX&ãÖ'vÜÚK—¹nö&é­k›Ø÷¨qMÓ{ˆ©@†°ìÆÓÈ×\+WAàaƒ€ø�± {‰+ÄQ"…:üE6ŽÕÛúÃp3Îã6Ç7@F?Œã1¿*$í³úÏ” óþl# 6v°-såò^Ú¸y•­»éO�IÏ<}:=©gNÅp f?4¬HdΖ.ùòRS�ÜßÓ½ïÊSâÓœ€å>ê2Žú}ŽZQ¼•×H –Ylçs™KPGh…¬LWˆö>×±A³ØFp•F&�@eª´½SKO?ÿtÚÛÜK7®^?½qõÆðó¿ùâÕÙ“éBe#àhKUÏ*À‡Ù*Ý ï�—_~ù¼?~«ÉÞåG×O§S'™)¡h÷`n·ní§…îrlØÚÜeÒaÆuER¦�«a­1„õ ×£|ò„TL<�È>ż䳳@6®E2y1�ùS¥,§´»¸ ‹ÙíH„ÒŸ{ †õ+¢–^G¾,ý¬ ¡"®ù …îvU~Ì}D�÷ш¸Î2Â;»=ŽòëÇ~ÿ=*7£…eàÁ¾pò�U~Õ å ä9`&ê ¤af¬>¸ÒïÝÕÿi¨‹_2÷ùÙòécùr­ósáa~*’Afç£w²·˜ÿ•&g9#hO¶Ó¼¿�}ˆ- àaäÆÞc»0Lö÷LO`˜Â}‹Ï¨Ô·;ûfS ê?±*IÔaU€ËþãÞ´HA—·=Ä#?BÖ+C©ôýNïj�aÀӺ侚¿Î„–ý‚£)‹Vý70à÷‹úoké�A‹m´-�&åk3s´¿ûNù†Uª uC|�Ùó1¥^uVŸÓèFªõnr@¡ÈÉÔXZµ»À£Z Þø�¶µf™IÏeú ¿¥ky¿^5)j³/Àñ ðÉħ%¹ÿ\ÖaÅP&œ~¢À’††Q@•±@ëj—°•¤ÎÅ"Xj-4Ò ªý4Uí^ f`†òµf7�Zï¦ÇV×Óæ£'ÒI~óÎ%ß§79›üêö “!˜2!ðaå*<¼`´…º~`0^‰‡Õº§Bɸ#ðÈÁ|Oü˜³ýα[Æ÷áø‘^Ði�Ãw²5~·Þ p�Ž`bYÚ¡•5h¦•¥ói}]Uÿ½´¹q+ýÇíKéâ[WÓ‰ãÍô#?ül:¶ZOÇ×ëii�!k™Hßtƒ4÷åÜ#»wýâÌwÝáQÖýýRó“Ãx‚Ë9Ç/ü5Ä+CÎ'BŽ$—}JZ!Düƒ8¼ |Ïç¢v'øƒíÇ-g`ÏFY@“íû£~:†!ãÓ§O¦þ½tãÒµGn^¾6úòo}ñ�ÞÆø©êÔ€cõó!A |H€­’­ p7üÎïüÎéáöÞ•K�'OœIO,M9ng¸Óg’m¦ÕÎrª/0±ÂønßRm¬C2Ì"ÎVü×%|™œk¬æº¸æ iÌßΦáÊ»³Rù\Þ‹(å oi‚ÛC�ªô! þË O??8ŒÏcv”-&SÞ>èüÕOÃ/ £|‹ÀL¤¸ïäÃO55ì×ç»}&Íû¿þÎ¥´‰¡ìÞ‚ðï£ L?œk&®îºŸÐK'BkÂü)iÁ ÍSd.ÃîjrU`s}ü¯ æ²2áƒçgœ¢Š9þ‘°ò˜Éó.ž(H0Â…O^Mµt>©÷Á9Ä0\>/̶Ðj¿žVëXïWMŸÿÉÞuD{©Ù­a8’“X  À�õlöÈÏ Ü–tÙR¡%ö,±/´fl€}†É¶CeMâÊøœ²ÐÈúf›Û~Ðç y?gùßí2{kÿ¦þ¶"T6@IDATdd9aÛãÝ/´ô?ltSNqc¶˜.�»éb1]tØóße?uìÎòXQI7Ú˜7O|˜ÙWx®³òÜq̰ò4ÚÛq ¡{1±0Ǩ`Â@à�-ò’Ϩªu2á!� è{A(Ú§ˆ“ÿ¢ÈE¹-ƒ¥fùÙ¨�gß±�#Ü›~t@Un%㢓3AÖGžÙ‘Vþ”×\Ïrt>úå!޳£”õ�Z½¤ˆ£¶ œ;ÖÀÇi‚&ϸÏÙÙÃy:Fß›q”çBx>FŸ¹ˆ'�,-¦“Àâ±µcéõ«îÞœîqyw˜vãø@Dz‚ªÖãÀÓ¹e=Œ-î6�Œ“2NUàl˜BÄ"®¯<;ž|Ží¼úÜþœ¿½ý{ñz…Tº��ß(4ËœÜJ�-`Ùd~i" îÙÆ8ÄfO«�Î>õX:~úxºvéÚ¹�団_üòÏ¿yõÕëÏüÌÏüLž‹’U· ßí¹ß�ôª4*T¸ ^~ñåciÞ»±¶¼Ú:sâdZƪ‹‰°©º5©sÆÁµªªu¨ø;gùÌla®RÆDå77g¨ºž«èe:Z÷n¼ò.-nZ:Ù¥¸ã™ýÌÇtÍ!—+OªE¾Î¥¥jÞXëìLhνł>¤ âÅÙ¿H*â¸B¾¯³rï~@™5Ëäq~2óón†•n^¯ì÷Ò¥=¤á¬ü_ßï#ÀèÌü” Sa�%ó²8¾[• ð+éc”ŽbD'ö0ÒC ~º¬ÞŸSÌ>ù·ô�8G"oÀg œ¼BåΰÁ k}Šq? ùaŸUÿqZon¥ãé-,ª_…±Úg‹%ªü´A=ø8;££‘¥À ÏØ?Þ‡äÁøßr'=¶2NÏ-m¤SÍí´€-€æƒ�´§kÿ´DÞ(˜g»Ž+ñ²çž;m µ ú¾íXÂ<÷‰ Ù¼z�0†üefíTÞË~ãÊά†±¨ú*aõÔf�~”�2�1%l¦½ÚRêwϤ[µãéêäXz{¯•.¿_ß›§]ˆÏ9õ;¾€€- ®¢×Õ¡Ÿ3ϧŸª‹¦C0âôo{L !ˆpò® h�È´³†šæ9–¦/ x uóuŽ \ÄFÊ9†Fœ5 °‚íy÷QS0-´N²àA¨Pë%¬¸ÛA¢u©·Ln›þÝ1­ÚŒ—sëµôìÉ^ú#?x*ýð§O$¶†¦ÇY6¦}péG_Èb‘r¥ŠH×”#·èÏ¥_|Ä?™‘v\ÅhŒ1‘ñÀ¶e“º •uö†iÀå'$-©3~hg ¬ƒÖ�ã™^倯oŽ–À ¡Ì´¹Š¡Ï”¾v©—þíkWÒïa�ü&º/µ…õ4AdB;LèæMö±ã)öÚ�ÿ�܈11±H¸&EÅF&TÀì*WAàÁ‡@Ù‘¹š(ßKœQÖ0¿gÄ�ñˆ!bÈ»¹"öaP-&|ç=Xr…&ø+^SŒÑ69]fõX;�?2=ýô¹ôøãí´¶Æþxd¿žðŠž™ƒïû%s컂‡6‡˜3$ZpžúỚE0:G«‹L^ÌZqr BoËSš¨á,j�yÕ@îdª}cÎPC:˜Ó¬ƒ亘HÔéŽ÷œ¸ø™¹Ç°ÈÄ2ð-ϦÏ 9nó+Âr|ÄœyZjþ@FyNe>^zë�tëÚFÚº¹ù�¿ñg?û<óæ'8È¥rŽB€i³r*|X@ÕaiRß\î,t֗Ϧuö´w‘ôÎ!†'ìSÏ*Õeê<à…oI•–sm._š'ŒˆwÛséãWEez¾‡sr2ùœó.‡å¿Ë~y+ÃË\¹IE4ˆû0¨'Ë�‡§È0Ny1iÏvŠwE¾Ád®@A�€çß,œYK»ÌË7ûcT|wÓe¬¶_cµÆa—FýCÈ0T$çÄ+;Z#×bòt[ÙÂïðÇøÁØGÁýïþô^‘ ÿ2ó»ü|¡�?MÏe†ù„RjbЯ ó¿XÛKËM‹Ó ö´_cÏ¿Û!  MÛQ-&ÚB¨¡¯ F'‘$-âP¡²´ÚmUè!´ü¦¹Ás‹mqô´F-ìõD VZ]�üäoÝek}lüx”€!$`’Ñßïñ%¿q¼é&R€dW‡o"pð[L¦AãXê5O§+S®ù Žú[ᨿšXVF¥Cg�‡¨�ΰ0/ñ%i”³UÐJÂÒ| KU›°›¼�Ór½‡V*åZ›‡‹œA ¢©ŠL"£[ ¨èTcú±§!˜�ĤNæ’xºF ‘HôÁ !óô‰rðm©V¡¬#ÌwÓ¤g!¦Befq7†‘\1#,.=î�Ëíh-í]Â9ÃÃY﨔ϔ? H†q Ã’aóA0ò'8V…ȸ6® úKûlý9ÑXMŸ9»Äî”Ç1z)}íúNÚz¤¥R>l3 ãȱ&`ÒÚ8#€ôHÛ[yY*žùçÊ­”ë€Gå*<Ð({2w;ø® ½Ý;�„Ûýn{WR ™�¸”[á6bÐÌñU1t«½Èó ÝBCàææ¥ô�W¯pZÀ©ôì³O¡ÐLçN'è¡E4 § µ!F�gªÛm„¥mŒ´ö{àGq¸Bð, UPøDL+Gð¤ÞÊ[èâÑò:Æ?È æü8U|›Ë/Þõ£¸ÇD’+UT-BÓÉIËÄlƧ9;ÓÀÅGüá‘ÞÁàGøÒI‹È%}A1gBã œ|üSŸHgÎq|àåë?ð«ÿò+Óø+ÿðßm¼¾ñÇÐðÃÊUøž P ¾'ðUW¸;^|ñÅÖ©¥c µÖÊêê–ýQ[`Õ_Ö•qç-'2hÖ̲¼%åA؃焢N’>Á“tG<Ãäåž kŪõ¼“ÞK 5ìCpoÏ1hó;B�]f§Å1‘M††Œ&é4|†³}"®B›q§0¹Ö„å|ò`ÙÕc[´�Ã&ƒ0eõ¡å¾x©¯è¹/ä_Š´`à]A�’g¿ü+�•K?sŸ .¯ G #Ìp6}@?nÑžìŽd9~‚q¸IbÕ¿v"m³k~>½19•Þ¯¥·ûmlAÄZQªa@Ž0¨ã,õv7XÑíS^µúyÈÊ/Ì š•À‚’¹åÁ?÷‹[ê#q:…H�É`¢…05_íjÌ·0΄¶ÛcˆÒõ0ØT'P‚ïÎ}¹Ü³ïøÕ¨dhX_!‘ï‚ÁD*½_˜XGBϸ·��¡å~�!Ñ"­`¦ÃócòcûëòÝís4OÔäeœCÿ¢FqÊ¡�êü‹ÄÅŽVš.¢•‘ÎÓ.o¦ß¿´…vÌG”iãbŒðq ¬Õ1jºMˆ6=tæYëÜ}óª\�  ÚB0YŽ¥Y�·cœílo§ÅEæ›Î Úˆ�ÔÛÛM¯¾rƒ�;é›XÂÿŸz2�:¾˜}¤–Ž¡Ðu{øx >×ègƒmj1Eüð? ‰š^±rß_fÌ+ð$ ƒ/Â�2KoY-Ûæ¨0·‰Ž³ã(žÐ³ø6øpÌ-\®Zù&è¢ý6z;éñ§žH�ž>“¶nÜúÃç¯Oå·¾ø¿ÿ¥ÿæ'þD�Ê¿«ž*|¨ß°ª¨¾�ÌÖðÙgßZ]Z=·¶²Êäv¦ŠÉât±/C\ç«j›ýr·Ñ¨‰L >ùánþwúÝù~G·½R®rgÒ.yi§?'M¯˜kãÙRɱN$3¸Ç¼ºËDMe>3óïŠ ØLfgÊJ¶G¹ `þ{ì'ÜŽÒ.ñ¿ÎÁ=ʰ�ßþdÎÊ/Gþyœ°©£)1 I¸›1Ù3¡G -DØÒ>¸®µÄtõ‰ÚQGWô‘¤Ð.uVþ;õ>«ÕûiÀÇüu&›0ïÛÐ/Ø@;ÙRhàÊ7«¨y¥VîI ÷jbȇ¢ü óÜNãÎ"ªïœ¢€6°ÁP©òãL$ÕÏ-… ²'+xj@øèip³=ô› ÉÛ‚š"ਓÙE�pÔeÆŸ¬O­£ý&{<[M{³ãiköhº69Ÿ®ÏOoñ|q´šÞáØ¿mœhÐaŸÃ† ë¬äϧØÌàäƒÙXŒwRA zá0€†S§1ã�>g™å´ƒY‡»TN5w ¢uÃ!|¶`1µ>×^Ziu¿XpÆ6Àãˆc4"â˜@ Ö/S‘‚%\À<Ù®ñ <É>˜\ ‘Ç� /eAÐB Û5ø&·ONçÛÿ–9~û˜}Œ€6ÙÒCŽô ñDÞ" ÌA„^5´9ìKQ#ûE(�ð÷ÑxYè"C`“ã.;KéeËàTîî§7¶Ù"D|�( Öñ€€>�ðGî—ÍÁ§ònž÷3-yå*ÜÏp<ÁñÃIÆ»ž–—Ž3äÀóž_ŒfWÃwsFìÎö4õ¶vÒîÍWÒ‰µ¥ôøgÒ“O®¦ÇÎ¥´ŒROÛ/SŽœ2÷Iy(ômBæ2ç6ºŽmqfhb "˜ÿ[µjÚ®QÈZ Ü—ãïå¶J—&ˆà?ó£‚áƒBã£ËØ"?ô¿¹4üRŒp› ÑAй̑‚V/¤'×Ó•·/ýñ¯þî—g;_íýÚgô³á£/e•ãÇ•àãЊUîÔ¾òK_ú?×�­ýÑÓ'O§õÕµPõŸr¼Ÿ+þÌd00i['-'4ÔÜáJÞ§ìÌ18!•Ïw‹nøQwçûÝÂÊIrÏòÔ' ÈŸädgœÒc=ÏÞã�X2:O«â¼5˜œU±‹½Ø0ð“:«v0óûL¶ì…¾²Ï±A[[é:ª½·0&<ÁÐá~ŠÊºëw±ÿ�2MGLæÈ,*`%6ÌÙI;×À°üt´–Ƴå.X‰�ø×O"&CœÍýLþ£´Ü¤cMÚ˜m²Ò}ƒýâù'ãìZ0»®zËüªþ>£¿…*¶öÖè‚@¬|wЮ´WÓ¨;ÀJþNÔ@0Í9F°‰À¦MûÙ†Á°Ñget-¥.3¶ª³Ûgx'Üö‰}Û#ÇŠ&óÇðð*ï‡iÓÏYð3„aSæÛ‡ù¿5>Å1gÒÛ£ÇÒåñ¹ôæèTº:^M7!‡ŽjÓe< 8²û89É€£ Û�uV�0€`ÄS†&ì¥ïÈ}Ó]bï>žÊ´C8º… ±Ç?͵ÅA¨š"™pŸÔüv“°[ÀüLjc<ЉÒ�X*@X‚àFÓ}ë ¶aã8à-8y2%ã^HÇ@‘5#gÚÄMÊ"ŸÌ\‚K'ü�ðÏÙ“ßÃxöáy�� œ¥Ò•÷üF-ʇâî{Q/ tí*d¾´ÏA¯HFBŸó'ˆ3C»#a7 pæØJúô©¥4þÄ£ië?]Mú¼FÊZô%7vø±m¢öK§-áŸs( À-Ã,—ÌŒòÓaxõTA ‚À·‡€cçÈÅ0rÜéËrçÚ€�z\ŒLñ7Æg›UÝÒ6ѸïÍ)§qÂǵ~zýM'¸ÖÒ£�¦´²‚ vº8 ó@\üê±¢Ú `ªË×lWªÕ†€‰€KœÇ~VÕGëJÄ‚WL·\“]¼ÏÞ|÷ú�]Ì‘wäQàTñ »&³8•¹z�-€ÌËn�¸ðÌùtáéÇÓk¯¿õc¿ñüæ�moíþOíÏüÄÿxGJÕk�÷…@%x_ðT�¾=~û«_ùÂêÊÊOž†ìÔDƒ~Í«þ0Â-t—õS00±ƒ{×,ŽN>åsy÷ž�ÛÞ5IqÞ/ÌÏÂ÷0ÍrR”<–‘qÿv„2I…ñ�ÈP˜KëÅ,œÆ¤êš[ì̓árÕwÂÄ:RÀÙ?ÛLôWaö/÷÷ÓU  ]ôÓ&þvÔ—8ÜÕ:'Bs�c¾+«�õÀ˜°K²=X‚£ŠÅ/‘8g ]®]þ-„*P7M˜ó¥Æ(­6û(Çï¤.ûýÛ£›1Û60¾íc!Xª»ú¡àé’*ÕnË�À‚bŸ<Ç&²z=ãØ?3,­7Ø;}‹•îÍ!„*ÔRRêákÓAUK— ÍRΰ¶Edþ¹¼Sxµ ²�IâØ&v cq³÷dÕûÌЕ+5¹W©ã€vyMXýŸ`‰/­¥µµti~<]œ�I—§'Óë½…´S[æ$�ùÁ,3nF¬ê³S4úÆŒU|µVQ1mc7 M—Òd¿•ÆØ×@ �¨ŒÃ�ÐÀ~“W”�²º8¬}û­Æe4'hX°^³¿G¤}0ê@]¢'òAñ@å0�Hjq„ öRÆLÔ¹3ªmbC{™¿4òs«‰@“èüΈrÔ¼Äá»"�|ß<+؈šE‰VÿceŽöQcEƒ\®ÚÓÚ ¡¸ø&ðH&€'0øBzm !§V 8 à4|ý|âdú&ç�÷6е/’52€ù–ä†Un—C8 ãòÝ7 « RAà��€£©¼,´ãIWÞëigŠ�sqq­0ˆ‡í# ¯¢u¥‘?�Tsg»‡VÀ[éʵíôæ[«éÉ'Ϥ³�®pG[ÜêBah—)M›-ˆÐÔæ�L½yòüø†ùNÍ5Ë¡~qw \ðKžÉŠòÅw~ë»/åýÈkøññ¾Í}_ði—YGâ9/ç Qçás�9¢Í<ëâŠs�ÛœüȺ<ó™gÓæ&Û'ß¹òw¿ø/~åïîo÷~òoý¹ÿö‹·•³z© ð¨ï˜Ê»‚À·ƒÀ—^úÜ_}ôä©Ï­q¶Íñõ㨪.„ÊzoºßY7 J¬X3ÍaÈdz´î-uê*kÉèâ}—'ƒÛJ¿ò^†Þí]¿rvá9ò(übòò[§š˜*ùÍŒ§¬Ri°Ì©3¦âû,£nüHJõ~ön‡¹-WQ™¢˜®8žmÃÆ‚3ØÎþ0]A�÷��­ôNo/Ý`Òß×8šs�©sUUsáá%#K°QcbÆŒo‰• ä’rwÆçŠ2öÀ:•#íP@5ê[G�¿ ƒ¾ˆµÿ•棻©;º•ýë¬üopì_/Vj-÷øöLαp¬ .•w …Ç«Á0aI}T_fÕ{…�åÔG0.n¨©I+�h�å8@`?²Â>ŠmPi[¤EΤe�'úˆêò|ðw¶íÄ‹—<\y…ïªbËŒÉü›Žî .~£1ÛDˆ3¢ìÍ:i‹£þnŽ—Ò�ÉRÚd�çuÑÖÚ�€»c\‘ýeFÜZ£Öݧ‚Ö} ¡4¤lmù&}«¡=„¡>jSÈH60¯æg�0ÕEÝ"Ð`ÕHØÅù ^X¡Œ|r=jª±:�B¯zC� £^*›:z�Ϲ]ã‰òG(Ñ$è/uVþµ�¯°%Åý€H–À g><ÌɧÇI”+”Š8vèŒç0~ˆ¿{wÅÃEüe©îô»ó½ü®ð—ÒufxWZ†—ßÞyç ’Éa ’Ÿ]á-WrM2«€3aZfcI e­A9ê e&å1þ}üwù~È)ÿÇ7ßJ[¤{‹zÑ>B b¬ú©aw>VÊRÖdò€ÏŒIO¿rrv¦AKì–9Îý6œ ÿ�‰Æã�rµ¦Ô¶�L Œ(ðÓúy fg…ÏÕ Ïm’ûþû·X¥ßæ,æiZDç¤5ušn“«xI«òa¤ØjtiËöCVø'-,,µN°Z½š†0ý³Q[ ³´Ó_L똽_Y`kŒs ¢Êýð3ŽÉ{t�‚[¢ ²ê®hËD¿!zðt´ŸLéÌ™¹§}ì7ĬyÖ^Éü+LÀß°íÎØgˆ gŸ>³s¿7CÀÞüãcÂÖ9ÕôÕ¹�öžÑkðk HªcDÏÕßí>{JIw‘~¸B]�--säÞ8íî"0vM¬a4±É¶€Ðp 5€]�­–IV¾3꺑yÈü«;Ðn‡Ú%z«±£Ö=›j$ØßݲRŽ |L«Ѥ zÇ*ï<êdy݉ s{Øò8zFÓ_W|R<•o彌QïãË{X¿ÜßaîñV<”á"6â¦n×OFôM¬ÿá·‡1ehñ®ÆFí¤'Ϭ¦ß»ØHWwe$ˆF‘  ŒsÍ/ƒ?¶ÙG �ÕO� ß52†ÊãYš€AË@е2~™C4ðªüÖ(uhÇŸ+ùƒs<8|"NTÖ\CXÀqn_»É¹Ÿ×®í¥×^ý÷éÜùcé¹O>’ž~v%�9Ž_s:P�ùJa_MM\êÄáÍìY†“éá!È;Xþ½¸»ƒªÿ�}ÿM ûÁ„¶:0«°N0hÚhº’K9²:¹ùËXe-ƒ`Š¢LDˆÒY�ÌüÏ`pÃø HhÔ´æË߃êZÀnˆAD ™ØNGj°ú¼§¹Ê^¿UTô[0¡³ýkœm~‹#±Ðm¤è�°ø_Ò\®ªp¦‚�X³ žöXùßìÏX8‹ÿqÈž54Žaùc{Ÿ„Ð"ÞKÿWì•Fe¾£õ|…¦'³JruY$”Ùäðö1í©¨ÆÖ°;ÙõdÀLÛ}—áíÃ3}êð�prëíC޹¢O ½$ãLxs‚¹V=†%xû¥ýÆw¹æ‘™AE".‰<=zžÑ:AýŸøûºÀj�%£šËl¥@0ÙHÃþ ¾ÅÞ‚� â)ÕEí{ òk`@ažu�™d·*¢ΩžÞ¤ äWÇÆB}�"¬WN² _:$E¡æIÁDôbêN2¤�všgã†ùfŒžŽ±Øí¦åEÚˆ}ža¿Aø)˜P5ت›Çë»û·�Ôåßx¼O~Ž”•ÂM]áwëW¶))½„¶¤Žâ^›¶«X˜‡ÑIÞç®vëi/ÚŸ Ø”ãÁÆ´­é:vŽ#±ùô“gÓkׯ¥Í]lc¬<‚PÊþGºÀ8:e)÷L=™8A›ª5!ì|¶„þe@’¿„{ñ�„ƒi(,0ʃéX½F�"£â^pU¢Ñ“žƒ<нÿ ¬Z×±ö_m±ïŸc9©Û‚ÄwÆäïQrµP d�%Ò õ&ßsÓÆ�h¬³R½ÆÅê?{äK€+÷Û#`M›¶XMiÓfšãS Ã-é6 ¤2áfû (âÐ0±úO "Ü&3žÌ¿]Í{Se¸ž>{ÃEn¬ú(´põ6–�`ÉYâÛL«Ôå#£ý'€¦rŽöÒhäLùAñ0Ç–�…°-€Ù$Œú!Ü€á®Í±{³ß‚¯#T3†÷8B±½äŠ”ûI©9-#îówbl’�)jkaÎ ·D´,„W“ãëä`—,ö ,m¬5´«\ArÒ?iÂ…�)Ê�“ñÄ�ð�t¸S/«T@_ëZ)¿ñ{øÎ N {ÝéoØGåÊ2”ù•e)ï†ë|ÏqCÀhϲ¯ÑBØh{%úJÀ4“áx$ûTÆGS`ç–ûV�-K€øÄB=�Zé¢e4¤�y‘‰+ÈD¾åüm¥È¸È;Òǧr*|€ÏK⸌³Ê™Bܺð?LÛ‘¨Ëó‚¸ßx šenK3?ßB3°åJäúÍÝ´±y-]¾²“Þzû‘tö‘Õô‡h +ùyÎejó3æROØéí¦µÛ‚‘Î cæÈØ~îõÄ�²Ü9gKà%¾±\<ûz›+=ÊšÜø�_¤�2>ʰ3û2ïx$Û€ÊA¼ß0/)´òHÄøŽŸ~þ™ôÈÙGξõÊ›“Ÿý¥ø¥ÿî¯üíŸøÀ¬>üØA@ª¤r*¼^ü•Ïÿ�ÿå_þ“ðÃ?òÃø;†‘õAÚ‡Ñm1qtº‹Cí—Õ~Mƒ{½ëcç0¼Jf<Ùs"!v„ñ½Îø1±÷¨‹Y"çuèm:e¾ú–ßyH÷qwF•Ò˜Ix S*ãç ¦_Ë(N=’�ýÞ]SQÚÓù°¹žþó|±À}õ\ü"Y�=þXü¹Í6�Lif®…@Kó^®ä`h§¬< ² ۹病uÊsj³0<;Kz}LÜ 8ËÊÊl5ø"V¦Qý_`e‰« ã_óc€ÓÚ쫄ʱmƨÎ`œk{F» ‡¨Ñ#¨¨â¯Êûjô'ƒùï±òߟ-cbŠs–eHeܬ®º§¿E9´¬¬˜&Vÿa¤ ¹àN%ÐXÕ¡¨%bI¦eA�~0¸´e4?™¨+Gî Y"Ü䎶ÜL½EŽë‹:˜.D † r? ‚t‘.íM·)®â¿&e^†o ¸àÆ¥&�SšFÝ^‚6Œþ ¹õeÑ¡Š«ñô=¶ 1¦è¾T÷�¶Ø?Ž¢%±H�ŽB�SlÁ|Îaø§l±˜x'¯šÇ.Éu W®Ø)ìX3¢PQ KÒa<ù«Ú„+äp¤5¨'rR«ÿde�˜Böup§+¡XÞï ¿ïe™Íûö2‹Wnw¹Ü¹mss=%zùXÛÜÞb»Óï<RœU Vâ8/<ºÄ;³ÒLgOrTäþ-¶µ¸­c‘/…rÑ÷¢ÙDZf/Õåßx¬~*Tøn!ÀØË£ˆ{мæ9 ¯ž3æ Ç®¸!cƒbä) UPíØæÏ/=¹&�@Æš�{àG�Äökê÷éâÅiºys+½²ˆ¦ákÛéÉ Çc{f˜â«}âµ;s°9‹ú±¢¦ÖŒ‰¤^CÌâ d xY,®�r’?�G‹[ºXò(hö�ŠÄOëÝ H|)âó­¾wF8ˆi�åÉx3¢ù1åw:k‚;™ß™gNœ=™Ž³-àÔ#§~ü‹ÿë—~¼¿¿áoþèß¼x$©êñ!…@%xH¾ªöûCàåýò±ÞVÿÊÙ³�.œ?.­.aƒ}s3�ûœÇºÁ^OÛ[·ÒR=b] _o å@Ê<ƒ•3N£›¨yª \NŽ©ÄO9YÞéo aY0p4¾×á{ùt˜Nö)¿-Óuêˆ- Œƒk!m ,#ßîþ²ø†Uܪþ3&Í}æç­½QºÉ¾WYéÿ½ÝÝ´ÉêsFkŸÈ#\HG؃«ö@¶�y13Éh¶™›Zd2eÉoX .‚ž( o9tyÕŸ‡bVÎ0•ÅK‚ûƒì¬V°*r§ýk³b½ÔMýÔ‚é¯õ±ø?a:vºJ,×ËM`.g´‹ä‹ 6öCÔõ]ýcèoÞ:ÅöŒ3ì§?–z±×C•²?…ˆò4„Šæ¤,=Àt½*CŽ0 ³^™éªC@¹ÁE0Û·ËÕÿ|':ùIhè‚è#V^� ¯8Š /¾Ì„¡©”Ž–‡ó'ÂmKØo×Þ³ú¶ñ·ãZÆ e�“$Þ(®‚*™Faâ¥>Ë\Fa“ÇIN8mbZG %- ¡·ÖÑ^YÄûʶJ\ ˜'â49aÎÞ~÷ RÅ�Q´™©u’æ}ä…J¦Ö¨WÐpјà€%}ô6â¸Å�w&óO Tm UWÊeÝ£ÿò-"›Ô%áÅ®û;"XÝJ‡ ÂónΔ½t‘K~¼'¿e9ɕÉ8Ëv qþÁéÛLD!Ná­ ‹ `ñ²Íí�n!ðOa¨9¡‰ðšp<&vEY[IÝËXé++ú8:aÒ05}sFEÛ˜Vå*TøÀÈ»£8 ?ûë°†Úqó7¾G£‚k Jc‚Ìeþe\™‡\½÷ezóOÔ’[IK+ëaýßS^nnìa,ðJzý�ëé[oœLÏýÀ¹ôÔS­tò$É0·íî»MÈ-ZÇEpÎñƒ l)"9¶�a¤˜“–VÕ·€Š2æg¼Ã8â¶rpç{û{¾‘n *Ë®¸å÷Û3|ñ²¦›²Àz¸PucûFZD î©ç>‘ÖN­§ÿüµ¯¿ý�^þÇÿæo½ð7ÿø÷\Þ*�•à�n¾ªð>÷«Ÿÿ5¸ŒýÌ}:�:}2íí°ŸýÆUÔ¤kœM»ó aÊJSUì˜ @ÐxetD*ÏÅûÁXT:WTèL/Ys7 ''Sò¹œdL#ÂòGFWú9ßæßG:ñQNϼp·}³¤¥}Wôc2W•œUÉË“å7cÒÜçÞc nw0NœÅ}c5×`®6`^ú2¥ˆÓgìo–E”aœ2A{®| ÆÈ~‰u÷�G ø‘ð�ýe%-— ˆæb6´Ì¹ìÁøõ0êƒkÐÒ³)feÊÒÆ”ã÷Z­[è`ô+õ‹Ó}˜™ë,y\ÇàÙ^Zjaá€LðàM®` ~c}ÀzÌÆù‘+ûÍ5Ô�s\«ÿé8G-.³ƒ�½ñ¬´ ^ˆ6¤ )£Þ„áußµ«Øu˜\YèÜ 3³5B½Ò–‹~Oy‹€Ú ¶ÏˆÄ4Ä“}ßçh¿ƒch|››ÏJ¸†';ô ‚r•>³‡Ú™p¥V'[ý î9Íèä¥pÈ/ÝB±¬˜.wþ¨Æœ}¥#˜OaΧ‹TB’qÜáÈÀš;üpÜßõË)ei“nSa ÉM`òå#Û0ò _Ô:ÑV§›Ú¿Ñ¨@߀Õ|…‚Y¨bLh( áeà‘þªÑ;¶[ µXdŒ-¢šÚA«Ã­ÖÎÄUÖÅê·p†ggÈ}êb¼ÚÇì6@YÖ¢• ¡t}æÇx5‘uû¦}ɪ…?OôQ}LEÙLþÑçÇûl‰érD`c�„¡�¤Ý5kB#4.„©_zéò½|Ë~Õo� ßbŒ‹‡¥ƒc¥;|*}Æ\$JÈ�üˆBF3L?[ºPÙsü«{û›lh!¨mbÛ¥ÝYFƒ« -²Éu9½ñö�ôø'Ò³Ï<‚áÀ¥tìX#­,£Q¦áA’e½‚ã™É׼ɶËÖ€0J ï´/y«þQËëhak÷ýzŠü, x�{oËòðE|XÒ?‡‚˜3©‰`¡†ÆÛÎp8§ ­.§OÿȧÓ[o¾õ_½øO¾0B}ní³ò³¹©ÜÃ�Jð0¶zUç»Bॗ^Zi/µ7ú‰Ö™³˜›e¦ØÚÞ‚¨± ÝN‹¨^»¢¸‹�;5Ž-¯¦ÖÇ3º¾k’áéÄ¢óæ”â[ö ïøÉqýxFü;#úm¤w×÷Ûã†$vðÝQâAXGrN90ðZ;çà^¦`ˆk®>“ç Žò{†ÿÒv/»¨ ˜�úÿë78ótU.OJZQwrbk9¾²@”xN�ñ—‘WUMÕîòìnKfu£Ê&Wº þ£9Š Ï©¯ˆëòïë$<€4@’‘×*}·%cˆêù>€Á æ.€>«Å°•¬Žz�Ý¡ â'xY~J&4ä8½9ÇÞÕZœJÑ>Í>ÿci—ãôz0½}Óa�¶‚PË ™L–ýÒD®RKp Uá àr¾\!�BŠP‰£|Ù~¶]Ù~! v¾çø±wÛ£Q#‰h;ŸÜzà–ƒ3§e°±—‘oÔ4°\Ú~°Ù¿¢ãb’Ù®ñ *§ ™VØ�FÆ- �ùMÑ~ÐdàŽÛ# ;0� 0ôk‹ôÙáûH {0òà?G³Ç#N'`|»)AMW‘(‚ΜGô0å>ÞH�&{J9bQ~_㊠br¹íóY„a±§ÆW´0, @T[�´á=ždR8¿£Ú¹b>øîà¡ô¸îQh‹S¾¸Y·’°ŽV¦Î1þA@u`*+QGØ} TR–6&�ØûŒÊ>ý–qÓD³,Û , à¶�–ø,wóÂ×¾–ÓŽö¸�AX¸ºU¸�!àhcŒãÈ[GV9"暴ÞAx‹ÅÜc¬Ðàò·Übž[€YG› ºcŒ4w‚­�6¸¹�QÐ ÇvWÎ0wNXñßJÿáÿ{'½öú•ôÔ“gÒ…óÇœHk«)­s!à €§ -t¾b,w˜éi(qLyÏ5‰BZ¤{â2s'üò{Æ_™ÖÊ¥cf˜9¡—»ýÝ´²¸šºœÝe›æÆÞFZZXJ�=õX:uâtë�¯]ì}ù7¾ú“ñÏýèïI%«Lï)*À=•ùý�/}饿}êÌÉŸ»ð‰'Ó ê¤W%!X=­ÉЏGuíz TÓòò«¶=¶½™–;þAV‚|}�þâ9ch&´¦_Ì}þðŸÙÙCHÜÉàNF2^‘bq7á;Ý¡_™Ny7¦Ï9 ã#%K"5 ¢Úô>úÿ[ˆË· ʯôúéÆp’.í Òµþ?PÕÂQ»­¹‰áH•éÈxy\›õ kº<»‚šÕø™¼az<Ó]fN?ó¯iE�DÙ,_Qü\Ë ½Ê=çu¸ÎÈ!>‡àSÓ{0]&fdÆÝ5Ñ>M„˜ð£Ÿõ`^öÒBcÄÊæ�ú«*$\ÍàÒàݸ79ïØUîjýó:}±¾Jß]foÿíˆ ¶Œ0´7ᛀm¨Y²—]ñŽŒ1–òëªÌã/«UÂ}îʵ·ñ¼Â ”�5Œ»—úíœh€ß¾_4_¼Gl Ù¯Lù ˆ|¡m¢] Õõé^öEµGÔFpyR„Œ_ƒ•z÷óÛãd -ñˆöÏÌ9e¢†È‚¸2þÞ—Wƒ±_¡€k„ºþ-V“ÔHYg\¯®EþT߀�g• Àxs. 9=� ©¯bjR¬Þ׫ÍCVü§]˜žeSUÉëÈ$’KžˆH„ú¸7Ú¬‚°gyÓ289Å qˆj™Ðj˜ð˜ç|ト#F¼óþs™\(Ëæ[¾,tY‡’q.Û  È­ƒPg¡ÍŠ3+üËõAZ˜î¤öl¸ìÕr&mÀ‰ú:„ ¬GÏ5Qý—9eáÓö´Ë,¡‰ÅÿIí8Ç1²ú� 7eï;gÝÍ™ôcõÙÎ&±äþuU¦Ø~Ἂ~ãqÒËåÁRÕ´Mcg6�1êàgÑ’¹©r½ôËÎóŠsHé“ï‘yiÖŽ»l»1‹?5#i %,WôÙbüÄ2„ûíAH@º-�K¥€U}ö·x&|³Ýf…ž½ú|ä±Q hFl†E¾i¢ÉÒDËG£†³Ùq$0÷Ó1Μ¯©!COúsîæ¨m€Ø“ŽÐ¦Ç *  o{ªÆaJè(Ü`û…ðóhCª§Ô�›ú- è{øÖÐ(*ÇjîEÂ#÷"ë!̳£,ÔÛ8÷§£Ì-—œRÆ3å¥Ì±�…wÇ~ÖÑŸßîT†^!ÒÞZÛÔZg8($À—¸ðs©¬cþVj”ŒÜÖwÛOý˜~ÎX±wØVy+†Yä’¥r*|—ˆá#ŒKy¼æ±ûíÆ–‹½¹c=/îCÜÊxí¶9&—-rý>&‡ïmŽLõ¸\�±z�ØþfŽŽë)H–([±M@aÀ«¯mpjÀ­ôêëï`à8GžŒ£—¡óœšÄ¹Î3.#‹ ]²&›%*�˜(ç¦Oà#Ê?—û¨ÄÈV«ˆ©¥*Þ‹8~‰Š�böÒçˆ#°H§ˆX„‘Ø{8ËÇý0Òzµ]ç5…†0;í"Ì4ÖŒzEg±�>ýÇ>“Ö/®ÿŸÿµ—ö.}ëâÚÏüÌÏ0+Vîa€@%xZ¹ªã]!ðâ‹/¶šÇ½óŸ|¢uîÜ9ÔËXõÞßD%·…Ê ï Ÿ‰EˆÑ̰C8Bxj ¾‚½Øl¡‚‹0ñ8WIOJЊöË¿˜àÀÑ¡ïdgš|Û”3€"ž’®†Üd`|ÖêµS›öÈð&­ìb<.Ïæ9Cõ;ÖË"Œ¤Á€¨’´.LœßŽáÝg „!¹6Ì L%ûêZŒGµnÀÖ†>ßß@˜ñöÖvzkk+]Ýï‡À¨ÃÙñ0iVh=s6NW×,iëô·úå„Élþþ8“8iUæªn½õãã€�°°�…;|Òà “ðHÁoÈ‹ºE^᫟o÷ÊYXÊå¾n /[NU ØXcëa�34ìC:Ï;žs¼ßJk˜Îv1#·- n½N 0Ÿ+í0®¸¼´N¿`Mš6Te_» mVµúOÕä1§4œ@oàTÚž®£æ¾J{®¦1ê4ä8S{¦35¤œaÊʇ©…þÆ Wf·-W� 4“‹Ê€ÓÇøÑªvØ;ÜQ¡aºwwÆ4 "Š M•ÙE™2Ó–{�1‰�0m 2h{{Zô6¾·?:fŒɘ¼é°Ê.¡7�)”PjóÛÄžÅB’ÕöÉ´Ê~ÒÅúRjs:@)\›¸$/Ã>{Ì!žšŒ�æ´©;gT·ë‹©KÜ©ðí_æÛëiµu FôQ@‹VGÞ1YÁbç;H½V)Óq„;§×êí˜ÛU ŸGZMù_�BTó(÷)Á⳿Â,*Wøv?8Jã1·˜åôüjO9°mg]FÔqáîHˆm¥†í¡Ö‰¸Oy‹ÚöMŸµøoÿs<Õ”š–ˆË€>Eë£z‹Œ…]ÆÉLœU¾8Z“ksú»¯È¡‹ý‡Ë-$¥�.®~*TøŽ �Gy‰°ïüD•�˜ê ]3ã‚Q¤„ f2_KýÁ –ÿÝóïž5dz…A¤„tÈ6•µ�ÂY”۞ÃiŠÃz•®ü¦¼—þù~4fö¹{¼;Š^l!Ž$bàA„ð/ƒ£`Q¼<�ræñÉ?ezž¤ÀJ+ù{2•œf æÌ"G0"6�XRB¶aLÔFàHF�ŽÒ Ô¸O‰ïxÖÊr ¼1›pb95µÕ Í 0öçÇØ‚°øÃ1<…ù¯Ãäv“‹º®\ó º|ëÚ5Ô%CÂJ•e-ûÕaEs»^Æáñ¾pQ Æ……¡¼Á» ËòÂ7O¹~⃈*,âÔ ÊãxL¢�¬Ž›ãÍÁi®ü“ yð#À;Ÿ÷ŒŸ’Úç�”SµBÚKˆ! s«á9ÆýÃ(fõSA྇@ƶßK1ËùóhâÇi¾ É^åxõÎȦxŽÈŒ½]¦àÔ›,dðØ×AlLbÛÖåãtâX=ýÈgN§s�´ÓÉžX”ÒnoœvØ^°¸ØLKK+¼³ äö"43öP(‚¾ª#xôZ°N�ãÅ;º£åGc®ßÑpË«;Znß�~ë;îàûüzð‹ÿ»óË¡‘zFÂÑï|˜³Š´¸¾ˆ]'¶±!,Y=³šžm>›.½úö·~å7¿ø?ü¥?ûïÎoª÷�*ÀÇ«=«Ú|øÜW~á¿fkó¿xú¹O¥õGNÀP#ÃzÆ·Ä{&4C] _ä®Óx•O±æwcÆ; u<�pÍóã»Z¿÷^NR�“‹Ww¿�`@üÚp�€i«‡�v0ô+L*¦â4#I«Æ\¤!Q=õ¨8¾Õnz“{'Ò!="yöø3ÛžQ>ÄkÄQ~Ãc¨óSžöAïöûé�«[é+¡{{iôaøG®»j‰4{Îʆ¿ä™/Ê)‘•Ç3îî!s¹úÔ?\fÉ¢È�ØæÞN0Ü峑}öWýÕÁ=Cr•‹³çrÈèyw«‰Gåyìœû¤ÍeDÛ�\ÅèËÛð6+¬H/£I»Ñg<ÒqŠ4H��å°WFîö�h4RÄdû–å�"=d?Œ<Úø{˜‘ãZ£->åXù°’¤††êémV�ãüh˜É9G.NÔ€8Œí:. ¹²Mü&§9t9¶q‘-Xc@ ƒÁÌx¬Aa¶è,-.B\.p![3hŠÍ™; ÿ^þwD{ ^RÒƒ#"œ! ‰þèX±Ÿ,ˆD[Xwûm �"œÈ&Ûr�æ=˜ûºAÀŸ8qñuÀOØ›þ¹¯Û÷3žæ +WA ‚À ç.>7qÄ�;|Ô኉Èì®ÁÜí­= 9ï¥ËÌ»×Þ¸’žyòlzþùÇÒù ,‚s,` Ðô·Ó±%ŽÔEœ;A@?D�~~WsÉy Ù Lb çbKÖwT˜ e‡­íêH¥e O<¤+ÊÌ“ÎWKv¯Üáµ4†[â¤'×OÇ êbzû•·ÿçùç_øì_þè^•­Ê÷Ç@%øða\åpAà¥_}ñ¿ou[ïÙx6�~”sÒ±ü=Â ß â½éþjõî§ {ïÒ©AwJ)B˜f¦>#ï ^ÁëAªÆÝ¸"uËÒ_Âö@t�Q½ÆýF5ÿ!yªöªj|9V2ÿåV¹L!²ç.’v×À„B)¸˜b�)‚Þ™ŒêX!o²:éÝ3vDzg¹@IDAT0+î×ï£Ö¶�5Ýmêsc~¯ßØLWnm§[Û0(ÄC{�cÿP'SL@‚S•ÙÒ–Êî¤e�,/‡Ó­ñ.wÈJPïÂ'k# /Ÿ½tv·k!…_h  •æi–8ª§L�¼�ûÃisÚW‹ù2Ož{?bë†dÆ-Žfç¶ÖPyì¤}¶ƒ(ð8F9¢`zl# ÆÎ�–”«â2$Jb�Fgå�ÿøÜ?ÊÚ‹~æ "¯† ÉøRÓf2ÙcìM �Á�ñšÇƒDŸgÔ5dˆé\ Ө¤ï±­cŸvBxÀŠðäöΪ[Æ0ÓâF­8iÀÅð`vƒ@}!÷å;KžÇ@®›8S•Ù)—. Äd>ë“;g|#¾”›7Poï蜴D&N7Ú€!d²¶Ò¼½3JßÚÞN¯³ÇÿÊ~/õ�fwVˆëV–YÑs)å®!ö¬Ý‰ÏÖ�<ÃþqeLÍ¡¬Kñ@>GsdØyæ/~£OÈø‡—ï¹9WŽ%©ÐÅšü’–þYa¨AlÌ'} £L8³ò/¼é ‘®ŒgufhjÌÐh­œM{ãÅ´3h¦xO�¬aìÎ"ãYvÊ\N÷#æ+ˆâÐcˆó°:™CÕÀeP[l§À†4àê£m¡Í– –ƒ&„„¬–h°‹À¦‰(ÀA;`_¿2Ã6§ LÀL‚lh66ÓjwèÒóì…p*mÙ¥?,1®´ÈÌw1Žý9âBÈx»×‘ÐûññhaËg0�ýÜ~Œ !¸ /´.²VTfÌy�1“Ã|F'ÄSh`ܼr5%ú¯Y0 ¯ž�XÊøÛ—Å¤Œ"�Tó¯éÂÝ"Åh*Ç#ï•« PAàAƒ@‰,,wL˜1î£�hÀžýZ˜°š‘é(ðF_Ì�œ Ól�D >O—.ï¥k7®¤o½z ÀZúÔ§8=àñn:~b‰8\uŒ>q6Ì£¸c¹.ÅÔÑ’<Àaä'%%‡Øžpè(¾PwS¤7G@|”q”!–�2‡ð B ýÈÝòÒ"‚ ·¾b# ºaÆ¢×G¶–:é¹?ð|ZXY^ùÜË_š_þú[ ŒZðÊ}Œ P >F�YUå½!ð+¿ñÅ_^Y_ýKO>ýDZ@ýV+ÿNMVÆ•~ÆäA©ÅpWþ=CºÅä‘`ð¶ Aq/æ�Ì‹Ä ²�ýúÄs¯µ¼x&Có³o�÷óTéylT®¼^øš�V裤Yb¶�¸`G˜¹UA¦}Î9¶ð$8êà~d˜ý‘Ì ªÿûX<ßfùÕí=˜þ½ôÆjoïG&C&µ)ƒ>ùk' FPp‹³vÝ/ÛAõ¿®ú?ÒsßBè…—PǢ+äÃCçrõµä¶Ë0 ªÖë+QRNò>·ˆüìC^b…y™ãçÚ#Žêírõ˜ˆi §¹b:W@RãÓ®ƒ[:<6¯ÖZF€ bc= F>›±Z�uä0)ç«v,úP”õ ¤–…8”!:ÞCÚ†V?˜Wt`àǰg´Æ}JczDb£¥pУ‘®LvâÈK­ø×Qóo`ìrŽ!PÇo )€ü'bd5s&›håtG³´Ê¥!M÷úwÁ6îÿ_Äøfmä»iÜÍ�âÞg.÷ªCÀ;H!º~”T’Ø-ùTq˜07‚h�žýºèœøÑOýØxDΚñ1½{ÙŸÍ7_Zó?ûy´¦ÈÐgû¸.ã«øš6u\š·ï&wŸ+WA ‚Àƒ']]à�rÌ‹ôƒýf^ß4Àï5ppPWàï)LüûGÚriÂÈ·: ­õÓÆ­Í´³{3]º´™Nžj¥?òGžM§N¶Óé3m ‹Â 3÷Ž9©Gã¢íøDÁ}l•tŽUÈÀÜmÖh_Š`Ä€"yïs·P\Q\H%î1ö±@jA[­ÑL ¶¦‰?ݺvîéÇ¡E ë�éÏýÜÏuú§Úã±*÷1�@%ø˜4dU�÷†À/þÒ?þ�c'Ö^ø¡?øörMXù¿ÅÊw7--st*»2ò3¸hÏœ•v)JˆF˜è\bTÂÖ¹¦ bóJªaús7Ì8E1$2E¬Þ³¯!9Ô¹Ê'UþÉRY±ÉJº"{`»p>@ý`IYó-è[ŒµP>—±ð›Á ïîcžÉmêŠ0*ácTÞ¶:ßä¿›ƒaº¼ƒõÛ�~zçV¾ë.cýu…•çÌÎ,m±!À1tªÆ…0ƳVÔi l4ø—çX'6 è`™€�ÏQeJø°:'}/Ûˆ §�®˜ü#Ôž`,ãÙ/„%«üôÅEVÿ!C |ŸZ%wAàç>ÿ³¿�Êÿ gØïßës^7F»–P{`vZÙ@½Æt»$íîþtÏ3wa 碽†9Fzæ­Ú}%m÷9 �}ˆsúµªšªœØ¡ÈÃ|m™|>•>ó!vˆbdÜUe,MÙã9Q Ø Ç9B€&VüÛ4êM|¨ 4ší`p“£û€s“Ó5T/�`˜±�×á½N›�F{lØKõn ÃK4ÇiÒæ€ÞEëc¡[‡Ýa¨ñ�o�²oåŠøfŒŽÇO6q§CF+îù½ˆV¥_çÊœPŽ"Þs?ç‘ŸÓ i"C„ÊxQ�*>µï Ò,q˜…*PùÃÞù ¸T· :2v|sˆx¢RM·uŠoÀ-Î¥+è¼ØBPÛ€¶ yçñ£ ¬B7´0†öÃÀ«™eäSZÂ>À&[¾ž~ÿ÷Ó§~ð‘ôô3§Ò‰Ë�ëQ˜'Ž•ôx'"ÓJ% Šââ!'îbDÿÝC×>;{;�_——טõZikÈ;ôåò1v Ip�=ùXÐŒ¯þ§olüò¯ÿòsùÏÿåoÝÃbWYŸ P ¾O€¬’¹ÿ ð÷áïÿì§èù–W—!òk }`V]%ï;ìÃuo/3BfÜÁà Vþµäíž(‘õbg!VÞƒ‰'Z¬Âƒ³co?„Œ¸Â�ÀžÒ®„ Ï y'#¿‹;ñâ8¹˜q0† «pÁü;!0!yÆíÜU}ˆÙ: ~]Æ�:ŒÇl@­Í²Èøïsîø_ßê§ô6ˆü•Í�ôúÎvº‚pE5±x¬lªÖ߀�iÂHÆö&7’K½R´Ù¢. *P÷r’R€¯�ÚJæ†ÔÂ- tò a„e~È� žÃþP^‡¶”y·Ï±AÿRúÏr,=.h¼l´MøfªOz¬ÃP¢Vîì{Îiƒ†’¾Ž&iˆ�† »³¸žf‹ÿ› èÕRŠfB>SóQ˜U6‡�Œÿ <ânZ®þ‡w´+�¯c xdŸMƒR(€â‚)wpiÇòxxuÖXÅï0=Rj’FCÆ «?m„hÍ©»úÛ±ŠâXÐXº¥0ùŒQ7½ÙÚ6ûì3ÝDØÇ8¿,·á*´u0@:›±õ€(W©b¥Êmû 4 =ø®ÅÔ×îg�èöÔ3à€Ü!é[Œ‰òkû'ýW\ã8²óiăž|—íæ¾$þ§ªø2F´}²¹½…€æÛ6 k–ùgœ÷rݽôïõEå_A ‚Àƒ�Ð:ᤩ¼tj‰wkQIo$݃v@“íâòÒÞVc•é›-•ƒÍôÊ+Û¾‰ àjú�x<=‰fÀãg×Á7ƒÐ ô’0þo0¿·˜“GÃ}è,°ˆ&H‹â¼Ã呦¹8ï�¤,ׇ鯻îvB¡mƒ¶ n#„öb󦉭š!´d¿óO]€†œ§×~ÿ•o~é×¾ô'~üÇ~ü_˜e«Òþð!P >|W9Üüü—~þï<õô“?}lýXZXÄê+Dâ„•î1*O§̾ ±´f0çÐ’%³äòk~sëï¸8 DÊqY|câê :ùͶd�I]5U?ñ"~|[¾šLüÜÕM ™““ƒÂŠîâjÚǰX� “µ°Ô_géÐ=[=ö*_ì¥t¹7OomÞLomßJWǃ´<@s“µi!‡ß)@@æ�à 3þ2ð’áM F]¥§eúµŒës–RDZJ@¾ûm€]ݶJ­:¹EàÄKÀ‚ç'|�7B€5¹·¤t8ê¡5ƒ@Hª•ˆí~aNËÄç¹Íd,‰åùé³:6ØI¾?[Hý´Àq�]ŒHb’Ö´ûX–Ò™Df‚Ê€H4Òvµ"l9d¯ò“‡ì®†Žö?¨6«üjšÓ>Ñß‹­è 1†&Ó ŠØ °ÐE‹¨9@;¦¹Ã‹|.ìC´Âà±­I5Æoƒ-“½ 1¬ÿ·VÓqŽ•Zl±¥€ü–€—§�Æ!±z´Ü&9À…às*=rº�{ìdZ]Uwrm¶‹=&ìÆ8dzýk6ÇÈ ìI…5Ý ]è$íD”Eº'î(LÊX&ŸY,Â^�tèh:D�ÑN'86[C¸W/^þW_øò‹å§þâg¹üªº?x¨^›U%þ6xé«/ý™îBçœ;ÿXjCd»ú?a¥]‰¯+Q®Ê± B ,D¥ø.pžÜÿ¢ÿàÅÀ…±Êm‰Õ@ÚD–¸,߉ã7qñ,NÏħRÞ2Ì<õÎwãÊjŒ™$TWuB¨ÃŒ°;-þÚ0ìcÞ»>†›vÕï…ÔcUq›•à{Û¨÷ï¥WnÎÓõýyÚèí¦-TöGmB4&¬,N†¤ shíÊ•zwUÿ�üœà´0ßQÊ”™ÿ ‹\t~U7à’a,WÿƒðyØ�pÐE;û §p ˆêû°–E‡ù‡é÷<ùNsŽûY!¨Ï‘â þ�ˆ*÷ÇX* ï�-Äì3j‰®l6—Ó•ÿÞ¬ ÷­K´DÛäŒ#K™Ð,Ô±_ÙV¹ ‘& 7-$7YП­\� <Êqí½|Ì�_E:·¹2Žž"Y 6ü�Õp4¨ølìŠtY£ãŽ�˜É±´ß§Ýíiº‚ØÍw®§G1øÌ³õôGž»€m©%ìÇÌ6ÒöàšcÌû0Ïê;©yé1ÓRyslÍÌ¡IsÞfx/uPeZ7Ðd¼û#Í"T˜¹@ÓÓɈ-l³´²¾Ä‚Úy®Ã´±uë—¾úO¿züGÿÔ�þƒ{Qú*Ïï•à{‡a•Â}�¯üöWžê {¿ó©ç?‰eWº78^Õ¦1ÄzfþQƒ;/„ÔW挗`f³' >y^ïú9?°Äq\�ò]i~k&8Ãc�Ê0âxËñ B ½È¢WvÂþc Ö™d0ì5T�áöâj#Àãĺ0þ¤yq{œÞ¸~=]ÜØ€ñŸ¥«ûX.G�yŠñ·´Œq8TÄ= îMdØCWȨ†e“,Ö©Æïу֛i(î�ìs°s±->ñòʲ1ô08?‡;û>”¿‚«™0>x)™•C(1Ø´:`Wbõ¿‹±�.[-Æ£R΄ª€à`Ë@0õ´«0d CYç䆄õÿ!jìOYù‡‰ŠrDçÃo+Q¨ƒ‹÷šµ7ì:{®Ÿ>¬.Ôö©¼L¢J1FyV°¢ÀM}V˜Û¨û·fË´gàî¿àO ˜ sK�D¤Ç'qÛ.ÇišàhŠÁ¨ù&¢¼å´€`¡ÁØä»F!7y•>EPŒ9_W”7.:–u¦Áüs�:Ro»�{bù ñߨÅZÿ|€wãÄüä˜ÆE7ag c¨Ø:‰öÂ�{Ä1ÓHÏ„|äîÍçÂeŸò­ºW¨ ð@A Ä5₃˃üè¯@‡Uäè×À5à›˜ð,ÝcuTáÕМ@Oi8°�^»3èµGö‡[é�·¶Ó;W/¦ßûæeì¬" XMç/tÒÚ±³ØãÙN­¦[JI6FCIƒgÂxì´'¤Ü[®,@"=(rÌøÑûº¹v±XÀfv±0$ÝE³ôÔù3h\ÕÒë¿ÿæßÿõúrïÏÿ©>woëQåþA P >ÔªoîKüîïþnçâæÅ×´öß]î‚ À¹"1ÏðŽ•Tš�ÀJX{Ö½YÊ4ŸH°`îeš2ÑŠgæ~cjÑO ù"Ì,ðÓÈWЛ¾sų?_˜ï ½ý„9Ãc°Á–Ç-±¨±1Œ“ ÐH˫鋓ïÜ¥7nm§7¶vÒÕžý'0þ¬N.,r[¬é«fVc{@›Ée‘Æ!H[Œî¤cò^þ̰£È7Α–ç`.=ò\ªë’*¾‘e>¼:Q"äáü)aƒá @Æ�ò? K¿ÑèŸGÊÁøÁ|wÐäè¢P‡ˆ˜s–¼ÇÉÕh�šjÌL¬A†�¸ªãö�}¡®AJ¬ÿ�Qýï¡áÑÇÏîåÊu™�sÍ%2¢* –:0›h!Øêuú™ñF cdØ�óø¬ÎÇ8 {|fn‚êAô¥A~¢èlZZ\NÓ­K´Ñ>8¶Ñjn!�¢<�¿Û!],oŽû×ÒpMŽé¶hûa�ñl²Ô•E—m×ņ³_Ü–>ƒ«ì‡yu¿µoò—S!fôYRÐÄ�cMDÿeèÙŸ;�(ÝD5ýEh|¸€h÷”•@ºÄóÉvŽ‘À‹ÏúU®‚@�å¾ón}àqwne4³sžTüŒ¶a¡õˆú?F%¨M<ó·Ú^žÐ£æ4fc�òNTÚM¯]¼‘Þ¼üzúú+N 8“ž~j;�¤Å.§¿ 6g ÙM?µQͲ£p�iø]Å*‹÷¡ß¥ŠÜ |˜ßð…Hõ9è`í)TEh=€Vasjê¬uÓ+O±%b˜¶®m½øëÿì7ßüóòÏþ«½ÈUßWT€ï+8«Äî!j7z7öŸûäséÔ™S Z�-ˆ«©uœÆ¨Êãý¦ÒÓ½֩Øâ„ûIXÒíã~øHNË9! ü"¿ÇSÎ5„KjúêS0ú¯ˆã÷2ê:oS$‹™ê°- ²š?de·7F­õâ›[ýtqk?½rc3]Ä"ë6„ñ ÙM#Œ² €Ǿՙ¤‚˜†QÔš¿Æƒ¹À·e™Í ü­ úpfðË2×êß‹‚gGžñˆ§Ì�ã•)¢>l·8ñP> !™™ìr�Pî'O?T܃18"µeøa[æØ¦˜k�˜. ­ ×"©!âªéãqMúoƒv¯s¢Ãx‚ÖÖŠGP6‡â‚œ_ž´õ‰-ܳt Dë? Ü’€sb�6-ŠûPÝ„—pp¬ Ví¡r²P%XEÚÂñÊXѸ¢ðž� gKi £€‹hcÔê»ÀO‚ÚhÃéœí0þjòhP±Mc7165îï¥ý�ZêmŸIÃÞ¹4[ÁøÒ”í=Ñ4Eùm@‹’÷í~÷aãXö²«ßÑ�D1†Q�Œwx(¼ò'Àôhß‹1RTÑçíb qy�=ðÍå¾iœD¤¤«©2ÿs8¬°¸.ó$(F,µDŠ~`˜«Qñ,I*²üÿÙ{÷&Ͷ³°o½÷¾NOÏÌ9:éè†�8€11Æ&æŸTÊU¡œTÊ®râ8¡âJâ?’��*}ƒTœ@ 0²0`0B�Cʆ22· @BH:::Ò¹Ï}¦§»ßûûæ÷{Ö^Ý=sæÌœ™33=R¯Õ½Þµ÷Úk¯½÷³×~Ös_M; K³×ºŒÖþõ�1&þóôÂWÓeV™¹4Z*“1Öh�) ÝIò‚gé¢]náJàR�´�>ã‚cÃá„çWZ-ã~ˆÔ%ý+“�KÆ]z‹Ö5¥ÇËËPSI©–Ï>íEÁ‚V'1œX…&€R ›!�UÌ“ØRË@)©¸µCªätPSäû�ý ††‹L“Ô Xª¨…UǦqlŒ€oÐÀÜ:ÞoÄw“6y2÷¹Zܧ"€ü¾ò;ó ¢çD¾AG¿‰7Z}+þ�ïkÁ{›ce6V7ÌF;í†|�[D‰nÏwã;_„€Çw©vM¿BÜt5rÕ‡^wš†ûÓ¯~5=qæB„~:sš%2ú挧2Ó[ßoî7#l]þ.,BZ›kxÇqÇ©µÂ¬´à8Ì>¶›ÃãîR¯0u .×@W¿¾ J£.ØGî?,€oNåʇx°9P‹ � �oäï;ß®Û~× ž8Øf¿|ö·>—‡Àí±Ü_œÆ\12ÖpZP[¯[†š´µhGâÅ„`6ܸF¸âMÓîP¬ÃÒí3˜÷ŸK{Ðnû»ÃtõâupýNúðûwÓG>´‘ÞÿÞ^:»½ ò>úð~¸�•[¾õþú¾xVJ$ƒ¨hý³ a®Ó�ÔV>|Ð ™p�öÄ­v¸HOm>›>ømNßøÚKi8š|–®ž�ëÏ7ªà›â5Õ›¼~ü_üø'?ôáœ{ö}Ïp‹¨ê ì=ä VX×Ué%H ¬Í?Ô¢j¢.Kì LY6P8®£$ýîѴˈRT»9.H… Ø'Q)c-~ÔT;T‡Ôe‰±—„ ‚V–ÙC$êõ!T½�%QU'ø•�,aÞw1e½°��ÿÅ�ôÅ×.¤—¯ÜH{03|¿çä)íf0³)hÉlÍD˜E’3ªNà–ùæ÷Â-¿U¿kaGz|w°­|_íÎßa3u¸¢ h ®áæÁ)!~!¾C2XÕ_Ô�݈ÊnFÃtþÍ7Ò›g^I綉¨üþ§ÑhbY´ý^ÚT˜æ¼çïãõ¶¼Í¸Uo‹ ƒ™FÙÔÇx㘣×ñ—K¿ Oh¾ `+X©9&<YÇ+È�Ρü®òu5÷ŸÒrW'…&,Ó¨ÛßšïÌØ ñVywö嘜ç5Éâç¼ÄC4—¯E…@…À �€¾ÂW çS°DÉbÑ™AZÃ2Ïyë®±zÔ†wŒóŽŽPË yu÷¼å bḩâ—\^Oc,¾ñê%–üFúÒW[é;>º�¾ëù§Òû?ðD:{ÊË_af'˜)lÿè»ÁRQÍ*íêŸÊîÃÒ}“ø�‹E}ÆŠ�CqÔE¢¹´mœÁ1Ïg¿ië5M§²eÍx<Š%³µÐ�Tj§£R‰ç×àâõ éCßþA\é öùïøÙ_ÿWŸÿ¯ÿ‹ðW쫦ÇΖ5U|ÓBàÇ>ñcýCßöþÿã¹÷¿7›(Aì© 7øÝl‚ïÚ¡¢½>ˆŒÆ½)�)¶Ñ¦ªÕë"¿ ƒß弈Õ(ùa@ͶÌ‹¥`ÚS˜L° Ü×Cc»T㮂êLz¦~©FŸûÃÌY.É ®1‡y_N¸–ë·N¥½­íôòt�¾ðæ(ýñ×/¥Ï|ãJú*ÿó˜yﯜNÃÞfÃøÉüÏC«È¹Ü}G¡YDîóv±è�ÅàN1E8iEö›‰AÂ7°¼?Â!£ü¼—X·%œ}î!ˆÓ}x=' ƒÈå>‚ÔŸÀ$óóîÄ­¿±9[Z8QÃîûx!@Æ¤Ëøaõ÷´Ú²|Ü5<ù/2Ž^ “ÀL}Ÿ÷ÜA°„atYÀfã.M7¦»Y�Às«Ï¦ýö¹tuLìÆi µ„ÌSÖâûÆNönç7÷ïÊ÷å}eöËo" ¼d´l{�íˆ>ŽÄ7â;å»òÝòöʲŒR‰| ág>v#Nš·am­ÄŸïb¸7J |ý7Ðì¯D€@üÒ�í€�çp¢é(¦¢ƒÍ4—d4I›�SP¹±±Îw»„àÂ܇$Áå~ ”÷ùÖ2šÏ�ð ˜yWÁZΨ?�� �Õ4í±ÚÅ·,]ŽZ<›g„`äà ¿•Œ£o~LqkóŽtUQ#�Œ›ÅœØ'.…ù•×vÒ^¼–® ])å \¨º¬þ‚+‚Q—âŠå7£ËܱÌÿÂ>–ü­ôêU+*ÄäGSùªó7Ÿ¿ò·Ûæ�þ2¶ x˸<½¶Œÿ€yÜd…÷Î,óª`_¿ùÁÚjê¿ggÔ"FÀ^úò7†éo´Ó›—欰žúƒ5h×S‡9áÁJ�}ÜѦ(ƒúÒ“\G/V¯‚ [àF8#뎂c.Ë×R·àº_ã'ͼ•c¨´âÞÉÆšÊÐ�&à~y¶œÄÁ �H� ¹v!òÜ*ž2Õ�ìŹ#‚oŸ;�ºýnúú׿þžð�~då×~áWþ]Óa-cTÀcürê­Ýøu6ά¼ræ‰3iÚ4'8^ÄÈ êüÈÍý`f‚¯°H`°@†Ý€ð`ꃑ“ÙoÚŠC«O®n”ïlàAˆIŽ)*˜Â¼�¹ ù1Dþ ~ýS–íc.e`¿%ˆ~ÞßJ»ËÕtž¨â¿ûÂU˜|üÏ_M_¿²GTÿyºÂ=Ü@¼Çu4÷Ÿ…0�s”�Y‘Lpsu°Llî�ÊîíÊ·4¸sóÒEœ} ”#ùàÀ ܈ÁÅäÉ›‰IÚñæ[>NÀ2–2.2ä2ö=‰•Ö8­w†i£»“­«Ø/_`,Á¨@Dt *äÁJ“Z-´j1'h6§Ý³Œ›÷`-r&ݘô`roX±(�ñ/"›\6o-Š#ò‘<æcüFÍ |wå‘PeÀ4°Š/-_¥™_I0ŸCM–±Ü)>(¤%þþ=´D=Þà „C0ø,�Ò@2‘qÀ\Ýø#««ƒtj{+­Anlà q9wM‡€£µ�É6°+“,(̸$¶°’@W#ó�%è8¾‰LoÒAà.án}Î1¤Ù¦–ìon—ßH~~usˆãKb¾þüÒK×Ó�1«¡`‘¡‹Æ’ëÎùŽ:|‡!2ðÛŒŽóû›¡½s—‚ã5UT|ëA A(±Ü¶¼õ©3ÖóÄ\~PôäïŸ 48}�B¨±Íõž‡°æ\âS±f,½ ²™B;NpßNúøÌ·Òoú5p~7mmáÆ<° ¿#Mè ÊØ@„lfžwf¡ª º ùš³sŠø‘ІqÛ§·Æ=6L¿˜.ß9‡â±›s2VŽšÃŸÃ§Ï­o…¥-¡{˜ßfxu¹ZÁ¯¡ýréâåü»ïG~â×ù—Y߸¦ÇÕàq~;õÞî�ýÑõëýØÇÒÆé�Ð~O1É]BdŠ‚•–Š÷ZJÿßîœÑ�]YÝâ­ìò~tà»wvE ØFHzà»flh-„–ho¸ŸÎ_¼�νùf:uz+�;w�š"¾}…eÕ’Gù<÷{-ñì󴉮 -¸Ë’Ï…ïEúu�Øö/¾žÀ±‡#ð6TþšÓ%¿¥I­¨¨¨x‡�+ø¤ì{:âèAãÀ¨­ üÊœ¿¿?",ñ.¯¥Ëç/¦ÏþzúØ·ŸNßõ§Óûž9•–½ëi8½ ÛenqþÀâÔµøŒ?ƒ�€0³�?1à@Š ‹]A(Ó«Ü�–€2ÿù渗 v¹—#÷Ûïð1oÓ,[%è‚5J[Ûé#ûHÚ¹ÊJU/Ÿ3þ6çÔªÇUðø¼‹z'÷�ŸþéŸø§O=óôúö6>¸Ê´¦I|à^¶1áw?„¢+6%®–¹b·ƒy•¦ýjp]²K•–¼˜¶Êøƒ4E¨2c¡J¢fB5Žq»šZå¾sû…¬Yw1 k�6Ëİnûkû)}áÚõô…Ë7Ò—¯1Y§U©[úŸ¹&,ÒÓK¾%çëçÍcÄÕ¼ï¸{š+šˆmJŸ!žÇ5=rø¶}™•ɥ㢼û2^ð�Y¿î)†ùŸãOØe¼ØÆå…ìɱÆn¤9Ì£Ñç»þë´1wÀMª}"b|äëçöõ÷ÑB :,ÉHì�þJZp±C\‘�À;=ý$qC’�ؾaþ;˜Åó¢Óñ^'À™sgÓ3Ï<“5(´•y•˜Ó" 0Ð�öÉîýjÙfØÆÉâ'Çf¬¢À³æ>vùbò5B`Kë bÝ\GqNà¹rÊØìÀø'–D` ,brïœ�……ü|ŠùRù”¦…®]âøCâ¸iT‹ � � �w  °ƒ”±^ìº ŽÊ]p s¶Æ}|îBë™Æ“™õÒ›0Ì—®_I¯]º–¾úr"Xàjúè·m¦çžÝdNЇ.� 2”DZ“:ë÷!"úÄ�÷¼P¹ ÐÛâ¶W*h°œkAÜZ Æ|œŠ{O\b†…‚šÿ}ÜöG{éìú¹ôíßñíiŽßâOüÜ?åŸüWÿÝûî½ãzÆ£‚€SdMßTøÕ_ýUŽÒ¯|ä£I]רáA4áÌžD�~ÔÿSË/ŽnËä{ܧeªÛ.…ÞÓäÕ}[I)„¼A¤ à"Z¬0ÿ÷\™uú‰,Bö�µÜçt¸€S_àß� Áð ‰I¯`õ¹‹»é÷_¾˜þàÕ+é/®ŽÒ þ}c€¨‘á Ð%ýXÓ"Víî„{›Ñg‹}.OååݶŒí¼ë�Ù ¦G ÀfÎŽ¦0³s2%Åûqv›cŒ9† ¾ÿË´ÙÃo¼½ÇòŒWp¼œú¬!�Á2Ù‰ž?}Î5)Ÿ/Çi¢ÉtgÀ Åÿ¿÷$“ìfÚ™bI²Ð-Ä%#•ßÖw/È�#©IæÃ¢ª�)ä*Œ}Ÿÿ�ŸÚ”òù¾ÏŒ¼ô˜øI¬aŠ¥;‘ͱèX[[K§OŸŽ2´ÖçœÇ^ã;cŸØä¾Ëh,~¤Kžc.D�6 +FõÏ�Ì®[—Ot‹íHÍv¢WþC4 =ËíÖTço´Óg¿|>½vŸØÎ6u§ÁÕ:PÍ-Ý0¼/pº3@¹¯È?zá#­ø³y-**î‡xKL œ%W˜k6æÉ štÊ2ÔNÆ„Y¶×YÙg-õV×XÚw™^;%}íå é"q vn´ÒúÆÓУï®Óv¥ÆQ™ÁdÃpoR° bŠß#Yz–ºçeá³Ç™{ÂZ€‹'€§Æ™÷ñØœ¯@a†8}2fajæ´­ÍÓtÝJ—/^:õÃ?ò#¿õ+¿ø¯_½�Þë)�Õà¹^âÁBàâµ WÿÆßü~‚g!Ÿ5Ô¡¬CKF‚Ô$´A¶Áìƒ[jå%$%ö¢d›[ê€<;0Ù–ž‘Õµ€iÓ ,I©ÄÕséÃ~¤÷é[îN�^Öþ˜j¯²¡T—åü0Ó¾�éÿ^z=½Œ†êÅ«»¦é:Rß1kÁ.øF'´Û±7ˆé°ˆ;®Kÿ&ïÙšÌ6XáYqù¨�ökzôð=øBäÌ\8é†Þå9¿h¡ß2´ÿ=a w•fs-¥ûº�ó8¥×xÇøÖ)TÒ5…±ÒeÍù%Á"§Æ‘€ñ�|óÈðfjz„0(Ý”à�c¾Î!8dÞé@е‰ó9dmêó^»�¡ §ô�€Z~"HOÆi~}ž.\¸�ÞÄÀ8ÛÛÛTyZ~ìµÿùà‰ãGS>àwf&güÛâgrƒÅâ¤ü5_’„rœÁÙùSÈß�¸›c g%ªm­ìêî$]ÛÃüŸ€€^®áNª0ïàæä¾¸üf €[[Ý|NÝ«¨¨¸= .+G3î‹=pÖ 0WeêaÙÙe_ÝTç B¥ï4yBJ}å…IúðûN¥¿ò±§Ò‡ž;‹™½±®.HöbÚÝ¿šýsà¸Àj™(Œ=i1äQ¼&�i-ØÂØ � 2¦¸ÏdŸ\é®x•Õ·° ra:óävzîÃïO/|ñ…? ëw¡û¼¿zÚ�!Pw†O=ú˜Aà—~í—~¦ ½yЍ©“}ˆÀŒÐäàÝÁ4)�x ³j‡ö_„ë¶­h+zÔÿ¿­–=ˆÅ,Eµ^©ª4ªý•sCx—²Ûp� ç öå%YSÿqk+]f…€—¯ÏÒëû‹ô^ÚM—¸Æ5¢þ�ûDŒ%âk›‰ OÝŒ aÉ �0uÊ, ×�¨5»º@—{M™÷ÂQiì�¹]ÓãGIÎŽÀü^Ü/ÉÅÆCÃtO!€oÑÀ9Hó[ BG^D›�É™ÞlÌCY±À8@ÛßaÈ„€¶ú=/›ø1.ëh(À~¤%ì>H�„Ô>ßó.Ä]àÚÊ6–@ ôüÆ;¬äÐF3bì¿â6AÇÄí± $ç\¾|9½ñÆÁük Ðc™%™äl1ðHéž/VFúQáj|͘ÕúdO ¾ø ÜæAÆzùzâ;±1Éãüt®4 óŸ_b=ü¯àÿÃ… @,ð/÷´æ’Ø�>ó·ÙtÏe¹—| ®W***î£xæÑí¦'h¸F >C€  «4›–лã Ì!y‰Ø%+šŒ§+ ËÓAj²ÿ‡ŸA�ô�‰[é{¾s ×€ËǨ¯°ÓˆÿPAÏrm ѱÛq‰¸¥¸«—–;<¨+Mó{-n(Ô`êpyU¦àê+=VÂyïÞ›.ßà§éSþñßÿGOÜkßµýÇ@<|×+< õƒåXþÛçŸÿ®tåÊeLf‰šB•¨b¾j9c ½Kµô¤·8@w€€¥”ŽæÐ2òqÚG! =n¹ÚŽm15G9¶€Œ¹ªKïe_ì}70ë¿€AÂW/ Óç^¹J¹›n CÐÏ`è]K|Ž´ñmfðAžsêçÜ�Ra¯¥–ŒKËZð0Y›¾ªT{ûÌg+ä¨é˜!à8ð…E²dŒ4{¥(ãKA“Áà:0&Fˆwm¤nñr=Óóaþx÷ޱ¹Â&ÌóO¹$$Æãž6åÊåZµ|tú‹ß6¯mÌûÜÇiSÍ•ÞDßÎ�Õ?vçà& ¾ÀÚbOÀõ¹”!RžÝÝÝtõêÕtãÆ� ¦ 'dm÷£{¦û¹’c°ŒÃü”½ü%ð”�»Ä´j÷³†>×逑D>ßæ2þ¶çÏm©A¾ÛöV5|úüß±ê A±«¥úŸo* ÛüæXoîè<)ölÿô"ìãºù:^«¦ � � �w�‚;Jyë™,éâ7–ÏŸNçûÀ?J6A>.ñ»¶ÊòÎж™á~Úéh€Ûó¾Ë¦n?õDº¶ûZúƒ?}-½òúëéÕó§Ò_ýî3é¹÷>™6×P"!hVyþýⶺ@,*­K_ƆQŒÜ Æ|Ô÷•z.EŒöj4BÛ°äaŸ@¶:Ô�õ×<›^úÊKç~ê_þÌ_ûïÿá�þÉ}]¤žôÐ P ´µã �Ùr|é£ühêÃØð; T†?•�Ûâ5òÅZ¥l/ÕYìG™)Q#8;PÁhiʯF)š`´ìCÕÉ ¯i>ÔÍ€m´õJqGæüGÀ¾Ýk¯žNû î/ïLðó9ýù…=˜{ 0Ûf9?¯©«AWP$ŒÖWË3L¼ÕêêG¥µA%h¯0 þ¸OïŠ5nßgáPÍM5k:Ä|Z.ì;Ë3lÔ8Gf,iÍa< ƒR*ýgi`&ýõ´a\¨ h‘ý“A’P¡¦àt|8NÂgÑ�‚�ús^’¡QÓ±@À%�@¢ÑÇÝgŸoýT�µèµÜØK“ÙÞ8#Þ/ïz™­æèKü¶×XZ€Qÿµ8{ölzî¹ç‚é—¨rU—„*BÉRfí8=@H–ºãxüÿeÌ+Œ:2cìÓÀ%°&.‹ŠàS�‡¸kFÜÉRבV@îVžLÖûå˜Üvœ¯ìj<Gà+#i�Ø^!š¶×q«º¶ïÊ´Ç2Lxxþ@+‹)Ë-21Ø«–±=óÍx k¾TS[‹ � � ��ÀŽtAL`éÒßÅýœ(ƒ�Óá&&VbŽp¹TU@ÎWöpD°ÙïœI¯^¾–Îÿî«é/¾r!ýàü|úÁïÿtêÅ´ÖsÉ`”Iº¦‚0µ2è`n&=2ãúºM\ÏkhAx[\[î¥ir�Å ·6Ï6(€•~ÎøÜ Úžãù@ÚE°ýꋯ|†®ßÝÅîñÞjó»C ŒŒ»·¬-*ŽŸúÔ?ÿŸžyêéÁÁR®_¹š6 Žõó×ß`~º4…¹>ŒR›ì’~m3šûáß(ÿy›%öØ–ÉÎþD¾Òƒ мÃvSÝ>³�á6j|*yŽÖ/ào†ùoï½éõ½M4þÃôÇ_¿’¾xy?½Á5wú¬Q½‚Ù¿‘À›¯LìÁY@Ž"u5V±J@@ÎIn0·m#s;ÌÔåÒí°Hà†¼[~Œ¯ô[âÒN§¾›ò¾|¨Û½“hg[FZˆš˜(ÝÎɳIvD�Ì¿Œ“s´­�ø¯æÉx‘™ÉW󄚎ÁjòÊdD¸iL—ƒ´�«Ï+~LZÿú[h¦7,öåó#ð/�7Èi^¹~5ý2ú{{{a 0£®¸„Æû8ô.×Îc¿y Ú:ŠM1ÚÙÉfÿŽi¿‚P© "Eké—àq¹xÓ:NˆcÀ¬¸øMX‡|a,øø†[Œ�¥�ü�ùVròšù;Ê_aSM»š***îƒXÞ-—y»9‡É]ÝU¨º¸€ zNš«À §‚_õ±ÂÕë¦YçTš¶Ÿ„æ|:}íõµôÛ¿w-ýÜ/1]n¤«{øÞOµ‚Âz`° ®cu”Ñ„¥f÷À¬`¿ +Ê3BO„@@ݯ²™ƒÐA†Å®åÚZ¬"œX �„È?¯V ñ*‘*Ñ,N• Ì9 Âq¹ù°ý[áUkâ]„~‘÷Á›57—¶,۾ɜ,ÍÊúyéM½gÝô¾9ïÝH×�ÐÈ:ælß¹¯\R]Ó#‡€ï×eãmà4ÃEc8ï  G,��ÔZ9K>�p% M¿o¢¦ß¬é»-ö÷÷Óµk×Ò¥K—ÒÎÎNÔMy°[÷„•¥Á1”1Ƽ‘,ÉûÂGª] £ž™z¡ “ÛMs]Ÿr¦=íDß2üæRÏ7H+òب“¡bV»ÇrSSðéø‡[VùRè#ÇÕð;iÎñ["W!Z€¤þTT¼kˆónMÖÝ&Ç$ˆ­9�Ùf\¥Žôƒ¢Ì!e[-4úí]@3R7 ¼‰†½Ç|Ò_ÚŸ>�^|¥ŸþàÏ®¥_ý�?K/¾:b• ÷`W¶•®ïë:@0iMñ]R:®Äon†–€¦Uٔﳹ�{-šnC =Å ~ßÃüÏÑÊa›•ξç\zò™÷`¡Õþ‡¸ñJÈÔô˜@@1PM�5þÙOüØï}çw>¦ÔóÉ$�=½�³¶Y:k.Љ�rÕ K-‚èB:™)Î@v T)�OIùœ%þ£Y³$QªtÔ64‡ù7à¢]¢sÌR�C$µ³•µ4g½ï«,Ùòê°“>ýµKéå�Yzí2Ѩ'X ¬®DDÔý̦HreìRjK‚6׋%ã(E¿°�0ݲEskA »o*eÙ;`úhø<¨¿�ù½0îP¾“x/¾@x,ÞåÁ=¹w$3!ç÷˜cê éNa…ü”^3Ór3ヽ×� ï^­�ï)“oûS4:šl²rÃêÀå�öñÓ¥9«}›®Ã�Œ|¼Qp¤!AæI­ÿõë×ÓÅ‹Ã`}}· „ Jzþr/GËønBDŒó¨ÔÜa-»™ù·^3QÇ~N–ù €fÇcúý‹Â=ÑíЈÍ4 ÀÜUf-×îp �,µ’Q<LùŽ4E¿R•¿#ïüt0}zUÿjª¨¨¸d\òÖóoÁ-"¢Û¦ÀP`"DšÐŠ þo�¯<²€øœC{â× .%0–f-\¢‰N˜gþݧÿ(\¬Rï\zïSëÌ1ÄŸI7$;' –ªÓýÀ£Lë�ì˜ö¶wv·Ê Ú<›(ÖëÄA„ƒnYÊxšVû+éÜSgÓîõÝtåõË/ÐèCwë»4pÔT!ðØB‰áÖ™­Ó?ðÔ¹'"àÉŸ¦ÕQPAŒË1æRjÕôÿD“ßQºÝÒæ^¤‰¶?´þ�æš0˜ú%û.¯ÆZ|´#£±KðÃÎ M?H2Úq˜R® –S¢}ÏV·Ó>¾ßÄÌ÷ÏY§õÓ¬×ú‡.c0J×X°ÍñµÞ©´¶¤•)>®h§4Ó7a@@†0 ”û[†)?ÇEË�;Ež¯´³ý”“Kv…2ŒJ¸f û¯ïÍ ;OÞù=òB›wþ¶·/»L”4‡!ÉÙí<V#\„fX -z›ˆø°'ìS–_ Ð¨Ã{÷OSÿbàŠZ¸_4þGˇò  Ó2:c8²c—rQ¾ÿr礲@ˆ¹¨Ëen�1WÞçì`ú)mÁSÙ¶ëý&ù öF,«%\±°�+-HH‹¼CæJ»h5ªÕ€B^Ë£X—�­÷:@@IDATš***îë‰OnÉrÃGóm{—¡%W[^,þTZ©$êS¦ƒ«i‡¹¤Gë¦ãyÚŽ ¸7a>!ò>–Oý��¦?þìnú•_ÿóôÙ/^‡ì}"uïI#”Qûñ+3TÐÞÒ©”·½±w\©Cdpr è¸×å:ƹšC�ïwíÔZzú}OaÅ�>øOögO½ã Ô†Õà¡‚·vþn!°åò—¾÷{ÿjhä5•2pÔÞµ�´}j+íïî �ˆ[�|8—‚MÛŠLc©)A%�ËI/@^m˜~‰r±»üfî_Á‚6ûk¹šÁ½&øX]BðeüüÿøçÓŸ¿~%]ƒÈŸºŒË*ýR ì6׿ߞ=D˜ÍQ¹­ X Rfƒ?™Go'¸2øyÞpßµ™MÛÉBÈxD£dÍêÏ1@ ´ÿ ®üNx/¼¬Ø~Ç÷âÛuÜ™›_ÇÂA¶>F@üÚÖþK΄GîÃc5=JNIœ�@1�îsV}~ˆ�pÂwßciP�v\ÉAé$)\Œ$ÍàPƒxè 0ÁºéÊ•+aݤE€‚™ÿ8'�Vl>F?ܛȪ$‡ïA²<¨ù¸HŒf?F9Ïã£ZÏäöâG™~“è­Œ²�˜’cX„U¥Äð€Ëgùhæù~KÞA+¤¯åK¡ÎÑu®“Úº¦ � � �û‚@à¿Ûá�ŒÃîÔ§øˆ°À` ŒûÄ—&éÔB«‚ q%…F…îƒÎ$1@Zšói,VÒ _»LÀÁ/³ÊÔ(ýÀ÷½7m¯`±ºÿJFsfìiÿ�a½ ùݦæ>›nÄçÒ0^% Ä׬ÒÂ=m®l¦ísÛiûìvZL.ƒ&¬•[ÓqC  Žû Ôë¿-þ¯_üÅçWúݧNŸ:EèQøÿË®ñ—Ý¢n(³ ‚tI§@¢`iG‰Ê`‘8Tcæ¨AF¢=°¥‡ ؉„O¤ªÊ_Æ‹;²}NU#¹ÞôÄ{~o’¾xu'ý)Œÿ.î¤KÐó¬âq�*ç๕&,Me´övkS`¬ˆxÝSe ýy{š¦]Ï@@@¿qO^Ó[k²‘áÕŽ™¨ Â5Ç(€È¥Q(x$·±]M�B?çÌ�û.‚wq,åQtçâäÜ’ Ç�çœë±Ã+Ä•<µž%;d²MMÇß…LüܸÉX|ÿ„º õĨ=Úà…6K&)ü‹å Ä2¥àLýMKGã((ÇŠ Àv�“+@ŒPW@À»3•}ÈN™ñ1ŸIôR“[Qøò©ñá¨5Êg+è´mŒt�uÀ—¦âmÁì·1ÆÅjb”k¶�²�“{\ œ+;Gu ¨ý—¶­®©B B BàÝBàV\"Þ)ˆ­é;æõ›¯#N2Ä´ 1gä6«‰¿‚^ l­gjµSàC‹�ô”y«²+Wçé‰3Ëm¥_B0ù<Ûûé?úîsiƒÈü�?|p`Ó¸�ÿ½oÇ­¼ãŸL®dú5pz<2Ϩ8ãléÝÁ°',‘»Âò†ï}îÙ4ÝŸœþ™_ø™ÿèÿè‹ïøbµáC�@¼ª‡Òsí´Bà]B`wçúÿ÷¡|0M1õìC<ëç9GÅÞël‹åQV tbTÍ£àª#ПûšýëÐ6ÐIìÃàËäCŒ'ˆrƒÿ¹ï±ûf)Ì A½g¨Äp#X¬¯³•†ËÍta4H_½:KŸ{ýzú›;é2®ƒÓï ‰ìÂ¥¼ 8'h�¸,ÝòƒÄV©­ˆÛký?÷L t1û:4ýrÂÈY$ˆ:vžFâ”æ¼(@ª‡g­[�ù-jëÙ� Ö÷ã±·IL¼M³üÙ‘19|§Î¤ybe�íÃÒ>[ºWÓ1A€wÌ$¯CË¡~„ ú �ÍX }N–¸! \‚³Ä 1VXŠÀg±l©A=Æ7/Óƒe“\ÀíbþLOx×ËÆH,cž2žhd,)Ks6ï×?“·’¸šãGýA¾ýn3ä©x^fà%SüFÀ¯XQÌi3Å,vǸÀž>ƒ¹?+S�‰Ð[y:½q¡“~ëß¾�~ïßHÃéHÅBµ5€.͸׾³…�ª£ÐÞKÜoƒÃ—{¸àIq¥s–6�;ŒÓÅ×¹]î$ú·}Ûv}u=MqYÏDZ"ÀÆÙ�tc>üK[×t¼pö¬©BృÀ§~â§þöÇ>òѼ±ÊÒ&ÔP}‘#š?„ÝÂN_~}ý[ ÓÌ>øÒN÷ )9r²ÒRKûÙ×’,“ßeùq܈è«ã%‘WYzÅ•Zc‚LݱµÏ¥DôþËëÝôï¿z>}öÍi·»™ZøŽA‚öšýªùs-VÑ$b î‰ø n.Œþœå ôí÷6 R=úÓ‚˜’daÖzU–eÉqŒýhZzRMÇ'I—ê!å(ý™y ë ÞwÖfºnf£»LgV—ie¹“ÃóŒÝ…ã=ë¸ã€I™>[F†'åØ1ÜÞ Ÿ¾eç |úD˜‡ù¡ùœ¥#dvB°£.n£þø‘KéçÉ#˜ï° âù{<;ûCˆ¾½Ù—ˆÛ¬øS²…oÆÀ«Œq¶ºÁ’·{Œg‰T´÷œëÇö‚ Š |[|g `lP©ewÜ{*}å•yúì »àÔ­„…‚£f'¬+–ô©Óiô¿Zb圯Je|;�QÝ©©B B Bà�C ¦nð�8ëÖœ)»¦/qÚ­)3áâ$™q)A»‹_p¡tbA¡Ú]– $K¬ŠÞLmæ´_dWžRX¬µÙ™´{£Ër²X¡!ýз?C<€ÚârÆù³I‹à€ƒ´Š)Áx´�J.q`ó!Àe[¹@¦S¡³Gfæ_š”;;¼WÚà:ãl;113*x¥å­õÁ÷2!žÖ$­m¬zk™.ï^îü�¿÷Cÿæ7þÕo¼–Ï©¿Ç�êpP¯×¼+¶·¶c¥Ç2yjÊÀ‚Ù' †+0“HÌ2rŸ2i£ÛdÑcsžGƒÒ»¶‡Z�å¨ \ÄI�UF‹qêÎ ¾YÂkBÓÎ/Òg^¹”^Ú! Aþæý5úË„¸gæN3í@ÌM‘­ÉH2hÜrfƒ7›"æ‘£gÔíÇÍ<“¥¦Ìûå½Þî¶cöv<–·íD«Æ4�áøe'Z8xÜ¢ŒñßôÓ¯„‡½ÜîbµîáB@èƒW|§caÀûšƒ[fX&u{©7@Ä’Ÿ3µ9/Õ,Þ÷ÂHÞ}1ïŸÃ ËØ«ù/aBOû[ÍþeüËy÷ß¾wǬc0†)0ˆ2×@¸zı­ •¨Xᘄ¢ä#ÀbÛ$¶tÓ:Ë~Ï ølµŒðÚÙ†s"†Ç±ø?ønüÆÌ û¬c_5UTTœ4Hm¸€¹sn0ÿc„ûXì�Y’6�MÃÉÙô¹?¿’þè3¯¤�}ëÖÒ�}ÎQÉv þ”îhØ{ޏ“sÞö˜89ãå¼wç_Õšþ;W™µ�ù×ÊíÔÖ©ôäSO2o,?{ç^êч�*xX�­ýÞ3þßýëyö©g=¤™3"hÇR~†Í‡É?X®O?ýf?"ücº_JW(L>¡Faö‰"Íù.ûçŠjýË~¬ @]Ó©éˆ%ü†’ã+éú¬Ÿ¾zy/ýÅÅé%�ä�þÌ?ËMÑŸ÷Ð!Š�# n"ÚN2�Œ‰œó`8:$òúä26™ æ_-&Ù¨ç&ÛG–�Œ`;Ní¥¾ü"ë@)I^3É£W‹#õçQAÐkŒ|‡DM—úë+­´}z�ž8»™ž8w&�>µ…P`ס^�UúÇ›dœ‹†Dbɤöÿúõë@bÉãÅ Àö%Gãcü ‚‘±}x?<‹ÏÃV{üûŒ÷z)øÊ¯CA€í©¯6mËyцçË"0¿ÌH±|™ð9Œ0aÍ_É1 ^ºB B BàX `�=VˆgbÚßîB3ãZ&že-«4š¯²rЭOÁø¯§Ï~þ|ú“Ͼž®³B@g°É�ïJã(. úƒ~íû�Â`§Inî•Ú·–e^󈌿Ùy,(Оyß3¸,tÛ?õs?õž·ž]k62ú°¯Rû¯x¸|åÒ¾ÿÙ÷ó?g‰½6Œ{0Ý2ßl³öaû2ûyù?J–ÜrßãKÛ²/Ó�3Ãü#`á²R–M¶MŸ¨©³}¤¦¬¥:íl¤k,ÏõâµQzqg”®²Öôu¬&ón´WÒ©þ:5H01=á:Ð껜Õ;x°Úä[1U2ìo™33$S$+kŸóÏ8¤Z0ÿPHùðžH0)è$d¥7O§Ö;iks�¶Xþhƒõ�®l‚ ‘„‘¤Ã"’û&‰#·eú�PÌ%‹¶¿0Ú–¶}R è½øfµÿB¯Ø·ÞñnnýfÌkÖ_ÿX Ð>ü^š¬ÐL€QJžkÍXí«¦ � � �ðâÆÚÐÈþCp#.Q¬dÕbÙÔNk3\Ydz¸s&û©ôÆÅeúÌŸ¾ž®îôÓ©ÁûÒŠ/ñ©KjFƧÒâÕ29 Ù3È phw05åž'š¨ÂÝKXú=¸=‡*ÈÑ!>�¢¨P¤hk/Y(�™Ô[id_´Ñ à:Z'úÔT!P!P!p"!ÐN»7`¨aø»ý9øöP0¶ RV«"žU ºcdpëñ–gÒ¿|#ýÞ~#½²»—zk§Á»Ä�FÆ:¶Ýî“{Îbô“é�@Â0"oÊ\»{�KÝíKÕžã¼®³ÌmÎ Úº àxîÃ@ÐÛüÄ'>Á²_5=J0 ×T!pü˜\ÚýƒÑ÷Õê·ÑâkÐÅŒ)kùÕðÑæÑä‡yìËhaö϶Í�¿Û‘ó±b0ç:Ë%®þk£ù¢Ûuw’^Îaþ;i—k/hEÐÃUe%þ½R¥`Ã0sUPzü «wp¬Èãáè-Ùy#?gŒ0™ÊØÃૹœQ.p=YÂÔÆ(†협³öŸnÛ0–mLÿ—K$üi9¦³õ’ s¥¶¹ŽÀ£�?ŽmpA\–÷áÔ�‘íuZáÀêþk¥Udš+ýæÿJâà{[À,»Š@IK& &þ¢1Qk"³Ô @‚J3ÊÇ!9#77#<ò¸†øã‘ŠK@Ô)#;ÎÍ…é�Rb(–œ-h£pÀ¬pÏ›ïh®ÛE|3Í…kQ!P!P!pb þÓÊU\ŠÀ9²z·…+,`™K:=„§“%–¬« Ü÷¤W^Ÿ§¿|á2 ¬ ªªiÀ«l¡q��¥+–¸Y�vþËø�®3¶ÍÞ»‡2“Æ…ÆêÆjZ?½‘¦ƒé¿÷�ÖîUp/Ъm�ÕïÝXÅœ 3~qd†äOýƒ 3.áw˜=sE›yÓÎ óh‡iåŒú(­9Î@p2aSý–Ëþ©të€/_ºž¾Žfé mFZ Æ.mº Æ.Z[±§XÐE&ØsEý=™(c¢”el�,EÏËôäq«¤Ý±¹ÄÒ¥ÕaÉI›”Æ€’1*ÒwXs¾nÿ¾Ål�‰i?Kb0šÙÎFÑ'æ�ËSûÎxïdßqÒ+õ@ «ýæÿhþ7{ p€æc�¥˜ÖÖ0Çd9@­>æaAä¹�LÂ�¾˜Læ_KWPˮਠÀq Ä~>~& %!'Üç@Xµ°©/øó³­�Dn.㟙÷,pÿHVHÐìkP¶8+¾ ó]³è­šÐ}M' Ò X3v•&'ƒ‰¡o!B�ÐEN<OÀ™= ©Î¥—^¦Ï|îõtá ÖXK\ÒT¼AëŠS¥�[ 1ð9=†@ Øg\#cýwlç‚Ùb–V7×ÒO=�e×òû™ }„šªàº^æí!ðkŸøµôÖÓ�I0äjûèë?ÇÀ`~sM÷ANJ)eþ±jÊÚÔØ—¹¢]0û¥]i›�e�L?í¸?‘ÑﬤhÓ^Ù§/_¾–.Œ1[!Ê ƒ@þ«�¾Ä÷Ú«s°*ˆ ä «Æ}øWS…@æ|Ùš2*2o'³£ ¦åýTA“l›&Ôr¢f"fŒåé;BÏè IîÔg>ÛG¼ÇdŽ©x—z.ˆ Ù°Tõ$`Z,\od‘´‹¦hö{ ŽõÕNX*$¬ ¸¾º�)$Zšªý—ù/{)V dúeþ‹ ´Spëyž{\ÉíÐê;ê3<‡ŸgËÂ-@b=íÊ�Uø&\À-—¶Ë d„çí(9kƒ[iþÿ4œâ�û£QM'Î;R ¹”•3–Ì¿ô©bÒÂh޲í\ÓÆ€È4éÊõ”^|y”¾ðå+¬³ Üé­Ñ«pCa° e‹!(ÜØæ]啊Äòqqï;…ë}m}扳ie}5}â>ñ?ßw‡õÄ{†@Ü3Èê ãÑôçû�ÕÔÃI~ƒùãó/ã”ù—�—ùŸB1šõ'½9sºL>õe­Óhk»°�óØ-+ kéu®ùÂõÝôê>�·@€íþ÷B\úQó�$‚�sb°Z@W„ªå§GVÊZÓI†@ÌŠyvl¦â[¡qÀô0mÁU2PO%3&g‡Y ¥° ;ÇÌ�ÿbŽ`²‹EÀ,–—ë ˆjkÀy5#xGÁ÷r Ð\9Ü/@b=ÞÝ€Õ¦ú¾KÚ XâoÝ@€:r@¡í™œw³ÀÚâ À¬@ÀT|*Ý/.qà1ø ë"Üe<“ì¹ã:2µe|¦=`Sï~¬ªâyG²BÐt¢ØB�•Xp¸×ª©B B BàÄAŽ|I| R,N ¢$®L»Œ?ª-W£4`ŽYâ>æ|ÓÅ`"2îm¦£SéOYàüEc©è‹‚-–¼6 ­¸5 l©ð ‹kéÂíhAù®í�÷ÓúæzÚ>»íöÿö®ú«'ߪàžÀU?hüäO~¦×GãnÆ(šó»@ŸAüœ_†Þc %ã>^ÆžØ[ÁðÏ¡mýí¢-uqœó,CP"‹¨ÒìO@–;˜`õú^ziç–(!0›H°‹u«ªyªöó?"ÀÍ·€®æRï>h€Öþâå;L²7ûGcD.QSfÇžã“qGT&d\˜F‹98‘rB£ì¾¬P7˜©Á+‡Á†¡U^aFï�ž¸¤&G¯õè½^)C òb-“¯­ßk§�õQš Ðäë¦nÀºË++:ÑÄ´%È\òOIévBëôýW`à$SÜ®}48¦Ÿ`þ |Ü{× ¬+Ì}¾Å yn¾¾‹(9à—t4‡m¢ °±V|3~ÖçÎêo…@…@…À‰‚€Xu�‚@Múr‰UæüjíUtZÃÈm­Ì0›í"…n“§XvW°´m�K/¾´›^xñÍt}Çty5Pñ ÄR¡õ²�±A¸å@¾ /Ƴ Ö ít†¥r�?ùÉOž=Q/ò6S,ÇxõÒ'O­]øµõµSɽ4!Êþ©ŠÍÈhÂbÏ•–i’±—�—è›Áøk2]"J[fÆ*×å}�#çD½Ç9Ov©S‹D îtû…+—Ó#�à*¦ÿèšq]™ÿ„fËë qörc‚=iQP©h&àOö[<ÁOÓÏ (³ãÖ$3GÙ¯93;Œ+Lš]@P_p†hà X¢ý‡k\2™Ïg¬ïÄ�4u@PJ&KVæ¿Àê˜Kp„&ð.ï×%÷Ñ´¬ðôÖFÚÜè¦h3…9jþƒ?XÀ¯Í =`œéC¦ÞTê,oµ0F@9îöq§Û ÷¸%ÑbÄà™Û͇qP üx4�h›—<×¢‚ýÒ‡®4žB€¨lΧMM'(¦–íi¸§ªýo-ðçǵ5[ ´u ­Z¦Á£3é, rS¬æ667Òé3ÛXæŽ?ónú­ç¾s?ñÎïµ¶ü„ÀtoöCë˜$uYjÏÈÿ.ógd%‘.óL;ˆ)–B+¿ˆÕðUŠRS%4Búôs,ø#@T³oÔõ0eÒœ‰¬`!"±Óv* 2\€Ñy’®«Í_Y§Y+Ö*]°Æ  ˜X.ã;‰SvÈ™8…`?`þ¾_L}¤»C Bž c2cì³L “'¥¤˜NõÛg« �aa2km l: Ó‡é�¾wLÐØ·0¼˜ˆ™ØçLÄ ¾Çë‚ï 3§•Ö8­v¦©�+'0þ¼Åø¡t“V�®cúoÀM/x½ÈB»Ñà ÀU4³D|H™§à[5ú…É×ਹ©·<î €Â,>ÆRh¡J1Ä žÔñ!üI)cup®A«rtÿü5ˆšc 9ÜÜ"²u|laþÔrQz�è“à°Ì±~55qí¸;žœgì(Ý÷c_ü�ïá0&�'×T!P!P!ðÍ�ÀÀÜ´8®Ð"âAvù›AǪùŸ£I›°<­¸Ù8Z‚^·»gÒ×^�§7¯õÓ¾KkC{H3€#î•úÝ_ƒ¶ï2ö.h‹è�&6 yÕœ¡5¬ >J·MM»ÃVTA÷¬°:Δ{ë úióô)®3ÿ­o:ÕÓkzðÈÔǃï·öX!pWüÖ¿ø­õÓ«gR4†(žb‚OÀ Èhˆ?ò€4†Bœ˜�ä?7( LÑpŒ©þÄU�wÂÁt Q8‚ð#V:ë‹ÒBp†�±¹ô7Ó¦H׸Æ„óço¤kíÍ4j¯¥ÃIà¨þŠ‚ HqT(ÕNƒi7­r}W)€˜œâ  [ÀB ™ ˜xö9ÜÏ ­ìLæ�1(ÒUckÿé<þ.ã –—b‚··8ǹÛùÇ@³½ö˜ÉoŸ¥y™œ±ŠÙs¬§ucø¤Þd/­ÏwÒÚrË”Ý`zZ\–I߉ZsÀÐL˜>�Ìé€ñ*:\ج@^È€–æ,Ä:¡¯ï]?¶Ì'ñA:Wf¦•Î$�Yo§­„`"@° ¼1Aêãò±2XOëë[¸°8k5¦/¿y!$cïöÊ ñ!(ŒF£x»ºØFSI�gó~Dºa©G&]‹–1VTèvÀ×| ð4Á§–­AàdPoS ü¹$·ÐLÉî+î,ÖÑd‘c‰*q,ÏOžë9ßÚ‚hÖK4^Kæ„,xP#})ãÏ<¢/,×4»–BéI‰ßˆ¹BçÛW:ó8‡P½v…@…À}B üó™ÿ%A[Näì*…‚|;ß.qœC«ŠÛžÛ-Ý(¡7¤-.�>œ>ý¹Qz…X�>s qzX.™s–Sú”çSúš@;.|œW"Š8D`USpënfDe®ã7kEh#’VÈKûÈÔ¨”ƒ6Ÿ°JA¥ŸÎ±@·¹ŸþùŸþkÑqýy¨€J­©Bàx 0ìíýÛ3Sü~$Ô`î¡Y„†FD"1 Ò�É)¦Óy•�ŒHÂd6ÖÒæ4Ì•´5�crÆDTó'5¨"& @ƒ°-À«”®°´úU¤ »’ó~Räat ¤O¶@VÜq¾;tE!Rd3v¢t»¦'4GA.ó¸pÎIù9£f(ÊX§73*„ä�5\A`å*¼0:L®íÖˆdè°pÌ2“NžŽa§ôÞbˆl/ùöÒ¨½ŽÄ£I™?×+"yƬw#�àÀEÀo>Ç–5½;Aá )�n‚„n®¶Éd=À•£Ö[“ý0᯴ €»ÝAµP`*åÝúx˜Ç3 „ÃáˆÊuŒ4œBl(µƒ‰áÌ/[1Fµ p³9êx…RuõµYÙš…~!8´Ä²‰ÖsNR=Ñ[ƒ‹}Púp”çl…ïÇ+›Ýö#Èß­Y›¡ÉFMßDÈV}Þ0j}™ø,ˆWhŒØäÖÌQÑ ôú´÷0�K¯_¾š^»°›>ø4îiq—X l¬Âð£•g ”t¸}‘3&Ï87yë¹X¦6ضQIGh”hÖÐ$¶qNónìÃyqŠ&¯ƒ0y•Õv¯ßø]ºX+ÝÔòá@ p<§÷Úk…À €Ïÿß챺DßmXdp•ý”ˆjf8ë»_êÔ¤Íaèg8÷ÔÑ6dž{SÉaQ@¥š…FA ?ö/°Ê�½ÝФILŸZ·5¯}Llï¾zèØ!À$èÄ“Ÿ¢ûìDÊå“ÎxCÍŒ Â,Xêââ¸ty}ïÞnp8ŒÜ\ꊢ7ŠAÿ–sæ¨ÙG Ðr)@£hîaŽdi'Ïv¿avزÅaf³¦w� s‚ a‹—ÇÛEÃßM§ˆh|jc�>ï•$Ôy h` ÍØë�[ÐÌhšy”±·YIâ ³µþf·MWYwòn¾ Ÿ‰gæÇ»=·Þi93—o™‡ÇóX¦ßèüuÜgxÞT)i  1˜–5S å—»»õ¾ê~…@…@…ÀÉ€€òå+;éů^L»»Ò =hVZÅ%×\Ò UÜ Å¿ÒZO5B†•øÚTJ¶OÖþnÚ,¡<ŽM"s'W%.Á ‹¶>+ålooKã¯2‡v–»©¿Ac>à>kww…ÀïüÎï¬,±'ê´�^Šö\cV€²Àê4õE ÿ’Ùú²üßQ¦_ù¦},™þ0цs|F¹� áM$ŸÃ�Q (C3A]rËš*î§ÂÐðGYØ�2vJ™¡�¦3åi�âJãô0½[…t•�äÆž¾q™éÇ™F±ƒ>e¬²@w‰¹ Sf\ÛÞßÙñKÿG…qGL£ùNò¯³jÉw{¾züNP0ƒC!ÂM"Wað·6V‰þ¿QÓÀ`Ëü÷1õúú¸†° €�Kz;|S˜ÿÛÅ(çwyôÞˈ}–zÇ �ˆcnš¤í‚¾ËÇŽŽÈ2Jó×$ʘæÛȉ£qŠ®¥2Ã1w‰`@b5˜~&’#Ì¿.1-ŽÅ÷J‡ùŽòÕJﵬ¨¨8 óµ 2¦ÄøúK×Ó›oNÐC´:B�–æk ‚M‡Ö—F’ù×õÑÒã¶3•’­#hÕZñ·¥VÁü7­µNTiÒa.œM ÷ôéÓÐ;íô©_ýÔwÒ¬¦‡�Ä Ô®+n�ýëãŸì¶a|�8†/,¸ÅåÿD*–s‚ZƶBýe¦ß%þby@|š#H¢LUÔsÌ:ø«ÐóÈ"M¡ #sµ û>m¯�§éòÞ^¬& &Mm¿¥DkÉß5UÜ ™ùg²l ™ '´Ì\0¦Ù�¹PSº¨ÍgL°lá ½@Öî­#LÇ-…A›Ç´x–ä»Ì”‹Ù(-&û ˆ”ÓhOº�tÈükr­�3g;¦9~èëÏÝĤ•åÔ;=b=vÈükÆh ‡.B™µA+�Þ\Iø3àv ð6Ðúwt)]—9 xbt\At4ßjàøðøã’¼Ÿ’òr—Žy2Õ®¸â˜w€:£t»©s?¢ùs0˽€ýeݾ۶Çç2_Êççs!~ŸTÓ§_I!e¸pX!@Öþë¦e€Ö3.�gK»¨©B B Bà„B`Ð?•.�WÀrÃÆVaušýÑ>Vj2ùÙ \I½B£[ŸÝ» Þ½“ºOÇ0ÿN ú8Cdž‘~îSØÇ±îki�årAÙ?~B_É#{ìòöÙë…*„Àhñßô;DÝÇ÷†Rw##;Tmc?kþÂÔ—RÒ-˜{…æ`ö%axØÎÙúæí¨Þ"  ÛS¡Ü@ÕziH�5HÕÆÔÿ(ó_ì*¨cõN�-‘›Î, ¥3]© æÂã¹…\KŽ€®°Ê –¸À£Ì´ú¬@é˜× À¹Ñ‘³Lb^öSðé0- È™i½;Mk¬UIo´òº&']Y™&h„]ùî莙»le[ÿjº„ÿ%ï20–}Ùm­uÓ¹­µtŠ2 $c{0W’‰¸f•+!à e¢o½�•8Å ´¹Óy¥Íq•y À<öót\æñy¨5b„ƒ³ó¸uŒæ»µ]ö9õ˜P”àŒ¯�}¾‹€%#ܵXíó ;°ÎïÁ¬×Ì6çÄ÷ß%»4«ãÐÔT!P!pb! ¶ì”x4ÚL¯¼ÿcúÉ.±æèõÉ,]ز Ò.—$1]~­J<€G ˜z±o:SÁŒgy4—YpYÄß1Öpua<¢ü‹”‘¢ò¦ž€U0IäÌ¿À0:<ùÉÚbA-X™¢Çr€½YZ'j/Q-Âô<®í$«€±®ø@aYľ Úy7 Ü’²²ÉQSîK95=4Ò«<½ÖIOl¥´…QÇM¿D�̰ÂÒ#K!çÄ ÎÓòn©, Ó_êîvîq÷‰ (Žýø:›yÛqšwI�lJêd°ÄhÒßk¦@ ñ²ðë² ª¦gW·°“_]›½ÔÑDe³ˆ`ƒqέ�ŽžP·+**¾•!€"‚P)ËÅÙtáb+½úæ èeVlÑ'ŸùF<�…¥º¨lpw«¬/ß‚?Å­ñgS·À¹"bû ¤œÏÈõl €>´ø7ë¶·X"M ¼­jzH¨À}H€­Ý¾=þÖ÷ü�¿;CÈ¥U,`ÔCó)ÓârR `”´@»ÚL¤‘ÕöÏÈŒ>¡Ì¿l�Ç2u™ñá˜õ\Ðd¢ŸDã.ÔéuÎ$·Ìv¤¡e“¨VûŸ‰Lõz· ··¤zäCàè()æÿy‚k¦G'>Æž{aÀx�8Œó)€yg�¥qÀúE†'˜Îq,Æx¤3u¢˜ÀY�p¥– \cɹñÕaÖ¬Oœo^ÏÜÌ»ÌâþÅlµÓ4-jº_¨½p©Å¾åƒÎÓÿ%V)á�ˆ£¤TÚ‡,ü„€Òwc¤¹paìË}”wï~œoä’Žn—ºã(o½�ãÍ}*øpä2ˆ›§Íã2ÿ2NƒˆÌ߆móx¥ A€õjÿ3±BjÚÀ¯ã²�äp½iÀ„f¡@¶¹ßA64ý”þ¼‰Óš***Nœ“@ûC4ûíÓiw¯Ÿ.\CM¬°ZöZ)ΨU¬nì³ø²¡-ÀÑ�ßü+øššÀ«±Ý0ÿYˆÀqöKv9m™}ã¨ùïJ#©ùÃýq}-¯rôüóÏ×8ö!%gÈš*)v®îýüúÊ6k¶0=":Lbɳ6Ñûà ˆ­„ŸB|aê϶(Èu¤Kƒ@ÆÙ–û³>4ÿ´s½çÝñÏ%L�¦D⺆eÓ•á0í€hF"�X1­-Qÿ'ˆD]c»­š®¦ �;B€ỈìHЉ/X¦JÆ ûŽ1ù¡0ËgZNß‹þ&–(hÿµà;�aæ9n4\×7啜KÔÿmô—i @]C@L‚ótaŠºŒe'Z¤_´ÍwäJ�màDìæÍ÷êÏ;†€Ð3XÑ‚àŒ.ý÷Ô¹µ´½ÞNg6SÚÞÚHã½;ŒøoÞßœ(Ë $|î–ò¸¹™ù÷Ç�¼ƒ®Ñ r0¾Ë=¹BËü*Ùx«+@fâe¼9™1þýMI7¹š2»py\�ŸÖ/ÓÞî0GC´½–Ö€ù|6Ž ™}üVµ¶1ˆfMR‹ï‹UfèO-÷èþ¬¹ €¨?~8÷{¬×¯¨8™ÐêuumZw=]¹:M¯¼¾›®\‡ ‡¬bÆF C/€ÍÁËA7P'y!5¡bÃ%ga5»;AnäóÜ×ÎR«¹¥�™#V¡ËǸãö óÏܱ†ÿ¿Â€­ h£áîÿÂY5=$Tç!¶vûö ú¯×Z!pÂLf(~ˆ½(ƒÑÏZ|™yùÌÔgæÞý’gÛ¶Ëy�ÙtÙÆá6M@:z/Í!'àª=P¸` .®¦ �ûƒ€ˬ­Ì`é…É�T¦Å\›ÛZçP.z ç¾øæ­ÕˆÀÛbIÀ0ßÏ]Sn~)ð1ˆ Òb¼‹9Ë bŒÒZoA0@´¡¬C¯…€=G—ç:ô!�ÏtKÉìKv;�øbPÇ~?÷ñ |ûà�A·Môÿ„öŸ…‹û3šò·¬gxP‚—r à%‘ÐßYš ó;üdBª·9n»[ϱwš³ã;�;­ŒõÌøû¬MVû£µ0è�V‰ãÅm@èɸ+Öu@Á˜î0®ˆ±¶ÚIOâkÑÆ¦EPÌÖrŠŒØBÐÎ¦Š‰;i}ý7p„ñWLsí*5UTœT¸ äp(Ö&‹nºzëØ]Ô ‹Õ4ÖlV Žu[`Ì &2þÎóYžË`'âÏH|,ò§"ê¨uálxÂQ§ ![È€Û­SlF`€ÕÁŠô¿Ï\èåkz¨€}@­]¾=~çWÿìô³Íÿ—ó>ß{6í/þkÆ÷~ Å9èyÄ¢L}l£y›Éð[‚Äf”s‘YÃü‡„’sZ½.VË|>£}a~ ÿ„âÂ(§´©©Bà~ ÀTÕ08yž“Ùiæ¿8r0ûݦsÛ*ìÚŸvY’ó\\  ÓÃ-†A9gtþT®à܉º?à»a2ž ¯¥¹ßajÞJ+Ìçæ¸ Yî U߉·thŸã˜{²S“¿þÅ}þ= •>Úý ´Ñ§7ºX ÏHÐmÞã9:¾Œ-ô k+«-W…¢ß:¤Ï]¯.£_²�C€ÐÔÝõäGØ p)Ïè+´Ü!3/´|V”möAÀÍߎ7m[ýþÒ«°–®R0¾�õõ^zÿûß“VˆƒÑÆ &-‡xà®À ÛïdBÐܸxÞ£DlM'b?qê ºa�ÄZ Úó—§éÒeñ÷zÄå×J�·¶HWdì©0K�z‚­�*ÔvŽÊH–’é.æ,êårLf?~„µ!,_Gt�€ÂÞS››Ñþá_þ'ñý<Šg¾;õñ(î¢^ãÄ@àÆ�ÝO-YÞ¯ƒŸ8ˆFf<fŸ Qލ%ê�–Ð�Yà1™z²‚Ž©õ/Œ?øŠm� L~¸ÈÀþt‘vÆãX`’±MM÷ �ÌàúÄ5sàmºóÈÍG³ Åj=ÆñJê¬l6¾ ÍäœHÓN˜Œç> Ë·™tgXÌG˜B`c�B@YÀÄš£Wp-'Ù¸¯ËÄzÀðX+ê¯c?Àó.~óa}ÓÿS}‚ÿ±°)ï¨Xrò¼s– ”ØšsN˜A6ÃáNš|�éRòÑ[½ÓyGÛ=Šír/>RdƬËò¬ Ù†7æÜFnçqèXôr€`Ž(kº/¹y¬_:Ã\±�¶O Ò©uâ7ðN¤�:à— ÷ïfó?�)ðÅzÜñr˜$žŽæ"ðÝ—¾ÊñóŽqK¢ÍÜ$·`­ó¸õßÂÑœ~ÇžÐóÙæ¼´kås8Ž ¾1à‰ñ—†Ä\H˜üoltÒw}×ûÒÓO¯²Tæ~šN®2§ Ñüç³�åâ5´°ï-3þ̼£[5X®©B B BàDA@ {ÑÚÇq™†£Nº|—Y¢ew{D³e"kaYÖj œÛoCGþÄr¡ö!úÏ6;yŽ¢9LTñÇ4B#“¥UlK yOàmu �.Úüæoþ&5=hÜL}<èÞk7C µ øG·Ý�€æ„ç×Ú‡ïû�á/@çEž�%ò¶L¿u™±—ñÏŒ~SºOÎL?ˆ"²ì#p¾£:ß%àÜèÿYû/!ZS…À½C æ­`\2ó_�C€-S8âÌ2%²íbóö^Ç8°ò ö©Ë(XÈsaÓ Ú}ÆyŽ@£9¾Ï3VpºX“ñÞ2 ½Ë€ÆLêl’z˦«Ø8Ø)•µ¼'ðÆÁ]]]Öz,]´Š@?õpÉhA銑¥7 ŽCûŒŠ XWRaîË~)eüKÖ Àd`À°´;–òðößrù,ð7~AÓÑþh°‘9Gå·c:è2,³<¦„¾û| ÀKÀR¢“€˜®ð‘oÛJúà¹ôä“ki@ü…Å|�㬌áw¢‹—�ÒW܇ß@hþ9¢V-–õ5UTTœDˆO[pà‹ V­™�èòåYÚ%ÌP‡å©‰œ—MÕ[?Ó O³µ@M\�qi)ãˆ(×ê dò\yÔÓeü¬Öß6nÇùΫ ñu„Î�W/^ü'åJµ|pÈŃë¯öT!ð¶øíÿû·Ÿ—�ë÷˜l‚ î$a��>˜|öƒt1pÄã–»5F¿”2ûÁðs–3ÔF-I›5¹§h݆h…4M»5×}ÛÛ­*î‹Ã,wÍÈŠìöÑt¸wØÂsu˜á›l‰ý?§æ�ÉÐHê f0{q ǵ“53æ ß…Édò$èßb2äã@cÓ›ûE-ó\&d#fà#åÁ�ÞÕAUݸ'ô‰1²:è¦�õA:Íú \‘a ³ŸGƒï�.õœw9Cø¸àÝFŒð‘Ï혉 ³Lÿ­€r,¥{ºÛ‡Û¸úí“cïh>luô›š#(i‡–\ÀOxtÁåÎj¦V QßÿÜvúÎç?�ž{îIVÏàÈœÕ3 P{¸Ì˜bná8ÐþËøs.Ò3²"çš***NÄÕ-,¦æ) ±ˆ._§+W¤“!(ÂzÊ"Åò©Âˆùí@�'·2•²@2ö›¹L2$“"lÑŸç?ÛÇ«&y×Ï]Ç ‹åÇKŸµ|pP´^S…À#�ÀÞÞâÿ!dDFQÙ÷ŒÂ�6Gæ]Z0–ŒRÈN¨VKúLŽËЗmOõ@Fû\ŸëüÕÏSdã’[s®#þšÂ�§há¼X»Ç5ˆ-N»Ü—¾}⬠æ9%'N*›oV=ò­ GM3˜¬šQtäqcÄܲ¸ã†ÆjS&Þ+û÷¬Ý`ö�p�—0û²)3*ã8 ýöæÄÀìyÅoaÁ¤Õg<ò=yŽƒfÉtð…X¯5j=æý�ì,HMBüÛÀ,ï”6¹]Æ1¾;ßÊzož6 D·¹Ò‰@€b¤Ùˆw‹�kÛÁˆâê¡Û“í”íèw©}Ssùæªo-dxe¬ s÷c�{nÊ·žõˆjø –<@IDATLnq9áâ˜"K(Æv`e¶}Êò¤âeqn{BÈcž›ö<&­ÃÒ�ùÁ#.ëg¿!Á‚,–D6Þ›¤s§O¥Á·�Õ+ íï½™.\›4ºMx¶É/ÈûÉ-ÿ0k¥Ïòä;,{žS¶)Ëí[‰º¾Ã[–Ón­/§”ÂÁ�ƒŽÔ� � � �‡ 1��jŧÒÄ ðâ8õêî‹Yƒ«œö?n…Ъà,q'»œ˜ ÆÝò {ŒÇ,›}.òVgD�kúA©ÏJ‹L�;­i!眷ʪH�¡çóÓqõç�B  (8kgw‚ÀîÞâ½ýÎ)˜p"ó/pàóWú¨fF¶D¦EòL\d@ÀB²)2Ñ2¶iÔv¡Aó¢ÖK{’Eba:*’‰¢˜ÐÛ�Ñ~Úî§ ømk§K”hÖ:Yd*Ì^K;$¹]ÓÉ…€£’µ'ò€�Q–a‘ÇE$Ž[“å­ãűÜf‚›"¤ºŠÒ²‡ËòÙåfl<�rò*Ìý>ã™ïÀ„ñ¾Ä¼Ç¾Á;ãašìï¦îlBäy⬲vî ±¦,8éF�KÄn8Øñ¥ÉH±¿ÄÝÀï*›]kub²Ÿ},E<Ä? "ƒ/õm+ßo×wDžN°¶ }ó-¾BÄÍ5Ö*îì¦=¹šžÚZIÛ›¼C4Ðã Ž}ð–Zõ—vðŸœ;i¼»LãÑ âŠ÷Ç2ŽÜ>\ç^“~×d–Á5¹­ »ûü ÝÖÀí1AL=Þç^,�+Åf œ‚”ƒ€ÔkÊóOñ·’ÁÖ"kÙ�À’Ÿ °RŸ¿‡V'cù¼\_s<ÚQ�–^Ù-£–sóŽSdmüP7ºÀrx!Ìvúß{–ƒôé«É;âƒb¬¸*ÏœÈ7à’V¾m‰X»Í¨?™Þ‘WÊ„ƒA{�•|䘛|ûa}FEüD¹Kö½{/txü`‹þ ‡{ÓÏÁ©u£B B BàÝ@@¼³@!Ö‹¥‡·Òd ­Ñ�²BÖ^zõÒÕô±é¹ÔG¿¿w#màn5À÷p8K§¨×›¦Áˆ{à|±ö�0Zäç| zG3wæ¹Ô¹6ã۲ܤ?ñŒø%wÁÓþ ÷EÎmÇü°L[«i•I`B_ŸùÌgzß÷}ß§d½¦�*x@€¬ÝÜÿøÇÛ ´2s?tƒÿ)IÔ´,ì?ˆT Þ Áè©áœ m²µ@!¥«2eÇ$µèï¦,2�Ì(õýŸBA. ®f€µ)Ä9¼Õ=`·£åîüôõè·*ò¨uäÞ)5cô–&ŽsÍýƒÁ\öY¢段“7¥ 1Lçsf'C-Àü…¸Xæ$‚Í-fF?ß §½4Nû0@¬CçJPAã\ø5¦£#×úÌÞ?y[G!róÓgø­_-²‹ùž4Q4_¡óºMœ¤³ë­t €pÁ°Cq™BH^DÜCS4X �°@°ú^ÃStÑ[RX}€¯B€ã_˜›ÿËÇ"ñl¢XŸ¹Dˆ–YÏÛe|eXŽE±¶€¢8E’—bà“Ýò|·�K _£h¬¥ êâ~aœ (K¸Šì·7É.÷(SŸ¿YËæâ Çs#7rŠ{³�9÷V¶sé=z¬Ü·iR¾AvÜ 9TšöuXS·***s1—É�·ñ÷ŸaQ%š¢h¸pu'í�Ϧ91mÚ¨E¿±mA§Äx{¬P*d|zÇÙ Ùþ�Ã:Q ¡à!2èS|X„±�-Ã(E«Ò<´0öˆco|å+æÈ—È5= TÀdíæÎø�¿þŸý§^Ý�˜ˆ!F(µÃ$Á ºÈxCMÛk6$‡€MpNTÈàkàa‘„É:ªrÙœGè'–$æÀ>š³)Ú­Ùx.ógן �c€tay…ߘÚMŒM h¼[–å™M÷££Ô…ÙËáw¯ˆË`JM˜ÃåÒ!Ár)ún dÉ€ïBW×?‡u¬»œZœÜ[:À8ëæÚ8t2$�>xƒ‰ÄAœKôˆCD.d·ÛrôìvÁ9g¶ÖÓÛik“Hôð�BW¡¢æ¢©.8ŽSäÌÒ�¤ûûûi4âÝ‚{ì?¶£m\Ã3N+Œ¾Z~³Ú“õâ<³ÛÅb >&?åþ n~X·ö7”³›„)i‰vj©‹ã]3v| �ç¾[áÈ;�,Ü­SXàQSóÜË›Q«!ös£f›·-Altì#)ÏdMEô_N²îè¶ÝœìïïØêf…@…À#†€¢mÝdûı™°lªæöÎM¯¿q1íî=›Ûæ0\ ‰ÿC-çM‚U�E‹¢4rÆûâ´q6ǬÏè— Ñs£ro~W pÎô û‰œ÷¨A¤‹u ¯Ûð®–u?DUdÌO<8Ö^î�Ñhúks¤zJü\âL�&ßû³/ûM�šþ4íB ¾‰l[D³Dt`±HäÀ,Q‡ô¡e]èÑþ8íBxkÐÙyl†ù¬&Õ5UÅš"wb¹¿.½4j­¥q·—z‹}4úW8ÃÂÝ&~…Ú͘9ee †ÖæüùrÈ‚WÃ¥e†gn=B‚=–òY $Pl€Áx̲NÎ1aÓãØ�¯ä8ÿ±»fÆ@ù¶ÄGLóv5ÍdÓq JE+�Ó«ø ¯ã†¡w¤ ‰p“¥ïÈ:~ÔôOY~t4QâN,̼íL¥, ´u½^ï@`½ç˜JÛØyŒ~¸ÅƒäýÞ-ųÞç̽㣊†hFŒáÜÆ­K‹/]ÈômÕ U; FŽY÷Úl K{)™M· EÛl{–u¥´U>G˜Õ;´j;HöejJa�?¸¸ƒ£×ÊýåûÊçÔß � � �GqØSÛ¶4sK� ¶K|ÿ/_¾‘vvt5CûÞ^…ÑŽã91X,Ü©2j‡ÛSIî‡zNÜ× ¿¸RïÒ0´,ÇØ=F¶Qr“¡b yº,¸‚+#n�óÙÿÈÑÿÕf5=�¹L�µ— �Û@`<ž¯ê¬62È.ˆÞ9Û,4Hï‚A<Îö�€v…ù·N*/ðGCÆ*·Zž–¸ˆ5‚Ø\"p¢{÷ÿgïMz,K²Ä<{³ûó!Ü=挜kʪb7»[dS(5hA4WÒ¢–"ZþAÚÕR ¸À…Ð @P‚$‚è… H "º dSÝìš+ç̘|vó{ú¾c×Ü="#£"<2c¼æ~ßµkצ{ÌìØ9ÇŽƒøv[AX´*y}«!ð´!`wî²\Üfuw>CýŸµû´–Q_î¥UŒþ­¤¥Öƒ�3yØëßjÛó�™Œ'ÌÌ‘~0=Nóálø4Óz¯Ëù½ôû`81.ØZaõ¿K^ÚÂ`JeŒ¨†×B¨`ù…Ñ�Œ_០‹ aâŸ÷À=A ,0pËGÐÁœ³/r;×»i¾“GUb�YfTWTü½�Ç#öïON�*®0ôÁóÂgWý‹€ÛtA\)Ô/žÍ dôÜË7|ýõs›€æÍyLxYŒoªÃâÒÆÃ•vÕoýà‰9Ã0â¹Z²â)f+Có»2·Dïà�ÙÆË#—’ýùþ(§J_åä“To‰ÏõO �5ž"´ÅÆG�¡Z,>$í�iggÀ|µ”úK•&¡Âgèl¦âK…x“ÙÓ#Þ8�¤)*þ�JE§¤qÛè�ìˆCÜLð—gÃÞšf‘{Ë̃½4L¾Îfê3eí¾ Øvµ«!ðµB€AÛ�PÖΪ"üh;y ™�MxŸ¿Ï\!ðN/Õš[$ì¼/° ‚ ;O„KkLŠK£R Ïá6 †©�1.´ÿ18JT›æó„‚\@\±Gúkýô:ó�€gÈÛ™á#NÈ8˜/§�q/²¯ÞÝÀè–å`)gëaOÓ¡¯ ‹ã�#Ñ`ú[KkLöR{²“–g;i=¤uÎõ]mŽcû@ccô-7dù¼¬“׫=—Š ŠË¾8BÒFæø»Šœ�Ýip––;Äâÿ:+ÿ[køH©­L%Qò 4m®qõÿèø(a„T € m ¸dä½tÆ++ü2ÿ®þ/qÎ�†ÿô—xÆ=ë÷ùypÖŸÿøŽì„¾’_¿ÿñ/Û: Wd¡œ¤Ö¥Ž‹töRèeŸw I‰âòdB{‘Pm/E8ñl˜°çò~ïe\Î+¨A@ïŒÓG¼¬ rÕ®†@ �Oçz̪jÿÒÃn›‚h¦"Ëé³Ï±à)ÃìV¬íü—yo¶!¢6p*ÜÎó�ÂÕ@g @k^å9˜~Òçpb*pyG\ØüˆoäáïÁͳÉ<õ:KiÉmüýãø?ÿÎÓ†ÒË\­]»_/þéÿñ'g:aP³R£¡&·0C*2ö8Þ%àÈØD˜A&'ã�0ªÅ³.ÛÐOª8Ú´uajDŠHBë¢þ´H‡ÞRð"Ž:qß„¼Ô¢{°kWCà@À¬J¹GÃcÎ1€‡âi:VÚ«iiårjrÀìp›n:ƒ]`Œa0�LÈ2ò Î>ÓZkè‹ù¦n3š0ÿØ×è.s"†çÔá›ñó¸qŒÈü›Ç«êÄ5ÙeHLdb«`!âYÍ%ð øÇ}ÿ5-–[éÒZ+m­ª�8cѸáV ÒùG‚Îù$�ÒþÁ^ÚÛÛeT® SŸ‰.Ê·Üêò]Yý_æt‡~¿š¶{VÃßá<ÀxÏ£ó[ÅÅ7?JÄı÷2€â~áGû€ÒÛ-�hr®5Æ4òÜb¯Ú#·´ Û¨•óOŽÅ”º+ʼnßòžd–iêp–IÙ©Á‰'.jÅS•&î9,§3}~çIÔ–ëÕƒ'`«=5j<]€†d´Ý‚8•ÁM=! zd©³š>ùd»5×Òt•ÅÖxó_ÐØÐ-ºÀ¤Õ„)ºôr5_e¬2öÁèn’êÒÚ¿«ÿ-®¬`ZÓäç|J 4̈S °A° -Óbž,æÿ#¹ü ®Ú}¨_ë,�é´õ�g¨6·=§|Á~Õ+cõŸÄuàh!ñ€È(Žç3ž„–áÆˆwUC V \}Áié_©¥ ::Wÿ'dìñžyªð¡‹m³«] �gú3}sÓ¨€B;ú!ŒdŸ 8-Ùãw#ËLʨƒ#ÜêÐwöí`èϵڌùÀùŒcçÐÐ(Y‰“–.¦»Ãqê C¦À8RŸXÝïK‹vÌçŠ9OÈí«¦?—!mÚ ßåx¢¥Ä j$„‰0ð D�ì¸NEz~‚iWõÿðø q¤Òx<&/™UWõmÊ£”Ëg{”j¸ @ …2ýÆSð< ünëùë�pz”x_ÌÉ–[°]¦EÿN‹1L?Ç%‚ÿÛ OÃàˆ*7‘» ¶åÜg¼¹rϸó­mœ«\µ]TË–*Ï–˜ãéY°çcÎQ„±âo8ÎDp¤‰Øjù>å:g¶%JÔ?5jÔx:̆šÆüFl#l¢Õ6q‘Lâ¼³œînkxOzYZZ„À¸ÀæØŸ‚@4$’m¸A?öþ�T˜ªgï2ú¡ö_Â2ÝDWEƒE|ñ…Ì?ºüZì¿åÊ‚«6bInÈ\C�•G­¹§WÄ´�03Jíj�‚ž7Ø>ÙO˜z[ffÿ"*ÿ×60þ‡€LhÇ{‰– DŽÙÊ&Ž0üwÄѬü» @[R7ª]*I�9–‰¶-õË úì¾Uÿ½ôËðþr¹ò=åþx_kê Z @Åým˜ñ.ãZ¦ü‡a‚ç³wdÀ\‚€|Ÿ°¥fÊäñÑg7Ó¿G39¦q€J;a´yN·Ó§]R‡ÄÍí7ž6�4bÚ¥]Ãà í'CßâW°æ ‚@Άµš„·¨nWðøÙ1†i&lÏé …fÿ«] �5žûÊ�WxH�¨ùb Z¢Ÿ¶w˜ŽØR½áñÃÚWij�Ë)\+ùÌs�Á ôÒqS0«VL?8PA«ï(Ò»~ó £„¡ –.5o»È!Ž÷DçÔ?ú£?êýþïÿ>âÞÚ=)jÀ“B°NÿPüîïþùöÙ'" Uœ°|â˜:¶côƒ+ �d‚‚¾ Ñ Ï'Ø�ìõK'ñNæEÄ�0Ãóú©Ì¿„`Ê" ¢B«¥ƒÁ0 ò,Ÿ%Và‡8)…!µ«!ð´!ÀÜÂ*ï1: ÒK]$œ å±?yÔ]MËíKL�X�1ö7‹ýým�'lEމ˜œI<Ò¿÷ãd€�ÕuXÖ ]ûS¶á¸šÉOž`_:¦R`>š+ð·À>ü�/Œ„‡>‡´Ñ·1³´„Ê÷…^']‡ùóÊ*+Î#Þ¹š­0u¥×ÜÚà¹!ÿööQ§¼Ëªô^œÐq…™|[¬hLa`]1Μ¬  ß½ÿj¬­­…¿ìõWH�ëE /EÛ èüMña�õŒ�•mãöÛ�ž #ÞKK؆±élJA¦LÆ1—C ²6Ù›ï\G«Á4ò5¡�Ðö@ðÙ§wÒ �!gd†„#Pè6ƨ휹lyiAÂ5 ÒD@æøc+}`6¶‡è¨)Fâ:H&šŒ×‚½ rã}ýSC †@ �§�Œ}Á[Ðrãâ1éƒ"¸y눭kó´ÕÇ)IEèéü$�Bì@°à>²av<›•s Næ_ÜÈû²ê_ü¾—鯊Ž{PWöxç\*Þô¯ÇIn8Þ;þ ÿ5Wížµà X'8†Ç“2gõQË¢? ÕJ÷/»£ÈýûA_ËÈëÄÁÔ;èyãïOîb¢/‡ãÑâ3ïYsA8àj(˜I¢,㊋bÂ=t™†¨TÏ‘bº‚c1jˆÈDPµ«!ð¬ à<§q7¨b“!}Wæþé˜S–ÐhöÆi:8JMÔÅe�º`ÉzŒ &f&çF‡lq™/`<Ú©;¿�Ö#ìQï�é!ê€s1Ýf M€WÝ™"EhÀ'=Ü%`hŸÄ¼Å~ó¥ö<öÿ_Yk§k›MV›4 ˆNŠ_L`[€ó`ô ¥íÝ)4h¿«¾¢�Œ ªpúU�F±â¯@æ_®þK\ù¾¸—ƒù?ùšâyÌ»‚æ·^ŸGe WÄg´�mQÍ/´onG„.„‡0ExC‘¶Ðàa3#i±è#H臶€gcKï~û›—ÐX 0N‡‡ƒt°ÌýA�¹VÚÙ§Ñaê6�#@t:ZÒÖÆƒmgÛ2æìÎ�5Gº0G �6Iî`�ùéuô5j|%;æ¹EŸOŠ»çœJtw‡yëüz<[ÍŽm„—±} ¼ ¼H7®˜)#VøÈ24*&_)lXœþ�Ì’<öþßjÄnçÏ­ pµ”Š[ëbÛÔpük@xRW ž‚uú‡B`p<î-´´ 1”�‰€X‚²vÔÌ%y„³£¢ òˆAï{ƒGñ=—Ë;<7²ÀÏo‚yß €Œ=„ïûüsŒ)í …„@"aL FÞ6 Õ~î2õ2÷®øËøoll„ €l-žó�iGþÂü[ãW] ¤‘iƒÍ. {W¨4Äí‚=˜%Ú)·¦›ÎDö\ApzG†±¿¹) ¶áÎs ~žŒ—jÈ ® š³){ìæKä °AQDgÎÒäÊ�)o›q�øç›|)xàâÙºgç{]¹ç§Óß/߃Á>}é¢Ü(Û<[¡@XüG°èŠˆ,¦jÝMpÞ„ýè‡ýÇêÿÌÿÑ>íÅjÿ2‰-»Rí꿌¼ûÒøÎýÿ VVVr\Â}W.ã‡à€ûóá„Yî¥-ânCˆ°íGÜ£ÿä¨Qí“Ö D|ž/!Gò…>´tú!Ïô *tÖâþt'®³•‹Õ&ƒ¸T)u•)‡E.dFíyiØÚs„Å3„7j�E"ÞÙ^4'c #~ xÑâ¬êf³‹@ K_AèÆ>´K[˜ï¼ÚOo¿Ùg/í%ÒÇ„ÜMwïî -0I·¶ïÐobX?û�’û^¾NýZ¥o F‘Á÷œÖ0ãUWDê9mÃÆÉ1|�í”�ê^ ñQÉ+ØXV –\f7Uþ9výûRBàqÛ8:ßK ‰—å£Î¶è)’im¹1d»à�íGñ‰iºÌkÎWà:plXéÜmNà"ý6;Yl ¨Â{ÆnÄ“l(ø…{J•Þ‰°ŒËE8b6S™N<¼˜P& wmâ³÷Þ{ï-^ý‚«vO�ZðÀ«“>wîì­4š!’!¢0°Äᡱ|Òh�d<¹‰5~¾DœãÝ›«öŽzxwœ�`ŒÀ :Ü |'�f Ÿ‰$: ¥>ֹǎ?I,¯õÓÇŸ§�nb¥{é:‚΃žr~v†b®=_E *´fÅZµ{!-g_8‡s¾:gÒs”öÅ$N„-×þéÓ Ì© %ÓnôG&Å&êÍ2þËÝ‹ÄR¥ø�}ÎãÔ_cîë/¥Ãñ�4Þþ8õ1L—²5âœ^÷=+™'îK=�®¤’ü)Lg²ÂØAƒ€ ÂöÙÇìÉs ÙQ‡y\®4;5ô`b¸kãR�†Ù“6þð—éýŸý4 eþÁOAUß6!®õ2Ï#ÔÆ%rdþ/\¸�¶¶¶Òææf\ÚÐ0 N¦ó,óߥ½Ÿ­€ Zm ÿ¼óQ!Œ¢¹Ýò% eÌú4ïB>E¥…´„œ{;m«ó9Ov±•�Cø­ò �€?ñ.3ÔT âù{Z úg¨jäÀxsòP…�= °r1OéçÝŒ|Ën"ØŽŽDpþ„ÃÂiB¦ú[BÓ­¿ÞJ—.�y‡°M4:Ö ¦;éý� !ðùÝ´³‹qAäèép-‘Ä.¶ì‹Yèž ú‹ðF#aÁ‰îbp.tûCÀ™¸1~D©èæX×4Á)öù Ì uü Œ»µÏBÊø3­€°4û«mE†Þ#Ü÷¿*XùT»—geñ—û¯ûF;„qÏvŒ³þ_—¾~ÿt @9 �œßC�éøfûà ÚÓMÚÍ�t{AåN#½ûæ*L8ÇŠsH·„&›Ç©Š[3óÏ]NרŸ~çÖŒ2(ƒg¦Jíéâ‡>g9÷+ çu TÍ{ãþ¯õ+i2š`ƒ‡¹·»Â‰:‡ÿ9¹ü÷ON/o)Ryµ«!ðu@ áÙËî%Ò û™]�t\Kx, ’]u b_ ‚p 8ß©Ö/y• zkHµTa§Äž«œ2QZÿ×Ï…pA+N3°ÈH#LSÔg!¤f¼Sè�¼¨„$TÜ©SàÀ¯už_+ìA·ž³”èo¹ë�3‡'Kf/Ì{Ýd¤s?œ;kúQqSc…'4gZ0é¬A§{ø0Ý-{Ù^ÚfB>¦‹=6‘OÃÕϰ'àÎxbL¸zé‘c‹ñ“7ǤAãÏÝbƒËniãp&Ž?Ù£€qõ›÷ÅSŸ€™u7�ÌØRJ®wLö'Ïx#½Ü�’�÷­¿™1Áƒƒ‘0-w/-çX–cîÖÄ´>›¶*Q4äI)<ëÈ+SYÏ<Æ+�ÉÃe±C~´„\ïܶâ€6ŒzkýHWÿW¹zœÊ?Ž€ÀÕ{ 5ÊŒó/ƒ>eëÅÁá^ÚÛÝN£mƒö…GzlR�ä×XGþf´‹êý2Ïæáʿ̿6dþ3SíW<ÏŽúU°.5Í­ÜðÀ"Ï8Ñ þDÄœÎö9�3™}RXÞïNC,4·ðýqr?¡¦_òú ñÏä““”„–fŸ3¯ì—ÒUØÑb¬æ;ýÖèŒÅ6ó^‡ùoÆŠÖïþöUú †¶¶× ئÛw޹†i�Óæ3{t,tCÈõWú›ôóŒ~æ˜î‘‡EãOÌa”cßìÖÈqcsŒùì€ÈÏŠ1—ö}�÷œ"IAFŒ"¥�dHXÎȇµþ} !PÚÖ~ðˆŸ=: 5Ñ#æ]GûÊ -Íë�ó¯N¬ =‚p•vœB»'�´8Oƒq{Bâ¡!óV÷�Ä-â“@ à=ñ‚sv±øùFX™»«’Pn(x€�yÎ’)S,¥‹¥=òg…ðß¼J¨=GèE”Z�:ÿO-8?ìê”�À¿øúöO~zä@ Ü`TŽsƒ$G~ª  W}Sì‘ý†á¯Â W;€E�*Üx�hºϾ—ù�½ÿ÷ ʾ~ã¸âùòåÈüuÿ`š�ðœ»/¶Ái…ó7ävúâ÷<,åi_껿¯�‰øÅ²Î¼ü ¼ŽÝRFö;]åï‰>ê~5„xùdBxå‚ WÙ&ØÀ5ÑÄiÑÏ–{+œ4ÐM—6—ãÁo¿»™v÷†¸v1$¸‡í€ƒÐ.`ap4ÆEÿu´PÜ6üg±tby3�Å„Ëíp1Ë!P'� ‚µ‹è 3+Ń8GJÛI8�¼óU¼&M8n†úd™Uh~Wÿ¾D°emù'iá'Iû�ò¹ý”B;¢óŸÍ]æÎ&jn“ñ"ݾ»==JW6 ¥ÁYnV´_Dï€0h(ä�??´ 7LÜùE0~Êi:ŠÔI[xU~Â}vú7L|êÝSsÄMÚhAßüèG?ZþÁ~À_µ;/jÀy!W§{(ŽŽ'o»2áÒO ƒ |ÐÕŸ+ûõq''W÷5ÚtÊàóÜ!ý¤ kÿ7ù}õŽøª8·aR01ÚQÈa0˜C8q šûˆsB”IߨB�%g_ÿ¾ ÈÐù*oÚgéòŠ:ýÞÉ�ήÊ\&¨ �Õ•`¯ú¿vÆIC ibÕŠÿ¢µ cy�í¬ò!hOFðôufK�ô(PE½éjµjêŒÕÓ³úþ!ec¬Lñ™{–W)b�‰Vm4hB `=ܪƒ´fÅzªc㉪áÉ8štñ[1 àŒýGí΄Z¶øA•>ßÈ äËï/—pWh$ñì=ïiæûb»Ñs#/ñŒyf—aRÞì;OÉú 5LïS©ˆœÆt�V�ßåõ¥tåÂRâ5Hâë¹¶P‰”™“`�Çw€O?ý”£àv#Lf^@¬ú’´<2ø®¤ˆ›<úÏýÿW¯^ ¦)ñÎÞ­æóè½Ð.­ë=üÀÅú뼋Ӌ?<% ¿p¿ö2�ýÉÏôs¢½s{š�®ZùNõüèçˤ+¿yaÀ›£´{ð%¡ DšVCc‚Ëøé;jñX†'ÞÄv;Æ}[Ía¾Ó·³€mÒfç0_Æàß#Y¯ß;>ò¯Ä2 v/-hðÚ½´ˆ)œ¯ Z„gÂÓ0o-Øë¿�}’Ž4�ߨ€ÞF«\â6Ã|‘ ãmºÄ4,Þ‹?^ám($ÎÐ!kTæšG.9~ýáò�Wœ@ÆžÖnƒ³~N�f“XÌU»sB `þs&¯“Õx0Ž�YƒA‰6Њä| Ä>ó'�$¡$ƒ¯?ß!êƒñá.•ÄÀ?°Ê_4š0þZþoiÉ d’`PÜMÇH-wÌ0¢5E<÷3‰H(Xî? ³µ{Ñ!àÔñ¢º��Sù˜4íêáwdØQé×ä ¦>ú¯ª¾¿ƒº>ýw‘8'[]ìZôdò1T·˜"�‡©\h Cƃ{l% Ž­q¸‡o�±Æ�i�ÉVƒ‰ÝéŸÉ•1“ÓÉ è2„-ù™� è±2O¸ï éP¾… {œãßx�¸SüþêÈ9¶;XBfÄýö€ƒ2ÎM§@!I|¿ÁhqJ¸È_ÎÑ{®S ϱrÝKVH«�ÉûÕýÅSàɉ!ˆB6——Ò�‹+éúf?¡ Üȇãÿ4¾æ:ˆ ¼ªúë“éWýÿîÝ»±·_ဌäP3¨5<Î÷îùwõÿÚµkq`Ñ0ß`(3•T’?Ww»B�æIÅîy|ƒ�Æo9i."?0íI&�æ1�óº'Ik™~�. ˜é£<?ü7L9sŸùRÉk…>Ñ'íÇDaU;pñœêÔjk2žÃ– ùŽvkcà¶—V—;éú¥eŒq]E÷B:Ä2÷_üä6ÇMÎCEwÿ`�Ó2C}#õ öºh(äoÎØW Ÿ¡O (Ç¿è!ð‹$,;îÔÍaã��W„æ.ÂôWÏ9´þ}©!PúǯûȺOü:=?ï�WmWF6 úÉøv>A§›ì ÒÝ]Ž0�°ÐÀsK;CÌM�BDt">q†x!ü‘<‡EÞ†W¹+˜T€‹¨Ný•?gUåWÂ|OZ ÎxÁ~J¼Š`1ýo‰R Ây]-8/äêt_ �úÿü»Í�z •F,Ë�CIdb_â=#–¸‹¸$2$6$òC7È»L÷,¨î®ôƒ”Ä�8m­& �Ì  ´(ª ó`ÜÀˆ+t¨JgÛ¾"¥‰s¹QŽeÕ®†À³ƒ@L‹LnNr1IÆ„œÇBìíµjvzúõ{ÙÊ:*¿Î¿HµVd2»l@80W�S.01ŒeËòÀÔ–€æÃTk_b¼4‚¹…1ÞFªÎd&˜¢%Ðaq[Á‚ËÃmÏ`@´@Î($îjõðìì½` Åø¥ŠaøÇXÜϺ < ó‘ߪvÚ‘ÖœÅÖ Á; SÂòÜã[æfzëH9n R¥ðÄ»ÈݤÖ%^”úä:•šeV̧b<ëìÐ(ê (é·ÆéÊz;½ye5½¶Õ@áIˆ±  k{tt”>ÿüóôÁ¤?ü0ííí�¨üËÌËF>Ô¿I“5fqÜŸ–ÿÝû¯ ·<ˆñ¿—Ù�å<ãŸÑÏȬ}.—U*~ï2¼T9àP ä�û¸Î<~]ú³åéÉÀûyœ=ŸnNÂ53þù¹äé*¼ãÛwÑ7¤sÌXr!ãfnS²§k06gÛ‰l�­'sN¢˜¢µ£–�š7kÖ–ó<÷æ›o¥[wé£wÒ§œzsg{Æ�Žíc;À#'Wc>ŒmŽ]E€ÔÕ1HÙç8§u¢^q�1ç³#Ä?kš]èʈ«ì{'¡ÕËúöB ´ì¯I�ñmæUòý²dåý¯+÷ËÒ×áO �`ðÍ%B´XÑÈx“œ­Í¶ô"hƒW  ° ìÖ;5h+ô.¡Å¹|¿¹EøCº&þx òÉ8ìÁûØ%^rKeñÏeß0=XK\Ão8%‡v¿��ÿ”ˆµ{Ô€'^�ôÁhfÿh2Åv1« ˆ ±”_¸ê'Õ“U{eêõƒdÈy§ÕÿXå�;e@æ¹æÆ!6w²€©ÉFµaΑHPcz6Åêÿbi02¿¼çŸ"¨‹Ø�‰ P¸p–wxð×Ô¡5žª)’þé_ÌôsÏ�¾*§á8AýnŽ�KB¾�|6euKß}´mfì!ž6Ókÿ&T‹v¨’ÎèÓj¸‘>J1¡ 0îsD�c„sË‘ìw¸;Þ`K/Xg«�jîjHôËÄx¥ ñ‹€o²‘0Ç.ï½tÙ£æ�º{9é›[0=Ü�üyB@üàX%Äáš/<á¼çôÂ)V2¥$tÅ|²;›"`/J¨¹›Äºr^|uaþÛ‹Qê.PÿoOÓ<ÒµõNÚZIØ`ÍæŒÝFƒ‹@q8žÅÊÿÇm ‡ÃtéÒ¥ØPTÿeê “(.RàÖ€•••Xõw €~j'`°ÈßôÜý`[1ýåÂ[5‡oN\ÀÚ§ø¦Ó¶8‰ðXžj¬<$ÍCK ®}ÿ�|}}Š»=.ç“cžq~á]¬øã—ˆu»··Ÿ ÿ‚V�Æ1÷ÈGOøÈsÞxì¹€Ä ¼�Ç©Çl…ЋðÛ®n4Ó¥µ­ô½o]CM7¥�>9L¿|�ÀÍ�4˜ìЫÁ ôSãs4‚æhøÌ<¸úŸÔ�£×ã±&TÎ1ˆðÍ1è8¶�_~Mþ:‰}âîy8 ­=/lHïƒÜ™Aý ×_öe�ãË¿4£úÅ×�ÜÚù7F78&lúPÔBüNÐ6tµÈÊÿÁñšݸ.³ž‹à¡Ð [4®ª«Ä”,ÎòYTRÝóÉÄŒ4¾g¿g~Ë}£àPRãÀOê²ÿ¦sõ¿ =¢=¢þð‡M.+[»s@ œhu’‡Cààhüû-Ž+‹#”eôº1B¥3dòãÎM¢Hâ‚°àÉ ×BrØÀ/±”™ˆ!H˜, xÀø21ì£áaZÙì¥!j¹s­£Ã´|øÉçì«DJòšBxk?¤¥0À—Æ _FY¼¨Ý �<]œ¿ú϶õ)=˜ÝªþL†öèÓoBáͳæˆ6—a€qŽ#þ`á� GºÜ÷{49‚¼g<°bÝëoSº� ή‡©h¶ÝO¬åprG0ÇnaŽ\bµ¿óÏ™õ£#V a>ºG©·‚Êû’š50§.BN°€ v•;×èÑ$¨˜“†ÖÌ=f B`® BÍ&sUãCë†ìDî*¨sü”xŽÃ9ƒ·áåØ%ú¼ÚÏ«`†ŒP�8 †Z=~{X>ü…ö¡ªÕ0+¦“QöOšž�ÈË0™0ë!#'(ð^f|Êñ{°Ú©Ë>éØ~ p„ýÒMÎq_båÿúF?}ëÆ…ôÝ·¯¤w_k  �R‡ªjw¤L-Ã=�ã§Úÿ�ücVa?�¼-K›®þ«êoýŠ @ßËz¹×ßcÿÞzë­Ð°æ:Ó)D0M”{ŽáwƇ–Çgr÷2ÀOi0ëåïÀ¹á¨ªø¼¼+wû3`<§3áËï¿Ô‘ôá©¿4e¼ú|iåçÎ7—6òûüঃG7¡‹×­ÓOß�}ù“~ÌqªÿG~¢ßÓƒí/0ï ÕtÖ)To°×füt¸8è–1…¶Êê,m"¨º~m)}ó›[i—£»þ¿¿ø­€ƒtóö”SóíK�6i›eægµ{È’<ȉ‹²fžã“1HÕ@Zk«­çR¿³�¶�¸iƒP»v8[¸ÜO¿'¯Ìfá�}Úþí%þò.î+}¾¼‹g²óî0¸×Y†î‹eåðú÷iB@zngJ|Aƒ0öÁb{+ëiÿægé£OwÁ%ƒt±ÝÀ¶8Î1…>`¾´�mo.ûÈÉ3Áæt>ï2½oøÅ7QV.Ó~’/ʬÂ+)ó'xÑy\3¹°ÑNËœ€4š Ò·¾õoPÄ\µ;jÀ9€V'y8¦¬Jƺ«• Õ‡A"šbÄ+‹ÉCŒ¶(ˆ&ðO`ˆ ¢ÂhH…ƒŸø$äÈå±gÜ9Î̸ì9 ^C\³´²À’»yÁf|‘ q㉲-߰ڽذϸB�„ø™w÷xŸƒ¦·ïG·ŒºØ7í§qã'÷Õ“Gƒƒ¨2ýš‰›~Á$ŽaØGXöµéÖ†Fz3fÑ6Lræ¶E„»j/Òñ0$®5ùvs’†‹}„iγcö�Òmg4–Òð‚Uï°%@9î'F’ ÞlÈØ¤j €Sà ¸sFž+Š2°NöÜkQ¾êû±…žÙ~_4zŠ''tà—ðûZZ1�gù�Ù)Àmð „kDñ¢BˆáŽu¹Ê”ù“Á RÆòL§˜/Œ|—:c3Á}þ™ÑAåµþ ž×/.§o¼¶–.-OôÒ …¢`‘.%V˜2µöÿéÍÛég?ûYº}û6B`qìʾÎþ' d†Ëe…Æ[]] M÷þ+0®‚ãžíÇ‘Ùóúc[á€n8ï媂â9¢UqK¸ð©z| zŒ;™Ý—ßc$~â¨~cÙÖàŸ~I†DàžXåJFÿŒX>Ç9±òÒoý F<|yìç56ú1 ?½–Ë~å^~Æc{N_ÑþM>Î�¾G~KléÙ\gÝ©‘®þ­7Ò�»óôáGønÝès4(øai)u—!2W�8%dDßsù=žâÖ:óuþ¦PÊC�‡?Æqb^¥µ{!`ÔyÏý4ã‡öGËÉV{ª¦­p� „7ËËhˆÅ{ñk¹|“ãh;"çV?+ól¼ÚÿõB€öfÓlÜœ/ /Î¥|o4Á®ÐæÈ´õ"õ‚ �j¶�û­¤]‡ç¬îo~ú½óÞ;¯½3G)Q&�>Woõàì99$~cž§ŒôÌé D™e9‘`ñ_ðæàªÝ9 �©”s$¬“Ôxþè�~Ö»©"*†�¢®Ì$|·Äƒc™Ëy¡¨ïjøHº],!Ófá™ËøÁüûÞgÃðLz×#¡Ob%bæ)XMÍ%ö*�Òö*´¬ŽÓ%s‘‰  …}èÉ{í^4‘Mf©Üýýñþ9ý(û¿3ZtÁê73öNÆ¥WÊèüõò9¿µoO§Øªg@�+iØZÇ à9²�±ÒäÄ€ÅôˆIœ¾Ž±1�ätEÒc_åþ9@IDAT�€eBÝË׆Ž“4fC˜O N†©Ûg“A›-Øñp¨¨Uã„ -ÀˆäUeU‘Ó”ÕOˆ±h —[wuž±Ê+#Ï…¸€í9?c;‚VÑ=³<�IWºÌ27pEœM…ˆR!T¸«�æ@ †±'´B‚…zÅET2ª`† îª ÊX)ÈÚ?Æ!­8e|œÖVÛœo¼œÖ×–9~m5­/Ã8­·ÒÛ—[é*a—WQý§<'Ë.B‘&ùMQo¥_þêýô“Ÿý<;;¨[SÇ%*Vöõ{iá_X{éØ/¯\¹œ®_¿ž^ýõôÆoÄþã¸òï{…ϳ;í£´‡}*˜XÁï›|�8¹ÛV½–>{}E.—öàÌ~íø‚zÄtBáö;d¾¸òŸ­Qî‹%$“·¥PB� e¨µ®º9ÏÍ7‚Дj˜˜6“æzˆ“KrHÄQ8+v¬ÖkSC»8k0ÿ«ìWŽiýõµô测iï;mN¨¥>ÜÃfÀvº³{+uú›i2&»@;‡úƒ:®î£æ«��у%ò�ŽÏyl>÷#Às".ŸCÌÚ½H°'é¼ß߈>ÛÊ"Tb%3ó„Ññ²€Í*?›ÇûÙ¼"EÐhÑIsñ{úSÊ,÷Ó7µïéAÀö�öc쇀f¯Å%épÀÐy«ÕçÀ#Ž<‚ùßd^/•.#¤OØ’qñèÜm×ÉóŽL™…½1âø�Îõùn`xy”*§æ­O%¸Æ²È¥Éâžó:TÆß! Âs¸Zp ÕI¾ì?þoÜÿÏZcÛ«h0˜¡0€ÇqM†>V¼;à!ps@hH A�Ì=žE ¬ð›EFB2W‘V'öÝåàäÝV÷Z@ Y‚-1¥ I¶žÀ^†¹ªR»%…ñð[ÎúŸßocú• ¶¾Õ³¯ÏêOžX��¬�í;Zû4<}L’Øb¯ï¢¹žú¨±/Ã<ö<lpÊþ(ö­Od¸cU_ø0¹Ü—Ü$yMØÚÔ“‰X 8 ÝX!^Jš[©Ý[MGl98Î#ò™ªòP…]–Å—ð÷`ä—Yyì0>CÿÆw1‡É管>$ ¡0F00? 9£|s®­3µ„,¨|¡“~¨ý“l£Ý¤Ì&yyi�?„ Äï�o»LB˜gzð„‰jÊ®PLÙ#èþüFŒØí°B˜Á7³B¿Äé![¨ù_fûÐÆÖ+ðÅ·–WúûÇÖ&ŸMVFW;a1õ §9”;»{éÖ­Ûì·þ$Œþiý_'Óî¥@uYßë×)$�ùûí·Ó�7Â@y÷"­þ;Îì�Å•ç<þrß.ïh pgãçÞ|ãñ<Ž™äøÈ™<°>�œ:úk‰�…¹6j86txO�þÎïâµþ +ú1‚€L®üëdêeÞ Ã/>*«þÊú}§p û÷Î;ï„ê¿ý×´Æ3�®ôéxxŽ¢žŽ¹/©£ímyæ½Ï†Ê,Ӄϼy ¯8Ý´_Vpduμ¥”{"”³ý¨Ofü³ß’OÚ°Ôñž¹ÆñN§S À�`efœ5©a@0Õñ€+ôNÀO^#Á¸Óg7Ó†wPÍéï úny^ã4ž ¨ßqh¦\¹ØH[féÝ B¨kítóÎAÖ }~{;íÐbi¬îè³ê7F@!+@×Òü¸ý¡®ÂßÁW»—¹ÿÚyé�v‚p¹ŸÚºhŠØ3”]Ù¼tÙïÃ×8þ¢¤úçÉ PLšã„:ñc`ôX�Ãj¸d:d¾ÞpÊÈ(]Y�Z‘˜·á«nø€†›çØ�{¹Œ)$zFé0”û‹AÆ¿å~d†úMÁÅ<Þ†Nh#Ô'¦y£“UbÜÚ=*jÀ£BªŽ÷H±â6›e„1g Æ’ˆBõÐLà8ºÅKܸé!pû,^)aE÷J@�·€¬N³"‘éÚé�•Œ½}ˆVC›lC€-"¯Œ¡äù3±éfb‘÷Ú½°(Dé=p¦M£{Ýóòô!¢=,ÂiÔ¯ÉG/ŒÙ�ì©LôM˜à¢Š½Õp~'ã¼eÀ®îª Ì}»Ãê»ÌA¬|£7ƒ`_ÌQÛgõ¿5çìpVÉ=S¼ ã¼`ïdŠÊ&)Ú]VåhpA×Á„xü_—‰¾ÚŒ­Œ£ù1ã »í}˜WV,,±µfÞ^c¯ñ,­7Ð4À8àÃxôXáïbV$êÇQ=ÔǽÿœÌAÝ:ht ,SÞ' Ì»ë0éî¦cÂ'låY׺…1PŒñ­öšé*ÍkúäÝG˜°LÙ]Mš2rðŒÿ ["à cŒ Ø~0†A`¨jÀ³'ƒtX½°ÙI—¯,±O:¥Up  @ƒ,ÁÕBhÀᇡ°‚�áÂ� ¨R/ɧ¡N}gg;ýüýÒŸÿø§Áüoߺ…†q0õ…ñ·³H,ËÈ{—ñ×X–{û ó˜?�üóè?÷þ/ä•÷QE`Úòkê�_e¶¥®ÞËßIþ¢ÛŽ5Ï�‚Íð�™žƒüäñ+õ8bóG᣿û¬ >«ú6«qM‡2÷Â*œÓâ �2c-Áì<å¸"&G#Bød:Žm)5yœg9É#Ôq×L;Û{m§U;0¸b2;GØ_Öu—ÓÆ÷¶Xýo¦·_o§ŸÿêNúåGûéÖÎãÑ CäcÌ—a¶òJ/ÙPÇl‹¤*Š[í^”^š;®ÆHóÞm˜0×Ð!CU Úãcæúƒ²�ÞÝfV4N‡Ÿù–¼_X½øß!Ëø'·O¦‘m)Ûßm>âuúÀGÚׂù¿sw7½{U"½`yâ²WZ8Е ‰Æ''îù²‡ä^øPIõßDÙe´g:^Ù¿üƒf8±õC}hþäÿð/üÁüAVÁ+Ô÷G‚@-x$0Õ‘?úÑ�Z‡C‰�ñÁ@€kÕ?&‡ù ƒêžéœjà3ø}~àa“Ã%–p'�€:¬¦¹2¢q3_Ù«ÄþÿÄJ(ÄH·ÐšÏ.I*œ´³9þ'0·}É%çùWùâóI N—ó¬"žfýª¼ mû_¥}Äœû·Hñ¿W©êÛc@ÀÙ¦v5¾l^úîßÞùhÑ€Á0V =LþlCÌ…¥@ÌÈØ¸ÇÑÉ$0A<J0B\Áü˜Š<2ã$’ô‡¤Rîd¤tÒ}Æ220ƒ9«ªEº Ã#ª“"ÊÎD‹¿’K–yËðX»§ ÛDûÑl�hú ÝÀ«íûQ\¬öÒÚ®†ÙOŒªXç¤sö’�¼` çÈ2et¸â'Gr°Ers¨z‚}ƒ@2_Õ=ÊÛ˜ºª 3§<É dôÈwóÊù•$æå·Yw öÙºxꨨÂÊ¢^ã\!ñ[a¬í÷…_³¥´²´Á£�Å{�¯›k”/ÆÉÁ;»—†²$ê5¶7s¯=ãIå€VýÆ<ŽÓxp€I�QZYïÁ÷Cx ³¿ÒÜå@€m…C þ#H@ð“"¢ ¡¾�Õý& N!E£ƒvyŒa–{Í�Ô…9îPgxŒÂ!Ì�èèÀ¼\è·ÓÅõvº¶ÑI[úäÝa%*N6@{B㟠F¢½mS·p±™™¶nrÈD“ˆà4‚¬7eà aàN³µ ƒ…?VJ§¬¤ºœ 1ÔëÍr´ÒÖ:GÂ0ÉÀ�vÒG’~òÓŸ¥_~ðQº»Ç*éMZò—y×xßY¦ß³Oºº_4Ü&põêÕôÎ;ïÄÞWØd¢}o%ÍÙ{>‡?eLdDNOSŸöÝ“ Ü�O¾Â^œ‡Ö©ïäå#{L‹‹±’½1,*ï—Ýr¹ùíYÿ—ůJyÀëêûÎdR¼¶ûYሸHXœÍËj»ª¯ÑN÷µêH–ý$ÈqÍ,áÜ™›È¹+¯Äö–ó®Ì*` AaÖ1õŒ¼»×5c�}P¡D»‹v÷)c}tÀñ¹+7yÀ�„[é�—Ò¥- S^¥Oo Ó¿þ7¿#´c¾œ PKl×qÛBÆŸŽmJªàŸë[}áiÃûYá¾T^á^åô…ð³ÏálÌ—ÑÏ8 2!e¿p.­®ÜYòG�ì/Ä‹F0~5“"ÌWüåsÚõ;ºI >GÉ"™)ÝêæZS%ËÊeF…£î….°&÷Ö;«¿þ9„¿˜:ðPÐÃŽoée[Ca4sœ“¹X[==æÐñ¸•ööÐ$DÈNŒœ6ú—½‡¶"Ã8¡ÇŒ}¦m-'_þ憟eÚ/ã÷NÜ#Ÿx¦~¤�…Æ‘¹DFôS šÐ~M4 óñGâZ×ՀDžXÿK!pç`û9žöSgy‹=VøXm›Àlxd˜D¢*ù� `T}d2½ËÔ‹s¼»79_Æw¯²ïó½E|Õ”eƒ˜!ílÊjàZ7�à6v°RzëNuß• öµE™CæEœ{ìäØ`5$T©Ý{‰=Y‡Ú=}8¸&<�xõX)p:“ LŒd&«¼0¶Ç0™pw`$×`Hµl½ÂÕC%ÜÕV�©“8µÿÈDɬÈ †é˜|wŽ÷Ó�|F¬ZŒ±j?éb‘ÿHf‘IJ¦SAƒÌª¥Ûcâ�—þ-°/áN–L¢8iå ªJ§Ø9àG^MÔâ³³Vf1Ê(ù•þ#…¾\Â�Î$ÈVÕì[¤ñX½EÃÓ/PÙ�µœn±ú}Dí×ô{}Ô~×Qñ¿‹5ÿAj GùcÞ� cl4(?aåÀk†ÁŸ.éÚ¬j×£5ÝO�ƒŒ=“¯+ýËìõOÒÃô£ŠÏ&êâj?+”+ÐEàKµSÐpKêûãénî³"~”Ö[›h,£Ž3LýV/°ua­Ç å"­¯˜þˆ:ÓLKœ{¸Ä6—`€8¥Þm¿ø…5t°úúÀ‘­ 0òSÚrJ=&ô«ØÁØ_†™™Ñwæ0ÿ3ê'^™³=¢Ás�ò/­w˜p4"0úøÃÒû?ÿqúðƒ_aé.ÖÿѨ૛=AAÆÝ•}ëcÿSPže¼ÊÑ€/^Lo½õVúîw¿›Þ|óMl ¤ Ï £³Ì¿~ó*[δøsæeˆmB~(¡Ï–“Wd /8ν�{¡·ãè`âØŒÑm¡Kè¼g°CE[‰âX,°/jÔ´™²ÂM’X?¦Gæút\¿y!MfßùÿàGþÞßûÇ�Õîq P¨ÏÇISÇ­!ð@À~¬h�h � I,:gŒ3›³/Jp¢q‹dtyJ?õçgߊèï¹@&!(ðŽG‚È÷ 0ÅDËå0jžWzÀªÞhª ËDõè6Âó+åŠ}t",rLsO=âmýó” Ђ‰w%UÆ¿Ã^Õ.Ï3Vº0b}úÒeÔ«/Áˆ^ï/§«Õ¶ÑG0 &¬Œ*n¡ ‡f´oÐ5˜VÈ�#ÚY˜$n#ºy8HŸÒ1$>$zyÌ{ÕZsO³ïI Ó‹½#èÀàM jí)¾õŠ~~ då÷Ü.&Û“±`6U)~Ë™\Oý÷––¥â†UáömÓÂDX³ „üùK:y 1¯%`ÐQ Îél0~<Ò+Ví•„Hxñ<¹_A =t«ì9FýÞÑíÄH˜’) ³&Š%ÔBŽñÉû "(Ó™Ÿlx&i–¬/ˆÌb¿½ÁÿU40¸·Ì üý¡Âr‹-l7:(DÅBE"WWÀ‚<)À’á>­E"$âëóEݨô!ÈgD�moÈŒ8U �M5ô™ŒþÑþ­´}ë“ôñG¥›ì÷?:BœBmVE<&Q&G"[UØÂÄËÀ©ò¯0@¿L¾Fÿ<êïÝwß�ãþ\ù·æýµ§-ì7½X.÷5ëL¿�ç�i„[ƒ†¢YŒ«Ëw™Tãäö2üq]I›s}Pjáåßÿ²JrÊûŸK²{†i ¬î%ÿr/¯éZÑ7ünÝýyÇ©Atç7ÕÌZ¡Î&®ú¦)KÿŽÎW à.Ë/~Ò•òAkŒÍ Öæé�‘ËÉoœ;Iɇ5F �´GàÖ4y÷Œò „­ßÿ}÷µ‹éƒ�ŽÓO~±‹ÁÀ�tˆ`uÆŠàú…KaccÈ^ps÷$ž.}Û¶UÉýàºÒòñÀ»ÂW5“äàª~Õƒ±Š÷ž{ -ß{ÏËWêAHØkNz~ÛTx /aíÈñÐå`—QvH.a7‰£ÝؾµÂq¥-púè`œ;Ok´ý{osJJ+ݸŽPt‹¹wyHúp_iŸgVøAç Ä™½¹XôµÓñQ uñNúèÓAú·ÿþ“ôË�ïbv˜ú�^:¦~³1ZØ ˜±E+÷êEÇ­º=5£æ~ŸàØÓ«ÿ¤‘‡_§‹wÙ[ÿ>&òb˜0”Ï4z†§8HšÀù�ÑL# ŠgŽë„�­Ý4>0&Úu~£!¤¿¢¡xɶ´.6)ÍÓ+ÂâŸyš7áñ†iÚrEâÀ J‹”<\3N@�`zÉFNW˜j';{Í¢Ê{È·Œð œ5˜Zîy‹ƒwG…e&§ÖÃ?d…¨ÙD"µ>5|µsæwQÝ?D%xRö%àÞv6gŸc,L¾]�œi<ò¯Ç€Z¬9w2ÜÔ¡MD·!Äj£5ò=Uó½ö@dÚé±*Ådî6-îKljœ¯qØ]î§>‚ž%Vˆ´ÒB£ÁC>â¢ÉV‰Y¾¼Ê‹—J Š‘r‹£ü\¢ >i%hBb�È…íÍù€¶eWv´r!ø@u÷h?M†;éÃ_ý8ïo§½Ý»µ½äÙE‹DÁ•+ôjõ}¿K¦^!S1êgÕþ_{íµô½ï}/öþ_¸p!4|7™Ðáθ²B\îg^½^Z#˜Oë_¾!·w®¾~ã|îQóu*yš.¾9OdÑ÷ \î¯C‰ÕN÷|Ð=URcÚÃ3Lí›%o½H_}k‰“±WInZõtľ1Tcˆñ½¼ÌJ/†û°VÖ6ÓZ,×>ÞEp—ãv‡i÷ø†ßšEJeQÇwÎd@cš04lJÞ9_Ç®HÖ2(‹ø~CvÞs…ã7{«×å!k‰wš¶Ê╺¯XùlEñWk¯_´ÊeäÀԙР`K‡q¥ÈÇl&#ê¶™0£œÖ·†éíëé[ï\Ä8ä2ÛÈÐ [†ýCsK»˜¢-@yæÛR`”:¹í‹8h¯ /««“´y±›®¼~#ýÙ¿¿™þÝOnsêË2"¯-ìJ°l¢Vó=ø7z6÷ÀÜ\D÷·—>}Ëï¶_åxñaõÏcC@è‰ ã^AÀVùd;o‹WJ, ‚rûî~z÷ós]œÆe$æ|óÊ4-Y²â^QÿUÞ_¼ÅQg¿9‘¥ý-*@ßÈ©bù:_Ú\ƒï¿$äïž¾¬}��Zð(PªãüZüŸüó#pybßÕµ�,ÆfhVF`6çÕ _J$‚(*,” �H`±G¾<0åNJðF®V:qt°fÌýôÎå ì%_åè·;Ûé“�Ý´‹ñ¶C -°ÃÄ©jæŠÜ �²T=Ô0ž*úÑý¢ONÖ2Ýv#ËŠæÏ3pÖaZõe )¨zÔÉ Z-÷]NÙ'7Ž­¼#þUþi“•Â\…—áogÆþý«þ]¸m�k*H™c0°Ëûeˆ:¶#QH#-�(a&,€IoE€t¼v¾žªb�Zj¼ s"¡¨BaÝÖ=ó†ù_Ze3û•5Ò×cÕ‘ÅõhOWCUëÏvˆ-woÚM¤a{FÚjá�æA0 ñ"ŠÈyE?AÕµEí“ CÈÊ='°šß˜#ÁŽÁáð(³º5°bu´�ÞÿÅÏ¢ö lYÙìtLÊ,‰u�™×Éü+ðÒõXU»|ùrzï½÷Ò7¾ñ�týúõ¨-`œS'¢ÇOaâNCž_Ÿõ/õ�Ö·=­a¡Ò^U=`å;\5ùE¦éN4>ò¯}Ü´™¼¼'ëùäß’e —òpr¿'åIèWé¹çûÏÀ,Âù†à Oa$OíK©åéñý€<ªës�{äUA¡¤7VÉGe‘Z†Uy—u†rÿ•É v´èË›é›ßè§k¯]K¯¿±š>½¹c÷>ÛØhÇV™ÉT&tfÜ¢0€9yÂô[Ä;ùøB�yø3³ žbÔDÝsÍJ-r�OÂ!\~Èþê+"èÌ7V/_�[0Á J¿_A@\ÂxÑnÚ^bŸw`. ʸåLæŸvŠÑƒqÓ>ûú§½´ÒAzíz;ý•ïÝHßùæ&+ÿÌm¬üƒ„OÙ.²`q¥ÍÖ©^§šã ¶a”š£é%²�+0G Û@  Z¿óÂ÷ß{+]ºòFZcþËŸŽÑ àXJè´6'LÌ.DOã[le{…cÁqÂlp5¹çñ‚†«úŒiâ{ã^ÿ<žø0® ú§°tde�¾B½X•gÎk°°â»··�Ù°¥e@�d�±H‘ÇuŒú2n­T•¥ù„³årëÅcõ“ñíOÚâ÷UÉÊ{¾ò{µ]’pÞÿÑÔýÁÀd]»G…Ø v5žG“ùÿ:F_ƒ!S¥ÁÕàÎÇÁä ^E+þþ‰Dô¢z1P¦_ÎÞñŸaü}Ÿ/'ów%�0 ­�!>vv÷P;Ëû–œšÌ>�¼riÄ։̼ùãS힢ÕɆ`XÀü7Xa½Âžíï^ÚJßà|ö‹L.ò*k=ƒ) V‹!6ºÌ=V¥TÓw¤¶ªcõ—ðèWZ·ƒñ”¶\a™ùˆ}�tÊô:y_z¡Â…Õôþ§Ÿ¥Ÿoo§1åOPIwÜœ~¤Uü†ÂVÎ¥›zK,|“?u¬ú�ö bu‚²ÃàÍ3êE~_®‹�,£*ûsÏF€ÁxôŸI⬳r3†©ïðq*ò_ìÁÔ£Š‰¾;Fœv0†ú'ÄÛ:[-V0ô„-}˜tDA€{û0Ðf´¤6ûþ�ÿ²™ûcˆÁ)Ò„s6éK÷•J zŒÏ­�ƒ¹CÛôYï¯t±ÌcMû4{¬"uÃè-ÌQm¢ÐrŸ?Ï!Þ¢7J¤|&ÚŠV€ñ–áÔÇÅ]'îÑ�!ëòlKRPH[Sñ“šR-Ôý›Ø%™M�Q÷¿ÍjÿMö±n³ú¿Ë¹Çœ~c£ñÄß©Àó�ÍwF(2ò2ÿ^2ôn(–±�ïq®ü{i  L«–@Á“¹¾UÅ}x�œµÎ—¿âðüqç;ýVƒNV¥�EX¸ˆšãç€Çûu‰Ò«ìJê’ãI9¼7ìÞhå©ÜóûÓ'ûRÉ©äüxwË7¿`j9¿“zUÙù\ŠÊñ«ºV•‰°Rt�$ ¬GX�{ØaˆÌ|—SÆ<{òdÊœN“ŸÖȧ¼’¹Q8¡à¹1xYƒœ}¶gÍ›ô{„¦Œ…¯58Js+]ºÜI²%à¿øŒS2vx¿†á7çhƆÂ\¡‹#Ä¢lFp…C<Øv±8cºú¨�?Öð<Öñd^Á‡X¯®†±ç_v‹Y2àh»Éü+hQ óŸWÿ}Œœ«÷àþبÉû^+½1ÂÉ•ô›¿y)ý•ï_âd“ã4D»c6>b®kÿ’‰mL–Ì�â>´ÐÞ£�×:FݦÕd»†f˜›l9 ;[«Óïý�éÆåVúgÿ×éøö^j£�·�Џ`¹Ûêü‘gŒB@h|›õÃWß™ûvÕo^ÝNðD_^leCŒg`pf~Eh”�ÿ´}hgh…1Ç|ßÞÅÖ[=¶˜ÃÍCRÝ­D ù<0Ågþù(.ñâùä®Wðc´;iÎÞs«´UEXà�a»ÁÖìíùßæÅ?1Eí µàÑàTÇú58>žþÆ”½÷M­;'Äøv ‚´•Ò‰ "¬’üÁ îeÅ?0 ‘@úNüij”÷‘@‚€¼rþÄЃ âpÔL·ï`¤)uuD ‡¨æ› �‚ïñqÁTÂjÖîéC€vÔ𿨛Ãã´‡ø]˜¤ßyíjº­�Þ:*†²Ÿ@X€­Òh˜PÂ¥‰º¿ÛÌf† Ò#B=.pŠUcW5ÆÃô¿ýYÚ½ó)ÝqƒVìõG#b}�ÓìcÔ9Vöµ¦Žæ€uˆÕ~àX¯0@É^h…îùßÜÜLßþö·cõÿõ×_"93ýÔ¡Ò(x,Xþ-ùy¿ŸQ<ïyòKŒé¬³×YÆÙ7™ÁÅÇ8õ›sl_ø_µ«<Ž ¢Ò÷¦�òõåðú¤<£Ÿ¸ó$àkóD;VíYÚ×Ârx.V�Û ‹WÔ“¿Ò1]¾VöyN‡v¿¾a'0Æ{½«´1L[=ßïh³À²âÆCü1PÈUKàÊØ‘cy—…`¶ QXf¯‡Q·wßì§‹›Ëéú%„ªxRÆQÚF¯ÁÍfs½*T›ÖB„`rê ^0Ÿ»êOõ‘†ÚIîykL�÷�È"B_ÍgF&´Š!hó/•�–)3Ž€¶àMþÔ¨r;æ’ÓbøiÚºÔHßùÎU„”רª;ÅÉ,“ã;¼?D0ºª×1/Vp× [hqÑ:=¨äÕ„SaÇÏ9†vŽ Ï<>!Lÿö9zò½·¯¦ô½Ë½OÒ_~p‹Ú;ײ¥ÀþGýb>³ BÚÀoà¾Á>/MY»'‡@Œsa ¸ó˜ÞŽ-GZŸsåB�>à‰ ^¦ì¹¿»?H»³tÃyÛ}ÿÌýÒ`Εöé¥6‘Ö¿ç'ýÔ<Ï8â$(߉a>—ËùÜù]¤&?–¨)v¸c�ðÒ©Ý£BìQ»O�!ÌÚ”³¶{Ó1 8� ~'Dà�ˆ„E*�™`Tç ?0‘~ë£�;Hɉàìåk'`¶#–‚oÝaõ M€Æý„UCV- ÒÈ Ä&2"º³È.¿­Ÿ.dÖ›Lp�i‹ÕÒï³êÿ[W/§7Ð$]ñ}9aAœ ȉ$¬ˆÃYz´•ýl©ïqo¼‰î"£§§r¤Ù;ä¨+V¬fO Tޱ±Lú×±/pqk#p)}ˆ%üOÐ>Ø�p¢úîq’Ncð‡Á$‡Êay"‹þjÿŒ¢ü¹oB+åíwëãFGš ž|ÈÕŠZ)�£ÏcÁw)NY°*ç¸ÓÐß6*�c8é.^ƒø3²&vÇìÿeµ 5wà 2Ö²-áDûAëÇŠ¿ªÀC†Ú Ü~ BbqŒ€ å¸“h¤¼>„ÄrŸ-ÖÓûþ[‡ÒòÏ«„ cÜSûㆪöäKG`[_.¿T��0á�ý Ca}b ‘2f¿ýÁÆ�mŠa½ú›V2#ãªÿ‡;¬úïÇ~ØÂ�Ú ]ÑÎù.r]Nï2õ2ôþ·mll„µ�þ}ç;߉ýÿÚ(L¿ñô{ò‚vJt™á9½Gà ð#îw22øªñhXÑ"¯$,ýôþLñ9šæLÜ’mùòKò/ñîO&«¯ÜëwÇÜWîU 1~…ÎY3„�;"˜Z‚t¹ÿ…—Ùj…ösß3ÆÉ[¸gœ�¿Î_ßæ´§OJa6Q.Æ1¥Ÿ»ó$ùº=k‚pt‚fK“±ÐO/sŸ œsOs±’®lm¦«o`(ðJúå¯vÒ/ßßIŸßF¨ŠPmÄ<Ì.2Í‚Èê3¨Œ8IgáŽÕ¨A„äºX}9VøÅA>F¿=gi_©`V¬ýÛNWþíEÂJ܈z4¯lda'o±- íÊ?G¸^Ùbäq3ýÕß¼‚ú?Âà)GB‚;í1'±h”|?‹c›m²dÛdOžtT­1�ÛYn¸GލžÎ£áØ}g•"†Ì3;7CÐû×þêfZjm`?âýt¸ãIQ[ñˆ�©µó†ßb¿`NSØl_äò<œûfôŠø°Ó>òJµýWð±BNQJ€ÚFãÊšöž sˆ!ú BA>u‹GhºuÒì)ÝÚ§ïs@ÞzB;IƒØïÈ'îôOÕóclÇø6ÏhIʲ}¹•g‘P¸ò>^Va§·˜;x4º%µ1fÜT£MÍæ¢½v³ö= jÀ£@©ŽóPüÉŸülýÏþòC­s»÷�á/Æp�‹bb"*‚WÆ  üÈ™w1ÞIyæ.�Ÿó8n‘oˆ?>L}˜ùFûþk—Ó[œŠÕC½¬5:ÂðP�ƒ©`©–†ìd(4º¬R´=Ï:Å>~òÄ9÷£èB¤YÀ\­¯°ÇŸà +NdÚX‚±›H̰5à¯QæÆ6Öð!T¸:†ð’¹ÇHjÀž}=E#€:ËsN+eåЧýKé1¶r=ìÒˆ-¨pEðqF.uÌ„•LsÀ�o“�O‹¥tëU>hªøº]¢¿†u{ÂÛ³Û|³:±#X0sAl�Ô‹­7x€1˜Oà€§†©fu�ª;25 (>#]@’ø uJQ+n£NØ[Zá¨>�)Æ2„b­Û8Cž ?—2ÝÖÀÒ>ubúBj`R�žþD›»Õ»uU_!…Ûò\{kîÓ~ƒßä|fßÌ—}Æ~É•¥‘‚ŸÚ�Â5þLœ™ÿ¸G^Õø„àqÛšÃsÊØ—ÅŸÓ¯ö�´}€°í�0@­—éé„h¾ÈÛŽB†¶›�íg%�þøþôÉÚ=Ø.΢öØ.Š“ û†ýèGØøAmàÁpûbh-ø"Lê�Ç„ÀÇŸ~ö÷g Äåå  $ LÙ†C"¹Ëñ$ìU\Ýâ#Et]õeK@È%ò „ ä”@Š ˜ªv_1dtrڎλ^-¸GN˜M[ô“ßzëõôú*„%¦[0£m�yl Ò¹;G<³†0—r¯0m-´=¢·ÐÏ‚HðIÆ•;%ò+Iã…ð‰˜/B´áNÈU˜ÀÍ‹+ikéÍô¯>ù0ýÅ>Öß©Wgy--¨‡ª¬sú²Œ® ªJß³ÿ2ÂÈyìÕ3sL¦J¿�WýFI'™ÿr|"°¦º<¡€‡pXÀ\»/~ЀøBóa P²ÌPÁ_4†¬ôAÀ!z0Àª¿a¢‹V�40ßC`7‡±ö,øPû§" ©>sÚÏfp’nBŽØâш«0È=Úlye=]¾~†[P„Û8?LÌ#¾ÆlXDå)†_¦_&œÏp†ô˜­#3ö,¨ƒ!Vg¬Æó¯æ°Ô€ùónlÛ”Èï„§©"ß*žåûUë*Ìþ«ó—Þ÷KQ‚é¹sù4A°'¦t›A ú»0s¶é‡!×b®®DœÆø°m¦•þú_¿–~ã·ßHò¯þ2}vûí¼}ò]Á>À³c!$«Êmì¼d�ú5–í¯cÏpð8笣Z¼ÕùUÙwöý«æ�ñg{(¨Å¢¾›â@šÀQÜæ‰.«ÎàµVó<ü)ô„“—Óïþö÷Ó·o å´À¶FQHB(Àø² « œ5UÃWË(çªü (ñ¥Ú&ÁˆA�±Þ}súÈmÐ'õ¤´ýÉñ·Ü¡·!„}˜VV¦é÷þã·Òû;­ô/ÿíý£‚ÌÛ‡àT„sð ‡­ð ÎZUä›dò¢ÝCàQ÷€'ëïUÛ9¨€ªçÖVÀÙ0ÛVMážÊ#> Ÿ,¶ðÉnÚïBÚZØã1só³>}gýðÿ³÷f±še×aÞþ§;ߺ÷VÝ{f�jŠ-Q¤¤XVâ 0�8‚8p$B(’‡¼�·$OÉK†‡¼øAP‚@@À0À€ŒD¦“8Ž-Q¤H‹§f“ìnv�wžþ9ß·Ö9ÿýoMÝUÍ®2Ùÿ®úï9gŸ=�µ×^{­µ×^ËLhÇMQÐ^Šw* cƒŒH£bn GVÈÅ»$“û�$ 4*.qõÙÀ‚[Ý~Òa°§·þ^üŸñzöçC!0S|(ˆf > hÿ£n¹\Á’ ùŸ5"W˜L0ÿžg%"|9ˆ&J ô¢(˜D×¹ o?Æ/fðÁ L\KÞž–Õ ÓXúßýãÆèG �9ø2+T#„Ò“K›eˆÂá‡GÇe pC¬ ˜²÷ÁÅC£ù�è«øÒ‰¡AW(9!â~Wza¤µõ)�תÇʲ**„¾U¥�üP…C|;N(i‹BØ2éø_}õÕ0ÿßÜÜœ¬ü×´¬Æý¨þìO šBUø%ž¸xŽO�±Ê]õʸ©ÛHò¨‚¦Wø}wÞIÙÓm˜JäûºISÑOýÖ6ÅwUí›|G­|ŸÍtt˜š“qMÚæßx×yNÓe©>û.þÊØGŒ<è�÷ùÏ¢Mu�èJ\½E¤§s„ž”1F�#CUÚ2�šŒÛõ¯½Šç÷ëåŸë½rýæ yÕsÏz®´Ø ÞåÔF¿C‹-mhrŒã>Š8k“ž ¼ò«2äõBUô§ç§+�§‡×¤y¡ Æ|͹¡‹…× Û¶tݓݲÆÑ|¯¼¶YÞüìj¹´‰�ò4Ãc¿éígz#Ã;ú ¢(éxnÑ2�}� ï?Þ…°†€¯R+øA…´BOíäo0§»ðÒd ªgæÕÝòÊókå?:aO9>hp8ÙÆ:` þ˜"ûW̳=ÔÁ÷€XÑ8g‹ÄÿÄw’ÌÂ#B û9z˜ Oñ‰xå[ư}}— r:<àˆe”xnŸ;Á‡ŽŽ…Ñ*‘åM`ƒèMÈÌ>³ßìɈ«k²Ž:ä}Α¦µ ÓÕiê«oò^ÕïDøŸ@I©ò™…£“›™@0}„0S| Í’<#=Œcú¥yŸ«1ƃ9‘QÅÐÕ EËXÝ�Æ“!Æz¼a¢™÷¤ºû™¨àAô8¶pH²½‹‰o��B'WðR K‚"©³-´R�ú>cfƨõÕâkA¨ ÷¸>¼¾y®\Cú_¤3;®@ã]XgpmŽ…k°Ì,Ï©ªûÿe È_ä�‚›qÑ«¢œ!ºÖú<¸ã‚�啘€Y+“Ô¢Â*G 6Ynh_â\[˜Òy~GV·Ž0—DXíÁ˜†5 ¸£ƒ<×H:4ÊU*-žV†->Z ÷›ê¶(GY~»‰*öXÈê«(ÐÀë™ØÃÓ±š{„ò!“9Kz¤cmœ‰;ûË2¸w¢o̳ϟÓøÑòXéé\™g¬ÃüåÞ|Ûb°ß\E …ÀznÇï¸tn=V0ˆŠ¶NÏn±�¡•QΖâª{‹võY1?`¯ÏÖîNÙÞÛÅKõqàüCçC®Æ{-6(èÛ\=!d^³-6*„Õ¨#¾(ðCÙBæ6®æ0?ÅôQ&ÀÑòŒ« ­Ø7  …ù¾&ü:1TØñÅËg>ó™þ5ûw…ßöø~* ¼ú› ¶êç5Ruˆï | &¦ÞÖßí{î댓º€Ç¹Võ™µ®ÍkDŸVs¦äHç;n&iϤxrSÍ�JëöÔ slÖ3jÝ*óÄ7ð7è`ýbë{G•ßèÜçÝôÏ “>,Ñ8Ê´ï}Çc’OÇb]†Ì}Ú»Œ“†Î;‰Ó2�aÁ­yø7_;_ί¯”Ÿ¼{P~ÌïæÍÃØ6Óà¸À9Œªü‹SC ûCWŽ¡·þp*~ò¯mÌïɆºm‘äSøšÂü©2&ön¬€4;hýá)mc7F»eu©[^{e½|á ç˳Ïûn¿´±ØlÚÉ„P|RV`�ô1Æ,ý Ý’Jß“fóÚË<ã™yš~Œ­ž¬"E÷Ù2œGˆI ŠN]ø“ Wùµ«å[ßÝ/;ÛGÌ¥œ¸‚cÉ!sk8£´®øÑ6¿‰_Õk{üîPxœò–ñ³?��Õ—|I3â¯؇…š<–‹2¦ÑÊ Û“vº8Īnít¾  ŸM–}oÿØw""øS�ä¨O¼‘΀Ö}6dýO;"M$™Nk¹âSúÐ'üû$þÛgËš==3Àƒ 3‹ÿHøÊWÆí÷>ø§ŒO'ëtž&ɯ”Æ”QäzàÊ8xO`ð ``;Œs²÷]õ‹÷–f¨ß“MÂ�Š7£T‘{‡žùÍJ®&Ñ™œU:VCƒðTõbÖò†Ÿ×Yø$!ð aÇx—[åeLð×5÷C¸j³O0VtQí T`¨à�;÷te®“<ÐØCL¨øQeµÄRÇœf.ÒÅâ}pÌä 1ež3ècåáî|g¹|öü<+û—ALšoÝf%b®R�J–zckÚæÊ¸“äS Ž~1„ƒÁoË»ìœÏþ2mNà Ý1Rjñõ‹€03Ø`L)p˺í!VþpáI®´Ê1¿�6Ü0Æš¬¤·é ÷Ë;öÂ5�·clN¼Ãb•òsçËò*Îz©G{…mRGkr5‹ªÈã·µ)WÖq€²áˆ3«·¶î”[ÛwpîÈV ¶Œùy’äÏÈ(Ó’FSù�ýOù�$&®îý6ê�UIQ—‘Â:ßÀûJ‡Üû¯¢ƒ“°20Ì·ñ›°´X^xþ…òÒK/ÅÊ¿ÇüéÀú-£þEý”åõ=Ãøç•ßô7{OT„I¼ýü3KUüÌ“zªßGuõŸ»3Lr>Á›º Spðö4ZˆÖ!ïò}�áìU¬Î¯Ìøú)K1®NÏØ“Æx0•ýEª˜w³þ¤!–(!­}åçs¬öÆèM—§uhaÅî h”Ý­÷'Ëë/o²ï{³\»|R¾û½ÊO~r»ìîï-ñx¹ù¾ 7=ütxThßúË8Á_G´D\â®§÷Ó°©ß~:®A1‚O·Ù¸¯ð¬`ye«(�¯�Ž2s>G¹¾¨¸ÈH³½Ç>Äã&œ€òÃߘ|âˆ$J0Tµç]4Œr²•¾ž…OÓB@Mèsw_þ¸\ÃéÜÕet¸ô{oÌ>Qr§!&ÙG˜ 6�ü[2$ô`¦ÃüÊÞz VðÕßI€™êt"±·EŽ þØÓ`I†9¸”ŸÞÜ+GŸÙÀ¿ü¸ÖZFª:]œ‰«¥›£9G0Q„$S¼‰È¼æœ-ÈDwýµ¤ú%6ÔßcþÍ“ÑJÄÿxWòÙã} 0SÜ(³¨��ã£îß`þ‹¤Æ°Ö‡Áì#OÁPTŒé¤,ÕS=ôIU1 )(Z¯q¼G¸08 OóŸƒd*àX‘ÛÙ㯓e\ȳmÈ~Ę2g”iYÉ7@4(&Ú7yïÛYø$ �DÜ~¬û؇0š €K«se}ŽÉ|Ä~Äv�’#u6Gu1¿žcOhGn@&¦B¥A(¸G¤›IH•9 4ÏÆÅoª^«—±%­o½)k¯ÏYÅ£sœù7ÞgE϶›K*VÊü³Ï–“¾«R‡«¥Ã5Ñ`�Ó“ª¸yÂ!ZP¾µ„�w¼ÄÕ&FCX „:É“WÀCåŠ+6žåÜ`žLç{´À;Êf}“£ÛÄ«çëãÔÇãÙ3�µÆg;/0ö8Rïp¯ô8ö«‡"`‘%ùyö·\šÓü1çAÏ•sÀt%ÀÛ-4ë—'ðx©S…}C{èOòP1N0ûß½ƒðëvÙÛÛfUáŸouÕ~Žre}‰àËO¯’û8„î&0&®\¥c+ØLsê.ñcÃù)qoÿ öø»Ï_³~Mþuò÷ò+¯„Ðqó"‚?G^ñ>p«Âm5®×WZò‹Æ ßï·Ö??Ö^1$|òZGwš"’=ÂiB†ÓÓ9yQ×kôƒî§³<õûÉGT­…¾Ü� 9õ×Èð:æï6öÇ4Œê”G9 Bz‹è –ASx¡ˆËœy[×ï8õ>ˇB”{ÆO”OÙ‹œÂ2ºj€±!{З–7ÊÕ‹ V¤¯”«W×Ë·¾§|p'�7· #Xd­2ÎpÀJ]üŠ�¨M=~~”í8 ÜñeÄLR}znè3ØÒw…ÿ1{îã84i#Ž\› Ìêûï—_zu­üƯ]*Ï?O5ns4ß>ëïÐNúKì8ý…XO–§­´§´ ˜kˆ±ìŒh]ôClÑÔŸ)#LÅÐU4¸ª¶�œ”ÛÄk|Ã=ãlETÄ‚k¯l®±•j¹]níi –s‚Š¥ÉÊ¿í¡ããÕƒó”Û @È)ôŒ¶Íþ|48jg`@t®¬ÇV€YúOàâ€|�|ÂP&À\ž’ƒ“Énl—ƒãgËÚ²¸O.ºÝ/x¯¤Múb‰Q*æÕ¿¦ ¼›ÌÑ^~„ ÞU+ÿQ®m€ŸøþàþàþÝßýÝ��Pħ:ÉLð©îþ�ÿñ½~¯3tâWÐ`ðñ' �I£¢gk‘aIbžaŠ0L'‘ˆI>¯Îõò:™¯2ßÎÀ¶v8»öøñ˜!!´ÈÀ»ª{P=\\Â3a&•XÒôÃìþ‚@öÓÂkáÀIeƒ‰c¡Õ+}7ð8Þóˆ¡^YX‚¡aE^™Ö•eeN'’è_-œ®êéÅ}g�¤‹ �þö8T]sRâ½Ò¯DÛá<¦ìs”ß•)Å‹îìÛ˜•ÏuÊÜÚJÙ}æ¹ÂÒs9Þ;(;”)nYrˆâ§=µ@[¢zZ NW�“¯c2Íã’�JÈ/ƒçTÐE¸g¬hºÛ¦úÄ“´åi€—ÞYÅ™X¸§.­½0�ü*G€¡õ�­XÝtHÇ»†Ž È?Ž´˜ôZvk­¬®,‡²E†5örN:ÌÒÊà›ìïðí•#„ð½�ÝíÒc¼ËX¶±ÆÐ+ñ|¬à“@Ȇ:ÌÃJ�ŠnF‘´ˆÏÓT{/`£¢�ÚPìèCÀ|™W(e¶: ô¿µõõrþüùråò¥P<ÿüóåâÅ‹ìS^DÐ×ï€m·ŒÚQ ¬¬ú"�ÝrL€¡Ñ÷¾ÿyŒ z ðêñp�NàkîúÎøþ$ä÷¾|„�¿«ØÌiª2¬Ç{ûÖ÷y+&œ&¬âžê%ÚX·üî+-«¾aÒFŸ�êI}Ÿ¹ýBGº!O]�#=L|¤–~DšêcÑ1éëª|.§øš¥¦?ˆÔ£IÃ@AÍ¢Ø�[8Òuž1²±Â¾abý“m„z>,¿Q.Bcßùɰ|ÿ{ï”®ß ek¥l£¹È !XÐqù�±MÙ¯U¿VW¿æÓì�\‘uÕ¥«ùLb:ÛÃz®4�Ëg^9W>÷«8þ›+Kí�2âÈF�Á�oàtGa.œŸ&­rVˆm_±òÎ+‹§+UÈÆD]nSE%Ø·¡õ¦+£Å¬?Ž…“÷Rø?á±ÊŸJúPz Ù¾ÇRw«ÕåøÈ¹²Ì<¬Z¢­×yÌ1'ÏxEìÿ§„¨8:ÙöØfV> � ¡‚¿Â¿¿è\¡�ó™£�i˜»E�…æO|âq»Üº³ œÒ�°¤vÎg´€³¯“Y^ý³R~S!çÃŒ˜¾ŸJrï-¸Q+†‚§á9é<ñóíwȰqo¦YÌ4f €ihÌî  ÔÆÿò‡ÿs=ܹH´ßð8B(gUñ9yËÖkÒ'7^‘…•óØ×‘ÑÉ…þÆObÑ‚íðÝ�³…q[¶9àˆ•ÊÆ+Ș›¡¦ä˜q'D DNÜFpUÃ’3Þz«ùzö÷1 PÓòûA2‰9KR朄0Œ0óänë`aŽ£\tºæªpgž¾C0oà ”nªÍeìCM1DŽhµíˆréÓ‰ šý�ïD”-ÕÄÜ[W�W8Âæoò'}Žd…7LÂYµvÂ9ÌÜ¿ðÂùÒDZÍQ÷¸¼ÏJÖLÊøÊ)V±®‘¢´-NÉìdN’⨪ �j‰g¾‹ý•Äî¤7åˆqãùø!v¿-kìžq‰जuYŸãÂgaÏ„Nì=.Ñ]�Úl[G:dTâ'Kl…àÛ¬ÞŒ9^ªt6Ê Ž÷À¬»p®}ž2ø9 ¬Ç*So°oµTs©Ÿœ-�†¥…W*CÖ.”œµBÒše÷Ø:‡ôÍ1J€ããCL‰ÙŽ1B!�‚¾Ó%C·wHZ…üTvðYj}Âm2žÖÈ7Yo. ‘¹âH@ꎭU_4À9{쥗^*ëÿ—ñð¯—ÿ ç7 @_†N·uØÆÇ�§x¡Ï¦ébþ<êq ìÞƒ_`¿å·ä�÷âyâzu|rÈ™†8ÇCÐåÌ$JîýC1nŠ2+¥–c½nI�!Š#2‡�u›†¼R÷Åt^žiFfŽ/³¾Ó0}wÍ™ªÊJ²Î:oÖ ¤¦‹¸§õuêhöÔ·¶÷4fên:ÖžÈtYMý®ŽõÙŸ#αQ?絞7y9Uˆï2¨ü’Ñk"Ð�HHF󺦛Ê>Wu ÉüŒBQG¯C„‰Í «ŒçBÏ”uœ‰½÷ÞVÙÙ9 Ÿ ,úšqJ‰4”b+8 ·¦§-©tßËtªé{‹?O+ÐÇA4Ia–¶Tøœ8 � ÞH˜úôQ-ür�qH#¯”ZÍ­l—ÛÊk«üæç_+Ï?;(Ë ;lsÛCù¶§Öji�‚Vµà)'ÇtUZJ5É;e­1^­Ûù�—ÒPÛ¢’7ÛN>¾Áù%æ@p ”QjÒæ´²" ùG*8y@êïI:+ (Û¡·*ŒèѺã¶ÇÔ&_@L¶‹¿ ëòk­Þ¸YøØ˜„ztäøÊyÒ]-úGžJ Q6Nå�_Û:é”ý!'1ΛÌóMðÏÞŠÕV¼äyÀ[êÒ÷a©ýgßÕ5Fõ“?§óä$êþ7�w`� 0•JXÁŒ4QœküÇ÷Ï0‹�†ÀL0 �Ùý#Aà|åOÞ:îqLVÓÕwÖ Y1ìèEÜÉGi±"„ZÐÁ,}ñ¸�戽úÜ;©(µ5 c·‰„)ÀqMx\'m+´ÚŒeÌÂG¬DÎã0Π옳½8§}XÖË»·Jy!d¡ŠómGl ˆÉ¤‹qŽº<7VŠå”•'Òa¡ì¿í,<>’aÌü9!W3IU¤Œ�‚U›UŸzO´Ò<Âö«üƒE&zöÿ ™HšôÙr‹ýáäm±Ç{Ë€Æ<+ �#<ŽÑ2'CÄ{GÏóaBN§'C«|ŽÉ„™œ|Ÿ}>Ç$5>•U,Gš˜’hçÖš4š§�Py÷ÿÒÕ•² ÿãï¿_~°sµ~­ì“~ '8ëËà/ÆÛ®¤ÃH�ÁS�¯jr®qgy½ì"ÿylž ²“ã<’’ç™, '0¸Cç�ü.X\«rbÄQ_0i¾ÏO&Yˆ©�8þú­Ûs{›|ï<Š\ús˜IÆÞ°Éq{ä?$Í–—íÅs|ÏŲu´TöØ£»�C ïÚ`;A‹q®®£'£¡c½\ Rg¼{}±³½[öv÷Ë,0¶Ø÷�!qYÀbDB?öÑœ „wn�ˆ�ásŒ�Qå«óÕ· žÀ°Åº]•TbÅŠ?þӑ߯ÆFìõ¿víZxù–í z÷× V6(GfÛ¹T À!̳ri8�N=(˜ç!„²Px�ܺýŸë´°Ì€ <î3&À+~I'oÑG9£s¼oï  ì+ßÞ 0Gÿ€#ÅìÈ&+Ù öŽë`Ì•gûÑx…EÿÙWqï9,*æËì«ìLù:Äøà¯‘uYqdzeEõ«°Šìdó}†úû(JÜšDç7Ôã4`&žR^„:]UJ}1ºJQGM"¬NáwZ@ÞÕ5™ûîò{k«˜I#�£Í´Û†+—N> ¾;-«{ô3>¬ƒ©'ÞJøÍ‰p‚ ¨‚6 û13f!l 8)ç×–X^,W/]-?Â)ÜÛoo•ë×OÊ'|Ì3ÞN8ëÛ&tÈ;ä{»(ÙÚà—N8ݔߖ_•sf^·-ù«¾ºJf¼�UqOð­³j/ñj°__þ§LüXm° ó]A]sy·�E;MCÚ1x/ÞöÀùEŽT¡jæÝJ§_îü°l¬–¿þ×^-Ÿe:ûVmÛ”�¤B…ùj€ed§Íª½qÑÉ5>ˆOÙ‡âFðiÀ(zÁ%ÀÄiGc >*sX¿Ê #Þš�÷üG,ÔŒðï`¨H-ùS1Úd®a‡SU-»úCà åG‹c‡(wÙj–‚¤sƒ˜n_q\ò”ñt©„´U %%‰!!œíwœð¸T¡’<úžÚcp¨îνXþô{[å×^æhÏ[|ô ^èïŽ{ÏAÛଠÏ`83€—uÓˆíºð .@¾ <ÃAcOÁ3¨7®¢Ÿø§£J|`Kbá Ntjh¹Xz_çÏ,|>çù!…Ï^ÿbC`ØþÝÑx5¼ÚÜ |rL¾2zFð6˜°à•—P±D¤EÇ0N f…(²9)¼‡pGÂ`ê\¥“Þ‡µ�žÈÊî'Ê™›LŒN<è•!X( ` ¥[ÖsÊX¾1Nb¶ÏûYxÔ�KÖ�n–Æ Õ ù$1¯z!®ñP0°4ÈüOH|��‡IA8Dàn£ º¢ ‘çÐ"º üà2NP9¨0Ê@ èpKŠE ¯Q41q߸rájܼí rD;ÜV0@CÍì'´À�…+&󔿹Êjî•2xo»üàp‹’qpunôˆ- ‘¶´ôÔ£þ 0�²RN|ΖóD"q�XÎÏ"ÄX«¾Íò²\#î‰œÄØ„HQ]UÉå*Ž%¸r¤icÓEüÈЫt)0~C€#®‡\[CÆÜÉŠ”ýùØ 0Çýzg …{<;î•G¸W18Fðö”Ž6Ì‚è¡P]É AôúßëŽÊÍ[Ûxþß+»šúPó¼'CJÙ68•BÒ¿&þ‚Wùåàct´¢"ãÞû ö‰2ô/æÉîßwÅ^s}|½ù»Ú¯À=ÿ:ýÓ  þ§™ üÔ‡õÀVàG˜Ævî}Å»˜¢ãì“Wý½QÕŸIAÓ‘tï]ñÕcÔFß‚IÔ!]ϦD»$ 6 ªKF6Yõ=aƒuvQ‡jLÆcÜsøcL]Yõ1‘(ãóûïj[ä¨éO&®WE£�Sù£ŽÉóýobõ»|ªJ¯#¹ÞÛ†ûÇeÛ�eL—NwÃyª†3·QÝi�u)ÓÙë¸3ùâÁ|ÐMLÕ=ü¿`Qt~}­,½q©¬­®—ï~÷&Çî”›·?(Ëç.AS;zÍ)aY£âcë6î–X€¸«ðÓÝõâ_´GøåÜý«k"~��õ—ÕiÍÞÄ÷JŸUtæÇî~Ù¾ý~yîb³ü•/¼X^ºÆ6­rÈj? ÐÜñcÄ¢cÕºK‘1>£º�5-ŽÓâ�­`ŒUÀ޹�ÒRO‚ ­ˆv®îW=’¥Åf2^gE*íU„§�û&JÃn—…hxå!öcôw*×Rw”JÄhSŒeë“S€¨ÚS5qvyLÔüC�a5`ë±\cÆtñöýáh¹Ü>¢¬Û+k(÷µÌɤëPk\æ]±$úÜþÂâÄÓjŸòZu]Óeä{ñ�ÿœ?DÝ.0Êû£”ê�9fh> 3À‡Ahöþ�@Ã÷²C/–cÕ@"/ ©¼ª(¯¾Ê«T;)·« f=ÍSå…ò8a¥&�äžÁûÃtBÖë⤠€}„Û ‘ AB!%Ë�°<53©³ Ó)f÷?[ÔÂ’¥Ö÷©`òí Îc(ö Ðlݳ:ІbEÏr$6…zƒ˜4*®EÔ!&ñŠ«¾bžA¯dfŸkð'>{o9ܘ×ómm†®"Ä-EWt@‡> q“çMV¨ÞhcòF®íŸÜ`/ë 3¬©�o sªv»‡àIbûIƒDX18Ùi[5ˆ:0<¥,Ú’˜¹yjA¸ÔÊ?VQ9V&…í6>tê§_€FX/À´ó £!Vš¢8é«Ìc­Š;Ãc%Ž}ò×XÝ;ÁIŽQÌø&\üg‚#ÆsË#Œ£ÝÓO”~clwßGXhô»–»@Øê8)ú�†€Cd ¶�•Ex•°syý‰E‡Ž²ÒlÕª´ ¢�Â"åB¿Âÿ<§¬°'yss3œû¹âïý橾WI`pŨ©jÕæˆœý9aSÿóñ¯¾’2„NŸé#»*±ëL“‡šfL"¦o ñM­k(«¥Â—9@¡ÌlÖ ÚĘTù“J¡T¨ELQ(üATR�V:l¿w–byq[ÝðÎyÉ8ðÎUÐÓP W˜;p1JɸZª ÎWU¡§E<Ñ»üŠÇ®’Oª¿øÁe<¸Ö-ÌoÄQ'ø{™ÃÚkeµU^xë°…gË…Ë8 üö�9nl—S~v‡øh#ðÓ§Cæü&ȶu@ÀzwËêç»Û#ýxZ:âÊ@QA|Ò"Ò˜˜/T¸ªà´í‡È5L¨}fÞÿç¥{Ì&[£†ƒ›(GöË›ŸýLùüç_À¿«ñã;¼s¾ VçTÖy­ÿ�ÇÐFO‰æåéj¿Ê[«å2�.À+�EAoȲ�eŒkÇ_¨ â;¤Úæå2W·ˆª\R¨ÇÉy¢Ìá1 ¨+ÚÐãG?¶—H–qÖjHzá MAñ ‹VE‚ÙŸ§iï–z·¶Zå™+‹¥Ï‚‰<ƒ[�AíC•49ûSܯ>^¨ñÀRÄTùq�qÔl~Ž›oúf �™àÁ°™½ùtÑ<§É-OÜÁÇÕÉäž±M„LXMÎ-:˜;Ç+±1ÇI˜Ô2o'�ˆ¼Ìs\ì=ˆ]â¬ôË6˜.+x…y)WMÆH™å[|’�K2”“/²²:Éìú @ f.dÆíóÚ„Úãã†úЉ¾ÝÁQ‚e!³Õ�qÑ„÷ ¡9 žz⯴Æ5S" þ�Ò$¢‘8!.F“/ª÷>£PbZ��« *®µ5�Q±L­I:­Ý�LZ³l,,—7žÙ@ëÍ Å[åƒ�Ÿ–•sWãˆ@5XÄà¹ZÌG*É?F`ö[Üë�¸k ©Åß%¦û4-d£ŸÔ_�“ã,N4`Ü"=ù÷®æËc•¤RXk"(µ‘°ì1-c¼ã—e9s~|=¦ŒEê$h¾½T®lbJ¿tPVNÊ<ÌlKé^‹ à%>¤€Æä-à’Gœ Â^×Ql qeP!}Ø«h³”¥Ù Û�¤'¡@¶â* âR°³­M”E¬ëó&•>°?ë•~O"P¨·l¯ ú®öëØÏŸÿ\ù¯qÕ©=û×8ô˳0�@ŒuÇšƒóÃé@&ÿO…³Où‚8ÓÞ¨£�áXõ˜0v uÚ18à6–QÕ÷¶)Ž˜TÁG‹‚Ï©æ!˜GÛn‰N?ƒ8¿‹èl¡£×9/Çt–f‰&ª®UÙÉw“÷>&ÓêõñÂik”?éâßÒš³m}PÊÆŸè¾I:F«xa\),t�OP°A?P´^¾RÊ…K8 \~‘3â¯c €PßA�(WÛ¾ž0pŒ¿‘IÿÕ˜$Xü¬*ÜK_ë—5Üëk�ãI]f+Á^Œ ¡_³èª_¹¤À«r€6ŸÁ+a†“ŠIÌæû‡7Q²•_yóZùü¯^,k(]õÐ@ÇUž"d‡�®†L¡_kIŠlª8£¾ºCHwœœ¶"Þåû„Slí¤E‘†±eÛÜ6çÕ1VÝ‘Ào¢¬Àó¼ÆX%Ó~¹ŸŽœ3À§£Ÿæ_ùGôOÎ߸uÀ€s"’ Êk ÂâÈj¨Ãè3Cðœƒ>Vã a LçŽ\™‰é�t0V™4ÊÐa—�!¤èº�}HL}vöºew÷ˆxy÷ W“…ÁNíJ•í•öTm©^ž&ŸÝýL!JŸŠ¡®™ÁZ8P<>qb`…@K¯Á®ˆŒÙ;8Åj-{ÉÆ¼— qu, ç\µð*~fTÝɳˆÈã;?Çx.þ ÕUç4s00¶QAωUDW• p×üLç"èùÂú2m¼ãÄK?¹Snaö^æ×ƒñi²â=t?õëD�…c�~¬vxl {ýû0b®X¿a¥‡Gñ=•0qüùÕ Ö𴥋ÞSئ�#!.¹ÅA�†YéhȊܽ}¡ Äöù‚ÉØ-#\_^[.—Î�Ê,'ÚѲ4šñË€Ò¯Ô©·gû�QB™úä†(ß#V®šÍ5àh�P”*€gŸ±–Ê(Ç}çÍŠÙT¡�‚>d‡R‹‹vb/¶g�Ÿ(&XíŸÇia(ðq`ß×Gü¹ê¿¶¶6Yù?>f¥ŒJÅ]¡° 5õ•ÛOw&5Ó?}(õ8€Äº¤ "¢ADð>ÞDLÞW滛¼8¦]I”Öƒ[ •cÖœiÒ’ïõ=> âŽåç?é�2¦AÈWUÏUi¤’.�Ú qï•@Ò˜s‚¾EiDæ•Rã}–™õÄ»ÉÜ#õªÖ(ìÓøÁoš�Bš¡Y¸[¾†ã=€�`Е߳ÏqLìùçË…Í•ò�¿ü lݹCú ÆbqäØì¤ Cèå�}%¼üU¬°Îþ‹«‰£Ÿ|šæâÅ“û.äžZ£÷|”•cöû'-¦½ ×nIS�)Ý/UšØf¶7Šï”©Ý£-NU8*ŸÿÜÅò_¸Ä1‹Ì�Ãhr�yˆ-NnÑbœ¤#eNQÑT›½ØÎ?Zq5â$ˆäÇ(<ç=obÌ�ÞRð–4%àk{R��qÎ!¾´�ÉÃo°é1§Æ˜EYÇ36ôõRÙÚàç�~£¿c*”ÎjAG"R𛽫ð)©¥HxjvÁòmÙ,|R¨�döE‘„·ÛL]\ê/¯‚/jãæÂåä¥`\™ô!SÁ”'D&†Y¸â„ýÊcòÞù9râUt¹i½÷AþBH+žÊ$p�éDü)GœJ°Ä‘wˆ‰´Ä­ ˜ŒŸG8í¡íæßÿûînÙ¥¾1J©6G6çqv‡Àð2O‘�Å0IŠº÷ÑËèyJ€íOá;^=…?¶€6 �‡Ù?­ðÝ2”cšÛf\ÏÁ”¹§Îo Ïû0`#”ÍÑ{KWË9Žþ;éö±àèDò¯ã@ïBÿs›ËåòF³,П²´îÜ�™„I‹•€˜‚ØP@€Ž‹B¹:ÞÁqô5çª?mö†a¬þcY!óAy¡°<Êг¸ø�¿0~°˜8Åjµø¡D`±ŸNêPt(ËÕ‹aX“𭕯þ‚&¡L¨q6*æ�Ê‚:.Vª\�û”ááȲÚ‰Ù`á ‘1×J°Êë˜#‡ùbLÆõÞû„u]z�¨zW-Aå±wT6¢nâéo2oýñ�zUÞèðS†t �*²5õ §EµD{-8jô¦ #†ª~ëˆ4y�WÕwKÃêTOÙg""ö‘ÿâÒǪ¼¸Èïï|êT¬¥€8c1*_ºX€üäƒëåDÏílíôT‰J»ôåc¢˜Ac¬šC¥Hí?À–UÍ´Q³ðÄ!@äennwË^—…:W·*#ì“pñ´–ðþï#¸�ýŸ˜’¥XÒãqÂz,Ñ™»UŒÚÍ?üÃ?Üø�ßù�íÇ)õÓ’HÍ ��Á ñ·P0'ƒå¤U ÿ1Úcxß[¦„“€CÕ ÐQO4µÖ8(F}ËÌI/’UËÒødÚ†L'"h°]L" £î1�c«dpø‰Š,0ǤæŠJ”5ܼz�UäÅËx§|o«_n³*­ó¿§S�¯‡P­VºM»Yï�ºd¸dÚÜ ò!CÕèêéI_âi‚ßìD.[¨^ïÄUqVá—ZKŒ7VfdÎùÅŒœÏ<Âhâh�ã¦ðاÎÿ¹¥r/ýë˜J¬còÏùexÌÉ0¨…#:Ó±“ã ¸RV|9YU*”)»¹úßb,·ãp¬+V�Úæ¶V ´ªÐ‚zŸL ¬t©ÒEë€8".ÍÏg¼I{Öt» 3ÌjaK�4òŸß~‚r÷õ{\Ÿ‚¿ÇúÕûük?Û¹l½xÁ³×Y8…€$5W„ZHÈ·×OÇh•’˃`XÇ××:GõLÉ>æsT혊GÇ2¸„â°‹#É8jS¿1´IqÑ-?êm®Ì—–¥™9Jb¼ú|:_L/…¦HGRï² ‘ d)U9–Èmæ¯ÒUx##üq‚5TE=°˜šæÞ/�_'uÍß/ŇÄÑüÇÎõB:8îÕ“ÓñYôÙ�9‡>`šŒÓŠ»#Ž]Z\.o¾±^ÖP|û[?)|°GïõË¡þ8bå¼îaš¿ºmöcN5Í5m@/þ~ÈW~r¯c^J<O¢&{ÅyÎoP˜cMc_ù­~ƒ'�xšJ·¬- Êk/^-_üüårõ<¯ŠŠÙ]àÆIl_CM:è§tr‚«‰ÙÂÄ15ù‡;“ÄmŸ°Ëñl|�oÆ+ÌÛ²P”óÂyÏ6W%�V;ß™Ö2ò­ïí�Š;„�{çý]¶ÙÁß1Ñö9Îy-êÝhoÝ«)<Ú(F¶?ßÌñC!³ðq @z¢Ó>íÖÞ°Ü>`!gÿ¢+uŠã¦�ÏÒapÐ.->NåYFâ A>Hê�gaŒ¥ð¨ßü-Rýý�[Ë/rþ¤>¿È_8û¶O#�·@´]¥›ìÿg2ãwz§p‘ŒF6’àÄÃdaCLvN†H[A ˜ˆäM�Â[|™NøqÄšãäŠ!=WYUEÃm xÈKÜqå_ã5c-Ö»z2«GŽÙŸOö½8 +½}À±E˜Í÷™ü�ç{L¢€f‹ðw*á_ÀXÑ‹®O|]õkt¼e‹.vzvt`šHà SûžgW�b!‚éÉLQR*Ò*¥…‰¸ç�`Lt>Õ„A�guú<+‹í ލzõrï§¥{°_qV7Ä1•lëÍÜ;Q.õµ÷`çxn£¨J°1U›¢aOø�ŠÁapk›zÀ¤Ë˜Ò›EÛ ¹LÛ—…ýãèCÑ ´˜ƒÑ\mÜd…~Þ¸/rÔßúß8:(ÚhïÎôŸãóü·¤Ø;sîïﳂ�ÂOý 0êc6ÀêªÅØ×ßGœ²ÂÑuÒ}~/<ßàô•Ê·¿ýAù‹ï¼ -ÈSRPNúíÙƒôòú#Î~%Ø9Uß<¬�&ý¤B,mKpÛb´#„[cêoqE“'›K iš8§’³Ó8À9í\ùí_³<ûl»½SV–»èc±¤:Ú+çÖZ¸á³&*ñO…ðÌ­¡ ú™eÛ€ [MH]>ó‹«­ª�ÇÞt± ì¶e¤g̑÷ ý1~¨ß9.žÉ~¢äå˜kL‡ƒNùàŽæã-ë|wÇѺn¥S�˜ŠË´qôaÀ'{7[_í™ýyÒ`Þìã|‚ºÍi\;å|ç�Ëö=ÇñAui�‚¿ý^ñßà@ü£ó¢O[>N»«9 Š€°Ç¶W¢`ÀBôLððÎÎìÕý!ðÕ¯~µóõ?¹Îq=Ï”£¾‚›�ÿÐg‰r8_òžñ¯ –g!çä!3½³‹Œ•„]�/öS²Üïd÷”ÕCðÒlwŒôpÂ*]sa�If¡üôÆ^¹ƒùxảT3d·85 ˜DdÞà {ò ¶,Ãé]3»~RЩO½_ºšœäeÀš˜ÍߨÛ*?¹½_Î_iq†1LÌàbœï¬©¹Çé€ô±ÉWù®“C|æ Ø_`h±íCÅÛ!ôþÿûóï•#sŽ åmæ�îžó=lrš v Ô'#i�ÒðÍûh‹¼¢ñ³ð´ àv::´l5Êw~¼U^½ü8ª“Nh%Ê�cÎòˆeç{œóÑ•âQb•óªôÞ-é�zZm±«E*B^3^Œò2‰Z» ],Ð `Üú·#ãìÏ!0S<4³‚ÀÞÎâïVÇì v ©è1÷Õ°v¼Ö³F5xsrá½ïâ}&ð6Ct”¦éåØI�mÈɺ!í .Âu™,<ç£ñœær95E¦é?Q�“FFÖWŸdêfNg™Ý?h8€øÆß-k—6˯¾qÁ¯3°ƒ×øE¼ê;õ+ Û¬ü«F&ñ¨ž¢Åtn ›6¾qO>—Nìô@Àjò¨�ÀUhØw²&ó¢¥Jõ*ʕѬ"�k"a˜s“Åó`ç½òêú¹Òü¥gØÂ¸]¾v½‡cÀ=U™0U!8·)WsVÍþc_;åø¸‘§h ðªðzº¡‚ãË#™ú@EK€«kǘæ¶1õo —â4WA�àÝë·ÐÂb|»Ì!@7öoÁ„³]€2ú½G9£ìè–yü'´±"Ð uA2çwamߨ aÜ€�Ò€ )®|©Å‡ÆÀ¬JoR£(Ũú,rÈ$S&í 3W•”©s*qÃn�Ÿ£=î­É22ÔÌEý,Rÿê¸Ùõá¢wã&?Ám_˜¨Jì…¨èŠÓ>¨Æg�ÈôªLõ㙫xNBFŽu‡)ø$m—onŸ ÔÒâ†w8•ÑœïÜdl¢$è•«ØM£ó)‹œ£¾º²Ä~sŽƒ\FÑ…\ÖÁjEÑ_¥�–íB•¸Ë6“.$7¤Ã&¶=$™ÇPnÇ|¥R‚Ê£¸*Œå·ˆ¢aWˬâ1C÷0ø<¸Ü o´ëaµG=¸àþxug‘A�4Z`;,KZ(�÷èYC‰âQžö6‰cNì€Ò°0ð×ÿµ·Ê7¾y£¼ó£÷°ìX@¡€0ytŒR€-Ló(0€…u~dö‹u»WXA#ë6æi¾a%…€Ž¹�Ž ýŠô(¨Àgȃá1ŠÙãòÊó—Ê>{¼Ç»¬¤ÓüHìѹÎS‡ðqÃøÈ“P¤“ö¶ãÌmUζìó­3®�³ÅIŽ˜é£ï¿­ÎÏ—(&Æ eñ ß 8:”wϾüå/¯|éK_Â[ù,Ü3Àý 2‹{(†ÝÆÿÔðè/'/öÓ3AÐd' ¥—$ÒP G¬³…q„ÉäÏNúNˆ&¯ÒòàŠ¡Z|½“‡‚€‰ãÏñ;{ƒ²YAØ“O–™…׆Wc(�¿q5Ââ³–|àï,À¦ËÀUøï†S½u⎱ÆqŠÅz�•MWJY…9߃·Üguvo¨�êTðò[YÞŒU(Wƒd¼âçXØÀ‘z„¥ý1 AS¤9¡çUùl>ƒ}ÍÅn‰ç(�8áíkJ f2JZ�ùòg’¬5âJ k®(ÏVüâGÑ€óÌð¬žÎÜÛËyLŸw5ì­#{0ûƒ^ªú%k¯{·n Ï™5²�èã=Ž0{™’Áa4N  Îa;˜÷ÀM¼�ëi½�—ɾ[\Xaöa\ßÙ"©{Ηól¹4—?|YÌÏ5ÊÚú"Û[ÚX ÌÇv’96¸vPZ¶QPZÅqeŸMŒ6Uøƒð¢Õš8¤…�Š/ÿü4��Ç\›Îo�Èñú‘ÿÔ xäŒd*&Ms^~ŒPg{ì6DµÒt±c=Æ7pâ>v—KH£ÒQß)ý鱎nåXZd5åâ&ûÞÛ�Ë8 rTàMxƒmú¯÷%8Ä‚¬¥É@(+Øk}F™ö�㼯‚ B=>Vi.,xR+$!)¾Hã+|íì€hmÍøûecqP^za­|ñÍ‹8þ»PÆ{ï¢9r–„Ž\Ó~>‘2Â[¬¼&|U´ÀcA»ƒÎ#$…0v†.šOzœ!•¶é4Î7ÁÛy­~§wƈOÔĘR ß“p<ÎÕqyÂ|=Z8_vFåkß¿‰`·ôð�r€á„B·\I³ ÎYKÌÃÑaã·‰'Â/û3’Ïþ< d;èÏ•¶ûáÏi¸l?Ê1¾@ŸPhÀÜmoŠw9ç‹[ÎÉþ$™^ïõ<8(·ð¯@%VÀGÇÿyþàî|³ç„ÀL0ÄG†ÀñÑ�µ‘ÚÀéf:Ü;¨“¬Hz0÷õ@v�Áí¤Áf;Ð�nb @H'Þ§×f½Äb‡\p\öX¡ä$€PP}]k^-Œ|K]üÏ)Ì·Æ×õÛî:§÷³ð$! ã{$s¶°Z~pý°|ó[eãW¯…YîñÖO9JÜ‚‰)¢ŸìW¶Ò¸d”œNŒt~¨…·ž¸RïÄ#{>ûÞû,ÕLë;&(Lq‡«)Âã0 YL^6G~ƒ,òh¦][œcïåv¬"¾¼±Vº/_ Ñ�òí›ûåÎáI™[^G=Þˆ=�8d‚B©åj"+T0w貞jˆ –øõád…Ä«8‚;–án¨È`õ”8ÍìY¨‰½ôÍ4‡ c>ÄwÈŠhZï�€Õ¸:¿5~0ƒ”©ž#t*QìÇ€9·ÔOíE#ò9&sÙ<€e¦ Ýøf°wT6Ä_êà™þ0© á¬�UC™`;-Mÿ¶8“ý›×ìá ¹º[¼Þ�Ù ã,|ìCö©]lÿœ>ÇËy¼óòm ÷ùÒ|_%ŽŒ“×ño,RGâ@ •6ÀÁ–[pgãá¸ÁÉ"˜ô‡5ŽœI£ÚÒcl°]e ‹�&èÚ:™ÄgÄù�UüD(p¶Qf-”ÕÕEމ\az…'€¢` xÒgÛ”/žÂ6W­T”;n’ù­¿/ð”?ªŸVH;ò?|¼¼ÑIT>�!ÞÐ*.•qÒ_'n·À GŽJƒÜ~Òë.•ŸÃWèòµ²ŒóÑï½ýÓrxt( óþ>iëm‚1¦)ZE±åù{ºÁä|x!MôG�ˆöŒ–g:’m÷9^õ°¼þÒGý=ƒ%Gÿ2ó1jgm(%�Ç¡òí2h¢uø¥Æ(4\pá/ódί‘ æ6ÓES ‰5vÔB¿93eŽë(‹WwóÞx6Úáø—E¶Ãõ{ø{8ì–cŽÐm46ËÛ·n•üõ÷Ê^Å\k…v¨°�RÇ©ŒÇ�ßãvJI8eå "ã%sžæažÜþ¤b§çqއðåGP4X„‡~Ô§H&@–Ä£GktÎË�i‰«â] dKsp+üç/‰�æÉ‹?x´Z>=©�ga�� [ãËÿëŸ3xqÌãù±r2÷ 9Hóo�b 5¨‡¾yÑö†! cRfð9Ì…�¨!$C˜1¢áêuÖFË? +•N79õÔSU]—5[W}5¾NS‘ž¨Ðø³­4f>yè5x€£§V{¹ÜÀð›ßß)Ïœ¿P~ùùͲ°ÆùÆÝ;8‚ChvE`Z´i0EÁø#íM&»qÒ•âýL€K¹âaTͼÀ>x/“ )cÅ;&WýG¬d„‰1ïE—`:,W¥M2ÿ ìT'8ÄCPøìEÎ�oorîý�òõ߆éÁ¹Üü*�0¹$qŸUtW¿çiwS“GžŸV°fG„Wa"»Épc²–ûEs®Þ`î/l"Bx£miÀ])èGóÉ‚žTÈ"ž(h¸o}b•ÆÕ¾+È8 1FEúRØÖXñSeŸ>ƒSUÚ|mæ©„ÜÆ*'qMVuFcQ¥½Kw‚šç³”þF7¸æÑ£=¶õPJ Qp­®°=űÙf¬;ö��¨ò<úa¹~›±­0þ¨Xrë€GS®®® h•Ë›nè”óëË”•~tJ‹ôI}œ¦õZ.¸å¨@CÙäøgÜ iÏÇ 5$³”©þ´?îS¾yù†ÇÐ …ÉnAö¯#ŸŸE:æ�¹>8´’°o´teŒË1bÍÊsË…�žð¯ ˜™/ßüö�Ëí-,“PPF¿C ´ÐAh”cUô³Êšè$.O'ðAø%‰ -À@«5[þ û»¬¢—óKÃòú‹çÊoüê•òÆ‹Ëe¾½ƒãÙ›×Z“‘ÞùÍqå˜áØEyi `±¼"Hí}¨ÀË5{ââm\$¦¬žª2}ªã¢ˆx®·Höƒ�£ÝŽ•˜OíCÚÕAˆ?èÈq­ ZW8ö¯”?ùÖ^yû:6íóô~e˜Ýþçsk†ýsI�Sµû}~¡°Ê:mÛ,�+9(7( ™iöºœ€ÖS¿ûÖ:!Qˆ¥WÁú !„ä­¥ÎÂÓ�€CV[wØC>*‹å½Ûƒò'ßx·\XúLyýÚfÙ»yÆM �oÉPKÜ1í*EÚ@IDAT²¹�J9¡È Äj?åÉöÄÄà$#ؽü÷ò]-|ú"ÊruŽŸè[ÄK…³(³zuCœtê2DÙàâq—�òË+xÄ—]œÞÍ/b6üÌ&líy„ûãòõwwË. «Q{µ4Ø“Úè°¢é?¦Á¤Ñ§ÍÀ8eú]9¾¸§MòÅ=`p2ì”}œñ­±Ô©³®q-˜4$'˜µÃ8.¯=O¿ Ðx g2Ÿdf"iꉂÐu,·î„eðjð³Î0þ¼±“_À6à\uq"äþIU ÿyU\0¯%Ê0+øaTëê-ž €ÜW«G:5 ‹ñ›ãG;öŒ5ž*T GŠL‘ü1®N“÷ußä5s“(m7eû˜‰Éì´˜ú‚ܺՆ¹ ÕÂ’¦}¥¼»=WþÉ×Þ+öí=üÿ<‹s8´fŒ -È´Ž›Ãp(°˜kc9§bÀÑç¯úOzîcÂr¶Ÿ…§ h$D·ÑY)Çý½r{g]ëðRô ýèÝís¦±þê0}_ÇM_s¾È˜à¹¦_Æ}`w–¤RÈjãÕÏøßÿýß_ý½ßû½ý{²Î"f €<úƒáÿÖãlå6 ¿L¾cNòì04Ü= c²uì»JÈ5÷ÖV©˜µdؘ� Æ�þdüò“¶Œëá`l�£�PŒ 6˜“yé,Áœõ}5y>­#…Šúýìú¤!_Çñà€=N›¶Ë÷Ø“{•³ßKe�=¸:þsEÎU¾þƒÓ ¥¼²'ñèo^ûŒN¼ˆ&ý„‰Î¨ šˆ›š�»ˆåžÅPP†h$CÆ+ˆ^µˆH^Ø ¢ñ ïcV– íŸcµfA£ wù5Ë«¬Ë¼q•oë”ïm�Ê{G¸Ö#_IºK^½Ï»J8f*¾#Zû”þT ˆï�‚iÖÓ ?V6sìw^AÀYeºh ÌžŒböØÛéÑMcVÝ…�ŽcE‰UM¾”±Í¶úÍ£ýRJ\0‡ÀÔþ ~Ñ…étˆçì ÓåX¥ú)î]eŠ~¶ñö¡Ì}®þ{UÀƒõŒŸï2¿×üX‹¯«”&iö¯ ¶ !}4 …€ÐÌ>|h²ÉËD²ŒÌ±Y÷‰ý<5^}šÐtSŸ Ö«B©®ê-=¶yØÅàƒs†ÑF�Œ:“ë„€/N±"Œð®B¨‡PïäJ¼¸'ÖXB5ÎÛ(i†.�£H¯²QÜqÿxŸ#/�YùÚÚ;(Mö3ë7`}�½é›+x«Ÿ/—/º…`æé‹˜¨ëpÐÌž{¯pÎ- 5MãÕ§)H#b|ŒI;Ž>a\KqsŒ3žçRxÕjJçv-„ÿ†[íŸP¢ì±=šŠ©ÿ§�,rôݯë 𦋹²³‹÷œ³h?~Ht,¬BâO‰sÜ<…À·6ë½ÿ"†xÌ÷�ó⨶X—6ç˫ϟÇáßÅò™ç±ÆÚ.ãcÍnYwz]ç#hj Bé t�+Ñi5çg%w%Î*—ep[õÂÁb›Ç�[Ûœüƒ�æÓ&4®’¸è©@ŸÇﳜÄ“˜ý«âëò¼:Äkîù)s,Ïuþ3^ü·u[f×S<=õçifw?G¿äª|‹Éß´1ùÄÈ¢ì¤pY&±X‡š :@¤¤_†È­ 1x%ïä Æ�w1ÔaòƬHvq6¶Ïêÿ>Š€¡¦bIVÎÔQ×eµQ\Ì’êšë—uêÙõQ!PÃW†£S]MÔiŠú½×è‰HHNx½Õå�2Úïá@�ïþöíÒFûí/^Ž~�ò £ßf5¡·Îo öLÆàZˆWÀ#W�5 ÓU6'±%V†©«ƒg˧e�B>ÏH²š ™?rÉÈ�Æq—2)á¨Fr €G‡0ÿÓ²„«ð1åîî¼ÏªÍZyëÙg�B`ì¾s�+öc5}Ø^�ÉË-#Oq¼žcÀ¸ž·c¤ÃQXú"´(„•ë·ðÎŽðº²ÒÆgÀ|¹ve£\á·¾±V ¥¡Ó3L¼m§àœÂ.ÔøÔÀz`“OÂ̯s(Á¼,&ñâÍ$™zÒ7ƙDZ7É›ùíoôhY¦SSwmM‰w´•oò 8Ža€@¨õ…ýå¿X]´Ù€­�‚õø$W÷ØOÞdëçÕ+¥\¼ø|ùãøý²ƒ ÝÇR«7 Ÿí?·h`£¥BÁ³ž?¢ÂI\õ»¬$áqQÛFÅÜ›2UM5 NßñŠ`þ̧à9øÆtË·R�u¶ø¨ÿÚáÙ»¼°¹VþÊ[—Ë[oàKæäV9Þù€ãrYúðxDö—è‹©ª‰û„™xoùAWmªoˆ0>€f:>ËôæÈÔü�¶æÕ†û&æ½HGŒ ùåŽ ó¬ŠÆ âU|& ™#šs«lƒY(['Ëåëlñû¿þìÇåýÕÒ8w‰±ô(3Ž~dÞmÑ@Çà‰�ZøikK˺£?¨36q‰0u¼Ifá‰CÀÓNäÅqzºßo–›»ýâIÜÓ`,Š#þÊ^GªYãTÎÛ§õøªú×/Äó¹ê_.�˾‹2þÆßø[ÿÕ�ã¾ÚÍË0ÿˬp2‰!ŽQÊðtÐúc¨Vã4/ ~¢s ‡ ƒð+,µ 21izÜbÒ@Xˆ¼šJvqÇJKŠ¢²¡uÓ(ï\?*·ŽÑ<²¢c™þΆӈ¼«[•Äè,Á¨‰ÉÙfO §�®{ýî|Ó)êwÙLù˜•³B°ÏñE0dçέÁª¡EÞÛ-·�Ê̓òùܳìŸ×O€«´L¬Ê6pØ5ÏJÉ<Âõx�U¼‚#:v¬£3à—ÌA2êž;¿J‰ZŠèÌÕW>83¼u¸— W•ÈÇ\”ûÙiŸÌH¬L8åÈì¤r*Œ(y§§ææÄšŸ¶B•óõHîiçmÛjòÁI¹pn©l,s9«ÒGû»ø8ÃŽGìñ=Z8˜æÉa¤¥L0PÆqv=E1‰�â¯PNˆš˜6òÁÍ9GŽVÈb qÍg\s˜ÞÿÉöz�É'fǸêu<.»ž¦û7ËEè7Ö—Êo½ø|yNl]¯¾HQs¬èÌͯ•¦µMŽE[p5M† AˆÑK{ù(Úîd¯reaq! ¿(yZsHú|«FИæÛi{ b¡ à`Ò½º»ßUà WšQ+Ä;Á§rÁvc*ÛæøÍÓ†ùcžñFÔ>â^ ø&2Ä÷«d¬ÏgW èÑnWý×8~ccƒ½Ý«±€ ¡8e<Œ™…»!@gñØ~D ±ß1µypÔCYË1`�ø}ê^{ûô9$2Aì)ÀBü‰¤ÁÊ: §ÞÝ}ocè[± ¡Èª D(V„Ó žn”nnƒÒœUI?ª¶6ÀÝ8g]ôàW×n±FÄX!2¶Qj7(´. ÁDZBâHâ°c�y ‡fø¨gÕsžñÞ(w¶å}欿¿O[zì“> Úê‰ -WËØŽàÙéq<(T°��·À©#q@¸ASÀ}WÀ[äm`�£¢²ÉwS{¶½‚Ÿ£G%KP ÚæwåpÞå;£¡óÃ+8GªSWiǃ~výÀ³Ž3!ãÍz6Ôéë÷^¥}´)h’©3“põÔ­´Œ +BÚï7¸Bl»Fq<(Vâ•4”Ù }ŸkáZåÙk8!-ݲ·»Í‘¬À²á<°B¾%¨•ªp—!�ˆð$ý¾fùžÖÂ6G¼ê+D4«-h Û+߆P?‡ÖÑ&îåiøŽ0‹§_¶]%½xïŽýE¬Æ¤f=¬ú(U‡à‹'Å´PJ5OvÊÒx·¼|q\>ÿòrùÒ¿ñ¹ryy¿4�Zڃݲ„ ¬õ¥•G�µ¡¡ ßÎz*©¢7¹æ?ã´jTàs\éñ*]´Ÿ¸œÄÒj©dW!î‰_Ž/ç¶!uy¦{?ú1Žcýæù�ûë±®É<ì‰òsÛûàóܵò£íùòÇ_»YþþŸü¨üpœ^»ZŽq xÜë–%Òµ“Q�eò¯ÅdÚFÁ¡ãÌÀ[â'8NÊÀÙhw…ÏÄÌ“‡€Ž;Z2‡°Å±=Ï8éî”ç×Úå7qV98xŸ®RÉ…¢l̘ka ¨'/·uŠ—±óƒÞ­}ƒÙåÞÇ3¸ÁÀäæßK Lsz•ÐbË<Ž·T‰ïÜU‹÷ÿògÎ@`fp³‡‡AàÿøêW×n|k‡ÆÈe»Âê专¾1xeØÆ�÷×´1 å³ïà \%dº"�½ƒ®£ÙžZ{'»^ÿ�q›~ÔEKLº„9[óÐ�mº;ÑÝÏ-böò!Hø>$Á+Φ1_|Plî#ì*#f2Y¬–÷`ÌÞŬó½S~ë­gÊ[/\ÆÜq“Û;å�ÌðIï¨teFt¤ÅÌÑ… Á5øâ Œ¼xÁ³ðK–Ká”zÅ0cSe܈¥-qD—oxCHÅ ± (¾ûÂÙ‹ Œ£L*™§Iã*Žk‹ýƒëå• .†Iyï½CÎ8.‡ìYÅï!í€ù$½ùœ¼dr î×lé$жDLþ15Uq¼å»Ì"«æ_ÓŸ¾õ.ŸIß䣥åŽON‚A�Ž­Γîí—ÍÅVyãüZyý<+–Lòx/( (\š2» 8vÌ—y>zÄŠû˜ST¢8ëˆJF^‡|!èѦ°°ÐÉšLkü¨†Û/³Õh¯â#„¡Â‰Ž×0�%}+Ϥá$C`~^ÉÄ’GƽhFëj¿Ž ñŠí‰qf¸N´`8„²!‹R²Ï™ßwà ˜J�楈žýù°û„n\Ì–BúÔ˜4U¿™8W<þ¦{œàHH¡KAÀ{K‰Z¹ÚûÜŸ Ob|p!M�Kùäßû\ÇÇÇÕÕ5ãr¶2*ëö;+¨0î%M§‰�ÓÛK3õë·¯ãkb®,tåågËÅ�¹réò[P¨±ÝF »~ï�õ¸,©§@½¢÷4�Íóó= ¾}ã»’Q–P%L³™Waîeªª&q“o4×£3ú±wPÇ ¦ ¬Ÿó¹£&©ßÕÉsœ'l³/“ò™Ž¶gfî]É×*g�^¡!-¾™ƒLËZŸ{ó Ê”…ò�¿¸ŽBeqᙎQ 8$­B¿ÎCCÉ-ð˜S�³öNTî.Fé"Wâ‘õWmˆš¥dÖ%Ý‚F©�†EÎ(™jp+к­hÈ~ç§ÔÕCn‘g|èŒOÊ: Ìמ»X~û Ï••Æq5Y´Ó2JŽ¥„ÂA?'!G' §{ÖÙÞˆË×ÑÚÌLÛ©×h…ÿØ2P•›ƒ‰:À½¨9uXN]³3è ”Ñ€öCÞ×ÖÖcN¾~ÜÞ( ^*_ý‹íòµï핯ÿà ìŽ.”Îú¹r@Ž»‡݈b¥ròo5Ìlñôß*Ä÷ûiÖoªw³ËÓ�øáÜí"D—~=bé‹ã¹÷ ]P2Æ”ø rÀ;èÇÉ1¾/‚Ûä ›¯–Wã+d½û:�ȤòQ �1àøpløO+u6T”�:åïýÁß[ÿ›¿û7w,yN!0SœÂbv÷!ïÿw®¼Å$ÄøtðÉ`$“‘™s@ž4úëÁ]½ª»Mx{5£“ Ä$˜Ç ˜`¢pUs®Æ|oï˜=FìÿWùà„ÌÝi}³»ŸÈ4…ÙAp§ï�Ñ&·]¥Ÿ[+‡ÝNy÷§‡eïö g¹â0è`©üÒs›åü*+ƒ[¬ä픫ÿ®ð/48FAÕè1ÌÈeBa°ÙÜE€D ¦FÌm$LP#¶’”1Œ]0L9�S3®‚ä1‘D\0kàZà¼8ŒIc2f¸˜~Œ2A¤7žŸ«K¬ðõF'å¹�õò/¿õrYX¹]þôí›åƒƒ˜øs˜ÓÃ@¹éD…XÁúy…׺üo¾§l…+×;mG¬@E�®Bº”íª9üc|¶,¿�5vÏóÀÜŸ–œ`q�ÀýÚæfyýÒ…r Ë…Ö!–QeV{¤áöZL®shþù~ôr.ñÆ·L¯a†‡ â¾k-•NÎ(lAþâKy2ÈŒ+#M?j>HÚ6N¡â$˜tMò£ýl4ù�t:Š óypòV€ ÆÜ\À¤V®„R‘†*ìûÓñßÊÊJY\\ ‹iSЭh×ìÏÇ�€0WqfÏ‚x?Ý÷�_C”B?סVt(V�ïÓwâŸ-úY†ÄèÓ³üüÎ|7ÄŠf€ðwt,½Bvt{©œ_[*—/•réÒ9ü4p*Úä¤�sà#Ö9'GЫZ;†^pÁ*«ÿTÒ=Ù+‡'�»Qg̃2aàµnOueLï“ s$ãþãK¼_°u|_?×Wãx?y¬Ë1âlHº�ñµàýæ°0½c?i‡+âY,PãØÀÍ lÓ¸ ‰RÁw³lí3°z n¨ t»XX` Õ@ÐQ9€TêÑ�mA›_Ц¤/ÞÛâfCÁ\HAZ€Wk'ˆ»qê!‡Ð(O—ÐZ«�uÛbÚnoÛg5ÿ7ç›å‹o¾Àïr¹zšÙ?†j’ŸJq9rN@øÉ3Ýä‘SUÜ%¼Nñœj(¯Ò‘�œ÷˜…ÂÒk ·…ÅòŠåû…�¯¨z)6fŽðœì²-¬ËþoT'ôóKcå|¹µÓ.ï¿?.üÏî”ï¿w\®ã§Åšs(bZ(Ì/LnNØ$ˆA-¹`Í¡CϽš¹`ÿà˜«ZEVF¢ì‡·yöö_\¸j‡nqètþk SÔÆœ¬ô–ar5“•o|g§ìm¿WvߺX>ÿ ó æç˜xw`¦:��É+ kJ+;3Âo@¿‹9;ek²«z7ü�S“Î!æ¹ÁȸW\Æ \�x\Žù„?2TáÀWqŸI"bp­¦#‡OåÚ&ó0�½.û�™ˆ^Ú¸X:¯_�‰ê•or^õû8=lÍ](=ºÝÀ1y‘6î©Ðá`ƒê•TS,›iùM`âê¼Yk•ßò(Ã2ë�JãHÉ7/#0Ïõ�ÊÛ.arüÚ…óå•‹å"«3ó0uîÑÔÌÔ|~+êXE V5E†Qî V¾ÑŸeÖc:JR¶YAkwM\U ôø(Ù€± òàË~*ýüiÖ3N¡x¯Gh“ñM¡(äè¶\ù‡‘EÑã¯Ñ䊃·´$°ïë<™O%‚«p ` ÿ®ú+üŸ;w.„©i €û3 5$g×G†@ÐûÄ‘#S@~pIÞ–RLÇ©±þTˆ&? QæÙ,ÿø¬é~�ù‹UæÀUÆK‡}²!8‚øR$Í­ww9Òv¯_n\¿…ЇÓðp®\»¶Â–”RVXÁn¶¡²=~ö²kÉäö£ÎšÂ/�ïq`‰ïU\@€ñÄèKhp¥Né^ЄXEu¬$•!Ñ£‡¨wúû‰°&ÁûHTÅL¿Ë¨ ðñ®×¶µÎ?� “{WÜý„cá7¨¢�1£ <éu�p¸TÞ|ƒUi”}ùÝ÷ÊO¯ß�4°¢¸B/$Ó,°&k±u@‘»ãþ+Û|ìc’ª¯Y¢ˆx)µÿ‚þÑdáŽ$¹ö!œAÉ)Ok#O*Ñ� .Rñy£0Ì<ÖÚ-›ë£ò…_¾\þê^,WÖ˜÷o”%¶2´¡½Au%šä ZËñ�Æ¢:€Ž/Øï†mÐ'ükÐÚûrNqR‡®þÓ±`Zx ê×÷ŽJv×pÝß¼{'(.cC,ÚúÍsä¦ìŸ+úý›xûÿqùáûøgÆókËœ*Cë™oÜvÅV††{ÇcNÈÖÌþþüA`^ˆMâƒJwŸwQLÞÙŸ+WÎ/Á3Ȉ§¤ º$ž%&F¾à-( FÉ)Àõ*yÄÔã=¯ÖeYNÜóœèoAYc(®ÇŽÆâ΋™  yúg¦8…ÅìîC ÐÅF{<Èýl±J_�ZÆ\=÷0Wd¨´“»·^Cð÷¾bȸjß–˜I`f ó™C8œ¤»—YÇLž«Þg%¥Å*d¬œºt\·ƒ»Yøù‚À�¬å>XõÀ2<ÇvÐwÚ¬êϯâ1v„þ·oÜ*»ÿôÝrcwžóž7ÊÕK¬ê°'rŽ}Üsxú†OR%TÁ—*u"ÔÇz$4ÓÌ$Éâ‚Xâ\š29NþÔ“S\ÁÃàJ¹ò¦ÿ\çu(B×�û˜ ¯â²?‚¶ÌçÆòßqR¶¶\.³þ_ëj¹¶4(ÿèï”wºøàsß> =mwFüwßtì/°0Ú©ÀOá”kD2mN¬ÆãIž,2&î}kY^)ÄŒñ¬PÐDÑáœéeV™®±úýÆ¥óaö�þhwYaÒ´WêÂÖ˜œ2~(h† íÌíÏZ73P'TØ]µðï¾ÿåååÉÞÿ ¨Ó>7á,<6²–Ž“ÀS¿Î�]ø}3:8ì7Ћ_\€Û„Ĺø�&°?óp_š(É7*œ†¬:‹ù©`\êñ˘!ÎMû'}Ì¢ûe!··ºå'ïÞÁ`\^~õ+Øsœ*€% ~ Ž��Xeã¹fYF˜±J]“ªü¶”ÕW9öùFþÇxŒÉÙÉU3Y?ŸAäªy“*Ó#\¤ §t%Ë¡äIƒ¦á{.u%÷ÄÖY¦_Øþ©þÊ1iB¾Õê½B‡’–§pZ±qB@ŸãXU|lpnÞë¯jåsÜØÆ»ÀÏŠP(CŸÚЭ4 · з`9�@O*åBÐÜúÛdR€[8¾ãNCQƒBJÿ <ñsëÓ ¬£ˆAÐêPô²Ï|0„M©ÝÛ)Ï=3_~ë×_)Ÿ{í|Y™Ûa?ý>NeQò𙃂¾MUѪu ëôŒ¸�$‰{2 7ÿÄ/^�¹×�_ iç˜Ø+ ÝÒˆ*S rŽz.xï�sÕU¡”m²EAÅðð ·~¬Q°¨k-]aÞ½V¾Ã¶½ÿû«ï”¯}w»Ü>œ/»C”«‹W™GØÚ·�² ç¶æwÆã –MöûÇ'ÔÍ›]n àì-ƹu&¬õMøòÝC,Á¥Ëç˜Âá#À±ô,FÄä�cZ´Í_b­/#ž«t¬÷^Å곡Æó|£üŽEýw°q6ýìIÌ3<øHøÊW¾Òþà]ÖhqŠ£Ã6Cšý8 ËÌ1Hs”WåU’K Xä6_°D–@>29[׳€ex/c� SŒÊ€z�Xý88FÏÒÂó²ÚF“ÏÂÏ+ Ð:Í‚q[tìÔÃD¶“1ÇD2‡s$dq`ÈJÎO9þñèÛ·ÊÍ£­òÖ/Ÿ/o<¡\„Inàn¬§h]Ê�á×´Y�2y/Š‚Oq½“�H#£È£É& â^†J„å½ÁÀÓ©Þa ÿðk›1J�”qZ7¿$Üÿ/��i-8+Ó‰ËDì½­'nÛÉÏŽ�vz±E>[Ú$|MTõ«õÀÂþ L¡Õµx¦;¤ø¥Ð¯çÿÜ �«dv€ šÊ/* €J€yüH¸¨ó?ÞÛש°}³ðHçê UWúXÓüúH Þ€“UâSÜ“RPÞL¿¯6–mñ^ÛšZ‹,u]‘gª�wù˜�ÕEîúžñ êQ_(ÀƒYζ‰ÍZÑ8×) »­­Çö¥Þn·ììÑþ.N÷þ—Êó/l–gŸ]/çYU[ÂÛ=ä.”‹¬(»7ÜÁì¸ã'–8%Üûh³*ÁUZ"| ù—·�êo5kTPÑ©I…U¼ï¡ž*ûiÿfÞÓç„¡TãÛƒŽ¤‚Rv")�Ïì«GÏÑãŒò.÷¹åõò+¿|¡¬,!ˆâ;ð?ØCI+N.’Ë3æ�tª/mõI€ô7àZ“´YŸ(|õ§ä÷¾TÈûÚéß<EšD=ú¹Az´_æ›å ¦ýú¯½X>ûÆÅ²òÿ³÷&±–&×�^ÜéÍïåœU™5,²ÄQÍ–ÔRÃV-xc{e€m½ðÊ‚aÀ^ÚK6¼kx×0ºØ€¼lÂ^FÃ� £Ý’IY”8×À"«XUY••óË7Owò÷�óÇ}7‡II�|7ÞûïÌÃ9眈81¿Sú»·XeGAÞ+¨\¹ ©ÕZÙŽž��tÔÕŒíw *:5ÛÊv #ôjLÚ#5ÊÚöŒ´eE� š'H@ý,Ö ;0©p Ž|ҾΓ*ùŒüùêC—ͯ]*;såúÍNyýÊ{廯o—WÞÙ+w�V�ÆŸ/]ÆÕMŽVŒ8^f{-Îs­& :V¹+]7vá§™j gïG¨»Â £§Ë­`‹…›ìjÚ¶æ�SBb£oC`Ú��4‰ÿú§¯ï€åøÔÝQ•tÉD‘œ»XZ<Ž­ßú¾µò�ÿò;¦zr]f€“Û÷Ÿªæíá™ÿxpx‡y†Lj"±“l ßtJ�xøáÑà$qptN4¬¨IlÃBœ¹’˜)å昒aI¨Ï ‰ 8ÛÜ廳�dÑ•¥ÖPV3žnüGÌѹŠ%A£Â„Kž“d2Œ¹Z�³Ý=4 ï¡™¾Ç¶ÉÕ…³e�¯õ×o—[»½rws±¼|¹W.­vË™E´Ós÷˜U…Œ-§=cgÌ•P*”ÈI˜sõ¦âZ9V°„Ë€G,1{�Î$Áøán˜ç;-Nj¢)½I`«. ÈFsŸÛ Æ0�g—9mOýö¶¯•Ó0÷Å œÀ\*oÞ>*op“Ûv˸¢ â¸¢ÈFýæ"~ÄmfM>QÞÔ†?‰3ËZ Xm99!&a£6 ½óþâ™Åòç–ËçPBv~ŽsÆ(ì"‘hަ�‰ <æ=ä‰3ÕÔ’!ð�ÕtVȆlc�¶Œ& ¬„wÒu¥Ñ{­Ç^¿E?XŽ('éD™‚‹Ïrëc$2c‡}Äá œøc•(aƒä(ŒFƒ‚lÅvWþyX‘Ê'‰mBPÊêƒôBb¡2�uõß­ÿÚÞ ºè'í5l%4Lkfl� Ýíºè;ÞÙ�våÄ^I9ÛÞ¿^Ø—|~”ùH3yÀd‚9‡0í°’àá¿pø˜ŒH÷ÃZˆ&08;Ô„=Æ6˜õZ–„+ �³Ü¶‹Â�,–»Û`ÊŒ¶9ä|·õî^yïêÛåxúôÓËå'N£0�OæcjuÔ!§CãzSwш·¶5~6r2©2‰ºÉt‰�ÚUí@RalÒtüŒÎk¾ß_÷çß”é!ÍZÛLàšØÉËa$ <‚q� À˜ÄP{\W?ÌÆÛ[ãÙ‹Ï­"Hyáìzyÿ*sÊ:BO„ÍmŽ,¹óÊ�iö™Õ%Š”éÛvŒk*‹Ý‹ä•PíØbކsüS€IXh—9¶a¬Ýq5býÿÜŽÒ.ç——ºÎ—ßýê“åó/=FèmVÉop…ìÝ1QQ”׉t2M‚æPr–ßUa›äønûdýsfhÚ´‰?y9NKÏáíxÝBÃdAÀ±±Ò–„¼ÔŸ z<üÐ>c„º}®²Ü¸½\Þ½5*?xíFùÞk7ËÕ-ÚeéR鮞)»‚sÊ>7úŒGÔ ½;Àõ�scm®T¿ëpŒ‚6LJ5³<2-¼…x`á¦Õc#ß›{Ãr ÀÝC`¼Ç H,ʈ1.Ä›ð�Kâ«6í§ÝÐ:ò„Õ±QHcœ˜GšT«»ãÀ˜ñV_…fÝÁ"¾—†ÿÇQÃÏÞ³3ø„-0tÿň«•¸ð“IÂÉOÜÙx7 áPÝ|Ç/ç q=xµ‡a2L|FBH˜@NÆ Ð›Ëue¥ Ð�”žúq¾r&Èf|4%X<ãM?B…ô¼³{qFÌUe °VÅ!‚؉耿 sÖ뜆pX)o_;*ï]¹R®~~µ|ñùÕòòsçÊ™%ˆl¯€‚Ø[„yGõÄ »U€ÙÐ +XˆžÛt»¨yñ“Å@îj ó\ágJi`4Ü&À«fÒþ!¨c—1áÔˆ›gÏ[ec{«,@ø/ÀÄXÝ“!uÕNBêèànùw¾ül9ý×'íß)ãý¶Lzg¹“B”VŹ: ]¬HmÞÇSŸÂ†<Ó€€…ñ¡H¼eüóQé„pó­ßò`¯|åòùò…3 廯{ÛL œIEhÑï÷ØjŒ BN’Z€Æ¶è³úîu~}‰Z.îÈ+öÄm…sö­´j�ÒÆ2î€@fÅÀ$íÛ»–;¿]ÙOÁG|[ ú4n †íâYØÜ’ ïPG‚•AB¢#¡ �ÐÿcHö íA9z+®úûTíÿ†õÑ?“HeöóI[` ˆ8ò€ë/éÀcG7é$ÜWXÒ¹>º‰»¸ðÔ÷/™}D¯éùQËqœîˆAAX ØoŠ2û#Õ¸Ó�w’ÊãœïÄ5ñüÉœ+‡àMÆÉßë7÷8»® `­<ÿü3åÙ§»åò³^‰é¬h2TΘ±u¼×Å¡Äbq�°¡;ÄjÚŒXŸÅ$žŒÝ1¦¾€¨c!ó ÁBÌøYõ¦m2wüµ„± "_õÝxù¬ íEݽ9!$»_=Öå +7 Ûý¹ÊM¦ŸU]¯-ò>Ÿ)ÿæ‡WÊ+on”w®îpÙâÙÒEà6ÂÞ}Žj¶˜Ëûìrà”A½ -v?p´¬7ZâšF¶_Ð.ãPfXË4{?J-¨æ©%“)Ûa¾�\çîa§œâ¨RheÜ 4�¡rº¾9–ïÇþ‚d|èéßÄÀ=Æ ÐöÇyßq0ñÂò¤`‹Eh)ƼÿÏ™€F¨ÆÙfff-ð±-pçÖöé.ßyîßß0¡B¶@øÇÝêÄQ�œDAqòøI²C”Ec²ÔNÀ@‚ÁCÆ_Q´’?ý�`ò¼ÿü ÊàXd¼ªâ&àÕSg8c„ĦJdŸ™G³‚xæ™DBs=’™µV€Ut[úÐÍn§Cx Fè`åbÔ:_¾÷ÓÛåÝ÷7Ëkoí•/½¸† à, ”ΰ•v;VN­,•nŽpåe‰»‡çÙÖéñò1y‘Âa7Ð CNbÀeÌ|KÀ5@0K9“$¾ÀKxÙSï³5ìg³L/pëÍâëËPûAÌ·š#-Þ÷=†P_`õzoëzù<[|ÏýyµòÃ7¯•·nÝ@1à2g'ÏAT±}•ð}Êãb"XbNÑF¦J”dXN©§úFì¢(¬º,CùŽÐCÐ!�E5êsÔ  QúÄã(T¼üùòÕ³­rŠí±cîï•™nqîÔ[ H�í›ì¢ WÑTÜD•(ýÃN‹ÄñÁc€‚ÈÉØ|CR»µYÍÕmÚcF€w°{ïvâoˆ½ƒÁ¶ cé ÚÛ=þ`~Œ#2I¬H?CÞÙN|m„ I#ߨÞgteüègòKgzÅ–+v–ï€+5kk«h\¿#u–-ÕgÃï £¶Ÿ‚�¬K "ÂìçC[ ‰2qExÏv×®°Åwu#XÂ=ñÃYû:ã˜�a«©ö�ô'x”y‹“yìÅM9ï%lŠï¦ëª¼ÇÜéQõÒÔ|?ÝÛòšËq¹ïµÃã4²é‚�ÞCÈ$4“¡³"aÔéÏ'V™Á VÇiFFJ æk}cPî~ÿ­òƒïï—¯}é‰òø…åréÒRYåÈ-bTpËv÷Ìy–K<£;¨³ã‚ƒŸ(ǘŽæ5™zŸÑÄàx_\Ý¢]lïê§E÷ûLô¿Äý±»$Á±©iå;Ãe:ÚsÕÝú’—c/y˜Ð£•†±9¨»öEV¥Õ{v8{‰±çèšNyí§×9VÁ®³”µrþ}sçnYCã.zúGC˜V®Ÿ�6#:°ë©â–jñ�„oÅnÁ÷íÍ%mÝ»æ“Ú(ZssÍ©ùýòô“§ÊW¾òtù�VÊ…å Õ€é3Kßa…¼«��]�=ëïË+R†d�Õ…ÚÖÑ]RÎ>¶E¶Ñq3g;Õ6‰@“q„1˜ñÞÉutÄÜЧ䬃úUÆ*V]qôrá;ÌÝü¹2˜;S>¸Ó)¯¼¾^~úæ{åçWvˆ¾Fk>γ„ðÞ£T]æ Ú[úÐ,„MÂefÞ28WPЬפP3Ë#ÕÀ øà±ÍæMé„1‹Ý¥3åêænìx欃Ç:÷wÊ2ô—{qŽ˜‡W WŽÐyº2z*è*q¼Ö5)”wnÉGÌ®&h ÇáU\þ] âaÈL,èUBØÊqÄåwöΘ f�ð Z€õ‡Áw9ëæoï`W .*:ùˆµ$Ã+ÝykoRö­{œý JÄàÆcÒ±%ÊB:Z7¯¢‘1dÑŸ«ß`„�z!ê•®Ò›IdÜd4{=Z- c'CŸÊ¬Å Ç %r‘ §«ÔÌmè2½¬¡O ³0 (+:ÚÞ,[¿Ø,7îÜ.o¿×B°Z>÷ôW*],¬j«!P¥rGž'�ÛÅ“(„ðaò©+ë°ÇBut€�4òÓøÖIÂÌ­¶é \FÙHÏ\(lë5v'5Ó ²˜–hCöÖY…î—•3«eÂs•«÷Nýâfyíý»Zï”…Sl … X`[ð(¶“–9RnÏcr|•ö‘yPx¹LòŸæØz7Ï LŸ+çA¾y‰½Ε’çÅsKåÅKlƒ=·XÖwËúl Yq^‰gN¨0ÞäÑ!Ý~}> |ú0 ¤ÉöªøÄ0åt%�µ%l–ò€®\…�á€i²Ri«Øç™­ ’–ߊ2-I `×YbØÕ`Çö �pä·5.O2vŽ-ö±ÈK¦Ëjþ_âpæ »qgæÓ¶Àˆøaö{Ò´�ýçÝôvxÇwAãרï‰;õawWAÁÄ9 `? ¢0 ÒOŒ~N玟á'2|H<óÁ/²hìñaÐÇ‚å šnºûèž�-”¡Ó/K/v9‚ŒË÷¾ÿór½Ï+°-ðVaÀ†lˆp/ÎÍË”:ÛLŒ½ŸÍXžÀ»ûSÈ’¦kîþ Æ¥ÙÍ&Žÿ„{ \ã:èÆ{ .¢õðHfØÖ2�oŠ�§½ŽÕ¤ÇXéØâܳt§WåFÎlÉGÀÑ ác&ãþÇ·öØvÙ]¹ŒðüT¹ºÑ*?þÙVùÁëå­÷ûåÎ&óNçqæP;ªë…z8�·ƒùw‡%"ã˜Ói�‘Â.„cº/®6Œ2Í~µº…4`É>¸áÖŸæm�€K‹À’Â-i|i£æ#Ü >‚¶Hú‘s¯9Uè­vÞ÷Œ;ºk€÷&-ÇqjÌbQ(!fçòýÑõþðÿP œZ`&˜�ÁǶÀ¿ù?_ñêÛL ÞŸÈ´‘äjbRÅ_»¨*n&^ƒ�Xts> ÜäC‡ß2F†�¥¹âˆú²dˆ"2Ïÿ»ýßGfÊ –�$30àÌ<‚-àÊE‹-ÛÙ�씨a°ŽÝI5Ðÿ2vVNâJ´³ç¢ríúÜ+ Lì÷Ê6Ìþ�»‡l•”nöËS��Ë3—WÑÀUoËn¿Üf¥c·,°µ±ü¸š³ËÊN0‘B3pph6ZøV8�Jæ^Aü£ Üê#ÙðÑ𣌳ª4vËíì h+Òˆ qiNáÄvœ?¿°¸Rz¬-£8ð wƒ¿{k—g3n8b+ýÂ/âIðòŒÁÃyάö9ZÐGqUü¡õÞÒ´Xåô ²9Ê1Ã<7Ü/+HÁŸ>½\^~æBy汕òÛRQ86ç CÚ:jE�i ªgeH $u{hÔDb”pCwf¸ÊC¥Rˆg …ïˆMœ®8Л咰eú9JZ¬±K!#ÙËìWckÏö�þ·šH;‰lÄéfÿà-smB–!„IöqcÅ—ädþÏœAÑáÅ‹ñVó&k^3óYZÀž±õì®è²ûìB€|¦F\ˆÐ†ÅføÄ™&€n<cÛ¹�9¶e8S«&昛®a%B‡eÚÜ�`Hý„—LI8ùåM-ÕtZÕÞ¼Ío’W oÎ-Lõê$îwÃàágì<ª¤ÍqЧy+4Ótzkì8â¨Ñ{å­w®—Ǹ?î™g.–§ŸZÆi{Vg=R5@ ©B€.z\•vwM¥©�ç‘Îgÿ‰Ñí¾è–·©{ø`¯ÀqOHû×p¦a]ýÕÍ·¦Æ3L>Ç~ŽK¶—mK\Bd¿:þ4ß¼5Ž(áÈ�ùEò8ylyNÜæV™Åò{ïù²ˆðäû?¹ÂêÿVYZy‚k‡QʸG<û…ñt‘6\œC�ÂVþt"õæ<&¥âY²p˼g¡O{ÔcK0:—Ÿê1=V¾ðÂãå…gΖsgÜ’|³ôwn—Õyú€y@V%–‰1þÑ&JWEžIYrÛÁò~Ònºi껩îäû¸Î™V†5—#VWB+?`X˜#¼e¢�[�x:‹g;—Ê7Jyýý½ò÷î"˜Þ/×·Ûå°½Êÿµ8" `¸�À G$ïCHAy©†Ìþ�¶±:êuÙ‘Çœä-*Å}(hXÄ™ù·¼Ä,Ç)à…¾u™ÆE;îe*[h)½¾‰"@è’3¬öwÝ ;÷€o鞸3€B¸­°+ŒW“îâüdø /`fÚ »ß>¢‹CÂä(PŒ§.X:ÆvËJçòo’Äwk'ý=œtøõgkÏÿ8ònª�DÝ6÷©ƒÌà�¸wœPº‹„ âJø9ñvŠÔ^½ÒE¤æiVüƬºX8& c!p˜œ8�çTéª�[ï޳ŸÙ™ ç=³�‰ � Ön K↡If‘ ’9ºAô¢�ã^—§n¹÷d÷ HJÿLÙ‚Áÿ9篯ﰅ~§üæW.”ž^(ϱâ²ÊƒÐñ|e‹+[\S'«¹ž„Wa[†4 v‹lØ€eaQ õõaÓE-`Z/=âÆÇ0Õ$¶Ì–ø´î{]à ½ó¦¼pâ} Fý`\~ôÆ»q¦nk¯ ÁTNåÕ9nÁè°µ¸z®ÜÞÜ+7ïn—-¥sÝÂ݉˜¨e�¶ê@Ø-3-?uz¡|™›¾py­¬¢9¿·Ë5Šj×  Ñò4€Ñ<¾Ä4î±-ß­¨ÚΑžgïݽà.ŠXi�~±’øûF‚Ø-¬VYá�n\ge{.šœ¡ I²�.‰"ÂÚ^–ÁΈ²DƒßÇ Ðz©&˜?Ò·ÿ¢&!¶—SÏ`+èq\hå_.\@«ú¹²„BF·g=[2•Ú¯†)¬%;oÇñÚ„Ú£ûtÂ>ÑJN?FÿØŸþÇ·øå'?†·Ï÷pø ?‘FÀ`¦™·X"á@8æ~•&³±ð¤êGu˜~ã§uŠüý¦, =m“ÚjÀª)¥Ñ�2ƒOñžØq7:ñÇí%pm {Ÿ›ö‚Þ)wî°ýöÚéráüryñEu¦°bÍŽ T¯µS¹¦G­Ä‹\m>Î±Éø¾š>½·bĵ|–ý~s¿›ã€uÓ½¦…•âDsâfŸ¥]÷¦I‡v !^Æw¬É´l3ÂDÜLß4j: …ýïÑ&Û»·¹r–]èCévŸ€)Þ)¯½q÷kemá±²»‹âpèžÕE…Íåhwƒ±ã�{ÎKùâËO Œ èž`¼UТ`sžpÆçÔÒ|¹pŠ#çWÊ©eUÑn•WüõØ^¿¼DÝœ‡&]ÚÈ~Îoëb…Ä ˜§hÏ †Szoûá&š›ï„yÛ1¿ÓÂGø±#j~Íf€¶J¸ð¨ô€�û¬èí/—ï½r·¼õÁ¨¼öîAy�Sb»»-¬B›Áè5sZÕB[盀kq[É®9§S^vŒåÎ-|Æ}áŒõ›™G®„¹¡°m 0Ñ;çÐÁ &w8>^¢S¨çE„c„&ìw¡7+s8°’oÒÔîï€],ÇatËØæ=óM(J“óŽ˜üJ0ÿê÷ÐÞjÿ3ýN�ý0Í̬>¦ö÷ÿÝñÐ{aÝNÃz+«ŒnÞuÂÍu�U|¬ÈjzØë«ñj�V�œ�LÀ9Äo'ëd.ôó[?�äÊÿšÔ�<í<šV¬tFd˜™G°ä+œÈæ}òè ÖÖG‡3ÿ©±HȢǸ3£WÅTNIøn‹/” îï—�ƒ…rëÏï–>˜+_üÜryþr·<Á ð¯ÑÚ¿[Žv6Ëi¶�K›Z(ÞL:1ϸÒD˜œˆ('''˜ÛÊ4#[Êa�´$ê%èd” 9f‚žãì-~°ÏÔE€ ¼XUb“ZhE.Sà“EòvY‚ˆ¼ø›Ï”=nIØF©Òns¦º/æ8O§¶ðÕµÅrýÎryóýQùŵ۬Îp“À!Ã:çî=ÿ¼·µQ–Ùü Ûþ¿üÔùò2ÚþÏuöË×ÿµ8—Ú±üÔOß Ê¤Ó¸”gò£¯¦‡rÂ݃vyëÊayóÊíò�¿\GýXÙé?U[èn¡¿âªÞ²Ëf=½FÐþ±ìàX¬ôSæ`¸,;‹EþIß©ÓáSÛÛZBQ¥@Ýgæm�ŠY±/h”žص»×ïq J�÷X¨YãÚcðÁ› „Ç8º -¯"T³„ùé&žH{§Õ¯Â­è"ìèoœcxu<0A’V��t$Ì¿‹ŠÌ÷¿]S›½]›™Y |L  �¼Åb‡•v0wš-ð0Áœë\ên³ëq›iB8’ªøXóº,Yüúö\AÒè7d‚~©�whke·‚zÆÑ-žAðÊ™c7Ä'Üîr.ßòŽûEy�8WÚa«þ�»Ôa~qµ  Ùš:`›¥B‰X�-(d÷Êų�ryáL¹ÌÕ˯¾w«¼}k+ŽCŒ(Û<“î%Ý}ñÙK\™x¦œoí—îî�²Øß�­Ÿìª2 xÝ”;‚±!%”É LC¤¢}`uñ¼ß<¸§þ(%t¡ð�29 €0n3Î׉©šò†|¢5�¨UHfûÅn"Ó!.ù…N‹Bò §4:`"ŸÆ;GŒcÀhy E>ı'æØö¿´Äy[”y%óÏ8æÊ?Œ’×M*zɜ̧f‰Ï~~-`›FÛÊÑGôsÓ�&¯›Ÿµíý~˜Ý°n²ßbÇÖ©äat�áOÔ.§}3¯Oõã}jͦCš{}¦Ýµ ßdª€Yrýš8ÁôÕr6nÞ�Ž5˜IüVYYEØÉN¦�=Îöƒ?=ó(Ù ätgç ü-ígÏÌ—'¹:ðé§Î¡# ƒ %ªÃl`Hó¶íŸÅ4e<.T“Ȥ�|c�zÝŸ~ÖSf½V*Q°†wD®é`§Ì†«h;'h–€°>:¶š¦ãm¾¥2m,&K"¹óÁ1˜cA ˆ Ë.)×/‘‘”Ås§Ë—^B sÓ_üùT5¢K…ËìËÙSýò —ÊW¿Êvþ§Ï”´÷{×y—:x,iÄÕµŽgnyî2Î{~Qáje�s(TɃ<‚‚=nYpœ€û´Fá˜×(C­1;*…ÌŒÂ|ëK\×gÛäîÃi2fT™¯|ë6�â”ëÚ•{½n£8SöŸ¯|°_^{çnùáœó¿ŠÀþã×OQ �šq ^� —ç] †yWn UÇÖÓr»¥€– œ÷˜ÑÝ ¢|SÅ1•™y´Z@ Õ¸°Ïb†;CZ…Ž\Ó¼»�ž”D^จHëü8k’‡ @*6Äaƒäã|ÉFXÃçÜ‘y¥Ïô¯ca E",^™áƒù—VÊ'  ÷½H1�؉²73ʉªó¬²Ÿ¢þäOþdyý Û„;œÛE²ç€ŒÒ»ŽÛzDÞŠN ~úš<�Ü`›œ|ÎÆäžÈ-aÈÄ-UâèÀj*ŽG\‰³ÇD%ÿßVÃ'“¥ÖqÙŽ™y4[ 5À¢}¶¬¢ÝÕÿµµ•†ù‡P7L{*‘ỚêV¿gï_®j['qW‘*ÓÔoºí?yNŽÇ}f¼éoºPv÷Éüä!'U¨¼/žÓÅš„除°žÓÏtR†7@&Ÿ`[\¯Yr*t„é—éœcÜ�)<âÖ“>Z¶;Œ»ÛèFA—È­›åÅ+O=…ž„…ý™sëº åg1äŸM_+WßMbQÅûÜ¢žÇ™%óo›Ô~cL¹?žDFÓ>Ù·ùcmþ óï¼à á�3ü³ž9.øW’Yf7Õà`'ndYdì°;j÷`Pί­•S_{±ìÞ•÷¯Ð~7ůýY4øŸç('�Ç¥?'aâ•Ä1/eùÝåÖxÇóG¶ºŒá^[Üçöû§«b×Fà¡ 2†ëkó SŽDYßʰÄûÝF1�­!$7|ÔÑùQÿicû`ˆBUkÛ85¯ô§ßGcw&Ì—­Í%ŽÎ Êw_?(?z{Àvÿ•²;FÙîÒšF8VƱ…v4P�ØÅÅoî{ŸGØ®î¯ !”ðê@g?ØAÆVævÚ °Éü‹ãÐ�Š\bž¥¯œß[¦¦h³×¿õ-PûMÒ>iwirþÞà.ô+­ßE‡Ñ!»@¼U‚97¨i$çßûÆíã ›2aª36Hš‰É�5sC.ç–8"™˜ÿclÐ�ˆÒ1´Ê·þè[kßøÃopïæÌÌ3øÈ˜¯þ7ƒ£=Ø0mˆ ŽŠ‰íü‹Š9ñLЮAJ¿ó1ŒvþŠÌ ~Ëðůs 2„D�Hì.!ín[”)Qq[,"=ÖŒjô™yäZ€Îkˆ7Å'ŒØ©</<Á¨5nQ?ã8Øñ¬’³…]‚i4V#3›½îE"e~Å4 åÎÎç1—ØÒ¹TöF»å•wo–w?¸VÞ¾~T¾úüZùû/_æœü:�£AÒegA›t‚X1‡€ózM²Ç_eFù-<‚”3®O ¦ÖÃÂu…B®p*�Äå·ÌÂýœ+ÿz ÌjÇ7„- å«‹X �;ÜéÂ7‚KF{~E\ÙC›õ°œë®–/_^fw÷ƒ¯v˵›w¹ë¥`�su‰2±-¸u„r+ïæ¥ û‡ûè Sû“³³8é9É&²�µÄŽH$$ò‚XÇ^Wì|ÛoAø2U®�¾ ìŽ>²ž<ø'ÙmUÝ­Á+J]”8š„Wy¼Hådc¤Ѿäê뙕Õjž¤ë q¾\?Œ@}døRG¶ôž:µÌÿ·"ŒÈgn:Æ3E5þdŒJ§Ùï'h�hý裇BŒ¶¸¦ßcw_µ[µ…w¸éJXaIØ™¤¹àwltÔBqdÀ€ó� ^ Ëù&žÆœ¥=Rà=Éû§4‘LM§¾k5¾k‘ª×ÄAp}RÔÀµ\¼£ì~7O|‹¨0úܫޟ{sêðÚ\pGá<øâòMìVGŒï°�‚Ô7Ê¥wΖ—^z®<û,ã¤GH¶ "ÄUÓÍfwÍSSË•þ¨.áj]2Æôï½éÔ˜Ž‹âqý&¿È®ÉÃr˜Kx7~Â&À#˜Ç]]twŒ² ޲Y–“#ŽiéîŸi"Ž$Þæö:«úKean *[Ð{e‘«Žç9Ÿ¿·¿Uþ½ß}¶üdá­²~æ°|î…'Ë×¾öT9sšeú7Ù°‰^”åõ“˜¿¯bWdŽ,œ �² 9j¤nwz-Îq\ƒR˨ 4wuX í€cÌy–_'¿­`öw*…ÄÍ-÷ÔCEziüŠšEK`%ÇÏ&òÝ:1ß‚'¼ÑSKgËÛ׎ÊOÞ¸Y^ys·üâF·¬ž*}”KvPyȼؙgžõü>ƒå!W¸µPì6�¦÷¥ùeäÎn–oÒ²QrÆ�‡vñh_0üT3Cš¿ó¦_ǯü˜ý>*-} \Ùÿžý÷J_u=¸´1€vØçˆß­ýqÙDQÓ‘Í…H‚¥;YO¾›'!—üM\w~r—K|Tˆ w�(†BS¼bìÇWH¸ÊDãËy�$Q\Xç{@ ÿ•çıpff-ð¡-°½>üo—çÏ¢±RŸU•îÈhu ú0$¡Ñ“Ø�¯üÈG䔤K5"¼LZƒë�—óZ›UN%ùž$óüñ˜4�Û,ÝĪ'a>øàV\ØáÜs ®žÂMy×xN–"ûÌ ñ Ý?ÁÝØL‡Ì� ß½Þ*ë;·Ê+?ë—ßþ­‹åÂ9vʬ±JG¤s¼G|ÜMÀHFB´LÜäíØëàÆ{ÈxC‚ŒUÍ vÌÚ–Íö¨õ��¤%šˆÖô1¶ãXçØ×„?&ß3¾1rÕ�pŬ5Qý0-LE”IŸãÖŒ±—`6ô ¿*Ø51a¸á|2ZS�?ÊÀ÷PÜg;ÉÈp}jo¿¬�ê”'f¸u& ·Ûy¯´¹“x™ñ©3ßa|vì™ÔÇrY,\Rø�G�¸F~JumΨ«ã¬aþÝNoçEY dÛ6¼ïl'¯@µ!’ᡟh÷„Rvg#†@úxÐÕìGî8 n›-ù©,Vû‡GŒ·^÷º�—ÿë'ûå{¿8(o¾µ‹wŽ$Œ íÆî` /g)ïšÍ–u ?šþ9VC ÃǤ‚ÆÝ2áõŒžŽ>wî°�Üá`m mx¾­üÌ<’-]Ç¢…ÂÆmæð6´Ö2‹,­£MænÔ ÷–Ê«7÷Êïõ—Ês§�ˆ#Ž\Š[Ôvˆ’À_€‡0Ž%Z@aÇy!fü üo‰»â‚GoÔ¿ä1F÷[hä-~01 yË„‹;Ð îö”ØýGä4Ð’”33k�m�á€ýk"w© A¢:Qº&ƒË19“šÈlP߆TJ˜1Då41älUB픚oq•Ásw�gŸãÁÍ!"7M;�ÌÌ£Ûö¤c5ŽêAMUÞÑt½î>@îÒ#'Žg⧇¼>Dñ÷¯ì”÷ï\)/]Ý(¿ù²×ã]F°u—#¡wËŒè©Åex˜!ç5Ñͬü³ËÔåÙ5Ê>BH`‰ƒ€##óMŒH˜gQmð8Á·«uÌS–*ž`6'D^–\²Z¦'™¬©ÕÔ'vÈL˜eðù–•˜�•ö�&Àh…£ñ)!ÿ�­L”X “¥å›¤¯8ˆÏ®B%þG�ƒñRÔȇ”‚�–�6¸‚‡¤Œq±¬ç¿ËJ�x¬l)} ¯Ø;œ pç„ÕpÛ~>æ‹›ÙÈ”DÞ|LZõMfß06’á,‡á_ £}f>k تßùÔöbá§il¿�±#¢ÅOÄ?ûÉ~i>·�Ý£ïpŒîËo(„ö%sTô­A„3‰SYa¿0kï˜Ö?³±’fj[|˜uŸ7m¯þõm»<˜ßqŒ)¿ÆQ—Œ|<Ô„BÕ! á2×!W¹ùþ¿ý³òü³§8ð[ÜU —×J ÷yºÄë!Œ¯ÚöîL’é¥íÒ‡b­èÜ&Ó(#í]‹x—cº½&Ú?Ž�ÅLwÞaoÞÂŒ}}9Æ~4qßtìkóÃ)˜n,2ºÕ&3-ÝD¦Oz:Ê.g|ÇdÅT(«C8í–öؽD€.c—i(ÉM,—ãJÃEž|&¼™n–µæo!kc›»Æq8ÆHòÏòe8Û«Á‚?1nŬÃXÉXÎ<5ò:Û˜‰ÜÙ`ÛôcçÁÂ"s0°ƒÐbÿ …@öbé-_,¿xk½üÙO~V¾{c®¼»Ù☠aü{ Ðdö±: œOb<§Îi²4:‹Ñèá�?�i�¬r¼ÃÝö±Ÿâ#~"îñçÌöȶ0*,‚–ö…•Ž´4Ëáv稻öØ%ã…£¡À›7TÀ±°˜oq_´žÌ� )2ûy¼ï0"„8ââB¥"MUcB w‚�eTÙd»Ùÿ‡lö3Ì`àÃ[b¬ý¿üOÿ2�D±úh'²:ˆn¢Xšj‘5uBŸ„ÂsWzg˜àTD\þb�)Ÿ/Лð»œ3ë3ÁÅjN‡ÓyN%5³ÎZàSµÀnþÊN§ÜEkþ¶Þ¸»_¾þâ©òÕçN—Ç—–Kïè.gðï¢ìˆûœ—ÜâÆŠLìËî-4hÇj"„–¤¥::2·<1‰A„¹ý2tÄdä¤çdDè`¨ù˜à”ô“Â0À8J±�¸ÄQÌ),­‰wA$fð/1 m¤�¯qLKÁ‘H¤žMÂâ¬)ûöǼÿùöeéŽÕJDI̖ūΪ™v¯n³÷_o دµÝ+¬$Œ˜¯�V{Þï‡ãg؇û»&Dð |;Àœ»2�ãÐ'Å&X÷®L|Óº²Ší7»›ô¢Ü)7¯”çŸ;� à,çÛ¼±M}‡1±Ãn¢>Ǫb?x¬ Žƒ;Ñ|¹àÀå'?1ЈÏâµn⢌ªíï·að“éE8ãN(z†9w<.db ®“FD‘� °Ù˜m )8ùN‚?ÝM�ÿpct±D‘¯™é.³¯ ÁAÖ4äm}bšKS Æx] xn­,œ/Gs­róànYãFY¿¹]ö6GåëŸC«þÚ9Þ>Ä3šùo»*âVtÝ´Ü/ Ëð»Î#ü ìnûÆ];~n[O¸YcH„*P‘ž_Þ °Í;cÒ–Ir"«ø`Âi7G¿òkÆÑ±1™ªžOyY.énW»±"¬©XFüø‰©PŠ·1ñm?q jØ)Ý8†³œàí4B6qÍÐÉÝ3öqŸoãÅCû3âÓ<¬¤å†Ð¬˜åÀѳz†¦\¶a(Çr†'š{BPB…¢nÇEŽ6³Ý4;È»Î3€îÕ/Ì~þZÀ¶¶ýy7�“Ý¡{öý™¶ ¯Ç_ÙÇÎ~'™iL’OÜÑAçÉ-&q+ðë8©_k›ú.²íþ§‰nÏÐ.q§ûîîzyã�õrçÎVÙÚÞ)Ÿ‰cççËŠE;¬€ŽP¬ÊV<ÏìÎs§wÇsíáÆÑ([Ðö�N†Õ¼x9®è:; 9îÉìº5ÜN“Á6Ž&ûÌž�4cL¿M&Üõwœ5F:4Œ?þÍØ™Ã®a¤Xš¸v©©èWzØÝL›ø�‡�U2Š‚ãfº5=Sʲ .+îÇõ1…ÄÃkrÜt÷”_ Šu·}|ãmçnËÅÎQÂúí¼C^ SÐ:GázÌM=×^–ºÝyÀªk§½XŽÚk�;]Þ¹Û)öãkåOpA+¶Ì}s\‰»A'Í¥°ÆZªc·é:ç…‰r¦5ëRí³÷‰n�·cKC\4A³ Y þa�›öú«å4;LFµþ‰›cSŇã–Ô]8 Xø>Ì2Æð&o<+V^@M\ LÂ/ñÆ´¯$„þø�ÿø1®ëz’ÍLp’{ÿcêŽÂ—îŠ�¢5 ó`Ì�£"žH™ Ê9A5ß5Ùi÷@F=ª¥ Q`2*¢›ºˆÛýÝú¿½Çu9*6 $wPÈ|�Œ'DÍpöžµÀ§h�±uxog€vãÓemn¹¼ËjØÆŸ_+ïr$àkŸ;UþÎËO”£á-n]Ú�s¨¶_rk;[‰Kñ\�IÄ%|D‡›¤$Ì¿áeü%wckeÀ:Rñ@‚œÄäwŠU^õ#p¦ ˆ„GŒæif~;©R<ídÞXå«cåÈM>òˆ©±‰ÛäédKXãGÞÆ3Ëå£ô�Œâ0ƒÃ± B~ ÿºê( +ldøk:‚w([Œ¨þ„x$Ëf�igzÜígÈÊ–Â[ÁQï&]>ãÛ<|dRøø=m’ð •ûܧÃÌìÝÑþ©ï m;ûàê<†ÐT\÷ê–>@m>§_†Ï4�¨âLíÃt–MÓp24ù†‡ †5âE™Žý~_ Læ×Έƒ¶“8íH½„€Žm»}tu{ÙοP6¶î–pmà�·Ê>¹<÷ì…Ð ÐAÓ{·#ÈN€çÑèðˆEgÜ„éÌÁ…þˆÖóWŒÇ�¯4CzÑã\2ÿìœÒĘDgZ6û.bGdìчöv^�óáGá§[óèχΑã”}"7™ce<Ça¿bgV“šñ}ÌÏ#úçw†åóž<"aS¸�ñjY2'ë•�uÑèû£-OÓÑP™9šˆ´.ŠI¬²–Ù Ì]Ýö|s�ãp°]vÑu1�€F¥gG#´øÏ=QnmÌ—ïþ|»üé+o—×o�Êvï\œ9EXnA�¿W‡ýèŠ Ô›!ól²Ìù]íõméf椶@€!ЋH�i8ܪÐμ�N�»[ܬÑ_ã² v˜0v¨¸oH¸ ›-—c¹ ïXP±äدB[mç:–åû8œ1#~Ìëâ$4‘ƒþ ìáœj/Ìý±þ·šÞI}Ï'µç?A½÷w^h{¶’éÅë„ÜØF‰dNî94‰5"\� §‰îÉìäwLÖx-Ò�€90¸åÿ�½Ã#æ'” a$&�°ê÷ì=k�OÙ€Uÿˆsóq°Uxl�ÚwöÑ�ÿÞ^¹ºu£Üb»ÿ³[å…K�—s‹0òXÃý]´×ËJoöe0™ÐbÊ ªL¸L®G ÏIÈ�®2ÉÒH(WFWú¸ÁiæºU.àÛ„0òÄ·2m¿Ãþ©Ø 7¾Z,cÅNq5òÇU\áy‘–&ЬÅ~yûºs@·ˆ‹a#moÜÜ®êÊÐ�gš�6Ý(ŽÉQ§.êCbB'ãXy´Ž¤?†17c üi!`ål&g�¿mÚXʼn-”*¯ð†€¬ ž24PÜþá51æ§‘áqõóaB€fifù•´@¶<ý=b¯ØÇôexˆé–½k–£¾²†iܵ5q³ÏjO›níwí bDø$ ÍÛ§ B;;.î¶9)Ì?Õ å—Ö÷~A˜nÞý¿ÀÖï9VöQt®!_{ÿê~98`•øêfùÚW^*gÏt¹N ½Pv÷×Ù °Ïí%cv,q…ž8){êàá8è3eb°ñÛñ.ÄN—F¯‹gs+¼Ø§Úíóêæ`UÝM¥2ÙÚÍËï:†odê–[úy:»ïø‘Žï­&Å4ÝfDŠôs@[¦á‰&ˬ5ËO8Ê`º“òòmøèž»˜X õêZÛ…B:˜«!rL$¤ãd�g½|lã°[-t¿˜ cã€qÕãS]vupn9ìœ.o¼;,?|s«|›-ÿoßm—½ÅópýgQúJŸ!Ì1¿)>p,•é—ù·C½qOSËß|F™ªÝÍÌIk�cˆ.=ûŸÄy…caY%¡ëÛûeE’‡+(‘ôKhçsÉzÓö<ú—&\çýŽq§D û9—d|*Ó0œnD LÄÅîü "Z ¨«ài¸Žò? ù™ }ö;k�[àÅ1�Ö2OjuU>æp'e&·Jˆ‹²ñð©E$t*sºoœ@<¼øðÛ0Õ¤CLf¦�_¬þóɶÐZì¦!\ãmª†sRôåÄ©ÛÌÌZàÓ·€„Ô 0¼ÀýÆNZ»û5Y*‹§VÊ�g×¶o–+ß½S¾Œ6ýß®”/\š/g�¼ËÞÈk�8@ÌQ3)Éœú—Ç€K`SH ÅÏI)ŠY¥X|WG‚QH UPfÅï&fÖ2Ó‰IÐÈÆ v¿ã3wÜòñ­“å0/ý5÷¼I·"fCáÊ8ùõbj…)æâqÑ™ˆmBf\Óµ”Ü k<ü$óO9$˜¾«ˆµ „Š3Åd¤Å3­°ýQNWÝb¨ÎkÝ£ BhÙN~’`HA¦G@d[f9 73¿Š ?f$ÛU8Fó ÷€'ü<þ'„\Ä9Ž—%2€¶úN»}f·��7e¦š8ØÅ! ¯²»õãi€?`à¾$¦RûµµŠâ„ y'‡ƒ]y„lïŸ_|œöÊ�›û弇ƒÛåÒã+å™g–ÊÙ³Nà ¥;¿ÏÞø=¶Ÿs¾á©DµiE×¶ Üÿc sL´è9ûϾ�þM:ÁÍÏì§ 7ÕÍþÒ-wFŸÆÍqÿºªO—GÚ¹%™ò³ÉŠr*0ð[À�d¨M+Ã…ÀÀ$ÌÓ‡1D7G2¿%y2¤™ ž‘�i` ÛâØd},¦aslJÒ£L¶¢ªhAËÒßñ�¹"êhšŽyÆÉr[ŽŽ· wàN‚ÎRr�ázY+¬w¹Þ¯Uþü[åÍ÷åöιÒ=}±¬psÁúî&Ì×VYY^∌G:h% nñ6Ì7Ëi ÓÔ·_Ø�´O×Ôï™9I-¸,ô§>"w^©@,ú•¶6€¹AÙ=µPñf�U… Xî¦`+À©Â×Ã`K?[,Ù4¦0IŠ:»z¾E€x2Œ»ÿ)®ÿùÄû„Zf;NhÇ\µÿêO_»ôÖë×Ë\\Ö0þb Rk�ÌÉÔ©kb°: è­qŽÐßü89ËL$’æË3x® ««‡AÙ$¯2ŠëÓ\%Å�¯LÏ|Mkff-ð[@âo¢w›­¯v¸Ì­¬–>«\wö÷˜¤XõZyºìî\/{on—›·Þ+מ?]~÷¥3åÅsk¥ÍM{»·! ÙN+ƒ*q@ ëIÀAÐa,ÌÊ…ÈØ&¶8YsK`íùGD$è*iZ>%˜%òœÈç²¢†7#ýüð‹q¿'ÞÂä1ý“•ªyé]ë0]Þ(g-e³ =üÃ%`ºq¥¼}\X]eÌUXiZþlÙ»£ÆÐh£²ÀéÿÕ²Ó?WÞÛè–oÿøFùó^/·w—Yí?W†ËËœÃ&ŸÃ=ú–kZùí°k€:ŒÔRQÇʪ3£#óóóñmÏåE�ýÌZ`Ò‰ÛàsµÚÿ'*V¢€ùzë`P6QÈq¾+ñŽCÆ‹C„I`7j|(4ÌyY�plÛCˆÀpiEüiuœI¼‡hp�'_ÊÒ’ŽpWóhnù[ßúÖÜ7¾ñ�ã’X'ÍÌ'­Ç?a}×ïnýSï‚õ~s5•¹Ø§€v‡Ø"Æd4€;R^à^"¯>¾EGÝü6F0þÚqÐáy«\¨ëýà8t˜tvö¹[|~±Ì/µË»?»V¶Q÷Ò:¼0YJÀ˜¦÷‰w)"Ÿ33k�OÝtƒƒý²Èµ~}ƒ޶K†·³ˆ2$ˆªM`¾Û¾ˆd{­¼uóvÙºƒ~€;å÷¿ödyî+*ÝWn£x‰;î¡${Rc”/õÙæF:óh_öî 9e\!WUÜ”«þ2ѲØþ:a1)6Ä .�§ bòÒ+¶õëÞ S„AÉŽ¡ 1W'O‰W³uÕ<ÜXòr2ä3Ó3ãU‡@e¾Í”†ó‰zFÈÙÏgm¯•‹Dæۺñ�€hìs\RßâP Âj«LpH?† '`0:÷š{{Íw퟈Gªç¼ _¦6¾E�0¾aŠœ¬vAayÙ ¨îOøE«=[›{hKô=�*@þúšÚ†µ†µ�t·¬ Ç Þ %ΣZôáˆ�cÿ@ær݃òÊ+WË{W¯”/~éBùÊW/—µÓ—i¿vA=@9Üß„Q<*KS¸�÷�£G‡èVYX¡sì{ÆFûÍL½B•ÿŒ 9ŸgùdpuuLß'¥Ž¾‹ï[Nô¦´ø5Oøeu¬\¦Ä7–`é"BNÆÇþºMÛ‡ðˆ‘¤úûâÌ'�ô2ñZÐð'@óÖY5¼|²<Ú­y Úª–´q‰PUWBŸÝîPS0<<@¹_áªÆêͪ?×4ŽÛ倱ì°s±l ž,?z»]þŸÜ(?z稬÷+mn³ñ*Ú:”»Îqm—§7\f.j.À ºÊâÙG=;4 s#¸�eÎr7�·­53'¹Äe!]êhŒCÆSá(çͼ� pÔ]*?zãJùíÏýNì¢Ôû°,­®•Ý­�¸X|!‘Øèb{æ•ð%n†i=Ô/pKø5°tŠPKxÜÅ`çü8 Ò¡†ð4cp`w÷èóDøÉCÓ=!Ž3À éèO[MÏÿ¸¥.χyfDV‚æ9f¥ÞÎ{2/1-æ‹0ñ)>‡‰o�ªþÆÍ §Q²±8R¹˜ô¾+ýä¡@Wÿ�¤ò©S6a±›ôy™åÌÌZàS·@)l9��ÙB™w‡Ë¬ÈÀ¸ŽY%�y-Ý3¥3¿yp³üÅÏn–ÛÛo—ßúòãå+Ï?Vž\Zƒ bK¥Ûh& kmu!À líl³]v5pDMl�þ…Z”tמp\ñ'¾ ’ƒxÄÏi¶NtA<E¿¼›¦ŸHE=˜|Á)ñ(&Ãà¦q ÿŒ§G0c¦L¦‘iÄYâZà^–ŒwõŸ¶rÀ&Ëx÷«ùšn–+ßÔÞO)XÒ`ö7ðÝr‘N'oÜíÓö˜Qº‚p#ˆ]&2›“ÁÆØ‘–)£ÛôS…© 3믠²—ïMÈ1^¸ÊÕ÷ì_>†öuš #éOŒÆÝW†©0”M¼®Ž ;bˆ&Ó a’vË�ô �dÂjü(\"üÉý‰cN¯Íž·{ØGÙŠb|�sþ¥uWÊݾ}P¾ÿƒ+eýîvùž(O?õx98¼Ó¿F>!î7·¶Ê<»æÕ+ Öo˜È²�šÍOøNf—_>’9ÆË¾â;aÇB0W½�‘~5¾ ¬†–H'i ÇP�A2MÜ7ÃGX21\äoXíö±³,:ijza7/,/ÞFÂDÐðÓ?4íx7áÒÞ¤ÏëŸÛø”4)3ÆZ�Bd„%(>u¼í ÀõŒ¿´Ñ‚ß¾‹3´ý`þl¹¹±Vþêõ»å;?9,?¿Ñ)û­'Ëü©å²;Øb‡B8öĦk®üëŒçK‡wÐv˜|ñ2 Ÿåô7�ϺU—|Oó9m¿7Ôìë׿r»?ó47O¸CÅ�”ÒT!ž�Zï¥([Gò¾7(«^Ñîô‘È)‰ïÇó·ð$ÌMÃÕýßM»F¼´×ñÝy Ó2Ž�x&®K ñ/“M WGè·F¦´ÅÄÔcŲ'C$µ†‹LN¬”p>öˆ‰­Õ½ÈªJ«l\½Ëý1[å�Í£ò/­•gÖN•åù¤ÛwÐr»ë¢uÀª0'ɉ &;„ÞÀÞ"T ÙÉ {Œáσ9oàÞ . ?ð+Cd|s‘ù…™¤ÉËðˆcäël»˜¬Ý‰jÎægúÕbé.ÓÂ�`úÑÀ0bÒ¿×DÄ(ŸeTòîÛô$r%43 ÊBËJ˜f°0/w„p€Hî:èøÍc¼8r@áeþS`îæù ±] ãJ¿ïãv&†š™_I <Ø– /6±à¥`ZPaÁ¨p+Ð%œ¤‹3=>)c…#]52k2¨5nzÆ v…B¸³Ì2øåoMãÁ²ãu’ŒD1±¦%>Ò¢©¡ß–¥�øwõxÀ}ò]•Á¡åæ�Ír÷ÎͲ³¹Pv{å©§8*0‡":î aTQ Úc×O—mýΧÑ þ:ŠèHÑ·åô#yNúÄoüt×äØIŸ'ú_GÇ�& ¯þaÏ4#¬q"¼ñ›�†=ôç‰|V�-¢'OS>�ŸpΙ®Vý"¬á3ޱu«îY—©ï©p&‰P‹zdBKê*ÒCXêÿãlÏbõr¥ÈôÚÿ(ûÛë­–7¯•ï±Ýÿ‡¯î”+·PfÛºP�D31~RG¯ZUózv8%]eë›e'œõISë“uª®ùÎÛæÞ³¯_ߨ½ÇT?"a*!>áLªê.ÊB¯­ï–§âÚþˆ]“ÐT*úª‰D3ÕÞu Í:þ‚Çóy _Û8ãÕ1õMÒŽa.d¦€�‹ÿ^ÿ,œÐŸýOhågÕ~x ¼úê«s?ûî:“#gÿAo]Í ‘®(ž¸xZ'®±ûš#Ó^„©v ¹«ÿJé\‘l‡Ö¦Rv8°vÈ*ªƒ‰–�REóÃ;'Y¿"ÕtŸýÎZà¶@À•„-ðã#)¤vÿ˜Â¤…Ù;×YD9 «[œ™œ_[)�åyŽ©Ì—×no•›·Ê`k»ü½Ï–/<ží®½²¿{µìoï–å¹vYZ^c‹:éL`²P â:�&qÈüsBã[8·D ñ)Í›n21ÍŒ¦»&ij «);MG鸥[äa|©lÓ×Þ3įI&Þ“[ˆÇ �•Ε¯ã›(4‰ÆäD K»vØêkzqäÁ¨~¡I^�ǼYÕ²ÌÖ#Ú©!ð#9ò²~À&UªÂãJ®uÊDÓ•lê^HS *Áe¨fᅥÈ> FŽ~ê²Üæ.y¡úÞ'ûÉß ŠÚþ—IWÖ‰§ùåo†ŸÀ.F*C'˜y4'�ªxN5�ð�ðØ8œÈ—ói²ÀѦⷢ}ÊѶŽUmpx ‚"¨[䦀9vEõ9G~å]¶žï¿_–ËOΕ‹çW8òÁX:Ü׺qJWLJÌAô•=MšöIâ1}sêœÆ° þÖ¹>hãF›D”6BV��ákß/Ý�éðÏ!.ËdhÓÉ1?òŠÔ„ Ý«á»Z'ïLÓÏãrDÂ"Ãçwµg¸æÞ4sÕ’dy,£_Qw*Bލyl¢?rû2ÇYº«ŒÁËe{tªüðí£òÎûÿèÇ@3-•G.TÚ|8ܧÿ¼&PaŽ)2“Çz.®`C`coç®�(úÔ�e}˜ÉRf eí2Ô‡…X3·_—ˆa°„ðNXs硘P�’Ð!ÏöÑ~¹zk£Œ/� Ú Ï6–EŽf�8Æ"~8î‘\Ð4 u®Î9aºÕ ïw�“eˆ‚D®�?åIÜÓ_à¡§BÎ%@{t^f`x‰�o:ƒcŸ NLWòŠÞx{û?ö™˜™Hêê¿g=X•vÅDÍl%!%šåÄ^b’دµ>ZÂËQAKóŽIÆÃ3¢’ nÓñ4ÀÎÞ‰Î#:˜€ñF1¯ü�Bn\ffÖŸ¶„\áUØòŒ¬ðÎ�×°©m@ï—¥Eî¯.÷ûeŸóÇS¶]ît—ËwÞºVv·ÊÙKO®”³ — ‚×pK+ರ9õXº„àXýnˆbÓÕTƒKao`]ÜÐ%'BàŸ™�CÊ˜Öø– ŽOž¿C3¼ó_H 2RN¤ÕY5'Ó0c)D~ót°¨®¦Sö‚’¡DþCŒå­çícéÐfœ 7oËFrÔ Ï¨dƒJ­¢|à·Ä+w�»:Ù‚‰Œ-°Â#ü³cÆŽÊÜ×·EÒ® ^8í—íù�‚Ïœ>C 4ÐmŸÑæ*Ô‹¡ (:?û‰ÓíŸváΘ]úW¸ w½&þ†­a˜¬qš·éd0=®ëT�p•nƒŒ¥ xRMà¸\¾½æ+FŠluêr&|ÄyÙ£CnHçˆÎ{ý¸íúvÙÛ[//Þ>]¾ôÅÕòÄ¥5ú›•é£uÚ„N´Ò£gÁñC¡jŒ%¶y¤mê /Ž’~e6 SM†»þÆ’­h �¥Aj8½µÛ§Ú §Õ:æ[?ÃL=~øÝ„Ñ'ÓK�Æ›˜26Y´]¸é—Ͻnzš0OàEf*-Óq4uÌm3޹Bï¼e�è”F¢ˆmÓ´<"ÐŽ¢]Ä~¦\¿yT~úÁAùßÿêJÿØò?|¬tWœ§Ð¿ÀN´‚›åùSÌW$À16s˜bôÂÐót?�ÓdagRYËù0cJWa¦ÖïaÁgn'¤„ ñ³¡â+!h}"cvS"¼ºÎÑ¡ÃÇ…¸yD‚ åbŸ8G1?›TÝ€}ñ¦Ò;øå‘ïéùÜ(�ã†!ë`çïØÅì8;ÜàÓ.ÿòþ—Ïý­ÈöþÌ'°Ó?®Ê‡ýÿnÈö±ÎðµÝ”–[ðµ¹-7щ ds¾h·Z}O½Ã�Ÿ˜;øŽ(:2ñ¹Øe’Óª�gÜv÷âhÀÈB°;‡—š’áÒ<èR}fïY |\ H|¹ÂŒ0Çyrl5o`ñ…~=Îaªmï�³k@rga¾´a*�"ß)�•ソSÖ?à®Û³å·8ðäg_n#ÄÚ( ®‚“|¬ncqë¼ tlµÕ�¿˜«ð›Ø ‘Dð±ŸT'J'E¿s‚´ðid†ë$‰Æ¬Hî¸÷@æimkRŒ´3S›9 {œ×‹r1ÒX`´�¶QøÇð€àá g À )Ãô_ ‚Z¿ë€é#ÕŸìgæWÐ÷´gtHGt§`š;¢×é@玄‘€ûò�´ð64 gÆOÿü�8À“o¼05Ýøf‹ #™Žö€õˆsB‚ôþŒIal'-â(вvlçŸCÙá�úìÇAXÚSoÇE (<—„;›£ò¥ß¸\^|nµ¬.£3e¸� R!È]4H@Ó÷¤nv�L¼ì‚.ùN÷èºÚ—¾‰�}lL¾£¿‹"bì ‚aLÃ~·ôñm8+Ô¸ t7_Œ™a„W?2>Vç„Ìø8¬éf0“ye­jrM9 ŸîÆË ëÛ¯‘Gœ4Âcä…«vs!ÿ¹Þ"Œ?˜>;1:+ÐH§Ë�ÍnùÁOo”oÿävyõ=B®^Fi²ºP¼ÈJk+v¼´P°ŒFÇÔ<auÔ£�À·³Q ÆÌ1Ÿæá&Ëšvý5‘@¾#ÍpœýœØ¨�,Þ%…žPžîÃÐ?cžQk¾ÜÞØ.;»\ºÀÒÐû1~ ¡â)à•Ïqºµiu×Dø Òn\i†¯ã„Û_#UÐö›@9â(|@qpiÿûXþ¹iŸD3œÄ^ÿ˜:£™ÿ☥ѮZœ�D¦ÍÀ.dò™6~7ÞÓÎao qDp]›ðáǪ‚ž„b¡ƒ¸=@Tp~P> Wþ idžùMfff-ðË´€{NÚh»L¨ô\ŒûxÑ)7)KV�»‡åˆUè8ïº2¿1Œns4Ùîì°:½|©\ß]/»×¯îÒí2|~µ\Zì²æâî'œœ¥V�(C‘^%¸]Í6D ‰%Ñî� ï�ßIçæ%*ÄüÖ ^ehÂ_ÚŽI1ŽÕµI &ão„�Ýæ «�Ì}NÆî”3¿‰�€oW«²0לKu@Nà8O™œÌ$¹ß5�¨‹ g>)ÌhJÅ a[ÙîAœòîÂü·hï‘ ….C„.GB¤ÏÖ~W˜f¬‡�Ìÿ´À°µ|úÏÌ/׎ë_IF÷=è9 7i7!Ã� Ø“H~Ó›|gfá=ñÍþ ocãYã7›kXýg�‚«i“á¦]Nš]�LnÁµ}½�‘ �B߬,#ˆ_^Zd{¿»žÙZÞíÓŒ}Œ ó�ÇÊöævùékëeok¯ô÷+_øÜé²*CŠâ¯¹EÇ�ð0öEÿfÙ›ŽOêpÕ»™ù`Ø)�ásl2NŽ ö½ñ2F|ä�D¾y&¼ÍéØ-„|g¦ë@Ç»  ;áF‚÷Ž™Ö$ÈI¹ªót:¤i:ÎU{>^¸Éˆã":š+’ çÂ~è´Y=E7Ò¨µÈêéRùàæ^ùÑëëåG¯Ý.ïÞdwËüã\µ6½ä˜Üß8¶ém4äëJwMáéÚÌ‘>ùZª¤é²%kŽY7JT+5Õ7ÇaŒSãùžj€ã@3Û‰h�„¯Ût‹&EyÂð ?€—huç¸Md§lnC�^½,îÎû(´ŽÏ¾ïŸª'nñ{8<6ånÁ³< àñâñM‘O¬ G¿è¶ÙϬÀ ¨y"Ï?w™Lê@ïdš““Hž“ZJö�¿u¿©I/V>qýœSâÁî.´˜šB‘„>±WÛHØP“~ÀÀÑg1ΫY £ˆùPjC>nÝ®~$73³ø - 'Sa`Í 3GOÔ`Û�áo¹�æ³Ër–J®Žö÷XÀ–ÕÅe4_#¼â8À~ë\yõý£ò¯t£üå[›åÖš–WΣĉU9±•=ì þ¾ˆ2”¢NvÓ•¯ô&"‘Dip‰�5|ÆÏIÓžúÖÕž8?Ÿn„‰ˆ•0›GF?âˆcùD~úãgÚu‹~ìd •<£iòk]dêM5ÝÉŠ“Þ &ú»’?à¶…>mí¶Ô1çR «[m™ ÊhßÐî-Î·ÈØªÜ @HTÄ-U S õévÔ­2ÿÕ?Ï~~Å-� œÉÀØXØe¶¸A’^N-Ñpϊ暤 �ðâ“&g"ð®Âz`¨0¦ÌøÎÇs y¶9óËTŒã7~Aè‘?°Õe§Ok̵mèfb|zêñ»yjyĻРîJqeÔF?�xMhó›„%Å´gÒØö¯Á«éw–ùoë—Ò©üχò… .Q9ÛomåTèò�X÷ÊÍã__¡=»q–VÀß.WzqUêܹråê~ùÿ¾ûnù1+Ó›Û‹eqå)vê Pe;ºx)“ХϻÌí=æø®ŒÙÚ6ÑŠv=a“;´mh£¿‰q#T]=ÝÞpžf—o™ˆ[�L,W𖾈-õ¤VÝH>ò š;ày™Ÿù§�ÁüF:&ž,SölÖð �y|çSÃ5ï¦."òMV7óî HéBpÅ‘³X­wþ‘1a¯ýb[X¥/­ó(N;W^ÿÅAùÓ¿ºZ^{¯Œ–/”ù•ÓÐKèUç¸don ”˜�5ný_¤¢´wÂ*_68&™a=>ò=ýk° Ú¸ÚzÕTÏú®î³÷IlÇý>‚ª>gý…ê¼°o Ôó7è.– ïpïä�·PNÍñ  E9F v¸Hðǰ‘㦠 hhMÂ##HØg�mqY¼N]›ø1Æ�§8xFgˆ¾ŒážíÏó›ßlÁx'Ë|”ædµÄ¬¶ÑþüÕ×ú;ý²Ô=[F‡LdÎ ¢¢VôBv‰Wè½â'P¤K‚.S‚;&°ÑÉ8’ÁK»X™ÛúI… p&kÀ½Á-˜v •Mòßáæ�=Îrï¸Çz2ÿÁ´H§’m¿3ý(üìgÖŸªœ ’‰™AåW±JȤ„$»R‚ë�t «�;¯¾Yéï”942ï¶N—ñ +4ƒíò¯ Ð\ûOþáËàÑDë>;€ó¶sB;{žv…»�UNç 7I“”¥¿#ý˜ÖoÒ‰plÃ’áŒÞÑú9[b Çœ–QDÂA·Æ¿³¯þ„oÜ"’銨2^V+hNZà`$Êä‰0Ä«øö÷Q2E[Í1‡Š—C* JXv …>…¼S:V÷À]"E[Ž Ù!vÝx4^‰b,8A�¬ ;†¬ÍŠ×Ð;«i³ö*‚À¥ι²m¡»íÝîÊÔ ¿Ö-Ú†²VÆßèö*³«©,-q¥Æ0ºÏÌ/ýæŒ@IDATß‚Ð�ö”á–!W‹·ºÈ˜/!¼éwGåÜ2ã; Éúöa9€‰”]Rø·òч€]é;ÿ.é'Ò î- ‘þ"¯¸Q ;œ~w™£&Â6) ó^#AÄ6Œâ"»GæÀë^O¹á£½ ÍÇNæš±·ÛDY=¢1¢,Ø|‡°Žq …W¾ðâB&¹ ÙæÝĈ4ÒÅb%ÒäwÍA·?ä<Ù„ù›}9ö4íßd¬K"½o¿<+®gt V;ðK!}‡þÝ<`Œçæ/—›wwË¿þÎ Þƒò[_¢Í8w¹|ç/®”õíwË&€£S]è£ãÚBRÚ„~9jŽdõ¸‚QsÀ‘5‰âÕ2„‡?µ|`B–¬qxhiklÂ$A8§Æ3Ñ™9Y-´2HsHÙîœfÞ�Ñ+hÅ]Xp|¨3·\6ú‡N•ŸmöÊǧÊÅÃ�r �ÿá€9œ1;n)b\�Åߌ-Î-ò « îÎñB›Âeçp·þUøuIÁÀb â¸ŽPoÝ[,*`‹™Œ�ÁYnvb‡çh½<óÒ3/áõSCž43œ´ÿ˜ú²m쟶”ªË‰Kï8æGâE¦Hf\„ªRôXa ”3È—Ú -qÀâà3Ì7ü´`L—ô¤ÃÇî�˜±åP@x@¤wÞzgº�% 5ÈÃ\@pÜ] ’&›™Y |¶¸Àšè`“¤&>0ÊýÆIn”ÂlqM–“Òp°S®m•·¯ï–OÏ¡8Ëspi¡˜ìdRZ¬z{̦ÅJÚ½eð“üÄ•(›Zš‰-&J±ÓxÆäÈ7åÑD´&I%v&]Ã9‘2 &N5éAŒë«”&N^>ãàÖøÆXŽÌÝ�¸øë*g­!J}bñ†^ƒÐ¬ô¥À˜ÂáE¦Íü ö!º ûÈü`Ÿ{«»K¥Ç- 7¶6ÊÊâÈ9R�À ƒRF¨^ÚŽd"]ÒŠÂX²MLêL�*,x0ôÌå3µ@vgF >è ÷t-rtc¥Oû‰QàÕ=‚¥DJpÄ•q#HV�½„3ÇsñAøæHÑoÇzÃDÒÎanp´óÃÏÉ ˆr ñ ø¥ñ÷:É6«öÎ5#®>‰:×p&Wò#!‹|t–¸œàŠ0Ÿ„§¹FÈ_{æWcÕü«ûñÛ¢A«fRÔüü[úÍLgž-ðQ+í`ÛÐnmvEuhäãßb¿?è”ýqyãÛ( {³üþß¶\>¿Vñ‡èo3V¬,"|�¿Ý¸ƒ`à´«pÀmÙ¡OB¼ aÂú%ÎoªP  Ál@�Ä`ÕŒG”¨ö‡8~ܓ£5¬}¤Ý°Æ@w^Ó­qOüŒÂïtXâGùŒŽMM#Þ7†ö JÇ!eSŒÂ¬@s�ŒëÀ²§öÜ"·ÎtË»×¶Ëû7ÐC3b·ººÞ¦\[Ïn²¨%ÉÏZžãü«­©Sý¼§&Ž�¥†­ïûýgß'¥„'qÄ‘¾ÏÜ쎕·)ð‘/%ê3΋Ùõoîq�òQ»<.�ReÝ…¤ã‡‘•„ãÜrœ Áiã–tŽ-ÐL@á_A0£‘sï*XŽ0��>Òˆ°àŒcÕ@½0ìîd¬!À?"Ábª'ÍÄôwÒ*=«ï‡·Àþþá¸ÃÏóÿq �T±’ˆÎ�_<¦Lýò�!§<bíA� !MÛ…ÃCø…½Ã\±kqîP“iÖ”'‘Á”k„�ýÌZàoªd6†=ØzVj†Ì:qÂò>;g®ÝÞ/¯½u£\þ×ÎÔ¬>¡ 4{³5ó (ôI0Eb“¸ ±Ll%üÙL#‹p楩qÂ'æ:ÝÂ'üE®dcdiÅø7ˆ•©d:á¡;�“­e‘‰r¢7 7ÿym˜ �ò‡xª}=Æ é옥3['nõZ4†w`ü[ì’P±ßˆ­‚ã干˽~¿]ÞßÜ+Ož_æ¸ÅR\3Ö÷&†íV™ìÙŽl®1vPèZ×&‡¦|YNÝjÛUÿÙû—oÉ?ºà˜ >‚ëÆn¸ʫǀ÷ÞÂ\Ùg?èÏþÂ#v¸úKEA Á"˜:]´Ë„+·Šÿä•þ-„k1‘ŠÌX”Ì9"©_[¯™à×¶k?[ÅöØ*ãJOì~nð'·gšñ*!& ×ùñ;~7,N¶IØ ú †¡Ïö ˜„ñßGÿÀ6Û‹½'´ ñ8ÙiPãùÎbÌ~g-ð·ÚJ•ûqŸ2„,@[ß¡S‡lS]ß.å�+å럼¬ÍÃü´wð`eæ* FÀFé%] ¿×Db„IbV¿d^ó{ÂÈ2±%nž@NtäF?ž1ŒrÅSÝe�*f™ “–LK%öP–ÁÇ‘¤ÉVƒ/áeªsõ­×[ 8D9Ä»÷NÓlóãíDodÒ�äÜÕ³ÀvÁyv ìŽa  w9Ó:쮕›·¢¬³€³†òùå•X­Ý–âåf€ØM@‚q�U”1 9]WË\•úÖLÚ.¾f?¿\ С1pO½íca/Q›³âóíršÕáåÕ6×A!äÜ9É׼Ä?úÇ}ÏŒ³ ˜œsrÿcÀTtt¦Ï·;ÀƬ„æª2ÿÖGÂN?�è†þ)txÀðPa‡ëí±Û,•—›Ð�ÿ`ú}7p…kµ›®®2þêHümʦgCð_[¾�Ý2H-»�ö(XV«ïXƒ®ž7pô¶ÈÈ�¼ö:ÊQ÷ú�òå/\(gWÏr ä+×{ee…óîûÄ!œºTûgá‰í9äq{°×�Õá`[;Ö°�WMöGè«PîGv1McÚÕž}}1íß„œ~Ùÿ¦‘aÃzlŸÄ5F¦½zœ�i4~5½ú6F(8Mýèp.`Õñ-´ÿ3—l´ÊϯÞ)×ÐþÈÑÌC™–¨¨•­©M²œYf-ð7ÔB°cè8&MÂy¹�°vƒ}w6vËè<·ŠÀc„Àu:à}öœÏžž¨=ñŸÂóÀ]熊w”)FaÞÕÍlÏCZ£îÙo~sÜþæ7•2ž,3œ¬þþÈÚþÙŸýøÌ¯^Eá6çn•L;k‚kÙA*ñ;ñ*0=?Áš`o¾A3‚nãÍèG×\Ü =†P”–Øæžõ=ÎK'&Ê$àbß7é44Y:Ï~g-ð·Ô*®p.Å•k�Õ2ñ×j/—ýÁaùàÎF¹¶1*¹pΕqV¯»®ZK½†–m .ó?rì ¢è&ÒÄŒÞa˜À˜9 ”/çb™&ñŠ¿ ãíwƒ�‘,æ;² d3Ž¿¤8Š0W¼“°Î8¦+Ó/Ó&cå žÈ2Ê 9³¯Ä_¥‰zæ>ÊBÂq«€™ú‘»ÔÛ‡iè£D‘°s+e‹•â÷ní•w½cühP^xábY8}†ÕBý:lkϺ ¦FojÌq¥ƒõ­íQÿ˜·ßµí¦œgÖOÕÂŒÔÀ�ý`ä\A›]:"0À~-þö+Ü2õ0ÿ# ~P òEý �®à%Nt‡¶Üz}Þ‰>ÇÃ=àºö-MRÒå{d"ÌD³„9ÿyÁ�9­Oóô~ËR^¹›bæ1fŸ¹L_rÇ*>Ú`jd£‡9«Ú%vZä~ŒàäÎá4Ý>RT…šuo5ÆlE¦ f•5M|~=�ǾshÆÍB ÖÌíï†�.è{�þ;Dò{{÷{>—8Á;>eêxL³…çúú?ãr- -Òy€~Úiù‰2le�Tîl»ñzã�ð ü½3…>žFð|ä�ûЧ{GÿÞ‚h±ç^f¢\‚2�­ò ÇÅ/°EòXED†7"jq<›¨ºÅdFÖ „±ª±/Uࣺ¨? ôr«Ê¯�ÇÆ5=ð…õ€ãXC2Ž}ŽÆÆ@¤*”j»µ]6b,ÒŸ³’ýæµõ´©5{´Z$gÝ»ûÕóüÕ9¢sHxyv¥'3®yÌφ—Ñ/C”Shá4‚´Ôi Ê0lšœÇð`èIšŸçi­^9xIã$/  ÿ`y_3VhLQråO¼!;ÐÆì»GO…VV@„�ÒF|Ô™Û«@ p êzÒ[Oïï Ò?ú“ŸbX,¥·Þz=]~éZÚº”XE¦¯9”Þˆ×ä!˜Ëhgõ^–:ï—\‡Œ¥BÓ5î3ê‡Õ¬{'ÅŸç ™©ÌrlT Qÿ¥Ó¸²êø&Œä†ÎϤÏÑ"ï$SïVZ¡WÍÜm6~WÅćZ¥�AjÓZwÈT;3šCèˆm7Ã0RÅyÔ'éÞól´Ò6Ûð ;ñD9Ù*½ãŠÆð/yïGÊ\£°#wj].C¦5.˯â(-@¨¤²¨*Ê §Îù^U9ÐðøLa¨Ä÷Æ=B…èÓw7îÜIÿä>@øs”ÞýÎåtõÚŽ„ü<9gòµøP-„…“ß!¶I‰1Ð5ÑWöxNÍ)csoÛ³s¡³L%sŽ�ïW%�g¿qý›š7/ïlÙ6d^FŽ‹´U¾œ{ž?šmà}åæ1î8�EÞ=NÈpõ_¡ãxªfZJ·@†Ç.uWv¡¹Âû{cÄ,6÷¦¾€2<¨8—´¯`˜Eµ¿n"¸×߯È2¶ù4Î'ðp'¼Ÿ¯<ÏG8õ�ä¬QRå0±DÀkà Êœ�ìÍ|-æœöDûEé?"è_5üyr�àyúÚ�y×þÑàow8²g‘ãd˜_@2)áHcb.“›1Æê=þg5”I±Ê’ã Z�» *€N æ”øO�fŸ°’¸�À€2ÛÂkžâ3`[V~šUÓ<4=ð…õ€ãQ­Wždì=¢®ƒ1‹‘«ÖF:¥÷NÓ!«8iÉ3š™˜PuW½sЬ6ÖÈenæÎÑMatD8#œ”É+&Cë© A o$žçtÕÝ’,/˜ä˜sÚ“lfªÏéŒËÐê¥ò/á>I7ãq€sýÁ¸ñ.æÏŒ>ÐJüˆ­Çý½´»'±Ê Wd®ûZc=j”½RgåRº5\Hïß;Jró$ý³�~ÚØº˜.¾x5]¾–ÒæL3•{¸»Hbűˑd •.í÷muó>âõèß"(ï—S5¿Ÿ¶aŠdb^–½—1nr¬uL#y0ÉìŽúeWŽ�LZ5%ä(/�\¾*ßZ!€0"Ó?³] Æ„ Ío:¤0:1æLc؈°1ãͽþCTÓ‡0¤Ý•NººÉ9ÔÛœ—|#˜�÷Ø‚`ÛEh5=ͽ8ýÕEù ½œ¼B›_ÄÌÚ«M]@ÂÙ;A¾sÄ�?»|¯J©ÂžÆ_ œ¦%zßúÍ}9|«I¨ï÷Òîá ¨o•Õ¾Vº{p'ýî}”ýôî»/§¯¿~-„4ÝöQ¦%´a„å¾Qµ_!©jòŒ5Vê€~žd›Å;ˆ|ø,âßòý2n«�=r;J�Ÿu¿ÉÃWçϳ°ÈK¼°8 Áß³”[âj÷Y“H^Ê+÷’,„´1†|;ß -íÂpW�Œñ þ7Ó�ÝýÄF)Œ"/Eª[#C¶®ðò A×ôÀÓ0‹qÓ ):üõÀ`âíE`_º�]Ÿ;Gãtmm™ÓC y¸ Ïå;鎬UXÒX-÷JÇ/pÛeþC0ùë%êyº7€çék?æ]‡'£õGšõ\�CŒ¯Jsv‚��•Ó.€DÐ|ÊÌ“\Ì�B=qÕ-îú‹ À’êqXw„ÔúÿˆbHfϵJW-­€njuÛ¸¦¾˜p fâTÒ”M$~ˆ`ÎcN—Ò½#N´`‚#XsL³Þ 8�£€î�v…ñ¬ !¨Üyt²‚µÎ³NPÉÅ�NØ •ô< k…!önî(¦A‚ìÏy­WfÇUÍ °£ ‰ lk¾‚ù'ÎU¨(—FÈŒke}pz”öîFþþ1‰TS¯Ûçý²¼ñJÚXßLµÒï½ÿaúé"••ÍtéÅÒÆv7˜ÿU4Yd¤×8£¡lˆ/ÆX’·—Š+ïYüöCaú˽Ä5÷_V‚¦0¾h $¿Hí*a …C2þ±1Æ?„7¬à;¶L¦ @†?à$ò!†hÂH±8Å^0ÄåpÜ65.åˆ%@!@œ›ÎXÁ@ Q?†áŸ¿´ÕMGÛ�tt2IÇýtŒí�ÃSØ®ñ*¹=R.³œy~©=[¶q¾õGŒÏ‘ÃÕг&Ï|>t¶"çS†_C€ʈ÷�L`ºœÖôO—›¦íí ŽÅh/[žÜ�#7®Ý† ½Ž€ô¼o�ÝÎfº·?Hðÿb0­§¥ÖZúêÕË|WûឪGô�š™Þ¨˜ÿ@pâ#°,B­€ÐÌP½C‰+y‹›÷&åà <åÇ¢†³½�„y¯?GJqgâ#�qYÊ9Ïñ9k‰ÓÏTQ‹pB£�8Î^qºcw©2�ÞvÚ?þ+§Æ3ãY÷�º”ÊÈo)ui\Ó_@äq­ÞQ›�ÐQ‡�8Þ�ñZ[à†!°»{ršî�p VøÛé˜aøñÎù]—çù’>ÃnÀw`‘®×à[Ìq´°à]„Ê Ô@úáØùÁ~ `=7®ÁÏͧ~ô‹þèG?êîþÔUŽjêÁÀŒØ¬Ùã\ï€!ˆ+‰.™ÿ0Êèæc˜f�T0]ÀÑO^=›0§ ‰ôX4�C [\U„Ðï1¹¹Ú“b!SE‚UùK9QuóÓôÀçÚŽ]�”iKðB³ªN¬|7;�×l¥9¢ÀÉóI¿ÍŠ';]a`N ˆMψÊ‘Uô—8_‹°LÑV“—a„æÌÀP홼†Ó‚`Zä9"-e” 0‡”<ÔU%¾Ì—m€(8òðŽ±‡ 0–Ù‚Ú!ÝokÁ_ÍI:Aã¡P¥`'-ô!VaÑhƒª€ý68Ñ" ^~!u×–Ò�?¤úþÝôgí¥…Í+éÂöŒÿbºÀÊÿ&»‘–h^›ýÿZýR¦ËC5"4µn\}¥ß6çIž­à/ã ³o¼r{rÞ( ùyÂàø±ßqㆾôC;ðçÙÂØì Þ×´ŒŸøæa™Û1—-S–Û\gYY+ ëøwÅǸ�Mëg p3]ŒKÇc,Öˆ‡0ü»Gƒôµk«œ;}9ݼs”v`B�úš·—Vq2FÖNN‡¬RQ/ãÒQæ ^m„Mjppõ8ÖÃÔ¯}‚‰Û^4¨ÇðB>t{ªwÃC»zq’� ”jU½er¹$œƒi6áÓèx‡ã>ÖNq]˜R¿‹[ô:etn·è`ÄwŒØ��P±ÛºÈœ>Iï½Ç¾ö_¼—þõï¿�^¹rŒ¦=öÒj‹áØḀ´Ä¾Ÿ)ùÂÈ_Z²º|Gád|tFi{3çx©¼yLS‹Ç—{ÛÖzå¿3iHP¾H¹[Šãwa€þZÑ%m¹GœÃ·r%iÄã±þ)6ÔhrNh±2ñ½Ô k­Âô³ßŸ±u:á(ÀãCÆÒé§éð`—“e ©sæíKUͽé�Ï¡2 1–ÅÓâ´Š70¬ rÒOËk›œŽF«å¤÷Ïnì¤w_¿Š`ŸbN3ÏÝѦ% öA$]¬·fA5y~§Ô˜c2”¦zbžÓ}åe”D[\ 0¯©#_|‘ëX—{4ìI-ü:ÉþOKy^\#x^¾ôãÞ³¿þ/NPYö¬m÷ÅH¯h¼ÉIO鼿1çl> ¨!ùcBÊ~CfQùyî�$æ@4.&TŠn±�Z[LGTzÂ>�€ˆ}n” }oÊ0F5IÀGE¹,c×ôÀÑ!À‚µÖìÛLXA”Ò�X)dŒjÖêönŸ=œ£tøÂJZio¤C˜ŠE6Awܘ¬Uë­ÕÀŽ—É0V`-¿a2A1>â�3Ð ±@N†—¸“/ÈżœßâtyR `£ý²8ΣVyÈ ™ \Æ ™ÑÎÍbF¥|X qB<'^UO1æ—yVfKhkÁ�Ûw�ÓNë(Ý„ KË0þ/¥—®_H/_]âØ0TÄÉ™KUƒÍnâb§1!®ýÚ&Þ³¼)Š«‡e!§-ñÍýÓö€ßÃqâݾÍ÷ü� ŸÇÑáüöñ_üÜ#l^J¤«¢#Ôo¬s4ûXüÖæ¶›ø¶„Zc5c|(XÃxäÖb']d ΋[«iÿÅ«ÿãÐ6Žt8g�3é÷Ð 8A`0CU{G}´°ãq´Ç(s¼±ÍI-N½h!oÊ>w˜°Ø2Ãø æ—»Ý tØ5ƒÓ~´ªåwJi+¬ ¡UõN Øæ/k®§ÈÙðxSÞQâߦóà Å7â�G�´ào'1°âv‚PfxºçÛýÃý8ýúw¯§o¿s5mm\„I¸™Fƒ»”–í=Xb–ö¨;’5Ü:$ÎEú·Ïx(§ó7FIåõùþÎ-an5(Ï1°"W•¿Ê&Þ‹× ??å^O[ÕVÒŽ «’Õ}¹?j‹Â#bOÇ0IÌ“ÅÒÿø ÝÞ9E¨…ÖÂ)»3+Œ;Æ›}и¦¾À`f˜`L:óÜ>‡áKa¿6\•¦.ÚźÄÔÚ¾í´�ÀyZF>˜yÊh“>Ø ËŸÖ†ùyyõ>OxÞo˲#��ÜÜ^êÿØ×¨l�üwļ]%|.n�à¹øÌ�ÉÑéð?sÅm¦Mü´ˆÎ3<3h»z–µZ›„\n-'´ h”°Vå1<ÒV0ÂøQò§Ð{3�™Ð'Ô+Q5A"î´oA±Ç(‹ÜšYY–׸¦¾€�!í!¹RHåØ÷è1Wöâx0îŽýζû£”.-®§·/_äXgÔÍP{Ó:þ„sœµ¹1wæ2 ó¸ŸK†ž@U媒×sFŒ ¢}â1)‡ßT”KþÌð›2çŒãõfz>k'ÑøËY‚à”àvEOâÛ+â£ß·JÏjÒCŠî°ºµ˜–V`ß�eÕµìíÊûæÿµÖ»Xþüˆ=ÄÇd[X`KÙ.q<Ø«/,¥8.=$ŽÃ"`üLW±•Â}ÛyEß&?Êùž…¸(FI?ïƒÒÜŸ¤¡ŸŠEª²ê¸s,䱉"6‡Dp•*‚ÏRxUÊ\†i-1抜8ü†:¤;PŠÞ ”!òÔ Fh;YI^`,®mtÒ•uVóÇŒ(æ¶¡Cøî¾0šÒΞ€×�}ë UõvÚï«AÐc%¶Ç–¸.+±I‰Hj¨:6pï¹Öª¯N!h).ÆÀõŠ l‡+þrn85 ÷××Î,]Ž{*Å•ó›;Oû­*ôÈÂPžy nÿÆl“�Pc—üäÏn¤éÉûé´?Ep9m¯c/`¡Ïwƒ"`UÎ�›±J¦9(>´¦B@½Ú°7³s Ì]m査¹uÿyø<žüüç|UžjlžIQU~ÇŸ™j®ø"O”W‹ä±„;$ÔfpÕ_­• jÿÝ…uVIÙ÷ÔM?½ÕO¿ó‡¥9eÂv E<-@<Ë0 zæåÎVÓøšøL{Àq_`¬TäØÏ¡B­c�±Ê`ÍÆx�ÝNHB(zë<‹àºô 1Ö›Wí� zÜü,.ð ac50Ïg æ®Ä•»š-pºB¬jÈø­yêçã©<ßù±o9Œ¾©6MÇU4¦¬Æk¼cR ‚Ap²“1ŸlÈë…Ÿ¹yŒá‘-r¸ Tìéƒ08�*óÀ30 ó=næq‘'чÕ5¯µyjzà³ë�˜Üb5бÍ`” ð(€˜ƒ9f�{y3ýá{1¿ì§î¯¾šºWWà‹÷Sg´ÇjØaZ~,¶´4eÄÇl÷1^,ëp9¥+zÝIP§BϬTfÕ"¤NãEÌLŠðC¸‡ºœ*Íñ¶Àô|•@íÉÄ/­¦Å¥˜ÿ¥´¸ˆ¡¶…6„¬–RãÁÁ![8æJul¶Iô:k¨û/°§{”./OX­Méâ*Ý™´FJ]±:ÆD�z¬+°2P¡?]½€“~y'ïåÙpÿB`â ÄÛ�ût=�‰À\Æ|d–Qå}zM䮯¢qó”UþRL-¦^†ÇÁ… ¾¿«LŽW�, ‹'‡1‡(dÖž@Ïù‹­7jœ�» Œ³­Õ1c­•·!NXùŸ†Pàø´Ã½Åøì ˜¢ 0I{‡h°ÅãvÔ·GÀ�¶¨ž± “Êœ9¥.™]…=„]rkâ!Íö:“©%ã«bõzŠž}å0ðIû"Þ³z&>÷±Ìå|€`\Ýàµl_ Zéý?ûEÚX¦—¯ôÒÚª¿ˆYzàÏb/Á~Ë2¿”£6Eô£H‰ °D}äà 7—ñq,ÅËV{eWš«/ž‰ËwCJºzØ<¼”ãÏàsÎr˜–RêuER"†ì‡^_Ž9NõäÍ’îE0ÞVúÓwÓoÿÁOÓ{7Gi÷-VNÅYYãÊ­˜ž«µñ6=ðùõ@ì2,ÔÇ¢!9\®sÊn±ÀèVÈ;àлØ Y†³sžî€¸M/nt» PãÞ'Çu7¼kB ÍñµÀh˜Ï¿zú 6à#ºSNÞ˜¨‰ -—¿ÃáœG$ó|¸Ç’ŸÏG7<÷oÙ²²ƒú™v\¹«@-€.z‡‰Œ@@ ôLTyV¬ìœ žñû“"÷ºÈWe�Â"[<¹�À2úÔ„@€c¦XU%.Ô~k3l@¦åe˜¯JknM|þ=àä×e@:=‹<ΗYe¦ƒÍ ‚‹³íoïôÒýŒµÃåý´s°”¾úâJzq�±MfW¯"í#›o eÐWÀTÒ@ ?é –xsæÙŽ8â�o«‰Õ$%*Ч¹Q éJxLâf?í †Gõ~™bÙíÄmÑèólß�� iûÂ%ŽùÚ ŸÆ¿Ôr€!²k`Œ¬¬¤Áò4ý)Ù�÷Ó*0me%½vq!½ue9]sõ¿­ÁDÔ_ÉÛfå Ö�=ÂÔÃíYâî¿®3ÿ¾SqA0а Jšæþiz€�´R“øqù·*7<1ªª€ùÍ( ³™«=ÎÂ(­”7ʱAÖÉ\G~€…§Qƒ×ó|NœZ+ µg7/¶­s¼d'­ãUØNV‚&ŒW5PPA›#«î ªÊBô.[ÝwöP]eÙêî«W‹c´ØÚã©5ìà À{Ö»Üçª}Šc}026å÷¥ Œÿ 6#à�/m“Ÿâ–À+S¶3©ù”· UßuŠöæë³Ê>xb2aKö<’{÷Û0¿C_BÕçëo_O/`“!�ÞÅÑ+álù êTzÄ>².`Ù�A¬åËkÁÎ=çæ$ƒ�ìŸ ž3mA.ÌÏñ9"…~™oÕ½*àpFgsª ó7Ãçíȱõ´±ø�$Ê#Sw�ˆVF{éÇì�þÇ|'ýþûÇé(m¦a›Õðªh{ÌvŒ+xÑÎŃÞý|;ÓŸM^ Ë xJˆ^¡3î Xï zÇÎÿˆøöONØy”N/ôÂk™«ó\θfŒKcÈcÈWeätgß&è›HŸÃõû—óYNnœezE7µ¯Úð:ì8¹èižðò?ø&Q˜KzöÀ³ÿ�û†¿ý¿ýö›w?Ð «k�F‚†8²Îì¾y⩼t>×\À~ïõgsŸwÆëdT <Æ’pƒ?2ÿ®Î¨.Ü…àçä/à5§¹8£æòš©/÷`óûEõ€£RæÝñxŠÔzÄ`�p#ÁÜãö:uaýåt{ð�þt7ýâƒéäÝÒÚ;ëéBo b˜î¬;À=�sà¬åañÂʽJ7KžÃóä Å,èY= S>;cCeº×4Ýø�GÃåó,Å·Õâz~kË`‚Fs,{‡úEÔüÖV·ÓúÚxDÃUªø Ó@»’v®¥Åí´p±—×OÓ{¾“ú»§érw�^ZKéEÔµ9µ�2 ”h#©g,„0xŠ#BióXF€²)”–=Øù^E @&rÚúóƒs7¡�îGß —eôå<Œ cb 2¦"ðl ƒV%»Oqy´ÝI¡al3",»”?¿·TpLçJ;\YFà˜q®Á2‚ʈ]0™¤ò,{¯U’±H›ŽH1^��³GK\«0ÿãtƒ#­ö8[pwŸ;GìcÀJM¶ûÜûh±·Ñø.¦AøVã”ú%l™ÝæpvßË= |µƒËuð5µ†ê×®ˆê1G0x¤�–6Ìÿ;CÓñ] ¥…ÅQú o¿’¾óöµôÎ[WÒR¡àá^Z^l¥EVÄOéÇ6”è?ûЧ)ªº1¢jª¾ë¬·ðç±V†•c¡ŒÃjÏ<ê+é-#ž-Ó‡YY9O=o)&ã�z ¥ K;[öÌŸ‹‹ØE´¤l‡èÈÜÃ.ÂïýäNú?þàÃôþmæ“¥ëétþÄZzˆ”´’KA€8W› �kzà‹íáíìø�Qðcˤ-\ÙG(ʸU@ ¾SÆû­�èþÕ´ñòŒï€ç€œyµ _ÉtL¾;¿D–*e‰«g z'åv†?Hˆ‚ÁaH~yIuþQïÖó?ËÏ�àYþºóÝNŽÿ‰ºid¶•LwXÍa¼  'Ð,A­•B�(ñÂR‰ª‚. IUÄŒ§Ðoãe6´&Þp”LÓµÀle|š–PŸlÙ°*­‰nfõDLóÓôÀÓŽÄ6“—+ç�!ÆýƬ„1¢™¤÷ Ã<¬,^`­º—öZéøð ­/ÞBÍ}˜Þ}m)¬ì€Ü7¨K€Ðòp÷°T%E„€£m>˜òØËda‡Qƒcªr¦Ö§l×ë~7O›Sú[«r˜ŒêKP•,ZÀ·wÞ M2¿}ÕN›¢194Éypüz'¡ä :„_`�ê«kðaiÂv5ÙGCàz¸šŽü?ßÝL·ÆéæÝ½tsç(ÝaK‹ê­÷Ø*°À×–§`SG›§PÀ1V…ë8¥•÷«šÿôÜøpœDó}]Œ…,h)`m¯€#]]³£Àî8!L×Ñ‚zý…nú+ߺš^Ù^`®ÿ+Ü·8âî$­a°1!`~ÙÏ9ã„þãøÔ)¸ÃOÂqÏáâûúT €H|Ý�ñ}}šå%Í왇¹`!ç�ÅUeæ¼gCgåÕª« ù(?¢øÉ9+ ~Û;¥?ýùÍôÿÉíô§`Œ2]M«ë/0“ <¥{'cŽ�%S›í%ööXf¶€P«0Ú×ü4=ðùô€ã¸>ú„¢Àç5¤îÜÛY@ˆÏ@@ ,1OÀ ;^=îÞC¼ÏÖAaeÄ–ã 3âÈ ¹å^£<·×CD÷ìÏA9l6÷Ï€’Ù@\WÎ yó�³¥>Û¾Fðlß�õv§'£¿¡á¿ÅE&môÝ{×a¿Þ0ì¬^8É ìPG¡ö~ÕL±ío†¥ˆ�¤7ÌüÂ^ÄóìÉ6È`“?”8‚vè²7PI¡H£Ò˜€0ÈyÃÚºqäsÔ¹.и¦¾ˆpTŽ!€5<–-ç«”ÉdÇ ï0@¤¹z}„qͶÆð6¯cqì0ýüƒŸ¤÷·î¦¯^z9­¯gbÖ.\=Ú=6AdgK�×ÈpGöÀµÿ««ióÒ•´É}kc£�惡 ÍD =d®íôj{‚ÂH­`»f@Ëò5k³é|“¹sâ/×<´yúô=Pzß’2Ž6älï×j)&ú®d¯g-*ç%,¾3~« ö�ñ í�Šg<8¿˜À›B²–ûÓ  ’°Àˆ~ÀøÈÑ㪀+$PiÊ–lµIúøzl!ØZë¤mæÎËk‹i¯3‡½€={íô!Çž0¡!;æ:áˆÝ‘‚Ƶû¸[ …‡¹×l³3N’UOFt¼�}ì[•+Ï…àò»ñ[á‘r¯Š"�¹dÒ-:ûè™tëaE=˜tµjbv5µ mOu™‘ÿì*œ!œAÒ`JÅg¦·×è7–þ;ôUw Ci7­± êµRúÞ·/¥o¿}1]@˧7ÞK§ÇhLÒêb7õ’Žè§­­«©¯‚UäÚx¶é»¬ú¯Ðê«¶ðlâY#.Þ:bê?9q¶?\¹g_.£„Ueê­NÞðÎÊ8­ïQ8]!ÃhH¿¬®±/z˜~ü“ÓÏ?d{Ä Ðb—Ò>%Tÿkcö¥, ªÒEûÉ“\,i3&­úQuä·i~›ø,z@:\¬)¤û[] JA%C‡cÔcÅÁ. …‰ÖWјtV0x†€Oaþà:l ÝB�²S�w0òküR.Ã0¡* ¼)ž€bθÜë`[¡+àFøO�¹¢½ù|@U#83`žOOÿ´½±´gÑžŽN`\:Å3À˜×rh8™!ÉàË LáÖ«°J `²vÏLD=³‚ut!"ÆÐH,D¬mÉŒ8=Æ߈~Z¿p-½ôÊ›Ü{i‹=ÀÛ+t xc “!LÜ[¬žú6ÚÑk�'XEô$’)«Œ™éÈïTÞ+Úc›ª÷ÙZDýÖ}J»ÚÐCÅ8¯6äþ¤øÆ=qÐÇgºÏ¯ô`÷ ˜#ÿƒâú€”gê¯Õ]’F|?Y8�+Œ¡ÁxÐBµãŸiW ã^=–1”c�“ŠÙÔ¶ßjcu\Ñx�=+cöpŸ2— ¸§•ë£iúÙ�Vúˆ3¯~vó0ÝD0v\µg;|JÕ}[ÀA™'\¸…fÊŠ9³c aœ kg^ç\/ Qcœä_±Ÿa[GMÚ ?´lx̹À:Ì}ÖVâ}]­§žöt�h€¼}Dºc`Fµq’ìqDVrXU�»…_ê¶Ûë iww!G?-­/S$ó7ønJVºlÜÁ®ÏÞ-Ô£n§×_l§_ûöõôݯ­¦«N˜ïï P‹jšx52œšÒi­¤ÛúrÿÔI��]$ö©W‰�ï8úCÍĪUö“ÿ4mî(»Šž…•øHÞ2>Ž;[–åØªzjHåÑv6<’�m¾£#7Ó¥­¯¥o}íBúƒŸ¿—îìµÓÊF»HÇiŠm¤.‹3 Ž -–3¯tÀí8 #”¶<÷ƹªæ·é�ϸéãl¨ƒ'étq£˜S8É‚‡:ÜG'G¡ÿ×bn—N8š.¥?»µ—~¶7N/o]`KÀql›ìz¢ŠtÔÊVÚ;€aû‹¾ô‚#}Âx?eÞ£53 ÃÀФBì@]âyaPÐÏÛ˜É Ê'Š>Œ ´A=•Dø�‚ãï‚çþ‡¿ûw¯ø!×3ïÀ3ÿ‰ý‚?úÑ�Öî¾wDS0 …ÌŒZØN¶:Y@¸ýÍ쀆*н„E8“y"_LPä�tª� N‘ §Y@à–!Kœß!¨$Ш ¨U ù!àÆ*Nžy i\Ó_L@|kÜF¸«Q@/Ÿóè*Ï -¬.1¼Ôé§7_½˜¾ò:p‚Á«0b“P†Aç,SõðwËS^ÔÃ�‰ÉÐb»‹³ šÌr§r!ÓØ¸Ï“Er'î`¢L‹óÄ5vJ{³ÐÆuÕ±B¼j2–ñ—X¦½Ü0Ÿ&øòH3¸°Íi#l²F˜Òê¢2ŒPCôi` ›b '¹Kdøl[+$­yø�m.‡‡§jb>Yœ$g}�/1ÒçáôˆÄOZê#Šª¢¢Ê¸�­¼žƒçyzÇáæ Ä¨Â­,CƒÎl¡ �Ò&Û1 °ÚZLW\Û^†Ñ§]N؇ÉÝ;ÆV«a{Í}˜àšwÂMð£´K-7ÅîÚÛ]À˜§úÜj'.ŽÝ XÈ03kÌá2ÎÅ-‘ÖœóöçXž¡)ûE™(V bNÏ)‚š&|’îìÞB ¶ÈÊþFÑäc¥Ú-:È9‘#ì¤Ó“{ôl¥¯¾´•¾õ+«é�—»éêÊ ­9kí 5IYì=Ó9€¶÷ösIQ%´É8ð.‘*âLºxÝùûž�Ëþyü¬ì‡>œ)�6دÖ?wõÒüV�%U¹ç¸±‹02m4ž.m]Lßxûµ´óÇ·Òݽ›l‘'ò-*ÐT‡à”çÐ6ã“h1ÝÏи¦¾ˆˆ‘ï•gú\Oᆟz“O(Δ.à�ÂÜß:qôw/­€œ£9$è <Œoµ‰ré3å»H¨—îÒå4ó{®)4¾Œ­¢MmúL¯ð N“nSÚ©1?/,ýç$û[¹”gû·<Ûß÷±o×í/ÿÛ˜ ÉÀPºïQ'ñ.@ÎÝ Š€¨ vBÓlú3Zh 2<»*ed͉ µi’Hkqø J!ÖØð]ÝøƒáˆçªÀêf¹¥Ž³1�¯é�ϧbŸ?{_c,²ò¦ÙjWÖFôD'¨!{ÙWX ë¡!°ÚÚMo\oCä]J—.Ž1x}BÙÜg�àU˜ê2ÆÏ§* x6ç£|–t¾ý\±ÊÐó¥Rcc÷AX”åݸ2¤føŒi=jóJ¬ºâ.¡ZðG^}gzEú߆hÓ''hõû#´öÒ¥£C Îá¥�Êuêãâ?OÛxqÆ™F§@¢°9uÁ„q¦ó*Ì¿mñÒ߸¦~Y=0t\1¦Ô‘Ѹ ë¥%WÆ('^¥ÕÕMŒÛº€Ý?\»hxßÞ�¤[wöÒÝ£Aúg3pˆºû10Óv&9Ðaß;‚ƒ ö.NØ>¤6€ûl¸¹ê%“ãX$ÁDé–=ƒÿ¨ëüiXæB¬ 9®´Çvµ :w«$™NãeR …dåy¾à ff¥óq9K«M~CÐ᱊®Ð›r™…ƒZƒ=¬'ÞJ/_n¥¯ÿÊfú‹ß¼œÞ~yãž'Ð^à¸ÅgÛ£ÏeñóÄ.ZFßû§ÓŸŸx.“ãf‘UX¹�O[Âw/=“Ë͸¦ª©Â3%ÅCîàÝÑ�5HV3Û¬€^»t9ýê·®¥_ÜÛIwß»ƒ`e…^fNaL�[àTúj8ÌÞF<Ó4E°:ëǵ¸‰ozàËÔ­tëÞ.ÆR/z\ POþi³mˆU~ƹ€8…<š\‡n�[Œ–ïù�ðƒ�¼<ïW¯™i€Êóˆ°\”uXFûoòÐÎv[ã{{àøðøßW�Lâ%Vô@æï¢ *ˆ3âÛYò̤*°àèò£À3î$ç1,g83àš[BEeà žÀThð&)€$F´9k“¼5EÍçÚrɆ7®é�Ï·„¨zG¢«dkªù»× —a˘fÛdõrôQº²~”~ ïÕkƒs�1/ [\É6(µ”û.pP psÖé�ÒkÁÖÐVe©&ÐÈšÓÇ$*£Œz •—«"¼ÄŠ_-ƒï{»µ=…y066EÆC&†¢8ê +éh tNc[�-°À`ØÉePŸ[ г2ÿ!$ànYñ:%Á¹{žü³�Âò¼ŠP"ã–soÓOЮB�„�Ka6æ»Ëž~×î{ŒÍÚ1«+]VêÙ:ãżŠV++✃�ºüÎQ7]\�†FÀA?í %8ÀܪßÇlÅ;�9ôÁ –ðYƒÙƒùç �1¶i«[ñ.™ÿ™€ç±Z`A23ò¹s¼+ìy®O0•­6+ñ¤å@nÊGb�j®ü fDù¤ËŒ¿ÏBªxÁ_4€ÀmnÙëцuˆøÎ ŽþÝ´½ÔO/!ìü�¿ðbzõ…vzíú4m.í¡õtͧ>˜¡hlÃÙã]ryQèýØ‚ûó–â‰xt÷'‹`ÓF…ïþŸG ÍËÈõXN.É<å9—^«aFY— «ÿìë_àÈÓvï ½~õBúö›–¼»ŸnìßcKÚQ|2…,j…¸�:áÛ´ýNN4QÞC^îþ×iBšøÒô€êîÞøji üA.KÞb;T†Ç÷†|Šm —¹¼«�k`‘ý¥œ¡ÖЀ÷±|Řq<«‹9ωk4ž“ý°×<íŸ^]`ß^G¢‚ÉDA€G+I¸!âËD&È”+ÊøH—IŒ< çgA©°|£Ü†÷±pœv˜±V�ð`‘kˆvv¸P²^ŒQ^'uêN¸ÂÛd²QRû9a›“È<š”ÖòÀæ<¦ËªøS�R_L¨œjÌ?‚ÍX­¬Ì«�§Ðâ:Ö²¡ÚÙç{z/]XÁ� ÐeH?[@„í»VQå>Kq„æbfÁgG mβdü’ñ˜�ŸÎÌZCý¨ ™Ž€Ñà#4(NÒwÞXM{{/¤ø�žöO±3Ó£�ÁwSð¤' h¸Q¹�¸6ÊŸÞ<5=ðÔôÀCæÿ‚ÏS ©d5ü˜RAÜSÑVøÅÂïŒþ�§3� üoä]e` Bú$´©¼{Qnàà ¯‰Û~ó7såûßÿ>˜ùÙv�àÙþ¾�|;&«öÿôßþ/XÞ]è˜\*bA’pÏ*Ή-Œeb3ˆÀ=÷/x—[SÀÞƒi^]‚ìZanSóެÇðà×8 äúæ…tc«“^@CàÃ{Ýt‡£ïMÒ«Äû'Sˆå![Ü*ƒï¸¯ò;C2Â)a• ¬Q¸D10î_ÜßÑöäíÂ®Û rú q¼D0ÿ0þ2ÿj ˆáÔ �Çüiçd�÷œ°maÚ‡ÉLjà›×Ó_úêk¶Ò«§iµ»‹``\·O9`GN!°5 ‡G‚qXaä?v§ÏÚç3Ïü¡VžÏ%Í=`–À^ó¼OðåFE@IDAT4/#g:ËüýkªzÊù³s…„¥Ý.†»Øè§W/¼‘¾ûÖ¥ôþÏo§÷nŸ ÂÉô{ØDòûyù54ÙPðOðÅš¤_¦P0zÌjûͽc¶o¤�ž4Ñ x$CŒ<»øË›x6@Yð šüZQ\ççñ˜ûIg²W{kË®Ê/k'À’²´6¼ºépçøo’ë¿©å|&ôñL~Ö�÷Rÿ×ÿþ�ÿê„#ŠaF&#>ÀÀ%àh½ÛÕÍ<©= ¼€FÅÿ<æ»ÏưrÃÃt™2wª´…€ý�#™ý ‰=•ê «"M>ɪ(Ûâ¢P¢Ò•{ö5¿M|¾= ÌÄD“‘ƒS€êl’wCþ“tõR;}÷��ô÷EVÈzÔÝåuVw äÉq~L—7ˆðjœW·•akæ+¦² ån8ÏTŽAáJšÜf¡Ì)6‹1Èy˜våP¢¸Û»7w†é&§ ÜÛg‹ÀÉ ´{ÂY¦TMäY‡š{¶ÅÓG24 ÄÆ©)"€ðçö ÿ̹“uâl7«þ4´9¥} ²ê?{8  W\çúÌ¿«Ðb¹5¬Ñ§ÉqZ_;Mo__I¿Æª¿Ìÿåå~j÷oc �  o Eˆ7FCaÒQçO-"… 4ຜ×÷ôMç.žãÅΆ—¥Îá�’ÆûC韈¤l%õätô}Ð;Ö^ZsþÙŒÅñMÀ“§ƒãÔ�[¡ 6G¡%ŽE|¡è_úÖKiçŸüœÕ~ÎOGÞ£¶E ÜçJ©_S-,ëžUUŠmîM<=àé%˜GNì�ë&i�“Æ�"L9¿�4Nã]ÂØi€š^ì¦0RA¿p( z àŠ‡f‚Êkòp»¡`BMpÛ¬p’ÊI¢FPõUs{{`8ü§® ôX¡y‘*yP&¸ó„¦za€YüäŽ�ÐIÔÌ\õè-®€¸*“7¡4\¾‹úñ±LLC  �9�|N¤ÌÔ�ëÏmÈ¥•Ú«âš[Ó_@Ù/QÌ œ[©Í+m†Iøv!æ¾ùö6Ö¯WÓêd—£¯ †!‚O² üÛ¸€%ÀÂ|yŒg*aÿõÌ-|•»9yŽ  w†'î<:ƒÍYåBv!hÍŸ#Ô˜Ũêy, }óÐ~]ù_YÝH++kÙˆš¡â¯€�"Ì«‘Ï¥¥¥ÔãZ]ßNW¯_O›Û�äÿÑugÊâ=ÍöÓ’˜¨5®&n*Wy�‚/ŠÿüÝøy»ÏÇ6þ¦ž¼‰® ,óZG�¹€Ä|Ê@…=ã!V¶•�Ÿ1«ÀL�˜G`žz6«ø‹�Uàží¨­’fs£›.A„�–9 ¥+wWÒ],eÿâæ«éC˜DŽd5žm÷+�Xêòlr/=Vûóq¡c6Lk ËéÊ•«ikû ìÞ~÷G;™/ð®ØG ¿eôÒÆæFZ]Û`åÿx&t%dˆl M³ÍKÃNØEÛ@C‚Âm‹„øDí„.†Ä<_Ý““×ôÀÓØn•<í,§w9õâÛBÛÌp�,µI[t=wYñG(ÖÔöJž�…¯ ™: o%ÍÙ¹;§ÇÖgø5¢²ÅM"Ûé‡?üaç?øAˆÝžÆþý8mn§—žÑ4ËZ;¬^2u… @ À* òõcŽÎÐ…O`©ÎHžçsø|BÎ –ã͢ʿò~� É~Býž» @$ÜI×ys6ù’Wà÷_‚;´,7¯#û›ß¦>¯ˆ‘Îj[ì‹G� ñ¶ˆVÈ ì7–Zé+/®Æ ÙrY¡Þ‰Z< ”(–‰�A}®ÁÂR!Vò1Æçð5�;—íœw–³*Áè +¯Ò–4•7â +Ñ<„>Ñâ ™h�øS ç{WÃ�¡PèäÜ…0]Në›0+0úËÙ�(Lˆ[Šì/Ëˤ� wß¿Z?'”6Ø< =ì ð®à]†óÜ0P@0ÿg…óüçŸÊÄåZöìýÁ1ŠÿüÝr «3ùçŸKžóu6þg¿„ѧùmeÿ ã3V€’ãÞ‘[ή.°l íìtÜjg Ë£ÝÄÎ~Ý´Í*ù:ÌÞÅ5˜½Khô± p¡—>Ú˜¤�ö ßz}VÐ8Ià! }5ñ°: ‚6¯ µaÄ-êI0œmêëqTábk!í³¥`]§‡€t4B8àуNÀ2ÿ—6/¦ãÝ}ìÓú2ÂÎÑ~�ÜåȺ¥ôÍ—.¤¿Šºÿ¯Ð®í�˜ýCò³‡·ã{P7e�MÝÙXªpL\tFÕO>bgY3œ/¢Z¾Q=l–¾† faµ‡æ)ñ¥îr�ðzŸyÁ3ñ&š§ ¿:+¡a�Œ9B¢¼7¤Åñ~z‰­ï¾u= <¾·³ƒ€æRêB¯�"\î.(˜‘J›—gé�kzàiè�ØÀq§Gã^ÚG½åœµ 0˜ÁE`ŒÀ¼’81¨§÷bÛìʽŽL +~î ÌòÌ¡&´›äƒ€¼1‹7ô:=Zx‡Bþ¨ªä™¼5€gò³>þ¥~çw~çµ÷ÿøÏc5N«¼mW œº•Z;/fâV *—å 8AºÌÂ��;|À^6ì“ ¨ì ò]ñìà|ÔTÄâEÄËA ÔªOJþȵEùL{› ô4®é�/¨d^ð–ÝXÚê1x'ƒ#VúGéí+KéÝ761ê…*lê3±z1®ö¿*¶ KL60Òuø)ÃYšq6g�{·ÇÕK1ƒ%V¿N˜tõ˜ŠÇôÆç›wWÝ˪z>Fˆ„²wÅ^�€²ZCV ÙÂ�«ì, Îº¸+ŽâûI�‡ªÿ+««q-ð ¿®h 7«z÷°�_½†¸@F‚h“šaG gèoaØ-Ï÷(ïbã ??_XnKN_ò�OÓøŸÏp†+pšù<�ÇqÅh�¹.Ï�¼Ê3gäʈ*°þnZa-»ŒQB\ÆDÜ%�+Âm�ÃØ�¶ÚéÂÒZºr´˜.^ÛHÁÄß¾ÓG3`˜níL8Zë£�£4èŸ0¿c\áPʼ‹ú= þ˜}û-`a 'îžr)ڒܛ϶�ëdSÔÎÑ8ØXXOK¬øOú7.|”^»ÚNßùæåôÞØJßX¤mŽœ°…°Ï|îËôð)t%/i#€r�Ç…à6egC[ÕÊ¿�ŸÂEßUù£ ©rÖ•Uxt/?ÞÏ»‚·�ýâ¯ßãK«6sµš Ó_î÷µªÊäà‰55üÄö–ÐÝ‚ý˜Ë‹“ôß~)ݼq#ýÞ�!‘6Á©‹„~áƒ1•!¾4Âò“ósbxrØ,†b°lð3>Õhó4Û‡8@ õ¶Úicc%½„vÀ�ƒ”>º9N`'à7ŽÓ/ŽÓ-ï=öÖ‚dдcÅ8ÁðOX�WáÏÓ3lCZ\Ú¤}A7B0€Sµòn»ó œ³"6`õ/‚ˆêÝO¿òÊjúÞ·®¤w¾²•®¯œ¤îî‡À¿BÌÅ #zm`z"øb„-MzûA°û¶®®ÑŽ3ô][ä5èùøÉ¹«Þ¥ÔÊ= ®D•{éïâ¢{à>rÌpÖùÜâÆZ#ÎGW~S₸TÕf>SZovúûéµ­ë雯\H·nöÓÅ�ý®G­¢Í�Fƒâ!%7ÁM|y{À…@ο@»¨“îpÀAœ‚F rDçÝjX‹5üËx5¿O¨qfÚrÕAΰÇÀ`Ø “R)jLL'í�»ä.o~Ÿ¥899ù7Â@�€!@Ò’à E˜© ÊϪ„(�þƽ Î`ZÒ˜‚g&,SÆ�"cÀêÀþq?ö°Mˆ·[ óï~Ÿ²†ª(Ié(›U¿-(¤i\ÓŸW@J3>™­°S‘ÆYumÂqWÝCVÿ7Ó»¯-±:†ú,a¤ÚÚ³pKàA¿Åå"Ùl@W ¯9þÆèl<î�K‰å~>½áå2Îg daN«åËË+ic}ƒ=¨[Ÿqmup„¨85ÿmŽô[[ß„©@Àý\¦¬ytõ9,ý/`í7ŽüC(0ĈYf�ÀÂ1?îíWh;Š"¶G[ÔpÏ¿×ã\�i/GÖ™zŸKïõ˲Kœ8ðüeü“!L߸g¨¢jæðâÛå9+‡9ŠCåR×1\‡uñ‡þ<þKÆ<ÆÍ§S=“ìÑV†åUý^B… ˜ìÃã/o ¬]ád‘—6Ò­+Ë飻'içhšnÜ;N÷އ<«mÇ<ßYb¡ Æ^&�%çšJa˜M¤ ÙÂÔ!]�@k|œ¶irx3m¬ Ó_úæµôkß¾’^º2MKݽ´ìq¦]òã]¶´9®p4BÀÎÐPà¢8!ažÌ}#ß Ý>®X¹¦?$ô õUŸØUq.kWÖ£â¹|¦zM «Å?ºm”»^SÉ\ÅÍÊ¿?MÐF$¯LÐòð®¡DûiÊ~ ·7,`«a{y˜¾ÎV²-¥ßûÙN:!liq5õ«­›¥ÆæÞôÀÓÔ.š¸á¥ ι{pœö�1ÈÌ‚0à@ØÉDAàȘ‹Œ€âÂèjàŽdå^zá~˜+1³»Ä�eQ§ü�¸8ˆ`Ñç³íOA=Ûïÿܾlq1Ù;Ik8‘0°Åd®€�ÚîÌâ*§“šq° zêÝh|vÎ�Y’§Ša–Ù…Ô�ðÄÇá ĉ¬®†$lÂè–£³äÀ<®3ªz óÓôÀçÖªðbT+HXÔ2Uçï¢fûâ¥^úÌÿ+[xº¡�Š,–¯[ó÷û’§§*,0pfüVãüü€vü—ññ.¬öÁ<®ð 0׃âKiÞk—I�õ‹J0xAÀööEŠ¡ýì><<ÀP磡˨/bÁ|;-/­‚7\ÅR2/!K 2¨0Ëøk´Oƒ€qÔúÿ’»�RªÖ9÷»o8ˆûˆ#4;JËÂð’Œ÷“dôËUy qœ®0úááÇ4:ÃËs4?MT=³_ŒÍWŽÑœ nº†q�áÄO΄Msþ¨&¹<æ |Vµ¾œÔ“éÀ�õ¸>Uç`ä£ëk)m/´Òµ�¥´w‚zÃZãôO¼ŸVwQùŸ"èk'`D6¶æÀ`z‚Á˜s·Å[2ý hø¨ø:e�Òäô˜ò�Ðö9I_ùÊzúÕ¯^Nß|}#]ßð$‚ý„aT|ãèÞ�ûgi–FýÆíƒBŠ.Öÿ± Ž‚ÆŽ¢7*¼ob€H_uéݨ’NƒÌ»ßî­{g¸1Ò> ô ÷¥€û<ö)õ|Áá/å•Èâ/÷\OŒ¾±Ÿ~Â6‰Š÷Ï‹ ¬@v¸6»ˆ=€—·—ÓWѾøé��´³ÇÊ?8WÆ©qM<­= Þƒ;¦ŒñÝ£{q �ti=æÜà=\ �ñg;Ù—±I~÷gúÌCŠzPNôÀ_ËÊS½yh (Øþð¿þáÚþ�>0ó3Øž��ø¤¯ð[¿õ[«÷îÝK« ì'sÕßIHJœe÷ltËóyˆHÂÆJ`3®‰|yr‹Xˆ� ö!¸�3&µ {!4°n�!�£Áü›AŠÉ=ŠÕËI>T¤”‘q�©ªJ×Üšøüz€•®žG[a;± ÇïêR;½õêVúÊ«ËXñ¾Ã^Î>ã~š†¬�³8¬h$ KߨÀz¾s€X䟨áÀIÂùBê(ñ|x½’ZšÌ¡iX × ªp™ÎÖêÿÚÚ:„}‹ýþ‹XÕGmo{Tí÷î6·ï©ìè#Whù¿·È*!Œ»Þ},Þ`å0–5ÅU2>ÚKÓMV=K4KÄFëïsÿsaì-³.0¥qž`\ý2�.·#g?æ)eΛ‡ç¶Z² )ÀÆyÊ¡Ýâ?ã˰¶ã½b|í°°ù±éJ˜ãZ†?&ǘ#›«þć*½Œ"pÃ>f…½…¡Q,mp” Œ ”Ü*qÃÞ4m¯p­NÒ…# ®¥[�¯/ìl¤_Üb8pŠ6@+�CóÑÐ58V›�Ã.B�)e·a8×–'”ÓN¯^YM廯¤ï¾¹•–†wÓtï#ÊR[ FKáËñ~´­ ÛÁxW§ÍI¼c0î¥�1!Ö‡�€9}Š0TÍ)_W…ñÞ&{B'Nˆž�~Í™ š¹J#¤>KðË~ðóFMóÚrÓŒ0,˜W¥ñ%GÇÁ°xH=H1ô]›«'Ý„�fáÎ[/¯¤?»·žnýéˆïÖê­‘>ãª(²ùizà)ê�XÔ@0¬c´”�0 -Íáêþ#¤Cv"‹3ê#<óUšGÞ ìUpW¥Í§ˆä9=ø˜®�¬à‡F+Ý¿LÒÿõ‘E?Å‘�à)þxŸ´éKí¥· °Ä13î×Ë„ˆâ•™’˜Z%v ‚$ßç@Xj/€¥ŸÉ ¯o”Ä» *šFBÈxA–ˆÅj*šO¢Z�³m™5ý+.—— ¢Hõ%esozàÉz F£cÒñÇ8œ�:G¥!Ê©ÏÆä49mKÆ~Ä‘Xí>ÄøQÚ^…*ªËóQUc­%–J‚xë°ïóÝ@m¯ÍWrÐÖûß'2Gë,_¬�'K3?w™¦(#·=?GÃÌyr7¸m®”—‹™×I›Ÿ§¤üº1þËgvX<¨íç3̘V± ‹'ÐngÙ�'9l­¤uü]J  /!îdü @$GÖ&rü0îb�+Ü̇׃ZS +ãß±ëXd$ζ(„7µ:�¨F=Ôü<=px»ÿ.ž®¤EŽê‘ÞÇÙä3« Hÿ™�s€£ŒÜóY™y•BØ ÍàLЋ£ #�Öƒ»F’mŒ$`§sÈÕÃÚy«�„‚ã‡v˜»~Î~Ÿ=VÇ!í vÈjÝ6œõv½Ä<=à.€K|m2!iãšøØ=àëÃÉxu„1øÜ¢â˜säi¢¦ÃJ[Û£³búq-ߘ<9} Ysõkµ}�¶&7Ò¯õbúõ¯_ÁøõÓòœo 4WÂXg.zL2ˆ ëaþ�Áí63=�ñ{î§jß¹ÐÊÐ1‹’À:ŠfIxÈo—Ó&ÚšID°Å í; �Ãø‡Ö~å̃‘0˜ ŒøÃ˜¯ªE ¹“Z#cË«+i©bþ{¨5rÏ%·ž  p!§¦]ü['µE¼Oâ$�"tÔ3Å-Ø£L˜a2hI½j7w™£œ73öž<`Ûž‚Ñ/[æGæã ³¿uˆª4ŒÎááaZåÔ‚­­-´\�`$øM$Úqn›jÜóÙñå¥fk®>dÎrî<¨î¯+iНhdö*W�ãÀ:ê;9Ç?`Òbn“`!OœÐ¡paƒcû6z]ÎŽOi 4³AWتóÚZ'}øQ?ÝÜ›@toc|‹#y÷ï²Ò¼“¶—Æé+/_Hß{çbzû•Í´zú Ö£¹0nê�½àCçö°Ûû÷€eÍf…DmŸXðÇ  Û�˜Ú1>(nêa4}/v ø³Ÿ¾™½p~ïÒ?&0j毺¥~sA!ÇŸM•‹,aù~6,—BØY %}­† æµ€yš(ÏïŸ ®Ò?O£P´æ�§‰vÓ7ñÙH3Õ¢¿wnQ&[<ˆ\Z øvAÀǦ~çµ—Ó�[­tëÎûi¼Ã9êKˆn˜·È×'k[ÅÓY&\=ñ&eåÖ€· £üZ8› ôñ›´Ú0ZÜEÉžý½‡Œðc '�ŠQIAÙX«_ÙŽAë�3k6MÜ@‚–—!LJЃA£96‘)¬p;œÏ~÷Z'ç¿?7î)éÇ–ÃU—ÇY~.¿UTñæ»ãˆ'©þÖÉnZXc ÌÿOö[é'}´™˜S/£!´ˆve{‚eÆÔI{…ÑýàxÁæPgŒŒœæß\XoÁà–ˆ"†º\(�¶q®ŽÅL€%ó4ŒE‰2Gw¼ð^’BkA—y1®ÿ5ü[\Ϥk4žÉÏúè—‚Ç_]FzÜAÅL>iþ- i Àý-€ÆÀÂü.#o=.KÑ (Î=Žªüµ¸zD[šé¡ùÚ‰µ’ùraN¥QXüä¸ój‚ ã?ï¡æéöƒMò4�?ŸæW^Ù¨Ç@,Ŭb]¦«ò1a,ÃŒNo¥W^ꦷ_\ã€$بÖ2ñŒ„G¾Ì5@‚;ÖvráQΓµ?ÜÅUpSe×'\–ø',µVŠ“bÆå·Š¬nÖÄH ã…ðöCxU ß.@¿¸„5q™v{•öX5g2ÎÄ»ýèuÞY‡.×ós<[¶{¾"EÕ‘üÜ�L½®n¬¯´Áû)ÖÕœFÒï÷ãR˜  ÀëF(±¾v˜fkƒ%îÆ=¿=PFéÃz Ø/A%<8u-0À}–þþRg%TÉÉgÛ þqÿ¿ê0Q,pôÆð(ú4Ø·Bêõ‹Ô…Ò˜¼ð„z ÜŽËBÚs‹÷YY°Ò¦Zpãšø¢zÀ±DLÕ€ ”bð:z+qN‘ÖP&ЏÓ6Àâô0­±�ò»ï¼�®_ZI'lØÄ·ç_åbÉ*ǹëß]’{>¼yŸ3¼ žLuw&¾ñE< ë6Ö;“yâS†bÕÿØ{ÌGoÂ4Û2áÁ@°bÇ>f=ÒV@y=ÃdÎ c¯¿Jšr/iôKH+�ñÏêÿ§¡þÊ·råßr\EÀPÊ0¾qM<-= ÞPÜeÙÀAà+U¶UûFã¥Zìp| Z㢧ü°AÞçø>öè `W€‡X¥Ç2»2§" Êi›#c´%¦ þU|@òŒûæø,²E~JAU çÁ«DWuy‹ ’OV±Ÿ'×Ô�¸i;�3,|�¤œw¥@cÄg%E¹×ÓV§qJš|—9ÓRC²&LÈÝŒæ†{úÙ¢¤eôe¨õ g ûM/®·ÒwÞ¸ž~²·“v�ѪâÛv–±½ M–øê|G·_iÇ&Û²At=uKD˜ß“�¾ÊÉ®ò+ÄípOÍÊÂZñ¤óV±�SÊ΂pìKœR¸<ì PVK ·äPšBpÞIMºØî3Õ¦Mù ±@zòA½Ëšçç«sR pŽŸ¦;{‡ ˆV¶M&ؾ˜` ¶Ó+ì$æ™1æõK5Ž»ØÖbiŽQ¿cÝ1ŠB¡gl˜tÿ�ë™s�à™û¤�~¡££ãW—±Úí`Ÿ>†ø~tIóX§3‰ * ÿÏ<+�Àpq{ƒé@;pß-Fj:=Œ>`Š�—Ü<5=ðÙõ@žF*bŒjµm–<¹8Ñäº#�Œ?1ù’x ùpÚèÒk—zéöή£ž9:ÚKí,2!"—.Qä•a$ÉÄeUAÄPN‰Œ™yy(m©’žËYB?ß{&®é`Z§@¯1¸¸´—Gÿù…ñ�w¢e¤eþ?Ž«3Ý…ÉÏùó ½LºþzºR®aaoÀVT�ë ¾Î²ŒÓa¹øËÝ4%ýÆÆFìû_[[ �†Â�y�àµÆ@ôgóóeìlï8^A=a›$âVÖ`ZEGàºn£~R•_épŒ)gv¦ÖûÇ'‹0œ2‹@°'�Ä%n«p#eiçg†œÏx‹_¼ø <Æóy|gD˳1‘ͬç]D rš’²D˜Á皟$ÙW¯C|‘Ë)%™s¢ÉÃ;Í�™ri9Ìø³þyÚÚÓCÒXr`Ad=¤‘bV0æ#— þÔÎÜÏ"'< ¡�†œ™¾Õ^Nï ð»¿§�_œ¤ƒáqZ˜bT™’†à$…°ñáÑRjÁô·&0Rn €æó“ù^ VW°¦%öåg´Ì÷&�x=ð#­Ã�±w3ôÔ(îáçt›%lIIÃ)L˜p,¥*Û—âEëû"\ùF5á¢é“3Ý’£šßç¨b˜3aFI1övíÒ­ÝÃôÆuDz-rŒ‹ã&‹Ó*üóKè+çù‚µrqÒã†-©qÒRà™t�à™ü¬}©Ö š6Ö/€ü+©€ +?4ËÇ‹°Z•±:@u „¶À”fÏ˜íŽøC&(­Ã*Õf–ùx4©šø z ïÅ —ƒWÞûŸáBFßiÇû,m´Õw ý]\§ï¼y #[C°c¶Ö@,�Ø? ÑÕ嘬8ËVÈ�êòÎ%Mé“°—§µðÜ÷cš�KQÄ}©(«JTâK¾zž\ßOý°'`�îÑÌ�uæ¾ Ó¿€¥*™ÿ6ÌG¶øŸë b:¨@z9Žªá+¾kPí9Љ»0âµdAØÖýå¹òÖ[„ÆåUþNœ&PÒ¸âïé2ûëëëaÇÀSVÒ!A©£¹7=ðù÷Ày*Ðëݸ̀‹×&2ò!°B˜ ÐŽÇöcXý…mÔ˜8.l¢@{dgw}#îsdùÆj4) P€¦DßI7 â4ëÉ÷x®š‘™¾ª VÚGfó¸¬WaCËÓåVŸ{&P\UÛŒ; ¬Yði�#æ=�Ë›•:+‹÷ȉë x.5•{‰Ö_ÂhA¾]ÂËÝ”™eɹçáú#oÐax(ÇuGWÖƒÍñe™“4ê×âä$W";„±ëžoÐç{MÒµÕµô- 6~¸ó³4º»Ç‰ âUæ)¾íb—Ež@°V^‹q\‚)ïÑ„E¬ö£­¥ØÁ“M™·”t$ØhEfèsý~îSŒ œ²‚s2Àv Jƒá[(K'äÒth (Ȉ9³héå[äyBº“FІ3]gšÆ=w=  µˆ4–¼¸°”O�ÒG6zé*ı#Ä MG iò%\�ûOÑo” ÝâøÌxËщxó$‹l°“~ó7såûßÿ>‡©>[®<[ßó‘oóûÿèOÞ|ïÿùÓ4í³Ä^—GæxtdBï…ùP�âÏ L ·*_ ÂO¹NHx Ð+5Ö0Ø]IÛôÀgØŽÕâœ\²@ÏÆÅžH&E’Fêœb †ÿÂÒiúÊË›û·ÃH?N›ë‹iÿ®GfAʹÅe(¡%Å=€"`¤òZ=W7<¸ªI”uVÞ ˜ œE:~êD”Ï%¾ä«‡•<¿Ì{~3~©°C?¹òÔõBš/s-ѪÃÄÅê#•‡Æ€¸ižÔÉx€yň«ÒïÄ.ã_.†Ù>…�=VÊ+0+í~ú�wßÄÀÇk-¥1¶-vïí¦µ•¥€¯Ýý}„m+ºQO'ÖVýÇ…¿þS�Ëí­Çž}6¾LŒ%_=¬¤6N'£®z°L€Œ±+ß2¼2ËZ¿—)Öe†wÞBý*ïÄñ~¤Õšï"ùÖX1_ænùÊ„›à˜5~¸YàìmKK"ð‘?…�7QaÖ‹‘?Ûn¼NÜåeMW~ã$6 3Þûç¢+Ð^A¹ ïßÿrY^ÙB`Þ0`�^\©·î7Oãšø¼z �¶Œ„3þ<DNQÓÎÛV e…÷T¥qVÚ<ÊÁȽáv`CüMÇtÈ8N .Õ½Yn# ½06v; ÷ ªEŒý<þ³N¿8VW`%ì f%˜'§Š¤&ŽrÌS\<æ*Ì]ƽøô„°ÑzüćÑ^Újx!*8Íí�דU÷WUÍqÆ�U(·³iç[Ά›Þ³É§ò$£M&³a›ûFüÆi±EfIöÚ/gêh_ÚÜLßý•uÎSo¥»Ç·Ò:Û;'«½´²ÞKۜ氵Ö"l!]X饭Յ´±ØÃP­×B€„�SfÜqRÝ}/kò“n*À$DR!dwošööŽÓÑÉ(m!<¸wØO»‡œœÂö€ÃÓ ÏC¾¹`ŒŸ!ï37O‹¨1P>xTáaÒ¢gµ(¨¬qÏMxÌåf_;§Œ‡}ÆÔîñ�;B,`Cþ¡ƒöŠƒPÜ1ÃÂHôÒýpU,3L“Ó—ù8ãð– £=h¦±8Æ(0˜.P‚Á‰“që_!áo×Ë~žÀ³ð?æ;ŒN'ÿrW)¿L©0Ÿ >f!Hà%4:Qs©@ó@ª1Xmy:˸Xp¤¤˜xWTØP^ÔôÀç×yÉdN°åŒK§CÏL.¸6ƒ¹�QšéÃËíôÚ…¥tm«›6<pÚ'… /£ßÉ 8èt¢ 'Ë´Ä 3³ßYW÷›„bÂáÎSåÍ��ø5_Lh¤ °ô^Ë\â,B&¿‡Pp�œ†ðT9=âh<™i™]ìpÂ5�wB�É ¶»2Ò•Ú¿uýï{“>çÏ·üLXýekQç­kV‘uaäëñçó+Ø(‚ÓÉÌ+ä�¹wÕ5g… ¾g1è½lð^ê±lŸƒx ]2Å=ª %Msozà³í�kêƒ16H ì‘�.@2ÂŒÊ$ ÆPƒ!•égöÓ‘ͽø%Þ°# Ê~À$±äY€ƒÄÂáAÀD[2|à’Ñ|)ã ܘÐp]´GÕ2 ‹ðÀ-Y4Aù9½uVï˜_…"-!»£?‡ ïðÔ9޶pħ ´eäNGC›˜š ¨ÛÜ¥þ(ÖÒλyX½_sͦ�ÇÏrF™÷‡«iazµ1´ÎØv¾ñ[ÐMÆL‚Aq>qî‘Q!"œ¦ÕöAzûBJ,§ß=`†-K›ÛiyM VûQí_[@À ÿ*×2ûüÑÚÇ4lµEï®Á¨Œé'òÒIÃùÝFhjiøoÒi…çñÛl8^Ñ`+½xq;í÷×ÒÎÁ0íMÙ¿=I7î�¦[û0sÄOü>S¨à5‡x· LGY þÀÞÊ�h~Ÿép|«0$Þa Ž�6"KJ{ýqº´Œ€0=Q½c“Ì ­_‚«b¡¶F¡`Æ)p±ÜøoRÙßþ%Tø¥*¢|©>ÇgÛ˜S¬É.bx/A»VØþST+�yRtœÞµ “‚†.È_¢�´ïƒ6°À™u{e‚€‡Æ5=ð…ôäU[1–i�SB²$Ę˜\™bD©ÍžýÉéNº°¹š¾ÁYÌ/!Xëq”’ñ2ÿNbà~ø6'mH¯Çò­+ÍR™Ñp¶á|’‡…Õ³—{.i97ÏJ Ím‚ï¢íÌøæL³ç×µŽÐÁ^ Ë ÊϸëøQž>z°ÆóÕ­¦[�÷zõž[à¬Ï…XŠ RÐÞø61¦±68e~Êwæ*ø^m¾…œ,øã_ÝLoßø 3ñÃÔÝÜN7ß¹ÉxŒ:“Ë58|,ûúêXû¯8_™üØFñ°Q÷´Tý¨\ˆ)¿/oj.™#¬ÍXB0ÙÐ Þl[Å1KöÑ~’>¾3Nüì8ýèÓÃô)÷_`!2†NŒ¨¹.|̤“‚‚ŠË¦ÜÕð%„€Kű�ì_í~zˆÀûGékìj¡‰;PœÐV.�IчÿÎ ¸\VÆË‚ŸÊ$ŒMZ`þïÖšq�:Û¿þë¿ÞùÖ·¾u¢õ?oµoP¾ªxƒ>ÆËlÊï~ïw·¾ÿã¥mt¹ÞÌÉ+·c¹Ô "3Ø;ûgÉ�RÐ_µì"ëæ²ûÓq‚`±–-R\j jaÏ ùYŸrdÂBv˜/‰Î,…BâœuY cÝ“ÿw¶éYûmÓ5aþêžðÈì±³6š´ÊtZ¦,í)3G+ÎÿIžÕbë74yÊmŽä·Dœy.ÎY•¡9ÅµÉ ñt¶[a}<ÌŒp1w7¡&³«ñ�S–1̳â cb:@˜î3�äýŒçùÏ«¡4t5îé×…a/©Ê½ Afâ³I¿Ï}æ±|Û\ÖíÛ>gÿõî_Lýµ0�"LYólzg4µ�(×ñ®ÀK˜Y>Vk«×¯Y´,§1ÍùÌm´ÒqÎÙ­ Öbl1rs‚Å>á.˜ ¢0€(¼†åùeä},®µ{àÖD^ó`)ü;Fj ^……€ø*#bé\—Ñ!Ƭ澌_!P~Œ¥Ë”æ k”áO¼f ئÄte„ã„cYì|d�LGÇ8Eö(Û¼!hX¦%Å�g¥žztÒîœpù+éŒ+ñ«Å©`Ú+Uè6¥20]ÓXÂOÕrŠ^9%†à¬¡ EÇœ®iÞ¿³–nã£K®�A†Ò~aWS»@Ô�2FMñKþU:[éøÎíö]„ôÎZìD=ërè?`ѳíNß°J›%T#¶“tyÁ5–ÜÚÞHúøð‹aúÃO¦û£YºÇ²€9þp¦Ô8§LkÖYa¼ð*Hêõ— ²L-†°0±_,ðwq0:Jwp8y‹¥ˆÈ*ÃHÊ5¿ô;ûž÷vòŒð †‚kÈE*Ùò2ø¿fIÀpØýcÔ÷û®ó * *Þ �ñ2›òùñ]·†Æ¾¬Ï“$?—�HA¨ƒ 4ÈD˜„x1×�à�H€Ûö b™YçæRZð2¡WËþù„€¤%ã@ÆÅk:ëáÊØ¼~QE}Øý“#æËŽÓÍ­[ÿu™ýgivS;„¡a=£Ücø©`z]ß ïFÞ Yà�™±ÒrÙó½hBàQ¹yÂY|]ÉòHªÕçʳež<ǬSÏÞ¡¤­2œ0e#p´¸Áʀʨc˜!¦©ª^þÛ ÄI¹ß4Œ¡ «Œ�u�)×�´òÅ"¬¿(¼¶­YhϳÆ‚¹· º å™ù½.K´P˜·‘>›Ñn…§ ‡ÃX±‡‡¢°>�jA�ýÀœ“•°ZïJt½¬xI8é繂“‘!ã 8AÿŽ�MxC�Ix¨ð™ÅosŠ×Ž|¦æ™Åã,”šÏ±$Ü�À}lç -w™_8ôd¬�â·ÛàÔ€q!¶”¯¦(fŒ7-”kZä%nSGiQAÆÛðÀ½ñ°ß¹.ϦÏ9û,·Gîât�¿1©mía~nºðS€ï¡°L2ŒÙ ^œUø? Öi[¨°"Àj€f†ƒÈ¾„+TÆX@v{ÉN‹’Ù0ÝÛ;JCFNÄ8NÙû飧Æ�1q\èèõàMཽ:�Lþ\dÌù7©«*.൤W�ãƒÿÌõ6áôK�›Ñ¹G˜^¼E zFFé�ŒÖè@IDAT‹,±Èé�DB‚[ácƒm¤ðš«0‘¶pÝPŽ˜áw{D…ùΓç”**uDËÌ{ÇùÄek¼ß˜-Í6P¸\`ÌX†ìŸÖQHk‰3ÿñmɤÏœüź~svwP Ĉ4"ΔÝÁX ¶õŠýžÉA{)àèëFÍ‚o¦oœu”k´s‹å¸ H·Pt:»içg¨'° °”»8+ÉËiÐðx´»ÑÃá•3”xãë±Öf{²Ðë¥M/܈RDA§R@˜>éLã1>&÷6fb:ÖpáK©¼TVÏ/ ™^�ýR AʱrZ Ö‰º^´‹iø:{+óýé޿ξˇ85f«,˜ªÏG0­îúç¾¶-§i‚�•Y²Q0xžÂøâõ3ÚÛdyFªó?ÖùÝ!„Ö™n™eï=V…Y¯Ë!ó,c~Bè—yÏ9ƒ‰-×õÈ #žõö9çêo®mKäK»|Vž¯æ)iÜ=а¯Ð1*ô�ÓááaýÎü{¨0]ÙAÂrŒ÷œáär™Ûøš�­{µõºBà2!`¯Ë=/—ÊHã(X òÙÊΠœØÂ\¤s „G°k#ºç¼%93îl±³`Z6E_ס^ÁÕ $L„pèe´Â,\M)+©ÀʘØb¬ÔR(,gL˘CSÌg*à*U̱pÜŒ÷ä¼´¸ql5¶H¨‘€¨eÈÎ`Ç,6i¯þŽ�˜Œ8>büêÛtË#ð®>7�ç¢(ÌW› M”[·úðL\i\9ç¤æœ7/'\Ý–¯uÎ'œü{HÓS×F»[ Ïµà“ ¸û½�£¹ÑƒºÀ¶Œ›IÇ× Øu‰S¤5A(„ôðï7ã=ÝbmÆòµøÎ”…Z�oO*x<óK¢pàßYÁßï͙۵Þ:ß‹º ƒ]­Î(÷ÞÁÝUþØ×{i°¹KqÔ‚ÃÂŧ|ß}>»»M(\¿XZ’AR¿D°ÿÚËœ˜\pLؑĥ.ú]z¸˜î=ÜKó�mú‰=Ô.ÞüšÑËÓèDÄe…R°j0)Æ?â­oÂ_€fe°¸¬ú^_9Uðú`ÿÊjÖyÅbŸu÷h“]ÃåWwqh‰D'}>#�âyIÃÍ2}“Ö2ÚdÂÚ´©æaÐéD—  4îÑÒqGà0…#‰MfÖKÅVTC…À«ƒ€N—¬2¼aÃÔ°å̜٠gµìÈ]&�LÆ‹i“©•÷nôÓ»7ÑX?¼SIZ¹Èæ–®qí @‡C9§¶àK�ŽdÄÄ¥À§8KâšàEyÐDy»Mö‘+ˆ“„´(12c³t2~<‘Ѳ³ÉpY»Œ¾K¦ÝkéGwÒ‡ß�ÞLßüúWÓ[7®¡Ü8N³á^(8ºÁlÒ Íôl g™Ð3>}Ö}J �í¶î\—ÉN‡Õ˜Õ·9�êyï ³ëÙãIA…y õ ü2ËòïÎö¤£££xV,LkÙå>+Øþqc%Á5ÊÛ@YÂlZÀ–´åúIí©ñ—1ªôüUì*å—gÞÇõc•eIˆ”¤2A.53Ûâ–,ºà5�d}©£DÑ®gÿWØtÖÞ¬ñ,—bzg£Å‹¢¬s\lžFYò *4Æ€ Ô£°ˆ«€NêBF¶p…~+mð-¿•õÓ¾ˆóÊ1Èö‘Ï_ýy¨€ç˜°`Â8ÿÅÃÃôÑÏî¦/îÜIÿÊŸùçY?M}ò#fÇ¡ÄñÑRY?�¡´¾Âúk1!T|—€‰—§ÂéˆÍ©çä$ã´Å{»FÌZTfh×=鸤 ¡¿�¯™6þ”ú‘™3llÅ Ž‘ s— ×16S–Ë-¼ßЂ€„:쳡*Vm,žàͦXc†3Þ„Â¥%*wx¦¿ïÇ¡ø4Ú·•rðK;UøH  3,ãœÌé„çthÞUôúëé­�l%5Ò¾ÛÞGÙü%,“Om,¨Ø-¨SWÖ^g;›[Þ+`l»š�/IéMwò¬¤©ç«ûÒ¼“ýõà»&8Rna<à àÞ¤›>";´Ù^¹u ^jA¢Ç‰ÜÃ/]…ÿsûNxû·Ã9~¸Ý åÓÿƒgZàëgNûæì„Å´I~í×þ×Û$úüÜ•¾a«à û /£9_»öµ¿xgïnZ[°V3<™u=|‹NAP©4˜[ÏàCÖš“N‚+‚paƒÁ ",iDË‹p$jŽ„Ž;hð)µ}`ÆÓ�õÒˆÇlEóÿGÞöÆô…­>ðò©÷p6#w ¯öèÌì1¸ÏÁTÌ»h�;¸®î8ó4`å6Â"éàvÖ$ÿä/¾—þÄ7o¦éð˜ËÏ 7ÙKÛÙ0x7ð£·Ð²eÌŒ1¯$û,s“™Iß±0; ®áIDÎ81[¯")¥ù!šB4 kS%¸�r�¥ì|§’ð„Å”§P _M¯pË dÂ;;˜±ƒhŒ9=Ç͇U€–ZL1y�“f0ç*o÷:Óvjñµ<mÅçÑ�™ÅI+Í·n¥öfé}ðYú'p7àhl´³ŸþÜ/~3½·ÝK“ýOSw¾�×|Z”¹”$oãÖd®t×l^Y½mS1‘•ß={8ÚëkÀ±ÑñBa5ÇS¯ê8¢Â„ZX4���gý®[±2Ž©Pt¬ eyG*Vâ{˜‘ü²l^hï›h'%W¢¢ ­¦ÔžÌ!;9“gÚ©ÞÚÊ�|É/ï�°èxir}!œûÀïcmÀ{²xˆãAaŒèCí)Ê ”-r™¡x§Û›¨Î¿Žóét Ë‹1Ç^jïay…p·§C(hÊ‚²T$d+áå¤sg!�kÊŽªQ8h5a:ïåA«Àouõ‚#ëM:bëø~Úä‹j%t uH÷VúÁ^7ýò1þ$°‚éìÓgPXáŒ?Ëâ@“õUÔ¥ ºÃ¹‚–.ݙܞ �À2–KU\–4àX‡ï£MX€¶ÔQ¶ÛGÿþ§sUøf:�ßÀÆÕ&]¦ãéÝ…Hж©q— †¢7:¾uH:NB ´ 5)¸UÎ'©ÈEd ¾¤�B`´h©='Qäò¹¦=²éCbÇTOE$IˆLE ¯  îà@ É0f2pÎÊ´ØS™¿Ùè8m3‹ÜGˆ¼Á¶4ïßF‰–Ž`H÷bå˜ù"�Aå,1*}<øë\Q¤ô2jn2xýDl(JSͼ ÖM½q¨§íüæ{0ØfØ\;ÚR˜æ=f0Vm5ëÓÿ÷‡wÓÿw•öìmï¥ßúáaŽ~šþì×ÖÒ/½ûV f‹æ,q€H¬®Á¤÷¦» ÞÁð.óœ�}‘çÌ›“ ×Ç>ÍB{ÐhÆ™Âx+¤ûÝŒwö¿Ä{6eC0ï2»¾#góx˜_¥‚  ÖP!ð¦@`ÙëŸÅ"}¤Í9I §Ç«Õ·3q.|Y×êãçº.u)næ²{MÎÜVÐØà#Tȯ(#(´Q8;®Ÿ€ €ñÄ­VÛX’àV¬®)ž#@„ÀÈ87#¶¯í¦ƒÅFúñ‡é·~r?ýö‡lUwtƒwÜNÿô“IºuÓ™ò�´ÑÞÄ ù ­©“pÔ£Ž•Îx3*pÀ.; øgÅ1ÕÁOeX)öŸ¼K¹3N„Y°e,¢,wEÒ9aÅÇŒ-õô¨ïÒ¦ã1õ‡‘f9fYu”[¾Œ÷„\U¾^ù+—McNÇfÚ�³ž*gyÓ¾š­I^Nù‘壘„;2¿Ø¢±Pê·Çf›Ý>‚\‚~Ò�{8Y¡aìm!hÉ“.äíñ¾ÜX~Ç|ðZ©µ©ÕH—öÔóÕƒ€¼VX!Òô5wjt†J€#´J÷§ýtÈV|Z«0‡Ho€· ¥¸Ž…P1§úö‹ÂÀþå´MV*i@£ ôcêS±ØZ°DH —<ÑŽù¢óWyR/ êšþõA`x4úÓzèuÝê<ÌêÔ€?ÁØž¿]"‰±‡rŒcw!S !L�¨#4vz vÛh!iÍQC…À놀C¿Â2,‘Ì…Gôb4À2yŸŽ+wzû³£ô>^�¿ö•k<ûSØA¼.�ƒR¼¦÷—ÀAñ)¯%µýc mëòNëZPùØc®ÛXàhZw÷¸—~ç?M?ýÙ$czÛ…ýñÇ÷ÒýÏ>I‹Ã[8súzº5¸ŽÄ€ò]Þ‘†q]l¦>–<á©ú5 ²ãV9аÌã>Ãê3yxÏåºd3�B9¼·|CI«@‹ÏÆ•²Ky¦]�+ׯ×P!P!p�à±ÅÓ¨¸Š1 k%h%éà[Šs@Ï ¼ <I·ôSèÇ+¶š›3±@x˜Ã´�&0î8¢ûüþ,ýÎï}š~û‡÷Óç#¬½:Xò2ãü£�¤w®ÝIoïn¥¯mï0+¿¯²`ÌÓG’c¥³Ù”ÁX`ƒfTº.M°�ŒÁë”÷b|£|šG‡K}”K?+Еـ¶3ĬŽ9¡Œ'oþø!×g༤…¾µœ`>üV*;n°3À×ßßH�6pðv/=8Ä_Kì¦S?éSøÞ‰ï›aEÇ�ež ~“®*üzöow ‰þε÷Ò\—²$ïxÄ2‘-ù4ûWî�wM^ã.Ng�5Åù$ËI´’k�TÇé©ó/^¤¾7-oµxÓ¾È%·òÚúîð»˜/obmã�—2‘-°)°çbƒhŒù¨C±aÀYÁ l†¸µÒu3c¦ðˆî9.ùekq/�b¾V4´DBƒ“Jº¨Zß9N’:ÝEº¶5J¿ðÍÛéæuâ° �qÑ5Ÿ¬ó²’œ³¼ÐœÃ|f9#80§Ì˜Á ãôsMgÇ$°ƒ�´wÜOßÿø0}ðÅ(=8‚qîl¿�yí(}~0Jÿä'¡y¥ö�즯2usc[-=&ölEÕ_cÖ¥€ ½L$=¿Ú £àQgÏÞ¯†<Î嘒¾îž=œÁ_MWòÇ8%SߦUð÷Þºô- #_ê,éJ~ã�«¡B BàÉpBÂåˆÑÅ­SƒuàÚø0÷:p&ÜÙtšCìZô2_¡ 9Ü|ŽÀïõ| þaÞ;;NxŸ§Ÿ|t?}ôñ^¶S¿·Í8¸Ã6cx§þ|øyúêíké­­Û˜àï¦ññ ¿Ì6:Ž2ëßál…R—?t°rÔ €„zÌìm¼ÏiW˜û3>(ìÓèx‡x=ø ·JuÜèG«ÌüOY:© ŠhÆŒ«3nøÒ¼g|�|ö›øm„–‚šï> «ÐyÚbÙØ»o%ÛéÓÏŽÓ'_°ÕãªtÉ%ág ¾s†eC–Õš¯ã�µø¬†« ûˆË‚” ÷Á!髼ÕÑñ0í±+ϵvÚÒ bÓj"fƘà qá`+NŽ\œ}β=ìç*°ÎYÿþßÿû¿ú«¿Ê:Ñ«ªàêç¾Á?þ?ÿñ?3ûÉ<­á Fs`µÞZÈÐfzjög>”(f… ¾€0¡É¥ž¸³‡©ì b eƵÜ×s…À«†@f#›�Ÿ»o˜}aò…˜Ì,)0 kÏÓ{ïµÓ70‹ïé#àÿ4ÓÇl—;þ«n}®/pŽŸ¼.’7�é„<ºäG�΋É�í \'‡Ù% Nÿ¦ýíôág“ô�™ ûÙkéÓ6ïÁŒW‡ý›Öði‘û)ï¸ÿƒûé!N¼þ9”jc7ÝÜd‡”!m|ÌtŽÌê Ƚ8Feæÿ¤ø'£àl�ÇÙ4…‰a¡wL³šÖüú (i½.÷ž5ó_þÍ_„–aXÍw¶-'-¯Wg! î<‚3HŽ áÐ mœ²² ðÌÄ#X;騵­ÀÏìÿ\%X¸.}ˆ_¢!>û667Ò-Dû}¬XÅ( Å‹ý‡_ÜMßÿɧ雷wÓ`k�²çY÷»†32•ÎûQq4›Õ¹HÆVšÄ¸;FÛ€®ü·q*%õ—ÀØÐc C¿0�>~Dþuš¨ÒÀ÷ ™"òš9‡2ö”û7ûì 4×ù�#ôÊÐñ=ý¾l¥Ûƒf`�Þ¾Îqc-]g‹·!ž¡Gøhpin,Ý }Àø-!¹Lë‰t¥’]ÏW ~ÝLo�áÓ{¿¸L ÇÞã vØ¿¹™vá9tŽ.‰¯oÿ:écyé¥ÑŠõG_.�*·-—Mü”C.Ø0ù—‰ÿ©÷MÉ[oÊ—xIíØ;8ø¯\˼†3=â:PËô:›¥s+ð¼ÁœÅ¼Mœuí^&hð ˜Sp×ÿ«8Öì„Nœ¥4äídòuý­xõ�Œ ƒI�…¤zï�=×ë+.ô‚i§­þQúæWn¤Û×™ë™âù_¡wÁÌñ1BéÑÍí©S!(§"››óã^)Í[Ѝ§¬dQ‡…þuˆt;¯>ñ“™‚,ï‰Ií}˜®ßcöÿ÷?¦{Cf±5éÇäuÈ |1ŒéµÄêvÖ¹?L#œeÁ³¦wo `Þðz�)§ÚwÍog(B_ó’ϫ̱ ´‡¹B¸G"VŠ’§<³‰«B{qhº’Ö4¥|Çɲd@Á_‹�­­­p(è})w5‰³œ**ž�Ç ƒŘ6ÿc þ‚õù܇ûÿ5ÎåÚ™hø×Ñ·�¬�©SH0¿5ÆwËl7õ0óß}0KŸÜ¦Áá1“ú%ÚI¿ØOwîßKþìótã½k¸ªÃ¡ÊÀ5Æ”ÐBXoTËÁ¹Q3þá¤�e3þƒ‹ôU€À¯€ë”U(xvö¿ƒõ”¿ùc9$WÎ|‡Õ¬Ž?¾ä?Ž ég|` È fªÄ)*¾;+S•·¯uC °é<*c,×-'©8‡xÇ÷Qî·ŒøÄ–ß!_äj–FÖpÅ ü 9¶ÿã;;ó~$À)ºEúüV:£Í4f»În8é³g„}qàËE¾¾½Ô�{«%Ùšèm\®ðtŽ-ð„ Šò|­Ùâß'qU¼Þl}«‡—Õ5Ö+OѨµúÝ»×yãs÷?ß;1oT8«PŸ‹, ÑŒ�Þ¹Aídö&�@"¨W`2èµÖÁ�$5T¼6dö, ÙK7ú§fŸ]¬eúé8½ÃŒÅ7¿ÒO½©ÃÖx ēьó&Œ*®àDžô Ïêà"Áù‚%çÒ³éXÝÈ4ñ�8ãéY¦”˜)øÞê±§tk�~øÉ~úí=Hw†i�ƒ¬ykFTS<=S³ �c-– á_?p÷.žxïï1±Å€m©,sÌŸí~Öû™ærCaŒ=ŸþWk’¡.iWô’ÆgE¸÷Ý= ¥LÏ ü¦ñzss3íìì¤k×®±Àv(RKYgË·ìÕúKºz®¨8�@˜ýžÜ.¯ô <+MgÌÉhÉ(G\|Æ(ŽÆ~óŒIâžÏúhn1^õ‘:oã/à½ÃiúêÃ6fèưõtç°•öï£ðÝ»“î?¸“övðU¿�[{Ûkk‰ÈÂT™éDð=û]ü U:˯ ß"^Á¿‡•�mÂì’qU§gŠÿŽ×'ï÷¤´Œ!Öýf[¾ª(o’¿”_e�×áÝUB;ËßgGd¹t2·®uÒ§(¨ù.C? =ƒîúé„°¼â%¼ ’~¡�Ïó·/÷o&„j«ž �è-à˜h ®U¸kmÓguºy—­#b<<¢Ó ´ÈÁqö!&Ž?¹ìç{b¥�<†ä>enâ%€2ÓLÁË …Çböo=_ùo~ªjðæ£ µÐ-s60ssk–ëÝ4ɹ‚Ù-ãõ¹kÐô8£�Ee îQ¸o­^ÿ�ÀÒCŽ‘ØÊ€î𾂹Zô;wjÆ �sB@mo øöa{…Ú0�W€ã"¬ú‹Ãt{g€€}¢ç÷adÆXÓ°´åp’6¯íàÛbtÎÚK6Ûp~,�=–¡”ŠÊ®f–U‘‚&®Ã�ÎQdŒ]»¶‘&­ÍôSö¿þágCÌcßÂâÿ6fîn­5dŒp�ê%ïG«Ú,عùnj÷þÃzˆ­ô˜áÒ‹õˆé¯`²mþk2Ç æž å¼Úãlgî³`p’V¦½¬í7_I[ò)èûÜt þ»»»¡P1 %•Ê�’/.øy\;ʳz®¨x4ãŠ3鎎�!ÅUš´¯áÚ`•s…ì�Üñ}²ÞJ]ðw}žvá=Þïlá¸u; 'éÁq7ýðS”žÃÝtÿ'£4c«ä!NÇZ»(H;q’„ië–ÏA6E€w\¥MÜ{¬!˜(ìÇ~ûšüëÑ_+µSxƒ£´ w°ÁŽŒ^´;’ÄOŸ¼Y½>Iñ†]5>¥UÒ"ÞÈÖÇá¸ÛSI»öý^¼;®ÒÖÚ4mæÐ”Üw Q ÿ~Çð#å9` ¬,ªÆxЂøÏa€%ªžß|Ðü„|fðÕe;àý¥�¦°!îÊ¡œ1»”xÒa׉ày .©\»PˆÎ½6vYV¨ó�ku˜ýwkÀ>óù(ýú¯ÿzç[ßú-¾Ú¡*®ö÷{jë÷ÿúÝ¿ÿ;¿Ÿ¶w·ól¿žÍàW‡8×èÃÐ.MðŸ2~f"$³/AÊÕå8ÐÐÒDÁõy]�Ö�aF(ƽVº§#iFÛN}ŠÆ%„šŠ*\Ü¥.KWÞ¹ÞK¿ü‹ï¦ÝÛç}A:ÍϘgÆÇ¾üÔy™ÍnÊû š2—1y-c CÛÕGãæÈGÇ´sm‡%l7Ò?>HßÿÉ=´êh²7wÓÞá0œƒfËÞ�‚ÜcÛR;ýEÚfëÃo|å&þºisÀÎÕ:EtW�{²�ÓÚà½Äà÷‘,g~…n…rÇ…ð² Àfƺ4iÂ7’9/B¾×–åÚ~ƒ×–YÊòZaßõýž�ñ÷¬À¿ÁˆÛzozÇAË6g°LƒeÕP!P!ðdˆ¯Ïb¬UXh2(úÇŽ­! *P#@ƒD‰ Þ<\°F¿‡€Jg’çlïºN�:¤»¹ËV¦(pøûŽwŽXæÀeqêzi°�?Æ·@�‚çªútjÜalh³¦¿Ãr¨µ5g+3îkà Ô7SQêŸ�jŽ&&^Dzí}^ ¼Qéâ ðv¼o¼`~™x?.ïü&s`0ç[(Øi%ê²´-„ÿwn­§›Lï>@3µÙ¡ž‘ «Nw€OvØÁ�­5då|óë7õRÖIox£Sóœh‹ôPŒ/ .‰;}L``Œ§LX–}üͧÊç ^é¶!üÛgGmS¦áO»XD ­WIÅ’I”£ýî/‘è·ÏYó“­*Þ˜Oqù Ù?ÜÿÛ]fþí¾ögq­Ñ¹Q™�ü‚Arì§l×ÛÍAXÑvšuÄH×}ÖÈQ—þ4Q†"DÕ‰KiÃ_¡fÿòB Æúø±'*ØÛ7�¥�ñÀ ”³ýïÝàüÎm¡°CƒtS¨ì€ˆ>�ybtü O€ã3Üóãa0ZÎŒÐì˜KbšÊ™«˜Añ�@Ê) ¹æü-LýïÒ~òYúôĵ½ÓS&ƒ^x„ͳ'ï&Ìí­­NºµÙN·1‰½um�6×�¨‡%`A¹ý Öçoÿ öBÑEà/ç³™‹‚@¡¼ìY�™™v…tÓÄ ÊÏ ùEÐwÖ¿(ŠàoEÈ?[_½¯¨¸8¬86Ÿ §F›æ&‹ƒÍ/ I éÁìĨ˜ï:�EŽ™|b:ŽsØ9}ý&¾N¶wo±ÕënZgü0Vt>ïGx!×ÿ—%é<Ùmüº(EUt#=¼È ܆"ƒ±ÞòÝÖÎmÌ$ z¶Ïãtævâºy§Ç¼Þ™·½·¼¤ïá§Èdz¬½ŽÏí|a0†ÀU%@-Àz–p��v6XZÅVˆû,3s‡1ÔëCŒÕ”™Ë†kÕªÃ:ü¾\dåB~Nt WÅR$c´h|؈‹þ£ÒH+â5·Ò!ŽvñS~Eš|94˜Î2 }έ;®2_eÇ]húÃÖÉ­…,Â"¡Ó[ü‡¤þëÑž+üSWøã=«éÿšÎ½\ÜbÑ¢³Óá�ý¦lòŒ a¢,nt:&ák¡W À˜HQ×LS>¨Cvþ•00sFþ*^‚�°Kš�ŸõûÝCzÒæÚ,ý‘¯]O·ðV¼2…9éè óD Ò0éÇ È¦€Ç¿BæŠÿLNæ"�ü*.4õ×;­^ÿEê\,sø\�b3|Ì»7Ó�?÷PèWÈWàw¶ßþ"ø{ïaãÍ_fó-ÃÿRN‰/õÕs…@…ÀóC Pÿ³#¡ñ Ú©¡µ¦—q%¯c·c^£�Û!ÊqЩÿXzbpLTôŸ1Ö©ü Sà µ�ÉÇÑFO©Å¶Å“£ã4bžÞuæ�1Ô|.ad¼h¯1C�†@”L^ÆNƒcq¸¢>Ç FZš’EŠBgâÝâÇ\'oáÝU ~¦üŽ^BXç�¹õð{Ȫ�ö™›XŽí \Þa�÷mì{GãþÛ€2©laªež�–üÐC©ž-/_äÇõ÷jA ¯ç/é%|c0ÓÞßT\� x߃‰ypT}�1£³"z½†U¹–íb�íj±û4kc'}qÐO¿÷ãCö^v]*ìXëÏÄ éÉÏ»¹VÕ®v(ŽÒ Ýoìn¦?þöZzo† FY{ãŒ1mào!Ôx� gU8WÈ÷PÞEè÷콌ùê3…{½ùß¾íÞßyÖ_¡µ,Ë3_)ÃÆ–2¼6¾† � � @ÀA� *5—9Â8¯y*N±›d1û@e€#•C” [ ¹Ÿ9:‚ÓTæUÔ9‚Ó,ïrøgl‹�ŠxÐB!ÐFɹÙa·Æ½öÏ(oã’`%ÿP}2ÛBKÓ~Ûᬿãˆ�Q8ÎùG1£i|œâ Wž_ÍKß‚QwùÁ¼\À8«4ñ­��q¾?zcœR³;ÃFE~e -¬¨«ŒüsþðPæúТœåüó«ùá/¡Õ¹ïˆ'òVðbÈ öÿŒSpÿhšîâ„xŠ {üJ°Üæ�åÅ:˜¼P ÑW©+�$¹C•ë,£°\þJ+€„3À¸žc,D§&&_¨ ¯1sµx�À™UÿÖoýÖÆ�ë'©�¹š[kæ“닎��¦ô}èäEŠ:›Z®u0ûÈúœ}f uzÑò-`¨3ÊG| ¯¹§Òwé—P€Æ4Ç™ƒYzÿíM”øµ`ÍׂµhiŒæW34ÃÔ™Òïõ\ŒYXÓ£_õ{Ĭ æ§²U­ØöJf ¼‚YšÓ>—ÝLôg½íôß�Ó÷?Àñßü&c ֵâ}™ÑŽV{JneåÛôÚì—Ý›¥w6¦é׿é�Þì¦[kxð˜¢ôÀ*bÆ’"÷·Våç–=®ƒ}�¡ì ô ìe=~i“÷ ê ò«A¡_À�7Bà½eвÀk}˜¿Æ•kÏu "5T\!>¦ ÙŠ•èU–Áø™?¨÷b܋ɖ·9{D~PÇéÀY…Ó\¨�}b#fê" 3–6uþ;ì[Š%mù&:œÙgcDn°ËÀ2GEÇOä±YÔE†¨(·!_/_(‘rE}/ ¿l½×Ç�B‹ýÛ¶ßC»¼¢ wöq¦ÛÇO”tH%J|ž;/$MÍfÿf´|/›š(‘+Ç_Î%rÙŠzqU üŠßQ¼¤Ñ|þePQ7ÇñßÞø8ÝÙ;LÃÛÝt�~3g ¢¨øµLýâöUÿ¢ÿÄ€àø# …y¦GS㇅Ž”x¦ro‘~í×~í6Ÿs\Ù�9ž+ÛüÚð'A`roö·5q[ƒ±í ÙÎ p½íÔ—ÀggÈN¬‘Ac‡F\ŒB€§]fÿu¢£à�F\$·nQ–™hÑÈÆÔüR¾G-ä!`ß“-”‘È3 L»�9¦‰�ôÕ÷w™�@,žàÅsù oC¯EHÖ)Œ[å…‰Ø Ö|YÉó̈Œ.3à¬MÓÔu¡uïàzÔöÆzº{Ó¥€ñ%”4從+*Î ‡�Ôz¤��ýVbWG³)$,…‡(ÈÄ\¨‚y&”qÄB¨>Ä(’ùÜÉ‹63Š wJ‚WÒõܘå‰-”‡z¨o9Ë㉂ª¥ËË0ÆP&Faq–~ÄÖ…q¦pêT�…”“Œös›[Xâ#–LW1ø¾¨çübñVü(@uNHæ3áîDT+€‡ ÝÉø-Bùצó›™'—ÔÍšƒS WYäÏÍ÷ /ƒ}©é?s¶àaÁsÀÑp=ã);è¨XºŸ{Ô2ç¹.r[m�¥:a@ÿ“î£XÀ_Éíhþ£E‘}�m¢ÿ].þÛsUú†dª €7äC\v3Ž��ÿÓÌz_†�W�õ’q•xÉøÎÙýW�ïb™Q.e„`š4„ âUè'ÝÙE8nqš´"?"oPȬ°&¯¸LDÿ…1”á!´(“!ÙÞî§÷޽Όø'¬ e–G0]Ò,Zì ¿À1”ÓÌ–ÇÒš§´'Èž‹çǼŒGaú :Åz×°ÈL1 Üõ¥?üè3ŽQ:cκæ¶v4×±3ƒŸ÷¨æ½ÀOw ¬wÓÛ×ûéëo·Pàüoxðžøá Ƙ9ÿø‹v7 ÚEÞá  yîh¿YQx�îœÝë2æef!Ç—5ü«é³‚Ø©Øà(ßÍ|åÚs)ï¹XVT<ò ©ƒÙ#áIãJÄ7]›J€Èm¤3ÌŒÍLJ°¶)Ÿƒ™7¸Œ`Î1svŸ´‹©ã> Pû)ŒýþEÅfà¹Ó¬ èRŽöO2Ë.§Œi�"`]©åTæ¡Ìçû8£»ÏòU>sŸ£"�bÆÕ¾‡|e¼LVÁøÖSàÛ A-M­QeÝ&Ñíd×±ÿ¬�Q´BWXÎ&Kh¥…Y^î¹äx˜äË&ý2¾^\)(vçÞâ‡\ù˜M_š»äpÖI÷÷XóO?�?q;s­»X—ÈÃ\^ ~;gFÞ•æ ö#¾%ÎúõhXötÚÿ1uWÀå}€ZÒeA`†ÉrŸ™º.k°”ÊÐl¯VÁ¶zœZ }n%Ô‹«ÓâŠOx&#mxqÄ …~Œ¦ÓBUöþ¯i²³“.E`ÖTEš-=[wZ*^ Ä ˆ28v¡["äOÒ }”v׿émÖ¾ëº rí ‡PˆÍôñ<#$±ðï4^¬6ÜòƒV#O_ÁÉQgqak#Å#E‰ËD‚H±°ü[àEIÿî…=Ga±Ï^×øÑ½ôÁ=–ät®ó®*lAÖ8éZ×.–kl‘µ�eÃíínº½ÛM»ÛxúïS>ðqŒJÈ cͲ�åwÂÏÙVŸ~½—}W„ør¶¾"°{­ï³"àûÌk•«Â¼×E1Pž™_KŸ•ò ¥>ãk¨¨8?Ä @«3¨ñ�)¶Äç䎒%xå!Sâl¿óxZäxGcK™ÍË¿;8;U‰ø�°ê¸éä„kŒû³á!eɨ˜;—¬õ“aæl?ì•ñþ:2e¤þT¤ SwL‰'9�u–Æ\í�ßÜ7*Îܲo|~Ï)ã¬ðË‚†‰¿=¬-¤Aë˜X ÜNQ@|—œo�'”ìÀ= _ò�Ò;©4_”ekQ;yj¸šðˉobNð1ñ]ù¶<È™tPÀ¶�æéæ6‹ö:¼šKýàA°n–ið@°¯Ñ—8 ^G¿r̰*û çG "Ç‚³ï¾là¥\œ°¼W…q½ô.ï2Ó_„übÂï}a΋BÀõýæÝÜÜŒ¥¦ñð¹i½6aõ…JVãêu…@…Àù £Ü %¦wèQPP$\ Á½0ni~ÎüórtŽ:ÈœH3nMÅwþ\ÛzªäJÌ ËÁrjêÒùišiê2î+"4œS ÝZ 8K™C~©¨{™l5._7‰¯ìI(¸5¤‹S†«KÊKåU/XÚFøïÂC°èCK7Ý��Îê¶Yó­Òu‚"^;A]IÛ†F»ÌM˜çÉ£1×å \Y°}©îwœa]("w™øNýP�—Ac¹?dræÃq+ýð`–~™¥™»lkÜ�W²4;`˜1ðIÀ,´:ú§ý‡‹e_ÅjRA?xø»ÂÛdá_ÿ®ù'¸=EgÄáô&eÌQDÀ7}÷»ß]û•_ù\ÍPWó»=µÕ›“Íçþâ>ŽVXŸLgÍâ9 ö‘¤‹í …eð^R*‰kΓË0½]?ÿæ‘^ÂIËðÏK\MÇ öÇ ±¦v’ho(4䪠!@DkêO…Àk€=“Ù-\ð–ÁlÍ(­w§émf¿·»‡ÅÓÔ ±›Mà™%ŸwÜúÆdBŸ†xÌdnBÀ?Û|{¹øC�ÚDãN‡Œ…%Îô�¦)O—ÏšbUîÁUaåÚ|â쯻 æéfýßÂñá.Çf{ ®�¶ËxÙ.ñŸ¼Pµ�$¾¥AMÔK8)„Ÿ ò"¤Ëd–4Îà¡Ý4Eð7¿é}>…Ùô(éVË.嬯Õë � �W�'ކÍpÃÓ#‰"v9’ž}¬Œ2šÈÏTpu6q¤Ìi–�N2GÎ3·÷øŸR×ãŸ^éX€s q#ļȼ¡—1áCL[šËã´H5��9á7Í'}É4Æ '·^ó0, Ë¡¤qö¾ò4 �$õç @@žB%€ý£|{9 yû†l“Ç+æCLmî3ï0ÂçÒcn[raCÎó¾Á4©4XPîW¶(ÌýU.ÈcÉ{Äì17`¤X0‘Iî~¶ø $ÿW2<]ur%_©6úèøè�é°Wf Žöh�Õ�{ý#Ñ«Ižç:ør�8à ¹í tP«~41ÛÈ~á BŸ”u¶!'OêU…À«…b0*®ëÔq6b6x­“¾òîmÖ%²FT*DFOgQ&3# a ô<-&gà`9“'îÏœ[Tƒ¨«ÏJYÄI¶ºÌ²ÌݺP}ýk›Ô»žî<\¤?üà‹´w¨'{ÚŒRN¾ žÎ°ê± 3ÕÇ»ÿ&Ó_·®m¤wní¦[ׯ±ESJëj¿© *ü˜V¬¶è¥^¯ ä ô«A�Þ±®8óó¾÷¦u–ß8¯ü½÷¹q%¯åùülÙ«õÔë � � � �ˆ€”%Ä(M>{Ÿ�Óu­�½Ç=>�¸Þ½ñÈŠ›F}S´:+ró[ÐéŽÐî‡ûX$²Lb�Œao¹ ®¤á'¢þÒïsVYüž¼ŸÊ(•RíôíÜÒ«ù[-®æw{j«��†»=Lþû}Lï1N)ˆB9c å7Øú â� ͘C6,ÐÖ�0;²F»XÐØà2Ì[³áõŠÑ„úóe†ƒºëà�Ìî"�1)»q{-}åí(öcv‚¾ª&X;ÆFkì^°°†ˆ<Kzx<÷�ˆfºU„;ƒ¥˜GÊ,y-g5(ÎS¢rxœº½~,ÇQ¤?œ¬³öÿnúè ·þÛEIЋ:lÍÙfíþ\…Çx‚É+ÎtZãtm½�Þ¹©`#í°„@¯Ì"¶8{ºÝOjËj».ïú~'eAÝg ÿnáçR½ú{/³`(B¿×E1àµùÌczÍMK«å𮆠� � � �—i‰‡Ä¦\gjóH�gÈN!•�¤«W '3ÿ|ÑÂKósŸ�ÿpÅÍ EÀÃÃôpt-�1ÿŸÂ‡ÅÖã%ùyÎ�Ò!²Ú¡ìcù‡³üÞIŸÌñÆ!ü'—¸ûÂÕ|ògÍuUƒP®áçÕŒñ–¹¶6€‰wý[îÄå,=QÑ·—Ìýy�gÍd -wΚ.�Cî³uÒIÞ¦GìRTáìeÓ&¯âÖ‹*^1'ðêÚRƒ59N˜ÿ¿sc#ÝÜYgf‡P8¬ÔÙÐ\ó¯Æä=,Âó“`5Á 2�=/ûøY"²ú’>;,ϸÇ=;�Öd Þ9“¦´_SÊ�Á6íÝJŸÜKé÷~Šã<ÿÏ»[ᤅ?·´§PÕ&– ¬·ŽÓufüß½¹™Þ¾±•6 mAfØÜ‰·Ñk[mÛ³ÛG† ‡"œ?® ö²�߯ÆFÚÚ¢íœîU¬†b OÓ]»v-íìì,–U«ùêu…@…@…@…ÀË‚€4EZRèI> |YUÖrß (T#? Œ»¬0wãH¿µÍ¤? üËìÓ�ƒ£tŒi¾[væ4¥ßœó•–Ù½à>κ›{‹-ý3&�äûPÌ] #Àà–¥˜ü*…jp•¾Ös´õþoÿðë ­o®ç!•λjR“#-H„³Ã?G¡OI¢³Õ=qÿÎû( 90Û®!΢C©(Ÿc›—§”[U¼ Û‡&y¼Ÿnáýþëï즭>ê¬Â?Žù€Ü‡¹fæ_ÅqöFÌ#¬À¤3Må ®�`M÷8Zq6¿Hc~Ó®>;“׆8ûOݧ·¾�FÃŽÿî§6MÃö5ÖýoQ–ë(™ý�í±Zºñ ÿ]nõÆéöÖNzÿÖfz‹�6¡mê¹Ã�Ê‘hC©ûl›xü’C�áYÝ{Ÿ©Ð@¡ÞÙ#– •Y…þbö¯Ã?ׯ_g«ÇíP¨,hy¼I©ï%¿V-¾B B BàK )WV7+ôe:ûˆO�BzHå< UzõäèKý½.÷å‹lÂG á?èܼ†¶Ãß̧nÙKÇ8æüäáAÚ{7mwp<>fÁ…%ŸEÁfyÑÿÁøåöÄóøñ™“>Z¨ÐÇZ;}ç;¿ñs\¹PWî“=£Á“Öÿh·]0ó·âå?wðÜÏ KÿŒ’žë±ž]ÝÏUsè9Z¹ÿÁhšŽÜZ¤]Z€àθæíblAƒ\ËósUWU\ìõ"ë>÷‹á~z÷½�ô�·wp8ÂÁ_žýf¥8]UÆ„�_kÿÜ 6´ÁôcíÓ–!¨HsG| šÏ¹a~™ð)¥ ó—|Æ=Z�±*Þ,»ÇvV®o_L;éþA;ýàƒ£tw¸™ŽÛÛÔÎŒ¸ëÿQVô‘êUXLP¸_öµõ”ns¼c-}õ­”ní$¶eâµxžU *ø «õŸ½Ë)^ö¯‚yQ”³‚½×šó«PøwfÈŽÂÃCÿ¦3¿Ï´0½G)Ƕ{]…ÿ—ýkùÒ#hX\�ðÅ#']¥SAã—ý[QÃçÌ’$Ôp%!�'&‹â‡‰¿§“ñŸy-ŸN°\ìá“ijä*#kÎãQý©x °ç+¿÷á;f³ƒ˜ç¾3æ{Ù;q#pa¢ßš¾…@f%ã}9„ôÕÆÛ¿Wqª¹6Ý©ø&�ï‘xã ä]æ+qMü2iÀ½ÞZ§›:ìáõ¿�>¹ËŽ­ëàâZ´µÁê ðwQh10F!°` Ûõívz›­uÞ¾ÖO·þñ˜Úè>t*¸˜±ã�³ãŒ'«µGÓ‰ˆØKÿYúKá«B»¾3øE°÷¬`ŒR-Th  ¥@QX†yŒ·φ¢X­£Ô[Ï—wà‘Î5Ô5®OÓC M>2^Myí¨%½„%%¼Ì\ >mQòdó~¶‡„A� ñXñá°ù.“‹ûLÆ8¹˜{+yÎÛ~û´ßnAeTîcù¾ô¿æq(«›åË úî_ãéß*)®Ò¹*®Ò×z޶â)óÚÖ.Ý”?;ò²3/{xÃÌÓ�pž£L™aû{xúEã>ke¶Ã3'|xšcu0ÃÁØÛ‹à`„Âl`% ‰Uz^ÖyrµŒª¯ lƒ‡�˜Øsx»?Mô+×Ó fÃ'÷î§uâÉðPËùÜßKÿEãÛâ!\·6ÇD^%˜¡Ì—stxç‰XF~eX6¸X‚u–<9Þ2|î¹ àµ1ò÷ц¦õ�·0‘k¥ÿûw>H{“M–ãì°Î3Ö˵æcv²Aèg&¼� ×]°Åá4ÝØl§_à½ßåÅ5h#:ÿéŸëýeûN07·¡´v¥E¥e—z.‚ùj¡§`ÕÀ­ì ù*dÚX­fj±:&·œ4‚W”Žv´³[ crÿ4ó:++ÿh ¹)P¡BÏ×–šêMƒ§Üb»<¼&¨´_ÖïÑK~x÷Oå‡Wë·¼éÕjumíc!p°wðß9ÀÖØá¡ü‰$¹�çßJ¹ô|Òù[ä3"Õâæ5´Ø§1ƒùÞÑ�%³F€@ÌžñáÄ#€g%À3ª¨�+^À<ýw™ ÿê[l 7`€î¥Œ2p ìsú9~¬U$y(‚cƯû×ÁØ�-k³Í“Q*0M;up¼ñ\Ëôp6m`èòú$_)7Ñ ¼Ž<áè"ÔßN?Û›¦?ød?ÝÅÀ…€íÖßk1¤˜Ê‰‹Äu)g³³H7ÖÚéÆkÿ¯¯§Ým”P×þk©Óf)� +Ísó›q2Øþ7 aÞ¦”ëճʀ§oÀ+Ô&TTTüÜB hä™·+K¯Æ“)ËG£¿ �É´Ç,*ü�|3¨NnNý½8b™2¼E,§„¹Êß·Èì@W˜kàºH,›Nés2ÑØÂ'À)žä\ÍYé_‘Ÿ £zó˜èAø/[A/•RY “Dø…J³þr®ê_s¦ªxÍà2«?::ÚÔü¿ÇZª@˜"˜'¿Ú±ó�j?¿è€Z¶A[`«3d}ñãã4dÑÙÿ�¡Jµ!9� Û‰ðO‚*^tçÌþ¯ð~¿ÛO¼ÿO�™�ÿxyÅ ¯GÓ@¿öÞ.ÿ©õ¦B B B BàÜp ²'mkBVà„%@Y`©Iæ1­BXÎ9#.®âáòª^\A¬|Ìüµ"ÈoÈyÃÎEÈ*‡˜rI3&8]f|ïá~š3�ûv�°Ò€e)…éò™m E×…·+gÚV+NµÛuH°lÁ«¼¨¯Ú/±®¿üçÿâ/�%iï×3fâ»8åS�…–fà§ ^]R[b+-„ ÇÄ�C]™KfâËúD ‚T¢VÓ¦KjG-¦BàÅ!àþñÝôö[×ÓæðÌäŽõ”ïl¿&f ΚÒÇ=ÝW^D¡¡ùîé1ƒOç¦z ‚}ü$dæ‡2Å…8Ìïu9¯¦/8‘Ë1ÝÓ‚©ûl÷9ÁùÆ�{‡éã;{éx† ßÅ"í[—=ÖÕµy/Ûji-ƒ},„v7ÖXÿ¿ÉŽ!X ñ€‡®ûoClãý"ÂKâð£ÁÒžÞ¾Gó\~Œü“k{Ò³ù-ª%VTTT<Ž»†²`Ê€˜ý‡ÀfšèSÓ<–èø°†Ÿ+4ßšSæ3 Ob SôaPœ`œr´×ØÞæáÞAô›ËEÓŽSÒ–°\V¢Q9á}iŸ mŸ"´–�ô�ïüï›Æ^¥PWék=¥­“éôï°CyZGC¶@«š1g'ƒI·Ó–#­ÑÝ›þlŸöÞPÎ^ŸïÞìïœÊaD§éüCžíSÐ3£C$�…[ja�Ð�±å‡¦Ó!LYé4¿Îm‹’ëO…À9 A€@h&¦¡˜Îúf�Ó>ûq›þïa?Ë=«Òxm\�ÙþýQzxŽ„æ�5<Ì’Û>ª =¦Š]OÇz‚@ Dê3}ž§´†>,‘Æ$<}êă¼‘Ö”\D=9¯Úew! ñ^åÝ|לšÝ~:˜¶Ó�½yºàûc„IÚ„müºrƒ�ò\¶>›òÏP `)Ô›¥]|…²%†Ûw^ÅLœ}?ákÛòûÓÆÕò¼y�¡ ò¯øµê � �/1‚:@] ž1èƒ4ª ÷nצÃh–‡’~�š.¤µ(°™A…U„ÂH}ÊAAíp´¦“8Ë!¬cQ£É­°†« ûI|S8šY7u˜¼Ð)`ð6Ñ—ši ¬‰ðamÿ &04Rü¿q8…_É=@%8Î äôù3úˆ½Ç§¹ÿdFÍ<¥÷žÏþkºÜs¼)K?.eÊ™Ì{Ö�Ò�M¿ø—OʺWu ÀÕøNÏlåÞý‡þÆö.HB÷g4í0›×w6Oï*šáÓaãP‹–%"xεˆŒ´ì~Œ§¦5 ÷þÇ5S�>‹AË5Ú8ömm ÖÒ>ÿÞKwúX0«xt0JëÝAê±Íz7p�dŸÅ!º€Å¸$”WC…À‹@@³õNÌÄ»%Ä Ù&Ôx°�gœñiŸÖ¶o¦#LÇ\&³AM£ƒ´Ù:N_ïï¥?ýþWÒÚŒµó äÝ Æ, `«™áA8”pd!˜.K¥ñç°gÔˬFF0"EƒçÇ2("•¥ä³×ú�ù‘Ô˜%ˆÄm2ï´ÑG‰Þu¡<�;¬Õ÷½Iÿ ­¥ßùƒ;éîL⺻X-ÒµíKrîc¹0J�~í9þ Àý^wŒµÃ$½}­Ÿ~ñ×ÓWÞv#›#Þ•6HøÀûV«O{°r î°i Ú<Ž<ÄëñÞ†üqùZ~že%ñZU+­¨¨ø9‡ÀR‚ ,Ø:7¹A“ÀZÒGEV@㈶ƒËÑï',¯;³lí¨“ö±^ÛŸ Ó>u�Ç·6å�(µ¡W}üÚèÇÆz¢0(^ÐÚ ›RžÊ=^å.æöÄs&# ýéÀî·n„wEô…Ê¡.Ö°tl�ŽRŸû5œîýápžþéÑ4ý9ø˜îñ!ÜI3|–=Ú÷èƒNØÌ™m¹“‘ýn¾äoœ�„ÃA.±Nû¤ÿ:4WVR +Í��P8˜ˆ2-(/÷´ÒÏáËf[¹_·Žèã£ÿœèÿÅÔW%TÀUùRÏhç¡¿‡©L¡!„·óâO$ a‚ž;2Ñ¡žì×⇡\—ûgó—ô$¶ü‚ŽÒŽ@ž�ì�5ÙH£àÏDcFF*Džh��Á›l]F¥Õ­­† �ç�=›~7g ¾LÇ<„RzeÓ·œ;—{˜Â\”5dZ¦8¸wðþßÇ9ÞÛë³´�ÜA8¶ 5Êsˆ�ºgMç%>–'n„²Œ2óÎtt#éÁþç°¼(O9‹= 9IPó'·c�<œKp\Z†¦{ï6KÐÈ£øíûÙê£tfj¦çˆÒL¥Ö „ÿ`˜ ª±ÝyÐÈíÍVÚAÁ±5sÙî@?mÊa¿ø3h^*·Ò׈—õ"‚˜[C…@…@…@…À—Й†H%Udoþr¡ SZ IÐt -=3M‹Ùfþ‰ϵPe= ®‘TÐtXÈH×ÒÃ:å†õ™åNhR¥A�«úc_ñ›Ó‡ºXØ/B�÷Qp‡ sò’/ÞãÓ÷HçFMμïÃ}Áý~ežÎ8ù¥p èĤ]Ž?­Å>D¢¸ŠëxÂOsŽ'¥/»•ys?€%RGÉ”—Wcq],ÒâOç‡Wç×·«áŠCà7ÿ�߼險>3}ÖþG  gXyCÓf œXyò¢—!(0�¸Ç8œèÐ…vè@ßéD¯ ›J r¾h�5}…À*ìßö¬“`¯\‰ �†…˜kÛcw;gp�ׇ¹yc7uÙÿ.Œ¦�v:ô]ˇ–Áˆ™¢R¯U&- {ÂyJú³ç(›ÖF¹Ôɹx¶ÍÄ%“ŸøÕåp¹ƒ[âÌã]ÈŒ¢b<ë§Ÿâüï‹ûÜ£” ˜Ê °0CAëµêhÎõþ¿‰õÃuÖþïî ÒÖåÇ ñ5”Ë÷­O†@�4K)ƒŒERh0RH d̦¢´Ž[£x"Ÿ»Wäæ4ý�ìõççv”æhø¯èG²[öŽØBy>E�>#¶ß;8Ò&_ÍXè󌾼_L€�’~”å�f�öH'Œxæå…B)À3<–™™»P©¯23P­áªCàááÝ¿©@­ 0ò� €á VßTˆ‡«‘/t--º¬7¡‡Ã4ÂyrP8çh£(š7Óz45XwhÓJÄ Õ\WØ“rßòÜÜãmCì“p†ĦÍzÄ.Çö ›Þºu=„`ç|.ÉÈŽðr~üÌŒðøÔ5)íìM�^=.ˆ‡O<–ù-Ë–«¼cHŽë¬"CÚ3¶°f }a`CTl0ûÿpØI?ýt?=8Ä”BèÔå¥ hÏÛX¸MMkæ.mÞ¹Ÿn üïl³õÆ�0»,³ÿz�{�W!P!P!P!P!ðX,IGÃWšH:UÎ!ŒI��©…Cû&,U�Y–çÄ‘¼áYs¶&.åÌï²Â3ñõöêAÀïÜ*¸™…kïœPÌ»“�,€T€Åó½ýCºT GŽè@¤u2Ç¥#²fEæÈ½Ò>“…Y,SZþ…BT/Æ$Ë‚ã7~ã7®_¨¼Wœ¹*^1À_FuãÑßè28ÀCæªà¿ZW˜frÛt{ï—q«©ŸïZ¤šŠŒŒÜ{Ç#f#-¤â^EDF_~EÄR+×¢aT©ù©¡BàœÈ„ÁWœ87ÝÛ"�-}éÃ>³ÿkÉ7wÖÓ�k[��å‘22ÒwaBæî Aßνµœ)Ëά�¾<¸w ¼‚?éÕ“Ó™vc™ûs9‡…—»‚{S�„ç¼Gà*„É2$$á}ß5ûü9™ßBiJ±6R¥ÄnBú£q;}ðÙqº ñém…v\ÓÄ2q1ˆíí½Æû\ôÒõ­~ZWÐ{]lÙ„ÕwðÝ«b @¦ž+***ž«T9N›)è[¦]yö¿KG‡Z9—ÈBßž�öXËjMÏÓ²šæÍ‚@Ã@N-x‘W¸·v˜ýkÀÁ÷ö˜cÕ8ƒÚGø¿ÇÄã1’|(`e:ôy¹Ë u:žÿÉÑÉÜÑ·BêWø7ÏE•M´o‡ÓK&aZýÿâÍ‚ñÓ[#×YÆÀw¿ûݵæÍƒAì >e05äøüb'𮄠éÛûóçáé�ã€ý\ÙÙgÙÆ´8káœ�,‡ˆ˜�Xã\ðó¿æ úƒxô£Ðé6½«(²^ÙõašˆÑ#Ãù_g6LÛÝyzgw#üÌ®] €è³H÷úÔȰ¹èó¬{ÔÜÇ_Ó™2©^øZ䌃òY§¯@%ƒNmôTÛ• ©``y�Zˆ6Îo8ÞNZéáqJ?úd?M7ؽp‡%8s*±+€ Šdþ0µ”®BšÒ/xm½“nluÙåﺈ$éV’ÕP!P!P!P!P!pnH ZÑ•£ÐPUÎZ‹J¯Žµ€¶e €†Ö6J•Kz*oô6ÇjL@ÔT®&ŠD°zæMøØ²Emü1Ù_¼–×sÍÿcŠàˆ>tïxŒr¬!�…çY—Y­tâì JQø,ólòXö³,‡pº`°?j‡;-õv/Xà+Í^¯Ü—_Ù�õk¿º@{Úg?p=yë ‘a©Eµ£Ÿ ö×i.ŽÂÃr œhž£·ò0�V»5‰„'GÅ 2žjY½©8–}A9³¥oKÑ'¡ôC×ÿwf£´Ùž¦˜Â»ûÅ�O“xÒ6Âl C>‰E&ù\îË9£¿R¨<²Ì’ü³®¬d •aa ÃÓÃ’‡üÒ2PÇÚºÂ~:ÆkîÞ¨�~ö`š°gH­Þ³(ìx ¢€·žpÖÑR̪ßs�eÛì°³ÞNëì„Øu‹ƒ3 •%T €‰z®¨¨¨x2Åð7«Êsš|�gó¥kÐ.Í´¡mNôϰJ zÅ�ç眣( 2U´,wáÉÁ8ƒ¿ù(O"ºþ\]äKûWû×2eüÛg\"©€Û"/°#øïav|ˆÅ¤ËäŸè=1™CjÒe Qéƒç¢œÌª5üa¼†–ЀéhL×¶µÒÚÚF:²nr Ž®§ïÿä³tó›YgsJ¶ôƒ(êÄýo{½>ï‚çêз×Úi 'ÌúßÜi± À:%æ�|ñ|u,0nUà} B‡¤Ñë“épD* ìÀ*ÀÉvJŽ]ÿ¿·Œ7w¬Õâ0€fE�Öwò§ ÅÌÕß/–ßžG¾gŒsq—6/â„ <ÍþFKc¸µôñƒƒtĽòO§Ÿ&Cü%ÑÁº=¸&=p}ü¡üTøGŠöÏb�ü, ¹èIçà u¨à¯&÷ï^G€Uð¬ð†?ŸŒFo­³þ¿‹ #ã_:ª>‚åð_ÚÈ|.5בî?g…ë)K†î~œ:çp-Î2ˆ|ÍŸÎ8¢æhh1Ðņ �óBà´pžKÉÌGîãþÂJð«@½Àë}žñ0þžð7ñÐa\BcOŒÃ䄿ÄUyÑ+?9�%ÅyÎ4ŒÊh%g/ƒI’Q7¸W£íáÕÏ7³‘Kƒtÿ(¥Ïb>‰#ÀY ⣊BDk­´yÑ0tq°Þ�¦�Á€ì›‹²Z¥‡ŒV ƒÀ ]!ž+Ef&]•´i»çàáµj*ý šÇ/ŠBÁâÎBÍ)ßÔß+�üýòW]ý–Ƭ~óœâäõ ß§€‡ðD#X™ 1™iOb§ÝS&É“�acIÇË–””àEL­Ö|RÇó]Ù2ûª6šÙ@%ÀZwó/<_þןÊÖ×pE!ðío»=<¦­Í­ÔCÃ:Ãì×O5®ÎzVP/]Ü�×Îl­£Ð¹Î £õb ¯©+****ž c&Ž…‡”žãlÿ„©Ù˜ýG tþQ*ŠoÎÙrîIegJÿ¤§5þª@€ïò‰¼Ná· '”ϾIùÚÍB’Ìs‘žé›tG€_ §,‰$!þ‘²ßø?ØŸv—r›bréN“½P��‡5œ?èqÏ´?Ïþg_Ý¿rþ_mÎ,ɽÚ:km—�_ùKéOLp¢²µ±‰™ ž11»× ¦Ú®t©'†`p®ÞK„X¹/ñ�;Ÿ ์RŽ¢Ö>&7‡:£¬™ÈLýEY`íYð¿›ëÜ¢ŒwK¡êqµÖ¸ �çƒ@f3LËÀ´196~›>©iš¡ÀKþ;×q¸!4«,hþHì•Ä(Î^—ÃË¥l{?}ZŘ—O8T”ug�œÉ–‰[S–UGŒÃr®Û-]cÖBП"؇ µ €Ï²óF(ã²"ß©‹ S¼G‡wíu'¬ùŸ¤íõYÿ}èjªÐaçòŨ³† � � � � �óB ÓÇ {Ë"ìôó›šÆL Gxÿ‡w …·›4Iz½ö,i]†\lÄGš†>.Ÿ×‹+ ¿us(ÄwÎg'ft€l_*çÒ¯äZ´ÙGð¿‹à×Gmd ¶ýˆŽ¦'wD*r‡éÕå‘:Á#j-½ìTç„�¥æ’³à¯€£Õý3ç,ð•gƒ¬áªB`øßw6™¡§ã;;¿à¬3wE(W`÷¯æq_ú¾ç§„,ìŸ$Ê÷vz5¹‹´‡àˆ��Ô˜°dV1ê�iƒ Ú�·âP�Ñżu¼®¡B༈žÝÑ>ï=0ŠóYÌ$Ð%,nñÇN²ikÀ,ø1=n+µ“N\)Á~|,ßpwru’êô•9ž’Jóÿhu®)«#¤aš«‰?¶Ý2ôIqÁàxÔ óλ>ÓŠÁß}×£ùŽP». ½ý¯õgis}€¯�„æÐfù€ËžÚ¾&m=UTTTT<Ò9èQHi\Ù;áC¥K’²¢p @ô¬Õ6O± Šúà3²)…óhnWªò“•Dõò�…@æØüº~I¿p>çï}òʼnä㇄Á.dÝôûÿ#v4žcÙhI ¶pžcÙ9eòD%�»;…Š�2Ÿ…i Š ?‰ÊÏõVÖ¶œvÄ^Kœ™´yÿ\…½†L…| U×*/ �£Ãÿ¸¹Îì?¿4ùïâC¨h(âýJEY€_‰xÆe¬©Q€jBɯ`?Ñ´8b ÀØžCåC“t)85Z6ïóŸ‘hµQ¥ðz®xØ…‚©8•§‹ÜÁÜn"Ö„M&c¶Êl§[»;i óÿ6[æ�ZÿäÃ\ŽÕ‚K‡Íµæ\âJú=[~yƒ‚1¹ŒL¢è!b2-æ— ÇýýIúüÁ0ÍÚ›_¡ó6Ò•%m­DFátYÿ¿‰¿Ã-Öÿ¯õh3tÔå5ÕX[_ /IÌ©,Í�'Ž"¸9囚8âàvÂY1ÌYÿ „<—ü–É£'S§'?±¸®‚ÿð[žqE?°ïÈŸÅÍHQ¸¢|¶¿LYv¼‡Àœ#۷ʲg;ßÇÎ!ù7]ÅòÂ΄2�( FèRÀ¤Õu/ލ�‰䣦ÖK©à¥R/ ´/¿à!2·¶¶–B‡x]�{uU8â.»!�¾ B\4÷Ëç�o¯qúWSÄÌ>w<³§kÖ¥ÅÂ*ŒzWÓ ›G‰VS—¼ÄÔs…À‹B€Îý·t⦗®ƒâì»Zˆ“ «ç™ëÖ�Ô#M_G1¦a¬.GˆKy¥=–k(½¸œ‰¡ì§9ß“~%D–,P$Ê%ŸÔŸ×BrÏ ‰k%‡ãEºóà0}Æúÿy»OnËÀ²�™ü0™Ãü? ÿyhŸcõ€ëƒ´³ÕÃóÿZÚðœâœ…Y„Ÿ€“ºžÔÊ_!P!P!P!P!p �éÕÙP(J9gúhª#[:Õj”éÏÆSj¶´Ú;[p½ÿ9„€}"OtÈ{e™ ÷Ozý&ùÚ§:<ŽÓÁñe’œìA g¢g¹ü¸)Gá?jãG¾K>èôô( ^$ØÞf¹J~å¯P1¤¿÷÷þÞÍ)êu¥­ €×ù Öû›¿ù›7ç˜PmÌd‚n}¡ko:µæ/á£Ñr)ïÛÑsgo†lⲎ*k réx,RÆs‘¿Ì0v$¹í0zÿ�d‡`»�¥aÄ鬌H -NÕ|EËòOsærP4eä#·Á”5T¼ìGz½·ïÎñì?ÃÛ½g�»r_Ë„E¤c§œ Ó3à7¶(æì `onðáŪ¾¤Ô0œfBÄ‚ ÅL>kÓh¿˜6c�þ · ‚Aâ=ÆãiÚ;¥{Gó4Nؼ…N›Wâa‚Éÿ“|´6PÅ>Ú° àF‡mÁCž‡ÿ›Ð;DâKzŸZL…@…@…@…À— ™»,\¦4¥Ðž(ñ7Jn¯4>›@›ÆÐŸ üf¶e €ŒjÐã¦4è–éãŽGòŠ™Z—òòS’Ôp¥!Àw,H|㓯ìk•¯ß?úýŒ¾¢yÿ„¥‘Gl=~€uçˆgSø mþ»8ì°d²=gç§à‘èKò†­)å±Ð’~ç‘ËoêçIéq+µFAñ<Ç„Q¹�~ë�ý߉×>;6mþÏÍã7ú”!ðF7±6îq˜ìý�}ýöÖµÔÁŒªK�cò²p[3”PGÃýÔ_S°p›3×3Œª( ØÉÝ\Qi µ@ Ä�šÜ;ZgdµX¯}¯xmzˆ#À³¦*¦ÐñžÛ,[›L†¤‡?�ƒ" ³á1^úÌ|­¼mSÓSZY½±ð[¢âXÄ�%1}ÄoîYßat‘æp²„>²¼7Þ ’õt¯÷Ùp/}1}˜FðwýÉ ÏŽž'ä#äÊŸ¶à«:cò)Á0ÍúL† #)Û‘cæR™ÅÞKß Å—MhºwNiæ,Z[Ïõ9ôS¶œÍàéÆ[ÿúw¾ó�Í’÷M=WÀ›úežÑ®ñÑÑß\ïöCø‰~K‡ÍšVÎñUíĹ3;4ç�Ò�³éÞ\(˜¨ 0�«Xìà`Ÿ%� œ‰0odd2rÕ„ç¤Ç¦øˆJb¾5b�µžÈMi~tѦ\åD—2ûïÙ6ˆÜá0RÔŸ �‡€ZØ6^ïíwsJ35¼j€T €¤éºå ,çÒ·QŠ­K`2èþ‘6:ä«�D<]={]Ž'fŒO[ >n[Z„¢N¦F"È/Äi CÎlH;C¹6ÔçÆñ$ !z³>x+ÍÏ&àè ˆ!ÿ&À€äAÏú¼?ê9|ÚÆ®aÕwhÀ*žFƒëO…@…@…@…@…Àó@@BCž±¡‰qÄdÒc½qº ]vBæG €²š¬4áv&7üeI….åÂý-G$‰ÚJšS¯*ü²™g+_¹(}`]dßVeù¢“cÁL¿Ê£ƒé8¢hRÖŸéõ¥’N<*sØ÷´�C†Þ÷€Ôm™Ü{Dðœ¯íÂü/�ü<'•÷´aYæò y" 0ê],PLoý—%Ï›z® €7õË<£]‡‡íÍͬ`*3Œ¹çlÜÙPâÊÙçåÚþlOÏûhú$#�WÎX*-�˜ýù:8tÝÿáñ±�k¨xÍÈ‚>ꀔ£#Ó"}ÿº]„èÉ(æ&nâpÀ>x3¬eô6|xd¸7EIWÎ'¹Nž­Æ½Øu“ÈRÚPòÓz´ÐYQÐ ³ÉýÃaÚ;< çI�—%é©3ÌEytX¤ÿƒ~¿GXÄvˆ¤w«œ*****.�³”+—EÆ/UY'­ãY×i��ØŽþ�Y»}ôó"í®y¯6äm¦LŒüÿì½[̦Yv˜µ¿Óÿý‡:u÷L<ñx 6AXŒ¤HÜpT¡p.Bà"BBÈ(r�Ð\ r‰×ëó}yµÚ±¾XÓz‚ÞâMÒƒÞØ*°e›ÀæéñÅ„ÉN¯(â É�âšûÜÕwõ üc‡‡ìÿ?àÄöÅi±Ó}ãçë}+Ý Ð Ð Ð Ð ðÑPyí¬Äd‹‰§X⿆K˶ä4?ºl‹mø$è÷L^æžèŒÅ‘9¡[ø%*CnÃb�‡Ÿ\´Oɸ}ì‹gêQ ‹ ûrM ib*źà{`¶Œ—Wþj•ªhâõu‘®ämº5Àmúßø”}yëøî_ð¨¿öá*®V!ÿ^ŸYEú@ÇDÞ½‚<š@<…�}ï1<+ aþ�ÐÆÉ�Éÿ¹¦Èì­N²ˆn´Ÿ�W�Ä?fþt{�VãÝb¢¼;ûëE¹{8*oÜáØL,¿ªIbØâ~Æ^ÿ÷ãjZ�«ï{Ù?æ± ÚuWë ¹ÿõDD½AÙõ¸BÀ1ŸƒÃrÁy·�/fe'¥æ[¶ì·“ e©)&1é7§Ÿ>VÀ8,Ò"àzLø˜N·è�����çB ›¤:>1'/'°zñ¤pä†`Ãü4[nñOµD`û°?4ï>·Á–Ø °�ÏX¦œ(ñørV®À¯ÇoÁ7$pÏ<Úp×$€¼²J†PtrÏGñD5ÎìyY—Ïy¯xÞU—¯æ á_&sP~í×þ·7£Ð-ýi €[úó¼n-&³ïŒY…?Äùž‚�a‡¬6^›7K;%g¾G\J© ¤6M—`꥗Á‹`3¢e+å”c7fxtiB¿…�€h]ñ�Q½ ‡4ðt7Ѓ¬ì n–åÁѸÜc%¼ÇVñ|í²„®’Z™3D\$Ö±>ÒÌ÷LÞ¬àÅ~©ÛÉ$'”|Êú¥jNóÿ‚¯�U\Îf›ò ='¡ÐD ™•ìµ.ï(= o#.ïĤ·÷Q/ÖïVªA A A A A\Ïau"J°ø¶ÖÏ 'Ù(ì#£a½6gµvŠ�ઞo¡AàE!°Å’sˆUãk’'àÕÂÉjp£ƒo¥à¡’ªõ‡¼¢BJ6®ã—R>O‰Kïi¾Sßþö·ûKößk0è„…Š�ÏòóϾ×|yWèà)ˆÂöxÓ¸÷>òYIg�wò-¡ð¿âš"0]­Ð´IdnÄÊZhx¥Ø)Âü*-b ‚¿àð]÷Ã;)0i¨[w+è1òÇà 1<{wVØ]ûŸÔåÝ¥íçûtÏ1 u{N-× Q òè*p¶éIXN9áðœk�:Cs¶gßæÜÔµW{ëŒíLŽÐíÀmdtRsëC:<�Î-×Bƒ@ƒ@ƒ@ƒ@ƒÀ‹@ ò‹9ƒÉ?îuë!t1‡±íÇÑËrÁ5QPÓ@ã÷ÁÕž?ä}6Xsö‘IÖý—œxÁ5w qÍW�‹Œ…NÞbÃ%lO•qD¿Ê%/õlhDæªùÌás\ÁkIä©bj(°|)û]Ò­¼5À­üoùøNýÙî_øÅ5HÿÎݲA�‰UËÀ>Wö4zéwªÈýW $éê âî3õ2Òí™V…Dh�¥—9î[=ƒsIE\NÊ„fV êרÿñ}n) / ŽÍŽÎÞ¹2ï�–‚´ƒþˆóïúÿwXÿÚ�ãr—ýð=pyƒ`Ýבr×—µ�äÝåÞÅ�—»<5Þ{ìk”¨>gȉ(ÛÕš Œö#žŽ 1ÿw¥ä‡Éï<¾br—ƒ“ûeŽððà ú®5À€ oÈu€’cË *ŽÆ8üC]p|8ÆïO D½|¢cÅÇŸ"ð9?ªohhhøêCÀé2‚s˜—Á 3çÑñø0œG/Ø.ºÁríO¶§sN”â¶áQ7ße©öÛ ðÙ ° ßFœ‘÷ŽËG#ÿäɤÌÀ½ [tò\-!ÃòY~­;ÑLyGù¦¢o= ùÈì…eäOÇ€÷j×2Þ­ßSááµà5wWÿÄËw¾ó[žÄ|+Ãçç`oåg}u;µZ-~Õ•ÿ1Ì «˜¼Ñã}SkºY#{ÔYTKÞÃTÆx]>ó¸We-[ØÇÅmŠð4…È–:Úx¦}’[hx%¼ÕjB=1r%€Ì‡ü‡Û-ûý·KNè•cpu йv‚}èË,_ÿ’D¬O²ˆX*S¹ i„’�XÓ"Ô{÷úYn¶+ýö‡:ë­ªY&Æí7+&•Kïl�³›5§qhZFШyÃéŒ}Œgc¤_Êó‘Cf'tqE\´Å�Íçè|VÑ~^GÈ€2ŸÔ«Î`× ÐÊ.ýØ8›éøO¶�d;€1]hO Ÿ .‚Š[n‹œÀ�Ã'±S‹·'‹›º.g¡”ge•äªäç\j!]>+d˜´�L\+3§�IÇwƒe2=Êvùv˜¬ªüYg°Ý ÊÝ»‹?EoáOSÜÂÿ”çuéêâò_>ÀéÅÉÑq‰”]"w7H‹È™»"|`´øª d dIä×X† MÀ+‰§O»s2žsÞ¦[T˜«…�›‚@Z¼€…»)L‹�`.7ñzƒ@ €»xÁ¿Ãêø�•u³îÿG�•áyË{(ˆóžÁ- #ê´Þ¸Tt �]\Mû,÷n"±Ö¬'-ò-' Û_³‡ÒýmO¸&L(kLÜôª¼u+ƒý Mÿü†˜”brS °ÁJ@€è¥Q¤Æ;óØF     /擘,ó^'g%cÂÏ¢–SêB៽ÿ“e™º`mî&‚š^›Í*X±x¤À-LfðvZo‚„!àH–M¾N‰´k<½ôÅØ‘®ï‰ÅÔ“ y™Š+/‰åü .ŒFâ$*lzÛ!TpZSøW_ðó^z±F}/Ä_l³é¦~\tÎ˨þY¤õ½ÃWREf‘^½;%@�©#‹Híp�@Å{ÁA €ô0ˆã6Îq8A�Z!˜4 € ÀvõgWÃx¾¢0 ¥– &Ù�ûLJåÖ©ETl‘�2ñeAø½»ôc½‚u<_§+pK0yñ/ïÓ�˜Dü µ^k¶mÚ Mö°<¹ZÆ)x3À¼-MþÓlÍðõÑï,çG<è|œ€ €–XÄM‡€ïr+Ù Ð Ð Ð Ð ÐAÀ9̹ÇÀDÔg¦HAàr ]¢¸âÀK.ôcm i…U»v$va‚�ƒry¢%—§œNá0OBSŽ AÎPˆ“<û®œ³³tÞÇ[Ó:~*{•8�ìYÖ%žoùºgj ~0üP¥ð¿åy»éÿùÏþu¯¦DS¼8!­ü_¿ó;oiö{|t„Wo4L!ïߣ2+$„ɼe,Ë•iÞ_,Xkô™³÷LAÀÄG§ä™Ü–´yŠ÷äÉšA‡ìoƒ�ø Ù¯îÞÕ$\ün�ô…ãBø'¾)„G    /æM… g9@ãjè#aùÊ´[¦óNeÆ�²õd€Æ?VHµû‹@`~i WW ¼ÑÕrËbÉŒEK<`zzlmî±H$‡B *âœXY…ß*U?µÆçþógˆ¼±)‰ÀN"û »4ó¤ÐüE#»Â^O·ç[—ÆÌðøzq–½Ñ8+—TøŽê Ë_×Rõ™­µÂi¿@{nhhhhø¬ÉÉ™ÖëÃÁéf¾`埅£‹Ë+Ó²X®cûÝFáèÃEZLƒÀ§†€òŒ “Kö˜ô8q‚û“óK|MÌ‘]à¡H¯²LTúÌ¢åSòÐs�qWG—ç©rT\ÉOÊ'r)ié"ž¯×ÿÁ§þ¨W˜Q¸…/ ¶«ÕhŒóæÿkŽú Çèÿ>BæJ(È/€°�¼ ñÎÝçî}€-³†ÄÆè #M�ÙWƒó´¡ÔÙC­µbÿô%çÈO3#PDÝÏ!š/ X[7¿´èZú/>»×‹E€Ó:…½ïxcA$c÷Àƒ°ëí‚<Ò‚¶ŒÈè½å ½¥™—È>¶c9­ØNE|M¾P�=U‡õYÏG\QKþHsš®I�ÑhKz4Ö¢úØXÒÇçoºr«þƒ- ¸E™ãƒÃ²Ö¡»Ù«TŠd´ € ÓØó òÃmä0?Ýl¡A A A A Aà3C€9ÄY7/¹È:¡0Ï0;1¹v{ÿ1ÿŸá�}ï8ï3 8 R?s“­@ƒÀS�tR®à¿A&™ƒƒg³E™¨ MþÈ+Ù£|ÓjT>1y8q•Œž‚¶gM%AçàŸL�Z’Ϭ¬_¦Á¯)W™S•|`瀞@Ç(?ø•§ú}K^*ÅÞ’î´n|¾ÿýï\��—·<@�ADÀàà‡``cx<§ N/<·Re€Gº?F_”�?JÄ…ðKbƒÂÐ�zÌ ÿˆËÕ|½ú¯ÃS˜ñ«r¸ž—“MµzåìGhnÂÈ}æ MXo-4ÜPUÑ*fîà0 !ϯˊÁ\ÿe‹€�éáOݽ_œ@+›K&ˆ ‚õ’±¾_Ví5ƒôмZy¡6€vòϽ j”sï|Þ}V?¶aoþ–s�iM/‘ ò¾»¬‡rÊàÜ­ËÏé¿Çúõñ`;²æšrl!¯eÞ?à迃òðb{(‡ÿëåº7¼œÜÇ'{(ÃùßÍË©‡°ù5ÿ†I°ÝzQ”¯r"Ì|ê=6(EB�Ÿ×~>üûC¬Q™g7üëôá;Qh¯™¿6¶øc=ªŽ�™çÑ“MyïášýÿÇ¥7¼ËÅÊ­ÜC¸úT͵L Ï@`[æ³I9::,ãããò„-&‹áA™ƒ“?|ô¤,8-É#”•RàtÀMžòû û}1xÅŒ‘;Ck¼û¤y¹ã»rÿ¢Ž( ïÖsAÅm˜.ßX§m¸ù²Íé¤RvLo>Óù[ñ ØÂ——ï>ü×üÇ£� ä!$‚ñ÷Ù«û÷±ð B&ÒÖ•uµ‚…ƒ \qÔyÄ"L(Ð-3‹8gææ*hKL:xK Õ˜¿ ûÿ·lE¿t&†‡ ŵ³\ /<7X¸à¡$¿�'ZÀWMX¨œ�Ä�‹A!Éq‘Oþ/$yeÕx×Yàîžœ ]~ËÀG)G‰ÛoÚþEñàUH ´éQ€^Òïo¿ýö}Kߦàç·ð%€ÀÅåÅwF˜á«ír`Õ;øŠm íSÁ÷z‰Ü!Ò‚ Jö"­·`|a¹v.Ð:‚ey\ªåBé �rÅñSö#S8ÊHx-4Ü$‚ÅǼûDp,ï.Eó´2Á·®†KŒçÁ™xç�q�´|ÖÌ>Þ»¸|¶5Gœ-YW–ËxÞÍØ…|Ì~ÅïuRÍbm»kéƒy!¼ú]Zõ\Mfá Z†Vmk íiåótد5ë¸îæÌ1 Ÿ÷ûüt=í­A A A A Aàùp1*&CçMŸ ÁS"Œ¡×åÎgþ=>»,§—,°ÒC9.ÿêyì-4|ˆGòld¡!Ï®Ö/p29AN™â¬¼°eºÇ⥸¦ÅfpE0EÊ;:G–á]#TÞ¨ÊDõ=ò�/²'ƒåŒ�  äs'Síâ#‘´N10ŸŒþ\¸=¿�oÏÿÅs{‚à‡‡ã2æ ç˜ê»ÞiH„Í{VRD>F:i`o¬Š«\"½¹®ËfœñAŒÛÄkÌj– äläš-ØCÝÕ܈ívƒ¯Ÿ)úªä͵‰CXCµÀr#.IpmxVcü QaªÄ™NÖ hWö«ÀïJU¤p}Ýv䕸¢>ë4�÷¸®ó…f-& ã"S$*àï.é�¶Ø�Ž7Ù~ã$V™&'=�¹Ép]GõDWèDX,�P›Ì‰íÃejÙvohhhhø$¤P•‚•£³�'×À42w¡`š™p6û“Ë9 €Y™ÂHÆê?LfÌGh¡Aà!0À:9¶;² ¢å³§,±Z¾ÄÀ9¦'Û‹—â#òOò=0THN>‡ssð/p–÷ˆ‹»�I�Ÿ×H÷ž¼ZǡŻq»žä©º‹›ü¥HN¯ yµÞn‰Û*y›úÔúò ´{óù¬œÜ=ÁšÄ�$¡µ@&庿ˆ͈ó2%‘>óXF|­h*QX2�˜(£yŒ¦!ñèŒìjÁ€”ÎÇL äj¡Aà!P‡Ü¼¾‹Ï½ ÿZu¹ïý³°Q§ÀzE8,gÂà¬0¯!‹Â~\î2©V¾ ´ÝIc®”xfò+'zL–@×Z1˜† i{¿,}¡žcNógÜ~j�ösï:Ð>ÌúÞqjr9Š9Éù¯ÏÖ5÷ý/z¦ì =Ÿá7j²*(0ˆy͹,ýé|B-¹Aà9è¸-ðPå“K¢[Ø»m¹œ/Ëã+| ˆZqésBÿ>2RøàU–*¶K›Ä%çÙ@때¯qÜwé]|ŠSÙƒä@}ÎK I¶§4Û]ÛÑ?k+·)¤$w›zÔúò!üßûoÿ·!w·@IDAT¢Èwçî�0ûïéÍ¢Sˆð�´b#ÏÉî[…ñW‘»¦Fþš–˜Úå¯uYšKÍ™N5X=ï4jzWw¯M:A¶ÕBƒÀÍ@ÀS+âä Q�á7„Ÿ¯-Fâm·úïþø8îî ú*ªçÿô`ã,a¾$ˆ.�¢>õEœmæU·˜7T¦×`=]¾ý{X�EžÌlÏþí¹×åd'ô`ªz(1ÖÁÙÑzNzщÚJw·Ž¼�ÿQäqvƒ ó% ·Ð Ð Ð Ð Ð ð"�� ¡ÊyE!,¦Õ(Îçœ^óø¢”Ç—Ër:ݰˆ„Ó6æÒ8¡§›‡^¤ÍV¦A !�|™V‘úGÛ†SIüN�x……ç#-NðÀ¿pÁ„t š]àª\‚Cª2L ûp].ë@¼–ƒê˜¼à¹d!wï�¿Ç•œEå«?€Ž2=à»ßý.^oOˆOº=Ýi=ù(œž?ùUM[NîcÞÂ|�/œ�… PK$ÒVMaŸ¸îX„6­Þs¤öQ…+ˆ€tſt"üë Œ—ƒq™!¼œN8Zó­ ‚ˆ”¤á~›l¯ö¡Ý^ö†g1;ÎA¶dž*ì‡À}ðÉ|ôn'`w©QÏvÜ“„=ßë=4§àoÏ7h®/.óÜäáh -ë÷ƒÎÓsÕ¿Ü+C¾e­Z@Ç~Ç^Žš³Ý^Î4® &‹é|§R™HÕ8?›1U½ûx]�/àQ,ÝRjZ�­ÌìÕBƒÀ‹A@ G·œ¸R€Ç£»p9ÃÁóÌO®àÕ¦\²{²€ý°€©ƒ sk¤ø§˜R0f¾ï_ö«â©\”×~ܳ¸l:õ›�b©`ñ¦;aêÞá7þ©(~K~’voIgZ7>³Ùì_éûe<>ÀÁ ‘]ìª÷@Ð,+2+ü§¹§HL ¤+Óƒ¹HÝ…Àïþ‘Š‚P̳ÑÏ*Ô¨q¢Z(ÂDâ±­n·‰É2Jq¥@€‡¡àűÂÙ2)TA^á>®$¨þC€@#®ý|ñ ŒC§åh?Æ{{žƒ–’ÔœVb˜MòüÔE^ÿ2ää·(´«±N%Àt¾Š#žþÁ7¸MaW††ëö�h6ªë¦(ˆÓnš=ëíâ»ÒÐê[»74444|ĬÓ- ]Ïo©ÀÆó¢Âÿã+¶±!üO9rwÉ\«RÚYIË�^ò5ò7îå�…KÌ8]xqµÎâÉ9>'Þsq”Ë#ý,å PÅ][#M—S œLŽ)ó¸mÀ<×q»ÛÄÍðr)B6'&wñn#P©`¨È„ÄQ-8ò� ÿïáÅuÆŠ)¾ÇÑà–rx|Tf³i”o? 7ñ9�;›¯¨-hD¯Àz9><,ÓÉU�‡+øW¬ª�ŽÊ¿Wü™6øج™P|VÑE¼ïkýpWa RÀõ Îâ0É$ÑA´¥ð_•ñLªwÈ4”ñœÄ¿’£V4kœÖhÆ6Äc­Nÿ\!éõ¸Ê“3öÿ³�le?iõ`<¦ t‹ð¯@i}µZÒ_'14ÝX¸%¢ÇQ�+*sÚÒ)N:$/é>p¢ˆ�k¡A A A A Aà³BÀ©M/ì æ-T°�»ÉŸùqÀÑç§û÷þÙ¼¼ódZ.ÌŸ£¬J9›=´Òzn_2YK /yª•üCežáø¨,Á³w@À?>/£»wñ ÀÖðíð€¬B0ò$ ÊpùrP<'[Yù3Ó2�õÓ Çê+Íÿà»X âJ¾SžÎ…§ˆ…‡ë­ÙΉòkÞò/¾Ø—¾œR)¾œº[­_~÷w÷M‘:<~ƒœ®Ì¯‘X`ãŰX­'6…û®=•"³÷^)«þ"¹²C‡äQÎŒ„@~ê¬Ú-˹Às5/”®„–:wáR ùq=F#*h? 70Zl�–ýÅ»ËXDgh'os$1pË=Š®T¨³~‡l…l‰ƒ{‰Æ^ã"o¤© àŠ²Ò‚•GëqÏUê‚D31¦ žŸÎ—JƒÈdB|GN!Ù?½(/ ¶•l~kÔ!½Zg÷Ò•ö­Â#ï]ûf~‰œPïñÒ~>3r>Ò [e³÷0ÿ§üEv�–'Wër6ãyÅêat߈k4×C'ë:¡}æ¶[� €@“¸Â8rø¤�‰x6C p:_ãQÉ…wQÝr� š‚|ðQpLÁíqP{ﱊSóÕ{¤ó#ÏH\ò™–׆S…<ûþûà½>t?9¦�Qò6üÿ5Àmø_xNf“Ó¿rÀÊàÁ'ƒ¦«þ«Í2úpØ!cEâzÅ\ñß!õå*¢“‰¾+Lt¿¡x '¸à ŽÈÎgËô¦É™ššØ¸×f¸;†ì9Ð’^xÁâ½Ë·:€ç„P½¼ºê½vr ~‹yf5\�¿óP÷þW¿¾×Ó®ÓÈO¹ê3 ,xß_õ—ŸñªJ€˜²£ÑS>Ýç¤GUuþéí«×ZšPº`�Nô™wë6ø�Iëñºûq2ÌúU0mq9)Ö�鯹_Óɯ…�����ÏõáUàÜÕCðbºÂqm)gZ<žàp‰ÿ(æÜrÀÔ4D€µåFð³;¶ô³7ÝJ¼öäw”_@$ey" üõþ?âð £”!–“NnÖ …®y.AhÙà)B¼ ¥�˜ÉcEÝ‘'ã3¿%-«"2óFºrü–1i+Š€§t>ô ð›ÿóÿþ5Ëކзáá9}¸¸¸ü«‡‡ã2æ <9W:ºP{Êÿcnj³:� èA,æ]ô­ÈÈi^"öãò%;½¹æ³õªXÒÈã‹ \Öe…B ` z¯1%Îsȯ…‹ç|FKjx P ¾¾®È�[­íˆsbe8 Z®„ MO\"Ë´¤É?Ïšÿ‡y‹qd�T˜¯Ûà{*H"^Ù:äëN–NY›<ÄÇ|äTàsDÈðX'½3:í^ëP(ÿP¼±â¿Àéæ“JnÙOûjvCWgõ�tM»]s1’GŇel&tY:«ˆ¶÷"Úcƒ@ƒ@ƒ@ƒ@ƒÀ§€@LAÎh˜ÿ;;Áôáì½>Óû?Kÿ�ΦœÇ¾æøh,GY‘Õ·MÌE[̰Y�͉ìS4Ö²4|BÅ@e"®°ÏæàÛÃó ø‡ƒ€ ¨*@×{Äß}YÈg8¦N p�–y¬Ÿ¸d¼È—ï–0dÙë<Ùúå¯XýOEÀ²¿ú Yêæ›àæÿžÛöÙ÷�OŽË–™Ó@q.ÝwQ±CFÔ–ˆ-6óäÿ0eª€H,"{‘Ïîm�<">ʧ`º\aÆu]5ÿ׸Å=Æî9=Ãs{ß^6:d–"T ðŽæ‹ ÁZ,¹`=Ø#–J€ô‘–ãX@òä ? ÝŠÕ~…~Ó:e€«ø*ª"À´ÖÃKä�ºˆ�8îU2Ïœ‘/•ºÔ>,k?=îOû…9’¿~ ô  R€Ÿ¨Û¼1ÑÙ B-_5ÑAÉÔc±å ÅX¯ÿZhhhhhøœPøG¨ÁBÕcjû\=V^§˜ü?|rU�^ |­XýgÂ��ü£[Ü6Ì[ül±dM�êsv£�!�¼SkFqIþ&,”á—ô õòéd¼P.€¬òÄòíä&ä¨�‡d%µš©x/ŽøjIºËgÞh:9*Ãz@ '!òÃó¥¿(h#¶è3 ئ÷+<ÜŠŸz+zÒ:ñ!ü�¿ówF:¸+™ÍvAÖ@ÜØò‰¼‰y»ò"湉M!_%@‡´*:ÅTÓÅgºV‘Ÿ:y*—S¸H@Dn!ª•Ò�Ï�ù°ˆßBƒÀÍB ba½ç ,ô¡éCù÷xa&×+c~DkWÿsµ?ï¢xå¤W+�Œãkɯ" æIÁŠ¡¡úìb‰¿xô•‡Œéú Ò å„bÒ�– Kl)XÞø¬À’‘ƒ¼™? tqÝP.‘wÁo[ À[…@¹5%ïÙ¿§ãÚ[ƒ@ƒ@ƒ@ƒ@ƒÀ'AÀéDƒ9Wýû(œ£VDœ�_–÷Þ\Þ{tŠsŠóµóÊç0� ¨¨á™Ié“mé {ˆEQÞåš‚ã9p eӚˣËO/'e‰ÅrÊ?ð„¬¥ÀÑ•�¼aðR”‡}Š«cŸ2o õ‰£É}e|ÊJY¶nH<6={`Yy2ұЗT^Äm{ÿŒ¹nCè¸ÆÛЕևg!pyyö¯w|t«˜šþ‹t¡jê„þ:|Æ�´DÀëš"?¯5^Y¢¾\§%Ö_¿wyhã á:GSË ÅÄ/¥(\4âÎíévBÀm*¡ {iïЯ2ï±!اð¯pœ×þ{}VÐÏç0û§•ûø¿_>ˆã#ÀùCA°—¨2®c‚L׺FFª*\ýwդǬUéÓìQŒ>%åf}¹¿?<úf}Ëå’ÉÏóqÝóo[”ÍìQGÔÓ½·[ƒ@ƒ@ƒ@ƒ@ƒÀ§…@Ì+!~¹Ç¿”Ù|Qžœž—÷~P=>M'¶úÙqå“yÌ)HamÀÄ£ ©Ü>mc-_ƒÀ‚s’gê®Ü{/‚¡dÒ €%¯W,)9ÏŒxOP’År3†à¡x÷’Ó2�W¬àóÜW¤g|¦™Ÿ÷H·œi×¢´iYT ãi3.ËøWÊÛo¿�CŒ›Ú$´pK!°Ù®þ{0+ÌÿÅ£�Ù½†%CÏÝ?‘ÔXïrõ��"°ïÄ‹ð<ˆŽ™B9Í£5q¶0B —G†mÐÖ.z8d³ôÅf\¶8Tc;ÜÌËÈ=-Ô¯ö׳É[h¸(£ÙÓéÚц,‡iè�Ë ìû1ƒ§“šþ{÷ˆ@ Á\ Ûu`–Ô­‘�S3ÿ ?�‚amc{¶ãJF ¥ÌhZÒd«ôÒü.t£ÌC1ÎÇäDfþi2ü]® Mp£à~ãï½ÿðo~í-ÆJ�dp@aF¤]³�jHÜ–½ûn P quR¹D<�»ƒn'ddñà&Q�Ê¢èáè˜s2Ù¸5qnúoÿ3œ Žï–Ëþ�òÿ>š–Ç÷pˆ×ÖÞ²Üß\”Í ¡âðAhØtª!áµÐ ðª!à ÛÛàÔFb€RJÿ …_”Xãþ |Ý”»ƒM9G]ó_“OG–k·ÕH?‰ŒeMê€9A_2*Æää¦\M9YôB)@¢Ê3-h3DI_UQ Fz£·Aû‰Ônž®Ú̯ð�s˜!‡&/`„Tlù¨¼£p;{òˆ#”æe{t¯Ì˜LtÈ(P¶øè÷¨Ÿ† T‹fn*ôâ´Úž/áHpæI¨ÂíIŸ¶¶l ˆ©Š¼ö­…����×  ÿVç�å6}äÌ =7ÊœÿXè ïåÜ}ŽYÆy$ó£^.ÃÕ´Œ‡'å'�&¥üè²W~ÿɸüÞ£ò“«~¹DðéãÈ¿íÊYŒù†yn¶vε Ûo¡AàE ?¥c=ø!�¶�´Å±äÞkƒ�½ n9—wίÊ{8¢øú}ðí%¼á¨ÂO¡÷¯u¬Cœ”§³?ðdðwÆÁNÑN^aTPÊÇYÀ.F:QÜõ·$ŽËW±°ãñÍð¦Ûí ÜVo†�ç%+;½Ÿ 7®hÔçÿó- =…üñÑaÿk‹?p(ÆLÔ¡Ú{õ °»›Klå—¡šO_!8gì°”g¶",ƒÇ,šfi>3á Ë34V“rÈP�`¡�·()"³q�Ï-„^ëÒëOØ¡ÄÀŸÌÂ=^}ñ9,˜†ÈÒÒw(”Æ –‡–<éãBK�ôƒº$Žóž—$#Q‰ó ñA< ðÞ»üQ&â-ßÅ;d7º8zL=ý¨�ò¶CÞ˜dh¼ÇåD£Ÿd]%å7iPãíw4Nº!¨ÐÂ1Fx7h bZÕ ¢»o"íiÍw–h¿    ¯b¾‰©ÄÉAÑÞ9>3ææ!ÓücΉ‹gƒùü qo6:ˆ¹õ”£ÿþø”§›òÁŒ•×ÕrιT$8»y�åüU�N­¯…�‚@ÅKÑŠ fy‰¿á �Ÿ)|× s”e4N,”Ç•sA† {2’ìaXQ[W%�.=êß+'N÷¡—°l Òp1VÅB^Y�\Ç"Gyiç§àÆC³¸ñÿ‚�îÀßú[¿ó kV÷îÞ½Î*|S�¬��£ óÆ}½bk¬òƒ¬Ö¬êyW@ßy~ßÁssCÀµà_�«‰ ?¨lEkÎr]”)–k´»QÆ|j¨Ke„[4¨i¡AàÆ °�ì९ŠG—ê€N À^!ô{çÅEp)"ŽÓõy–TµÅ³õñðkUÍ–°" úZ‰ÍyÄBû¡ËnTµ°Ýë|Y—ôh¿lÛ«ž­œUÛ�W­Ì{Ìœ³~¥93Ý_Î9—i�CAü}k1ÑBƒ@ƒ@ƒ@ƒÀë �*è;�ÄäÑÍ ¡è®Ï1¯8¹™EG«3ß=UGg„,,Dßÿ`Vþá�ÎË;/ÊV¤+�b5©+ÓRLÐYSD·Ÿ�„€(›<¿ò@�ÄYY¦%›6ƒñ9ã(óÕ×8J]ÀjüÝ j}XÔ W´{S(âÅj£®½Ä|ì$)ƒŸË\�g\XǦE~Ÿã"%ƒzoºÈKèrÕ^¼Ú»}káBàr¾øUMSN‰Š‰W`KHì¬}*°Ów�Œ�œÿÍ$¤rzH,"[.jÈ4ãÄ)ü¸©ÛÁæ3ƒò¢¹šÍ@ähá�;Ž53¶m{Ôáý-„`ëRƒè¯B D‡]Q7ˆé¢²¯©§%­{Ǿój²i濾ŒÏòÞ“¤ÌÀsd�Ë{¬ØïòI2Pšù˜°$QÛÈKZuH†Í¢Q…÷ý6+±í Ñ8Ù» ý>ò$�9¦n:òäß–mÄþËgÊ?]¶½5444|U!�¼"¿ò�|dr€2‘y)¨$I æk¹‚ï*>³&Ûìº&«AqåÿÑy)?~x^~ðcœÿq žwÊèàˆ:µlË9-æ=J§[Î}_UضïzHŒs �Ã;&(¸¼ˆ_`þø˜“)< à yÝ*¹“�(çsˆVõYÙ(âÀà.®æ÷]Ù)¨ôvË(ÔwJ]çOF�z¬#Óåã<à7~ã|+:xƒ?Rf ·ÓùôÏ�•ññ¡–Æ È ÂåP ± ¯[‰'ME@(Œ‹ 4ß='¾Š´Ä)DˆÌ¾ªÕ„É4åU �ÊŒ½ÉO/Cp°' ÷¶l¨Âq 9;)†{ · Á¸Ð¥>&`Íʺ ÷)ØûŒ0ÌûNØ'o*«»£ ¸ßÝ�‹2–ã2Þ™D?’ƒšàÈ�ðñù:r©ÛÜR ›¿^A ÆAðè×BPû›ÄK=5X‘£DœS��äSX3D¾~ø ˜1ñ]á`ʦ¸> Âʇvò˜šZa»7444¼6ˆ)ž.øF§(çÆnÏ? ßr†I€ÛDÝüél>wÊQyÿ¢”>š—?~xUÞÁóßÙ„Õ,pZõ¥˜FcÔt-üç;‘-4|À÷ˆÇÔPy!+Ë-'ÉaüXsà9V)Köÿ¯Xdé!üÆcÑ©" ,¡†v2ɮń¸ÄO¤‡Âl†^ö¯�¡Ì¯LùeÉ[·Ä;¥S@}kl–‡ÿ¢}½É }·p !0ŸÏÊý7Ù{ï ­ÐëîJ 2þ">ñ¹g ,÷“«¾“B¾.Ï;«âŒÄE�°V|Y’ÇjŒ]®zåÝ'Ô+bs)ôÄ^i„*j�ü·t­K¯诃èÝ!>8šC\]a¯“„÷þÉ©(GRMúPÐ'|wÅ\!\’«Â¸Ï»ËÂ!ÈÓª÷ª èòØ�ôÀ�¸œ©ˆ5¯eM·n*�ôŽˆ5M[1s¥‚Â4 g D>póÉq ‚y¸ê÷û¤BŸ�e2_‡`�2`�‚Á¿Ú—®t»5444¼&�?Œ£à!ýènµ¾Z8K0¥8ßhöÏ,Å3w# òŠ æ×?.å~|V~ŒÀ'Wë2Yô˜s�3¹³Î:+Y[w–ŠY(êj? /±X<3µ^§ â©V+ñDüéÕK¬ Yy_ã  ?TÉE�1.ùL ªÈ=ýWüàa'M�‹çL3Ÿ *‰ÏyWð'EÙN½ÿi›Ó1pýoÛ×› ÉßdZÛ‚À÷¾÷½³¥ €{ (‚€žÿÉÕieö} mØ+óލüOæ`ŽŠà©÷Á#½"­š­ï ˆˆÁ–Ôggâ)ü/­ïã=S!h€£ëסÎÈ‚Ð:"øPç[DƒÀ�@@<çŠrÖ‰@d‡IIáÝÕoæN™Ås üNÕÒVÆi»÷�­#ÎøNÖæÎ3óL¾Û®ÖÆu—íyiÆ#cUÓ»x±*Â=ûœíz4§üœB¢¼w.éÞàï~|�Ë)�Ê Á|áÏc‰§ç)Np&óM™£ °ÿÖP'¬ÈÜ~^+$ÿè<Ã|³Š‹;(¡ˆY†XSSðÏ|Ì2Ì«kü]²­ì�Þ�”ÿï�ËOÏËÕŠù¦?†�)úPÒúr¾á¡{rÎËçúkZ Ÿ ^‚eâ®ê©Äa¹¬îM~i0*—X?>žb /´fs_ ê-nÌAÄ+Œ£.ï¦_çã6î:=)"iÄrà6‘¿}� ªÀ~á¿ ëê¾§clFÿÖgûÞ/>·i · óÁò?]á½üèÎqÿZ8‡Øåp­É¿jüa¾jr½ÇežsO$­Þ]#^R¡¬ÇV¤–*‘~ÍÀ½`Ÿà©òtªå� 'Â+<‰Î–pºH$·în!Ïî7¿Cɘ!´Âà\-ë¡âªàÂ?ùR›œw°<ÒÕ%C!Y�uyuõ:¬§ÀOžÈèä’yƒk9òïfNä3ž+/Ao¤„òAÅB÷l\ ~Oš¸‘î7ui]¯j6âéÚîׂ‰ÏkÉqƒZ5ì×·+Ð^(8É':�øÉ݃L#Ï9?9åŸÓÆÆSv<ׯæ+r< ÏÿóòÃ÷¯Êã [Ì<ë|tÌ^k<žs”mÎOÖͤµwÛµ•±í·Aà… P¹ŸäíäwÄ]° †J•@à2�‚¿VÍS-x�-Ô`± ¡æË‹ç�%€øÊJTç³ù¸`¾BôŠø ˆ”ƒˆ‡#O^2tÊG)#¥Ôä1…)ØÃ9fÇê½ÍÁè;ßùΘ"7Z7Ö|kø£ ðÞÃwÿKÍÿïܻê;ǘàxdZ®–q$ ˜¶äÌo^�;�ß±›ÿMð�Hæ¾Vîµ ¨Ê�üAZ±,aÆC<ý_qœ eAÐ-çfNÑPýþ�•rÈ  äž›N3e8ÅžbÑyˆÍÍÚ½`-4ÜdMÜŸµ5“ XéÎú”Úß^ðÕ̺Wß“+œ,æx†°Ra»~îÅ;âUÞ‘·ú( äAdry÷Ê8l`,O;Z\ÒÐP˱€ÛƒòµûßøÓ/øù_H1ºÖÂmƒÀz³îâP7+!¼w+üù ¢ƒl�ö áuºæùUp}�žxWÿcÄõ¼ÛÏeœH::@È 5ónò/�ëOç˜ £© €=�Æ´M%"állO ÙËÖ^:’•Økf/T^ :¼ë3;I„¾—ç*üÇ=( “ÏMã]mr�T¢u†<Ï=Ð>rÛ'¯ÜTÐ…´!‘Q68,î ú{qùN™ Ió[CôtWWÐXW_>“n–Ù+kÿ2-zI$Fm÷P€ ýž`w� Üd¶ŽãùDhß~¶Ð Ð Ð Ð ðÚCÀi£^ñÈÙé˹(ÒÎá~°È"ѰœN†å|Q~øÞ¤<ºà”™ Ç«õ�Êf Ój¬Î˜Ûâ¤('bfÓ:SíÈ)Šø^•ûQ‰%Ï–üšµuÂ<ªJgÝWlk>�ÝП·n¶8‚‡«r‰×J+8Áð+‹Ë2nÄ“?|cx·Áw¹°êöJ«N“g{–G¦»Ý³nèae öïÚß› �¼)ÈL»ìÿª�zðæVÓô_!_Y@¬J�~ÿ¡Ýò¹”'¼Ç¢’ÖÉĉ¸"·åó΂`9<<`et Š’Îªè9£ɒý]ITv5ˆ‚{˜ÞaEj«j¡AàvB@ìÌ«¢c¢ˆÕ~iã\�‹g•]b´ï»;¶æøy]³25Î1?VóÉ«÷õ)EZ}÷î*¬ôïå5ßîêâ»<*vý�þvP¢“Æ)Û}‡Y)ÝM:¾‘ߤÀ>×åìrV.'s| d=j©[hhhhxý p=;:wìÿå\¢�ò¾§¢°Õ„š¹Ã}ÿïâøï÷~p^þàG§8‹ž’f„VWCsnÊYÔY¡ÈI'mdAƒ}ý@Þ¾ø †€¸¼Ž|PÇ ÙD¾}Þ‚»3¬ ÏÁÛ‡XAº%R«êâ¹ÁQt§¨fþ5Þú3.ïÕZÀ2QŽô°›¡@ÿ`¼ €ˆž=e-—qúÐ à ºÿ—íãM…ÆÞä?¦Ý'ë‹UóýûP€)ÔƒÜb”ÿ[뺻Ê��5÷­Šîæ3.ž�—H,åÍ“ïÞÍÓç€ [ L_A,�§óp˜±€PÒ@Q‚¦£ÏYQ4ã@Ní-4ÜÄíîªí_ãiÆÄÊz hˆÇäס®dI¤í_R�ÓIæqÈöݼV¡Ð¯P¯Çþˆ3ž8ÊðÚ òß½×ç®\U¤r€J‰÷ªïõžõÛç Z2ÕÐeŽ‚Æ‘Ç± ‚tšW¾«ÌÀä €ébS.gË2Ã4Óºk‰®`»5444¼NèæžêˆVžîzþ€7dösiÿ¡žUÔeÁ:tVÊ¿WXýŸ•w?ØrMËùd]k¦wuç›júŸúegPc¼b6¥Õë]㯼۷~Á¨8¤Œ&VÁ ù¬-€[È·¬rÎÁÏ+”Tï�^pÄyâuà%H/ûT…ýrV¼û÷½Ã‚§µ´bX¦[¦ËSÓͳSt[ÀõÝ)¤ £Ü€z¢s'ßýîw5¸‘ wÙÂ-‚Àl:ýë‡GGå€ê_«à‚Žÿ[���©‹˜é;·T€Oݳñ>×th£Ãbã|�zÒôÍ>¯>f1È åÑù‡¤q€Â‘$N5 ,Å �¶{�7*k¡Aà&!�Š5³b¨ÿDwƒ@˜ÿGLì»É‚¸º’¯Pœ¬JÞ«€ŸÇðgz\YFA=òPh'´QŸwÖ]z=毦ë�À«Ò Ó¯Ë×ü~C¥9¿*ÿòû¤Ij!ÛÅÅÝØ Úø¾ô:Ã&sޝNŒŒL*œˆm¡A A A Aàµ�óLb˜%ËÓù ?.q¹“É$å>jœþ— L¨ÿ«ò{t^>8Ç´zé"ò GG§²9礖˜dúë‚Nx¾ÇÝÍ\ùüÚ¼}è�䀂GR2�`\âYo�땴儡Пñzݯž÷wùº¸LƒwŠž©Ô ÊØ=G\ÊùOÇeÆÌ/çDË…àõX‘}ý˜@R4ErÜù K�xsðÛ=¶ €ù²\\NÊÕdÆé~÷ÇÔÙ¢¾ò¸æárŽÉ_'‘þU¸ÿ¿‡Ó?}ÈüèÝyùÁ�®Ê»�8òïB§²=Nð„*]¡ãT͹ Tç²²¢«õ:©y™ª€O½xl¡Aàs@ rtiú/çUåy4OrÒ@o4F¾™ãi†#dN�·;¹*îð‰!B…0ß=‹Ò�p_Ó—ÝPóxß¿T ˜î=H"ïôÎ-þõ ¯Ž¿üKŸŸ«hS|.ð}±…ÿæÿù7ÿ1÷î�pô^gšŸcªÿM :HC'¯±Ç_Ç`XVq'�c¾¹s™‡´|G˜Q1@\ú ñ†úüÑ‚i%°�¶‡8”Sv�{qØÎ½[î�¶~VBû¨ ¸2ÑBƒÀ�A@zP¹„ã<'ºÒJœŽô €Ç&D¾Žž¤ òWÁ¿N&ÖíIj�c#mÄ»Š1ï<Yº �õÖ‹Ú+ËtÛµW÷Zšè3âŠS¬³vÚv­£SØ[5mñ=ñR üGz"3eÑK“à¤B½2q}â¡kySèúrÊ5a?+9®è¬~ä§ô‡/¢ZhhhhøÊA æ†}§‹û‰Ð7´Wnùì•ñáxDøBæ�?üÑEùß\à º”+̘gU3»Ù¬Œ0dNa-‰é‡ùÇã£#Ö_çÒœ×ÌÚe�ÔöÓ ð"ÜêÉ›ì”8fü¼Âg dÄ8R9ÒðeqÅñÐWl}\�åŠ<ìQ "+5ßgdE�³ò‡¶­ ÄË5¥W8Ïx–+òbò\}¸E‰(*$�zÜÓ7^^M®‹þ Pž 8rÝSÞ~ûí# ¼ò€+Än Î&Wÿ8QÞúÆ×ÊÙä¬ 9ƒuò&JƒP�¬žG®†Vd" ¡¤¯0²·¤'êi²ìY•CA:å,cAËöÊb6/G‡Gq.æ{8 ûáé¨<ž�à)ó0M]ÐâhoUPJÐþj° ({à ۖZh¸9¨ÕRðM|Ž;?ŠËŽñ+^³€1A M¨ƒx‚&|ÔúÅ-oÒijeU‘YëÚª�ÔHEyõ4«BÌ»:±ØF瓘ShOú³\4K�¾Tͱ/[h¨‡ùdŸKá}à Ìõ“ží‡®@uܧ°Ÿåc ¬tØïM)‡™ýîéUV­21&#•„K&¼1qóå==œ8=àØ¦Rœ0ÎCÓ˜x†ò„2סkç:‚'km¡A A A Aà«…šΟ]•TQ˜é3÷9ÍÈ<ªàžÎðþÏœÅêåïÿpUþÞ?¼(ï\rœÚ�9Å­£1KÆÌH9fݵªåŒxܚ”s*q1ƒ8ÇÖç6§,ÚÏ‹C ¹+�—ËÛÁ[Ás)׌8ù(X¦ôÀÕéWkx%Mÿðý÷Ëêçþ ™È/ÃäŸ`¥‚‡;•i6!Û¸°#ï&ŸFL2<©\´clcðeÛþ4_p‘J‚ïVC Dœd›'ƒ¯7õ�”ã"Êt0V¥Øz8ÂÅ-/Âûc<ÐS4yõ­PöÞ“”ê_$´Ÿ��@‡Þß¶rHÙA"ñ\É©Úa@¶ÐÁëª%(ž¡“Pƒ:-É4)À»w,ïæÍ.Ä-4g§’TC°12åD�ÔHšwÓ¨r7±ðF ²Ö‘ÝoÔÏËV¨ÃÌU5á¤Â›u;!.y¹ä€3ü|\-ð5ÂþN½}ø%-4444¼>p gfÿÎAH(ú³qŸôüÏQHŸ­8ÿ1茉'�Žý¸6£Æ{ 7�ä|äpäÉ‚—¢3¼ÅÞ~Ù \!'?‡ ³'|e�àÿ> €Çmy2‹aì\õ—ßSæ­ƒsâY>ê%nËž}…øP6ˆúЊŠÿá¸9ê!Éþ@SÆEü— ¤â“|¤,Åcv€3ÀÞªÛö_¹@í|Dû¹9\N/úo}ý­ÈÝ›/²¦#ÀDq†§À…剼Ç3Èy|&]‡:Ìg„|0ÒëÚ) qÔ±W èç8þ{ït�èaµr¸—xÀU‘—7¿¿A_ʼn´n;‚V:\M:¢Ç޾àu¤Õ�^bÀ‡†Èhšƒµü‘šäX½çY�.†�ÄeºeÌ#�ÄVã«öØø®Žt èÊ?Wí‘íïÝ®Æ>ˆ?›oÊã)Μf ˆÒ/³ÙÕØ^089É×)¦È/®˜|fÄ_`êºX°KfžsÛœøp Í]á¦ÏœÒBƒÀÍB@üMÞ(OBR¤UþÑ@>‹DäWó Ü«sÚŧ{ïâØâÝóYðF2VÊO ÿqy²S˜þã; +ʾïn~äAŽ¢êë‹&}wÝ'ëÈ{XÔ:á´võ[Ö¼ü)üã �o@öªý­nœ9˜cš{çÞI ¢G~¹/bVáÞ»B 肉ÄÌÕÅ)Ð�G!%½ýò…ÐñùœïˆqX, O¸Xrüß„Až•kŽÿ 1‡úÓ º@aÕ‚Y˜P¢xi? 7IåÙ ­ì‚tb&® ½çéÒPÖ`öÌ“e*Íi à„RñÞ<1ÑX†ò¦[OÒd¥›¼+ü›µ^¤gК•@¸[*Õ�Lq�“’ÏÄ]§J2N ®ãR G}N$aRf½Ð¶ô‹]Œ�Bÿ°<™sÚÇâ€cqìÒòu½í©A A A Aàu€€3‹óRÌYL*\ú™ Ý¾ÀäÎü± ~μ2ãHêó‘ŠoC_‰§…�…@"£|�Öɕá$@ø-*%ÂÄ]!»ÌXÄ|Œ6ëád¾³˜’;�{0ËæVÊT˜æÒMæÙ ôruæ“’ªÀï=5NkQ⼂ N�UNÕ¿jôí~î—þ ¼²Ð(ø•�úãzóO~ý_:>9,GœË½aå_Ó÷íëŒOnpÕ1~AæØß/R‡Ú‰Á;„ÿz=y‡vw÷„%qqL`ÜAetÉóñ›_/?|xUÞy²(ýÓ²ÄoÀèï”æ£'ª "(´X'Z±J\ÿu-¥AàåB@?ƒÎ™Ë ÓD‡ç>ï‹å¢ÌYÅêÑx­Bͤ&èocAZxÝ�ðÜ‚u²œ÷�üÒïNU¸ bó=ã�VÐꊊ´X{·ê EqñïÝþ2Hh¹â‡¸Ì=¤¯R]¯‰çVótÝ‹1 &”-ß·å@hñ€~ލcȤf™¨s0*s¬z KLþO7åá(ÎñîLRÀG8,t H;ÂK˜ÌèI    _-„(œÒg è`< áÿœåÿ.'ål¶@Pê—)“>Óbž1¥0Ÿ17ò<Ÿ«*h¡Aàæ  ("£fù¡�ï�·‚�‰#*9ªv¨¬áõFX:ð_±é�ËbpXþþ~V-£ÃÃàÓ´|Â*i�Ì‘�8¾Œ-»îû€út�>"º+§E<4$›h^.ï¾k5àûÐ2õ"~H¹¼PRÀ€Ý=¹_ŽËJf¬ôþÛW ÍæàUBûcÚºš\üÚøp{ïa»Á„€p\N¸â؃AÁ?– Å1_„x°-÷)C´ÈÇwŠqwж H¬ �ä‚=V1eʾà&œïÊ9ᮚ•âÒøÕ\<[3ˆ Ä·*ä²ân fRÃÓíÆ’Pï>Hq‰pi<îß•ùÃI&µš×é 2ŠŒ ÿ’ŸB¶‚þÀɆ{¿«Ï25^�?”Ðm¤“fTÐ%´£‚ÏÉ+¾À;‰’šTU)KõCWŠ{cŒÛ`©SPôÖh²)ß—^)È\GŸù>_ú×ÑŒùõãt5Û”s–ÿO9Ûy6Þ–;¡åVéˆâÀ.Ø9BøFˆ§öÓ Ð Ð Ð ðU‚€ÓMOå8G‘é†Ýa¬ò{Ç_ fÉšûop늿ÛÖÒZ-çªàG�&rªø*�¥}Ë— ‰€òPa}w©”ª*OÁñèZ»â.B7wŒÿË%‹B—‹MY"œ{ò…rVÔ†€nYùØŠ õØ¥ÌC¢f)ŽYænJµŒ‘/ Úò^y)²Ã5+ȳ<#½’–¼tʼYýy«~U¡)^¤ŸÓÎùùùOßý©{e„Àév ÷ÎJ"{°\ÍWz`¦% %ºge¡0Ä4ÙU‘/OðœBÔÊ€Èe(”ˆÐa„‚ÀðørVÞ?ÃéËbÄ J„ ( QŒ¨YÂ_5;“þÈòÚf 7�Ž4>²ù€É´5øOÎ@ã*ÑñÒ¯TÆ£ò2„¢õKšmAW⺃¾å¹œV ŸÊ„ø¥ò©Ðù¦éV(ýäsö'œÆP‹5y™-â¢b¨#¦.ûÕ…ú=Ôßpx„ì2{ج%ÁŠŒhž7(ʀɆn@ÛC÷šm–eËQ£+VyfW³ry>.³Þ‡hºa«I§+<­*êí§A A A Aà+�àÜFX±5LÁ¿heÊ*$~ Q`�Ê쳆ÔxnÒ ó‘#óSð}×ÓÒWí#¾|�“R.© *9´°€–’ÛãEá_»ÈHèëh}ÍVÈYy©gócÒ9ÝBa?v7Ë÷ ðÄ"Pðbp�Á0Ržê¡z'ÉÓùg›Zd&ç¤@ŸüQäå2=h¾�µXx3XЧ! €ÕVîÕ…¦xu°þØ–&œÍý­7¿•Þ÷Y¢“ñqà H¢ ]…“úE¨D+°* *2V%€D‚…UtH+Fœh âŸaúÿþùŠ}_˜Âtš0‘ÒMÉÕä9ëUMS™iÌ Ñ�.®Ý^1>‰Y#ÌÊBî÷¯ã¸²´t�¾ä2£qõÚ ážhuÒ‚æo Aä�Ò%Ǫ0¯{ÿ#Í<»tëÈ2A§Ä#MÆäÀƒÂ¿GÔ„Ž"ò’hǸ"_×cb˶jNsae@dL6L&+Ô|¡`Â,9Ùy~Îä†%ÀÙ¨L¯ÊüÁ¨¬�‡e4ÒJ)DI ˆ?š­D3µÐ p» ½xI# ÷ÞÁÜì¤q5Ä£ÈM„ñ»Ç¤…úè¡,c²²JS䧉 ­J«´-…yûÚažãÏ>Q&&`vfqL'�)Ô§_ƒT*dê·dS6y9�Äžÿ1´;æO¡ &Žöz+Lþ§è¾{倨ÁjZÆë‹r—ú�ç( .YçY½�Õ�¦ÿÑë¨8ǘl£ý6444|õ  €¿bÒ¹Bà¿À‚ì‚­  –Äé@M³ÑXãA°q2ùœ_TZ»¿ÙùÐÙÐßn ;ìKÁ$äy4fT_@IDATxñtËvêˆ,O¤ÜãVÇ5üÎåbYž_"÷<(ã1QœŠ/}9‰Û.Âʘ_fy ªl�_“Ll6ø;în·´�ä1i‹ZT*tÌ_€(9-û¯F’Æ5*(”ã~ý×ÿÆ›düàUÀ³)^”ŸÓÆ|:ýÎññQ9¹s³FZÂÒ3Võ>.…àÒ•OŒdË172Ê¿ï”äIÌ17,è6‚À<�¿4‘q@)§—SÎGÓÛ;AÞ+…¹m—P÷}y—¸øk¡Aà¶B š³Ë¸ˆù»À@´ET ¼Ò’©à³(‚:dã„a.Q°™Ç©Á‰ Ÿªe ™hdЊ¾¢ yÃô?S£]Ëj’fÛ“v�$ôTôÊë@ŒºT p‹P…ó(G|t@yÚ�cÓé`ϱC-2‡7aÔÉ–€‹rp8,÷FcœÍ”òæýãò-Výÿñ¯�”Ÿ¾wˆr@:§}:`?„““&ðÎO    _98º_!q"Z¹˜¹ú�ù?ÛÈ< çJçLWÿ™—TðÏùÏÙ¯^_9 ´úÒ@@ܬ|QåÁÄLÿ@ÕP(�ëŠÙ}-VúD‰YyŸãÝòᓳ2[}³œ IÕ%åµv‘1Ѝ5ø>+%Êè®á¸ùc•¤Éï)ôËÃUž/z„"Áí˜5ÔêôPHÖÎ^âã÷Ÿ'êoÔ¼/óÞ/ºŸ¢î«Éô߸sï.¨q¹\^° ŽP¾f'>^ø“¯˜Æ]L!ÄŠc`"QÆ‘H&VæG¦¯ð¦+¤…௠[ôjÆ>˜³Kœ‚£‰r ›HrâI¿ úöÆ+¥Ÿ®C¾·Ð p !à XªŸ„óŽ&H�­!�K(~%ò_|‘uÄ*>iÒ[þf´îòkõ!˜“"}YΉ#ËG•ùl­¦CgÖ—�B�¶É�—ås5?:d¦ˆ�‡îÇ¢C=3£4ØÌqúÖý(˜DP êõöäè�òÿ·NNÊ×ǃòS8ýûæ½~ùæƒ^ypw[ob,èÚ¶jß3ÎZhhhhøªA@ ЋÙ¾³Çj¨ûÿY|R™ìd› eœØ°Á'UOá 8ë©0¦¸/-4ÜäãÄAo;%€8i ,öcå¢ä�Wž«�•ó–펺Lzôø¬Læ‹rÿä~¬ÀQ@h\C-ð›äâi„hDÞ(y$ã"¥K®ïay@Š»8y:éJù¬ Ñ_D�}ï£�Ð2Á€“é“[S4¾â?SÌrï޹ǹd=Žáb¤…!÷€ƒÞ¸¬ð¾" %1èò«ƒÜS9®†Ðï�¬Ènf½¯gq=r2°©%‰Ã|©†"¼>*çóÃr:½€&e{€Br͈¦Éž«il[S–uoúj¨SÓaÛl¡Aà î%ÿ�¬åJ üŠä\I Á̬ M¾üƒºÄ|PZµ5‹°£) *€gt æDU%À.s>DûÎR$·[­¯§DoTª™H>{`œ½Ó Êðch4œÖðºV3¬ƒr Ü¿ï´àD!]û ÿ§w¦õ„U~MÜWåp{Pî@³o"ð¿qç œŒûågú�ríöusž÷ú«r·7/Ç}èå߸w�!G‚’´�²WÂ`:1E§ío\ÑóÈc¾ ¦µÐ Ð Ð Ð ðj!àœÒÍ_Á§)°×±Úž8F“ÎdXGkg/ÇsÜL—)V§dœ)Žd—ð‰Á2ù§Wu§G§-Ìä1�Áê,�õ[s›B 7�*Ÿ(÷àäXÜV’Pb‰Ç0H\É[i³¬€>‡'—÷Y89ÝŒË×Ë쾂ÏÂY²B>ÜÝŒ™ïÐ�ÔT¥ì³Ýâ/‰2ás)j—+…Ñ¢MwíH?öÐÔ¸¬.(R: ›'IQ›üù{ëÞ/“ý/q½ôÐ,^:ˆ?¾�ï}ï{‡ïá÷Ë/þü×9’â*„ƒ(cΨì¯ðÜHlyÑô—½�Ä î[Ì}ÅÔ {€˜uð¥XÑC@P@/«#V9³3ÿ£CaŒ6e:e_ð‡›彋“ò~òfÂÌ£'(!J9A""u° =m½,Àäõùh·§µG�õÔ·Ð pCˆÁ•At›“8ÄÈ>ê\-iÎ9«x5b{ 8܇É£ýõ\VÔmd«­¦ÆAY ‚ÜÕij)šÄ›Í Ob˜éûj\hàŒ�!=~3WWuA-´nqòX7´(XÒÖÊ> Uô-ã\å}-ô{UŽï"Ä_r&³>9Vå˜Õþšâ ;~ÊÉç1÷fåš¿‹iÿ['ýò�ûGå§°Úï Ü;t á@'´Øøz.CöwŽè�.FW(¶´½šÀø�—åà.Ú>tµdÜ>Æ€•6kLJv:ÿè+�÷[c<ª0à­…����W¤…mO~Ì¡ÁE�gÃ8Žàã3郑‚ý^3«žýá^‘cÐ8 ölº-0•\ÂÇ­—Î�Z�QÜ?$fB"8�u¡å%qÿ„öX˜b›™B‘9[h¸9€å༖,=„ÿôƒ#ÏWsÔVƒãÈç¾~Z9÷ˆ““Yd=z³ü1J¯ÿçѬüß”{ëÓr´d4ùßãd´{î†Ë=ZŸ¢Î^­¬ÇÐ €5Š‘�$,d²I!è‡%¥ÔHÓÒ×Ë–8M�wýç3xQ�ðÇv<:Æ"çlüöÛo~ù—YÍÅK MðRÁûüÊç›ù_º÷„1;E°¨9rh�Ä]í«+ý]df±K$›BÀÉ\%tÈ ¯Vk¨�¡è3ópö+Z¬'WeºÆŒA¢Ïª`Ÿ¼ý²Q¸ßè>ÌÉ$|ûŠƒü^ F¦µÐ pSÿ ®ÒçŸT 3þG’B6 ‘:Á !ÖAWz‰2–µÿ™Ð=;Š;PwØm^É‘1á0�z ÆEÜÍgQßm-Þyó94Ï‘×tÞɧOÇ3ÌêŽõæ’Fy¤ðz=A¸¿ƒð¾f#f ¡#ŽìAËwŽåMŽüÆÝû±Âÿæ½;åÍ»Gåfþ‡÷ƒÕUéqÔß �m¸nãçUóþè½nž¸Á®Çä¨ßû��}$NýˆHËs];útÌuZ{jhhhx¹�÷ëFaî˜mböaÌf ÇJL˱üáëô€¾Ðë?2Ç%ÂÑl9( ŠÔhíèsŒ÷nÂ;:ó§¤|¡yœº90:Ð~^9Ä÷ä?tž.ÿ´ö'ÅåÌOñ²b•ÿ¢w§¼sµæD€ËòµÁœ“’‰Aø>ùäšÖÝà‚ÍšE¦�ŠèLü‡S“hxæNÓAö#èɉÊС A©àµF0DY`©è5åö¿‡ÈP‚xo¡A A A Aà6@ f£ìHh©»>,âØ"††—©¶KN®5Âþd¾)W‹r>]‡Ó?-ѶhÉ­i æœ÷5wW+-»Dæyö8XyË8 à6€ õ¡Aà!à1Ñ?8-�NWåýXEk #/4ÒòY�ºà â  X-™'ÿ…RÍ{P\$È#¡@ßIù‘�×§â‚7$¤fýžø”'°4ÄD7XþJý5‹¾ÌÐ/ºŸP÷ÕìªÿæÏ¾ÿéf sãcR°~!”(U¢˜ÂIàUI|xA ¥r™s•5+�ý̹ð >gûð»�ž”Þ_AyÑ�Š@ 3GTFØ ñì;×® 2-4Ü ˆ•ÒÇ €û°°ƒ6ÂI!>Ÿ»»™ÀC‰l9éÈ�r¡¶¢â™³b:Z³ò|&ªöyçYa?îfˆ<–uõßã|fU†ý•iMÝQÝÀwèï/~óO”šêáñ�rŸUþ¬üß²�ŸëÎHߘt²µa=™qŸAßKŠ›Âü…R€­A˜ÚxŒ'2w€[ø-à>Ÿ³E`ÚÇ+!‘j•ÄÑ{¿*¿'ŸÚoƒ@ƒ@ƒ@ƒÀÍCÀÙ…uCÆñ:B»jޘ̴ãbìÇ ´7tF9@àÇÛ?æÿçW«r1]±uáÞÒX|êÃ$�yB%±«ÿsöA¯Ø>Öƒ7Œ¦ÌOz _v ‡£òäü”㡃Ÿ~ 6P£p 䯅ñÊÅiQ]=#hÕ­Õ°€ÿ15À—Á>®ÿ Lï¯ÿÆÿÄ>“û Ði Üç."9h‡ÌR≓–¥[͹ÁVÂí fe4ꪌb÷Pš#S�>�H¿Cì/ýìŸd5&…󣃂eNiæ—e8᢬¹tX3d2âÀɤè �e›ík'":�Û$„Ïä %ÏK�~š.Êrƒx¬��ÈLJ~oÀÈB-4444Ü0ɤw»ÔM8ŠóÎGðyŽù1o!TlÞ™þ9òo²áô§–ŸÌ?l1sÞsÕ1¬Æœ¬˜0c%3æ&} p‹X¬"9—Ù\¨˜oxnóƒiáK� €éb]^lʤDZÈcxÆùŒEY(½Ús˧j2Ñ>…ú0û׺È_ùDh'Ø/=ùHâ#Él•>¥/é…8óêð=-À¹£pãÿiÈ‚Ð|µý–2"á¥RW³ðÿæÂoÿöoÿÒpÄ1]wNBK”ŽUr4�=[�%Ïÿ¿75�Säê0M͔…!Ì|A¸ðê�³ÓÜsïòƒÎÎ)Èô¬ü¯þ7˜;«`ïÿbΞ=@yÉƩOÉßùÊZ¢¼ •ÃÌ =óÄ<àüPçƒøìÖdƒÀ�^_ÂMõËC¶C¿?í±ÅKh|!�µœt%H � 5Ä"‘2QÊR,«DJ,ÒW–ˆèX rï¨Ï”W ´©Ðo±]°ê9,7u¨2mÄ1În�·ëí_&õËþìR 7�ùröK‡˜öb�C6ÿáŽå\1øvÏ5î£î1ö›�þ§‰/Ø%Ò‚HVJaÒËf`qQó¬K8z G08;u"à¸Á-Â?Nh—¾Äê¿BÉ5Ph"qu@´ê{Mk÷��@eIjãb¤¸ÏÅHíí˜ëU•;Z2nï/�¹#éÆ)dµ@¾G}Ö™yBÈ·®.ÞíG¶« } Â ýÊgyrrÐá’Ê û‹Þ9˜0ÛÞèýŸô!Òˆ•™Ø#†ÐßxN-N�¢,‚?ª\}ØNÀþµ>ÊĘ©¨KeÙâбÎÕ Trð¬yÆá ::A<9Â$­û ÿÿì½K¨fK–ßçû¾ó>yòqŸUu«JURK¸…ñCØcì–'F¶5’Á`�é¡'2<2Ø�1<0xä‘é¦Á“š6 Ô`!M¤FB’ÝH6Ýê×}å󼿷¿ÿÚû;'óÞÌ{ofÞ̪¾;ÎÙßÞ;bŊر×^kÅŠˆiÎCZ`h�¡†ø¹h�^Y™È&}ÎÊ"¹7›˜1Â9ÅÉß9NÿÎðx~qŶ¹èëõ� ô?�ÂÀ FÔ®0%œ�=Ð;!i ¨²%Eÿ\4ÂP‰¡^®œÙ²` 棫q{0�´ –[.˜þ¿r„?¾è=3b¢ò!Hÿ¦fÆï Î%˳ëÿ«ÃïGS÷ rhXè”±^ L<9üZÇ 20°ü×/÷T_?W§î~ý äëi�‹«‹öÞïÕT]¦ì:-_O«Z™vXâ’€¯ ’’d#�–µŠ˜X®ÅÇ›$‡ù9³ f8Ñ9˜àé"?»µ?úä„­é9pŸå.øpû –ž´ÝÝ=?�8 ßÐýWÕiHZàM¶@ßAÍ'ÝB¦0a¿ ¯ÙòÂ~øø¤áó«­ÎUp…„³»élÚ&ºÎ‡f­dÇ +?°2ý=�dGéÅËŸ}ã�7SÛä‘l|I¿ñú˜3œ^l½«€½A"}GîéîM<ðÜ»eá‚òɘ9"›�?ÊÀ1<| YqAÇÿÑ£ËvzŠŒˆ{˜ò;ã`ÓA³À’�œ †St=â�-Kî™tÖâ%}wg\È|Ë8«ô*뤑ŸCZൠ÷ƒ½C4¨íöÉ“EûÃÇ3ü`c`v­Àe(>ñ™d¿ë[Ùa·ó¿f椫oG¿:ûζtV�:¡gT¸øU÷ìáòN�þz‡A`õÍ%Æ;ÿG‡m—­ÙëßýìgŒÎ~{�j áM·Àßþû¶–¢í=,°¯ôg§„ÆñAŒe]2ÖW‹E&Ÿ©[âœa¾IWX}�1ŒcÅÈ¿%�Ê£$é‚�RúîOWÚ aÓÇô†óÐo®B©�hß9­’¥VSÊÀW�‘MßÐªß ÷5µ+W0ߎÂEdŽëÄwy‚ÆîgÒ³)¸Ãh\ ®ñ§¬äïl½)ÅŠ§fV} ÎÎñÜ `H†9ÒcáA™K¯)|Æ÷:íÒéßo—l 8eVÀ Á3gïækF½{#‚&D9BF‚(ÓåYÛϹŸ€$˨Ïp�CÀËV:|âoŒ0|ºm»ö±�†0´ÀÐC -ðV[ ËÖ"œÂà© rHU¿¤?GÌXîyÅú;ó ¶9ËÎ3Œéá„�þØBeFX¶£¥#ÄYÃ0¶äÌP0*êPâ ah�_ä@/sÙ³*‹½vŸ%gô—æÌ˜¯°”ÙŸBs€u¥1=K½0F6®— ¼¬5t£þúX‹6î5lfc›®&f¼š_à„ñ8 vª–Žþ»ìr‚Þ5á#Ö5ôÖtËí¿µ0˜ð¾µ¦}>âùÅôoŒ ²}öõ.vú|اHŒBÈŒ5QqA”=_/“yYW2‚¨fŒ(:Ó‹Ý_ÚçOæí!V/§ýC¶ÀQ~e즃ØsŸ»ú©<7"†Ë¡ÞB H¡½"â¹§åž>e±3fÓ¸;k¥C×›Î}‡ 7d�ü˜ú¼æ@ ôkõ3#@iòú>Í(¿Éðz‡ 0®�³œ®HA#Ø&ôÙÔÓP\ÿ7~ÿŽo% €o¥Y_ŒôôüôØÁùßþá>Óy�fë›~‰ÐqÞäî¬LTõ¥´Œìc€žàéL&mͲ€K¬ÀŸ?š²,%ëpâ™ y‹SôU3ïíRU|ÀCÜ¡ágr·C ¼Ùè>ƒ§ •n¥XGÿ§Le‡Ï«í@°R1�óÆ9Tp¢H…IsãYĉƒ5{&¨hi°G_¸o! 2‡‰Aùw(S/ÁT©Cj$"êÔOé,Q@•Á™}bÅ�2@Œ‚æì?Á‰Û{:Dc°PË%䤠"ÛF1$R¼�ŒJÝU5nhp'€ÙtÎò£eÛÁ©À6ÎB—8¼ÖÁcC -0´ÀÐ?-P<9rIÀ`C–ðtäÄ”YcèyWlý7cÙç¹á`�rÀ‘ÇÈ4å†�”D)�J®)?§8‰^° Àšeb©«ÓBº†á! -ð Ü�{´Éd¯�Î÷Û'�§í![^þðÐï„Î>£þù&Ô!}U?ÕÈŒúóÝD—ãSð{²ÓÏÇÅ7Å—ãNž-ļQ9R0ÑÆ«¢¿©NêpE¹ŽþïàßÉm�ëÅ-¾kЉ9 Ù_ç�UÂn�Ëée;¾s €_ì|ӪȤ‹  °âæAQSúk‹1¯·ìès¬YvÎtß�X)¼fa4”-Ëuç,¥Šµâú³H•5æZ¨! -ð¶Zàš>oR¢ß„)DOY·¨�‹ëµü\Ë ¥q8 L<Œš‡HÇÞ›.> 2u¢ú¸0ýÀYÁo#ñÞ’æu?bâYÙ@Bâò…™Î½ñŽÖ 8<óÍæ ½zïfØÉg>fí¢æA¡ùìéÆ+¡¸ŽÃ&¤ÔS;MσMôñsÖ?×H³Nówćt½ðŒ«ð’3|;bǶÂÐC -0´ÀË·€Ã=0ýÈ*Ø¿SºàùcŒ·®ã_âèOûí|†\áX1ð£\�¯gû>;ñüg[3Îäwý?"‡cÝ®®0ž3*굸•au¼|­‡œC ü\´$í×0fIåzrØœ/Úƒ³ Ü`ð…ðM9K;º$¿Ù]0›™Æ¿óÑ—óÄ¡ŸSü¹w$?xȳñ ÐÁÙáfLYý®oqH�ܽi?pÀ¨‡±àŸù¶ÚËêá ¶NÆóżÝ}çn˜w:!†¯~ƒkÕw4¡æ·»3Öˆ0ÈT_© j´sqr6mŸ?¼àG¡Þ›y½VÜŒ]ÝçTZÂ6ò€ä! -ð¶Z ¾‚ëÒ‹R;æ gËŒgŒŸß…?ž‰ ã®{a®;ø…3�ù>>Æ3œi�çÞïasÝ¥WÇ¿Òâ@P8 6Þ¯Ìù:é¤ó­.»ÛsÒS5;éhc#­Äøð¹m“g§£ñaÇ-ÊZÎäw5€ ]¦©åL”¥ ?|˶††€<<ùÜ*PEoÎ €9€i¢P¦¶¶Ê†Z`h�¡~^[ #�¡-»Ñ;Á^ÌZfÖý/Ùß|ÅÔÿÎÎ4ö×WòÀ×52«Ì•0Š!XcpLñ¨§tÁ²4ÍMBrÿ¼6ÅP¯¡¾²üR23“>Q›µSvÇøìñ¦/ØQ‰�‘|(Ð9:ŸMÍ0Òë8ä£áÚνg?¬¾Ãß_—~Xñf½y˜m¢±�ïÐkþùÎjàew» ÖgìÿûW>ÌK K^²á^6ÛÞ{{ÿÖÃûËvçÞ�òôÏ.}¯O½î1IJR¤ÄÅ40”{-YNÿòúÑ“³vÿÁ)Ž;À„ìò{ó™´-WZG™Ô2‚Òùï‹«¨áwh�·Ü²R;ä2R ÕÎ5SÛõ€W~Lº©ŸdÛwÔ7æsÉHˆ_#ÿ ä ÷ë�ZP 6QÞ„˨|@»ë$Ø—Áûý ëg°®²û\q6ß•eZ-Ì‘ÿ1þ±SÒR¾B×heÆ ×ö›M¼#¾ñà§Zý3f&AW¾‹Ïô3Ÿ~0vć¿5Ë æ8œ2ê3�Nãä&óݬ,ù†0´ÀÐC -ðóÓ5zè("r!,Zù§,aÔŸ5þS:5ì$‹¬pV€pÈ#d¡{ÊË�LTÕ#>ù�2ÞNBÅYaKåÍ3ìs+üæÆ¼CZਤñ9~.˜}ÿÑãv9ÛO§~�i£< º“6²èUv«ÈãTýÌ í£G©_™*ûI}šyüD¼èoÏlFûS¾àÊÎkÌ<˜0ú¿Í2€|׫կ$ÿ·ð3¾…F}ÊÅjþ›ŽÖï´‹åå+óN§t9¶§'ñìK …é½G¹#ØÐaÀ­Û ÎÚéÙ‚åCHh(ªì)óºö`ªúIä™P�`âÖ_Ãó%zøù…i�—•ß¾yÉB:1ô‘›Í©O‘ÈS7ÉP€¾˜R15»üÜJ‘=>úÀ§°[ó×dú-FÆ'l†7YÏØëE†�"ÅdÄÝ®4Æ€t©eÜ]¤®ë¬"%FÆ¥Cm:ßR*ëu°ÖÏæÚjw7ž¼-#ßZ)?€Øñ®¸ªC ÄV³(?u°Î èZ˜ì×ß_ªW¥äYªÎ\FxXgKS�ØyÎ.ˆo�L"�ç[!—x�^f7ZŠe“=ù O!>®úpóº�ÎC -0´ÀÐo¯”uDåk3gs9õ«š�ûÝ¢Ñ×xìÊQåxd�‚àŽj†fÞbÆêd�Ù®4ĝޒKŸ£È¤Ì«ú©P’§pó›z Pr¼ *þT¶¯qÓUŒÊ-ÿ¾zK~Qø²¼/‚Òþ´´€´3±3ƱÑÖßÊv;9á#�­–w/¡{ôG–L—Þ¥ it#ûKü»c“ƒ'ÎÄt� "ŠÒüŽìÈ[†4Ó$z“1¬e¥6‰éì£^¹”@Î7EæÌÕa·§m¶g×h÷Ul1/À˶ÜKæûüÁƒ_z÷û¶¶ƒå‹“ þˆLçZ¹g%V,¶¤XnÍaË»Ð!ã‚0ç £‡‹åãvxÀ�Õ|‰ß�öaûÿüã6mûlw!QK`!ÕÕ¸®Su'H’¾o@H®¹'~¿¸-à{|•�©èÅÆ¼-¼=õ\Ÿ‹Šú{ïd œ£ @S¡'Ó‰å²Í~ô aÌ™ú¾ÐêŠwzm^+;ô˜eGìU<†IîîLpœ6<-§gm—ïáx'Fgí`t«�?~Ø.vî¶[n½I^¾�…L<Œ‹lžÀO!LFœ:À¼�&’:æQæš´Xz‰êGÙ [ÀÿŒÈsw3ë3 �’+;ÿvËÕÖ|~¦ä ÇhŽþ솻¾¬æôøëP¶ uëcœJ&fï Twý¹oçuÛÙa åNcw Áv»Äcôhlí�l·�~iŸUm~~Æ72a–$tÏw³p š[°`„®çÒLuX>¨Ðx\ì´Kz¡ku¸îÞ�š µKvà˜®.ŸT}s$ìÒw[²ÓÁ™{·Þižœb˜¸j¿ù›¿yø×ÿú_?òµ†ÁðZ›ó«‘A3Ͱ;Õ”‘¯Îò™·&$; aûüÁ…Ñ GcJZLa’8ü[î¶'�[;?‡È€[³3€•(ðübŠ�vé¡Þ¢ïççR~Z {•0¤§Þð7¨ºТ<3õø¾p�ô­2„°,•€>H·ÆÔ_Ò;!¯Ð^¢ÜdʱŒÔ4ŽÃáÁA[\ÒA½:Ï7å¨ÿ;km¯Ûñö¨½ûÓ�`¤{í}”˜ƒÝp€¼ÖÇÎy̱]edÞÕ‘¯…Wu©CÕ×â{¸Mçß�z“ܹ5ã�<ÄÖ>ö:Í«þy¼¶ÖOã` ÞÔÔÍêÜ[�4.˜QEÊ÷@›ôep-Œßµ a©Z•Íßþ{·”…þlð¨ôeoh&Mè0J3÷¨‰ð“R”¢èY|iTV#årÂÐC -0´Àl�ˆ€gÊ“'ç@D+ìä‚`.EsÔ_‘å軇³Éz~ÒÇðý ,ÿ/þÙŸ´‡³ö>[F=8Ÿ¶'lûäjÁzé9S¦gÌ:�0{Ý’‘R Ö..»…òdÅꮚ ¤Ío.»:ö¥âE�ž M’E+h�_'ÔÕµDíµÏCZ o�ù-}×ÛÿxÆ`>Ñ®..Y°lçî”Á€êîdÞö$4·Ï¤¯eß~‰.´$¯×1BE+`âR€êŒfÍ“¤×P¬ºc:ƒK£YhK(‰w@Ç?Lmãü;Í16þû$ýŸ¯5 €×Úœ/Fö·þÞߺ÷ûôíøøëªØÃ+êMÆûâÜÏK½É-%£bs5EÂÆ*ë40ö”€·Û矟2ÍECÒ­ç!â‡øZ- AGÃ�®,±†v¹åw•XÝÿ. í¢eÀ]dèƧA+3[¼æÏýˆ�jµM&¢ Ò{ _»ë󶽚BçËvk§Ý=:lÇû“v‹©ëGXVïïµ¹÷ÙÛÕM7Ö0ÓµŽôÀ§r"ƒ.Î}ó;2ŽX”¥ºëDúƒ¢cšgÿàÿZA*ï}Aò{ʱÏl)™Ò¸HñÉiY–YhÊQp1ˆ èš] ñÂ4þR‡^ÈLꕪžÂY’y…°ªåü†÷‡�e[‡7(r¦¸m�'A.½8ÛF)ôÖµ;@–˜¦š)¤*<ü-0´ÀÐC ¼•(yt]´²$²Aù�ëŒåP‰8>�}Ét) Ê]Gö•�ܵ£Ã½ÈÑSv8áx‚AàÑéy;aÛØßûô�;F:d¶yGè™Êˆ“‘ØJ�~ª¿ú�â’T:OÈ«Õ =b­Û—…Ôw“Vµ¸d›9L´æ}è��©´ës3œ‡€j ¿Ë\ö˜AsyuÕ>ýlÚf̘Ó1wD^ú�b¦^דž4ë‡EL­ªh×tïü¯G�U¬íÝë‡âÌwknñ�ßY‘[.v™¡9â#™­ÿ уÀüE �¯þËm¦*ß:>bä æ—ÿ|…'Ú0A §ûKç©Ã µÍé-í0ÏdÔöÚg÷µs¸T¨ço;ACøn¶€Œ¦D£¿ß<8Ûd gf“Ùát²¹0°\Ëȸ—&Þë.L’iXUº9U P<Â!å¶*Œ(ÀdÓùp ÍŠc�­ñXßxú¤Ý>ÚmﳫƇïÝkïÞµóã„°wD�ãm¬¼ì¨Êš.üa8•�úÈ·Gҹ‘ãZgÎ}绿¯â¨À„ÁË´­�gª^yùož²û5ö9úžs0uðb´|¡©ƒø½«»*“Tù*K½ ¯��ù‚%‘¶•yrö™ˆöyÅ*œ¾Ab@á~‰�eœínhkŒ/K¦s.Ø `ûr‚©yÛ_ìa7t«<Ú|�CBP�Ózüík’ˆágh�¡†Zà ´€£ˆÅƒáÂÊå,ÙíûÜÉÅÝ *òšS+3 ™Ùŵü¼ätÁ(;t@»šnÓ b9)FôÛÈU\Ä´ËÅN»¸ÚiO§çÌxŒ¡øâjÊlr!SÕ7í)m±†™*t¡Ç¯@�“oÓ§m€‡‹ïr HСuôfd»ó“Ó)ŽÒWíý£#ŒZ|!L_ñðñë�póµpö³r)AôB#Ñ�jz¿ Dl É €ôG )º#—Æø-¨¬éxY½Ê{jÖööÛø gÒ*·¯= €×Þ¤ÏG8�Ïö?¸ý>Ë¥`¦zUõ-K4/’5 Õ+™¡øêÜ�ºê¬k²s€U—gZ·.`ÎtØX0„¡lyÏË;—výkʾd’ÞËì¸ö =Ê87qò±¤NÁ+×UqoN»åŽôŽ‚L/þ 6`­Þ¢C¯a£Üf„â‡wnµ½sؾ¼Ûàfnݲ^Ññ‡qëToL%sPl ÔÙNr�ŒPWœ ZkE"ߤß±6L÷�úU¹õÕx:ô0‚rX_{®ó\Ö9wä‹ÅØœ½ÆÎ¸×5:O9ÜçšHëZ©ž(Ÿ4%�ùÍ—Ñr[†ò†¨üøúYýµ •Ÿ¶î„|j;B�j”Ñnçÿüì¥îe®†Õœêtj™CZ`h�¡†xƒ- Ôè�ëbeíÎðÔ`ËÄ-8¿r·`”ÅÇ9G6uñD*§#¯‰r@x<|~…±½-�17nxÒÁø:äíO>ØÂÀ²â¤]ÐqY8ï?Fzåˆå ‡òkYÊ©*K9dpi€0Ö©¯à¦n7ž­�ª‡ËÕ�|IÚü˜#‰œoæî㌾q½É7\|gZ"tyc&Ñ@ KéC×%]³Oï_´Ÿ|ï6ú•3[p®®Ò%K1P±ÄòÒ»÷¥k�Ï{?µ(häàÜScÎ~œ^‚°n’f^àõU¥Ÿ�ý½]tY�\ëö7ÿæßÜý+寸Çk ƒàµ5å‹ýìg??Y�¶#ÖÿgÝ¿/‚ÓÕÃK$ÖTzò2™|¬©¹–² YN{;‡íìbÜ>ˆƒ‹‡Ì p] °=7~é ¿Ë-`?Ûìu+ù‹K˜‡-†¥KXdȱO+†§ù`²Â+·Œ` =.d œ�¨’P#Œ(È)Ù§~ÄlÝYŒY·îÔÄ}x»}ŸÅþÇLówŠÿš)þÚ¶¶qàÚÄ%[¹ÄF_ÕÎyêA^;ßTL¬eOìæÒr«¾=.QÕ;ï,¾•[È-ìó èDAv�·»0mÒ=£�ôk@÷KXÊc˜l÷ð>Þ†Z`h�¡Þx D6K§l."·�°gÅ›�ÿ,Šy~�#oÌ¡�á¿:âHeñå™_ãzâì(™)Â)áÜfäö{, ø¥÷�½wÚÞÌr€Ë¶çvÓø”‰Ÿ+üX¥ðâM¹H±$Œ‘5#†Q+­KœÕ2§eöÁ{C�S›WÅ÷¿\nŽk$=Pw¾ôLÊpû§»¤º‘¾� —AÎÐ'Ü_áù�?>mÓå}¶âÛeÀ”�$|e$ðQåŠo)W|™\ã½ßœßH®€Âj ®%0Jyý�óãD?,çZ¤ÜF¯#ͳÉîÒäX;r'Nþ"P¿ÃñÚÂ`xmMùbD|ôÁ/?þÓ¶{ÀT|-MŽ&ú'Á<Ÿ;½iR �Ô#—ÓIcÅ<12Ï–—³Q{Äö^ONÙNmɺÞ(òjò_£ˆäOy ¼Ðm¤ÃÈÚúMv”µç0±h²Hœ{þ Ü i–y„„žŠ(B�œÝól�1À)²Ýa]úç÷ŽqúÇúÄmF(x%Ž[AðÚÙ�é=ÕõíÁÁwFF½³f«"Šafµ�¾DS®y€÷¯»îãLîCæœõ]ÉXX‚ðF¼¼Þ”0wÎ7g˜f9êì¤ËO{y!^nª»mW�kâªæÖ�gÊóU��.<^§‚è·¾™i@ⲉ-/†ãR ˆå .`4ϸ3ŒK¶{2“ˆÄ峪]s9ü -0´ÀÐC ¼…(ùÒse†¡çéÝYžŸÔbß�ÞI éJ…Ì䋼 •\"™éH)PÎ(-s<éØ1üø(¦ 2=¾ß.Î/ÛdÿçÀ;Ì ¸ÂPïXhßù·(e\ÆG#I¶˜�Ú"V¬ä&x}óÞ„÷ÀæIûØä«‹�Ϥ ·C T Œ1P9HYf»i‡@flûwÿÑœ>Ó.ƒ§ŒÀ³%rf g¹ÄS`i+<„ ë…lí€ñ¯†$>,|,7�ÄÀ~uÑ¿ø¨J745èÐÇøj@ä²õ4­ ˜)þ*Ƀ ­ô öóèäñÿ¼³‡—ò{wÛùò<Ó§$ ë—t$@aÏ䵦B„zv•ÄöÛ)–­ñÎí÷þàÿÍ2€ñÄ%z_´õ¾»-P¬ìùÏo'O&U ªàÊ–O¦Š�Ú”4¬�NS œìOo‡t«Mñ&¯‡y-­¦ó¸P“ £yûð£ôlGÇHÃǘK¸±]`Áµ|.æxg¥¿mg¢Ý‚–oÁ”¿÷Îqûñí#<ýã ˆ]Öв{§ª°Äá8Æx.*‹kW7\ÕO®ïŒ‡ck½úg” g¿{ù¹=ó?ªº Ó®ž{ù÷'Møñ)mþ3¦ß ß_iÆÓ;g';úó¬}øþûíÉåtáÅ_#ê×8^[f¼¶¦|1¢‹«Ëÿðàè :$¼{;îöÙ%Š— H:8�•%“ÓŠ+b±Š ƒ]±GëéÅŠÑ<|ë´mŒsàÒ{Ù‡| Z@ 2ôçºûâo¥÷ÂÒŽŸŒKvæº|= ‡Þ0dôp;›ê!»‡¹Öà$³�ÖPÀšrºîíáÕ9gF\ôƒ•!ÅÓ<Û²`ŠmGè'köf]Ï/âôïxw»}ÿp¿}ÄRšÜÞiÛx.�üVÂüùµvŠ2�šªY¨Pš÷aÀI‡;'X¹î»á>¬:y….Ä¢nŸÝ(È œ×TDØòÀµ Š QŽaÒ=lòWæüŠÉö Ëó¡üO9u.Kp)SŠå ò>Ìïµñä ÙéùiûÉ�~"�ÉI K^¼¯½õÏÏýœp„Ì:¦-³ß0t œ)`·fyøø*>4Ð- £L‡£ÀžSÀ=´ÀÓ-Њv >‚–� g“}Ù¥„9ò+O|r•ÕûÜOÇ_F—)…'P«³S ß &Ò i*#†ŸÇ̘0+`$;\ ¼sx«}x÷v{ïö1£ ;m籃°L¹(ÿõ-ÕWa÷ߺ�dQ–~•œª_}uUÓ|ED÷8Ä)̸cÒõ¡‰‡”àóš µ�Nˆ˜'e'3¹ÊEòX…Â:ä^F_0¦¤Wiâ¦>¶#`¹·=ëºÊñI„´…ÍgU5gdMg• áŃ÷Ê.+&¼X=‘GI'Ž7PÊ#ϵFhÍ;g€:ÜÚfOÚ]òYPÚQÌCZ`h�¡†x;- Ì‚‡‡SX³rÂ¥ûµþŸ8î‚áøòxàsC´âKõQ�>Rlê§ýŸ2BNŸÎ?ù…õÀÃNÛEm±îß|ûÌøèÎ>Ó¦?hï°ÕõƒÓYûøþ #¨ :Tø”±btdìÔga�Î=>}jzu=h *c=N1üGV¡8kÁQØ,EC�è}��O:$ìƒy ê ¿9eç>5îŸÓ$¥ç¾Ó-À7¡^–O'²öÉÐQY–zq5kŸ=œ2×ñvÛc+¾åüŠïZsæŠä)õó�©º“’vg´Ôr´`h¸78@c�ù,˳ƒ|³d5½SÒ‚À~œ ÑÆ S�n£{]ͦíïü�¿3ù•_ù•"ê×ðòÀkhįBñwÿîß½õ;ÿâµ;Lÿ—©Ja¨¡¾¯Êýâtg„%ƒV‚*�ìÆa�Ñá”åáãóöð -!èÑ3V´T6„¡^ÐÕQDpª4ús®¡·ž�áv¦@OO”w»;‰·Ó/Œh\B ƒ 5S÷÷ŒÀ±)†ªÇ6–Ó¢ö¡f檴Ü}'ÛÝe„á}”Š{·v£tTÇô¢�v0"8‚`ýÄï¹ëÖ­4®‹­’œP‰í¯A qdÅò›ç" Ü>㦠Ԝ >šØ¹-�œÂEíÊ”\sæ£O^pøY&¾K`÷×eÔw,^GñAC)7Ú™úÄÇé>�¿æí§=¦ZI³p‡¾îÁSyâõ™{eX½!qО (Öa,˜ºqu‰w1oÛûŒîì–Ì„Ð<•œâ‡Ÿ¡†Z`h�7ÖòûtD”YòwJÖ¡ëbQ~\"�L³Fž•�uõ—j¢Fôñô'!Ó£Iuì¾H…”¡,ÒQ †ã%r{Ž¿�õ6†ú½ÃöÑÝ�ö.³óxS¿ÇìÓy{tzÑ_\µ–\;]\57ÂÆKOá—2ÈBÒÁÇ·€�«[ì5i>ç’%NöÓ5!Ï–KÖÌ—P•´Ži n yz®7`‰õN€þœÈáç»Öò�SÖ™¬ÎŒ^a8¿µO>;Ãpu»«c²Ô%3]1@I3.y]0CU:sVdT¡ …�S²â¨Ž>—€©ó©W%­2�Ÿ i~ÁGšß•v�˜ËÚþî^;Ÿ�·Oÿå§?òÿãx-a0¼–f|1’³Åå_›àÍñ€éÐZVÝ7RŠÉúâž½ÅsR;•f[ˆóF›€ð®,ãÃäÍ\‡µÇát1�ÈôF€”jbWŽ÷Ö1ðàJý�¡>vêÓ�÷‹ÊL´NhgPŽ˜(¼Q¹çÂ-e¬‘823@°Ä¨zM°‚„rÊT©:±™M8wºj{G¬%=`f‡%LëL®Êž|ÃÏÐC -0´À›ky¼œ]Y1Êè¤[ñq°p_.‘ ù)Þ/£W~ ɼ±€ªw.0Dn!_쌆˜K°Lá•ó%£ðv‰ÁÏŠµýK:C †A·ð70A6Üz‡éÿw·ÛtyÐ.ÿL hÏ/Úó³v‚“ÀSäùø¹Fó.è�¡F ß(‡lÔ<�!¤N4‹òC lÛÂ?K )GÙæ3•ܳ#GµËMÕÛçöÏ�g¨èá÷;ÛЂDíÈLô#µG•´½6›OÚgÎÛ“³i{ÿÛ_½‚Ф›5ß–3VCCöÒ¥) .×Õ˜vüµ˜ Ò ÅG9½€ã ÑÍò÷NýÞD§&üÁþ^Ÿ3#s=ý�Áø¿V)¯þ;^½ ¿ÃéÙÉçÎ�8? I ¼Üê¤eöç„‹$‹Ð f;#�„C L™ÚngñýG'�eW$0�%Lfí<±Pès‹þÔ·€¢óùáÙ´ê”B6*ü­°J*yã,ÐN=NyF8c©÷­™:¾œæ<��îÓyʃß 9úhZ‚Ñ7:ö1ÁøM}r›>¶òæéÐáIM¼®z‰_£‹‚@4ŠŸ¾ÌÒ‹m|¦]¤ßôÓàè]z•l–þ ”ISµD”kÉHBSY“Ò$/aˆK?Ïî=©e‰HÈ4$Y×â!Áo/8—½ìãœP×�ûJü`¨ÖùÅø=9=ýñG?ùï¼Ö�謤BÁ«=…dT¡X6Äʪ8ÉúÑã'íÁÃ'º OÞ?Æ/À’ŽÙ¾Û-‹ ÃùÊV€É’œÊ_Û!lQf—Ÿsf7zµ;˜wÇ«¶—ƒõ�[s¼õß 3ðÈľ}N§ºu¸ÛŽ˜Ò€qê{Çï0íߎ9œ�žýúŠ€Ë‹6¿`4tK:Ö®Ëb‚aà ßûµ"Ö/1,d7 ZÖkCò2g Ü�€#Ï|” ì²–‘ÌðN¼ÕÛ횣ÇJž(܇ëÕeH¼×Tc w”±gaOÖ‹‚y–tÕØ<“~Ãé´“?¥Fžˆ“Oa9‘$k•CÊ#Ÿ»Ïo�ë�ØGòÚѤxëѪ^äÅÀ²`Êf;czçïlJ{c¸±¤AwJs ?C -0´À[iù»<<|œÈ×5k°ó]"H˜k‰ã.°‘#½ðwiʶ°"¤Ä^�Àû´ƒËYeŽúO2•‰�^ç½#Öôoƒ†Ýÿ83R ̇¾³9ë©çàCæ�Ð=w0#¤~xˆ>ºÄ�°b–ÀŒg\rƺý)NØ4\Î?l3žG_V—ÌÐH �`Î)ò§ø Ä<ƒ2ÐgñYól\g5ÎÊB¥œš@µU÷yÞáç»ÙÐ#�ê¥3S‹rò»…/‹5ÊæÕôŒ¾Ó)éûŒøó�Ø¡�>äÀévéPÍùm”^çwÂXЪ_JjÂÕGUwÊ pXuÇÒÉŒ¨�<оþv³!z×¢ý;}úë83^G+¾ÇÏ~ö³ñ§÷ÛÁm¶Þ£Ó2Á*Ÿ¥UL¶ç¹/Àñ¼¤d £–È$;s:ù$¬é”­XÃ;g�¶ÞÿONèH-éAÑiÓ£å‹l-x… <¯bCü×jÞZ¦¹ ì[pM]½SS¾GNa)Iké’¼æOC(íÙlt;\^w ™÷ÁUyÆÀ [XD$¶Êã•b3ùaXÙBf¥EÒc{4o|¸O§ƒ³ÞÒnLÚ1kÅ�p·?^2º¿l‡Ì¿�¸1Sö|N”ø#ú“«ÏÚxV�`zà%a<a<@¨»|…õ~—ÿG¦¢88âàT-§ ÚÙ—ùV•ûçð!º¶L÷ i3!6a£ølbratÇ¿¹ïp§½o æ®Ö‘6/m•úX¨Œí£>×À%( bÜ´|ÅWÆg®Qêsú~…:[#—xö=yŠHý´ÿq*P„‘g+ÊÁ3UUÀ¡‘2˜‚8ù³ÆóŠÝ®æŒ¸ð|GäÙ4Á’äòÜ=|ê•ä*œ„ºöSb5«Ý0ü -0´ÀÐC |ý€Ýö˽ª!_†Ÿ#�¯ÐK‡âÎÅŸeÆð{d�ûfðþ:®äAñmñ|¥sͅňgBÇ^'iÊ÷Õ”Ž:;ì '(\Æì0ÆX`OÊe3äŒSý—'8ü%MƒÀñZJÈâTÅ{ð»ûà›-±o´àŸ3Ñ„q'ƒ–‰�ÀÙnŸ¦“í«é%øh`l�›; hV·#—3e’÷iê³ñ¼¹îÎuݦ-âàÚ£Ò{™Fí3Ý/Ò5Ðx8ŽcÝu½ÐÓÓ@üáͶ€C#Ì-åðý ƒB/#¯ÖÐìCÕ”å'§§ö›öxż3Èà|¿¼kâ#JX÷½­Q¼øüœ$™W«Žfð[Q‡ŽN$‘Åä�ËÀ©´IG]&õz—Ú¸Dvâ7Ä߯ýÚ¯�8Ѝ€~•0^¥õ¾FÞÝwoý¹}¦’ìÜ�ˆö 7¦A¯\Câ«„ |‘ý~ ¤=ˆJ>+×zIã}RôyÖæ[§ŽÚrtÜ>z!³V›&L¡žÏÚå%ë¶vÙ¢ f)áÍ·€Ú…L„¢ãІ ·´©Î{uÊb›D8òr±ˆcô]ô\ަSœ9ÆB¨ðÏå-¦á!]¡/¦äsØY³”¾ïš"y�Ôw$cшäÈ>KË¥øìnA«vìeЏ°h»ì¿‡¸}ÖÞïÑ“ßÁpç€4 Û,ÌßeàÃý»ÌÝß¡ó¯huŸ—xžÀÇ<ÄgGœvî•tä‰X3­_:ÞÂHÆž§<«Ïb´ÖiL=íø¯YÂ¥rA¾( ŠŠ3»†ÛHÁŸï˶"ÝàìõœókË›â¹ÂõUw|—¥»èîdÔgŠL:±áðb¨4Ë^£©DH\GwˆÉc[kZVxbP¸t÷ §¨‰/²Â+‘8X2­à“¤DÚU¾P‚cL éðX†GjK½h=ÚÆ î¥ êCoPZ£XíÃ'Ù¹|šÍÝîï„”W:e²Ü˜¿=‹Là®Î={pmìHºeÒ˜ó8³‘PÜ “ÞˆÕ—=œ‡Z`h�¡^ÜrkGó'Ûì÷vvÞœÑöó‹)ò9É(¹pìdÄò}å¿;½psƒó UrÄ«ÈRÍvãÇ»âëè+Û'�ÁÊ1gÄã9L#FçÕ_JøZàèůpR(.˯zYC}YeÉàTž�À·Í3¹wUWäU*Ë¿»Î+ó®÷({/†õ±^2£P=À�”k'Ï¥Nû^Ñ¿œ©WÑf,[Ðhp�á‚eÓ+ü0ó}Åe ð¯ÐMœÁÀƒ‘—{ö&¸*6m…ö…Þ2bÐM™<_]2ëáœíÉœN>g`¶Öèè+#¯RÃõ Æ–î‡ð¦[@ QÔ®ç_,÷³¤t1âý¯.Ú.ƪ«ÙvûäãU»8e À>ÓðÑO·y÷ç £ú6^Ñ}(ÍÚC�\«_ù5†Þ!féØï‚b¢©Š¢¥s}aAäP¨¾=¾—Yú° a;»¸hÇw�Û·ßm�YóË?úåwÈú9Ç+‡ÁðÊMøbxGýïFtŒ¶è¹þªè˜ÌD¦Ùkö/FóœTIÆ*=&cŠ‹EXžÙB½Ý¸À“·û¡âý…ÝYtãÈ#)Ñ>§€!ú[n�¼ÞA?2Ü¿‘¾X¡Láå»u��·ñµïÀ„NÏhú�æ1½fÔ¬é2¬ ëì÷4ª‡Ýݦ“NÇ�Þü„³‚••Eé0ÒC ƒBÆ¥óYå¬n1bšà˜cÂhþ6tµ-OÆ f‹Å) |*㺿z˜éèÇ y y\¨d=-@)Ƨ!4ÛøäBÚ…^Ê<¢rÐ&®O´ƒ l–D­¡a•¹&ð²Û>˜=àf1Ñ!æÂŽ.ÜÌÛÇ={~*ïMLÛYºÔ¡”ð[Sü0pÌ9põ@= :ÀæK{g¨³Qéà[~¬R|�U£‚~‡Z`h�¡^²Âná©0YmD@v¼XÌ‘;á¼ÅësIzϵåÉ› l.€B“;âz`óQÐ8|¿D–iš{ÅÞd}†:ûÔ@Õ_WŒ2&(Ù ?ÊAjiv�,äqŒ…¡t¨®¦•”8»þ¼«~쨭³¯ë(Zï�7`¸·³Ï$7–Ô¬ì(íÑɬ}úàQÖƒŸ±“Á ÇDÊÌNç3;‹‡mŸ%�KtðóËùm›åŽ÷î½ÛÎ.T}}‚®N]¸¾êc†ó›l)•—m€ÔŸâ½Sc�»œœ.Ú£GóvÌ —#ÿ F«t¬®!É‘~»pEœ¼^ ŒÆñ¶ÁÁWNi+K¢Ó{=x$�‚�Q d[èÂvÛñ{ðû¿�¦¾�� …ú?ýop¼r ¯Ü„/FpvvòŸíÝÝ£ód÷K$¹¬£–¼r�X ‰� S¿t�è@i‰¤ÛÅÈÿ´}úÉ},¡X'ÇGt$§Ô¢KOO¡ò¿o¾¤Gûe^Ë(bÀ iã�É�̧OÇ›—=QHBC[x1�~‚s.±MÚ.ï}ŸµBÇì[z{ŸÎ¿ëîwè„ëHd+£ô°1nrÝp0c.å¦Ò’L¬;¼ÖÐY�I˜È˜°Ôcw[”ÿ]¦ý‹_gré«;ýOë:ZÝíÈy�9Šú:Ýë0L˜Ðß÷ù7÷Ð{) }ÊÓgÓ ÃÓñßê�Ïá»ôyo|WÖÙøœ}Ô¼ïî¹½î*›Ît÷Ûéîï#<ºç1ûÍ`‡{«Á1ÞôtÔ…÷ ¹ÑÑ–�ý yÇ´�ðµ È·]ÁFг„/ã"£ô:_Ô˜ÃÞNlë´s´Ç¬ˆƒY P*$S£üΠH1×aCPr¿Ž¦IÉìÁ†0´ÀÐC -ðR-p=pß…ñ"zñþÏ(;3í8ìDOîdÁ3%É©Ÿ—¹u~q?ï3ö0Ük8VŠäþUzŸ3{è¯<[þ³ET&°’�Ãr€S„©ƒP¤• ;Ø8¸Î½²Ð8Ç„SÇD´4SöÍ‹HS¤ÚtÊ¿è¿÷½�ö¶> ãÿAîï?xÒ>ûüA{rrÙ.Ζíìô>Ël²W;þŽØÁh‹Šú=8y<ÃYñXPºTÒ} EoZ�.¸!dv@]¿oº$Šþà bÊ݆à¶ÚãÇ'íÓÏ´?ó¶„(ˆÛE§^âI:2CÑ8×ÝÇ�oF:ó•«ßÓ%‘Ç¿ÊâÒÄüé€Äi¬i*o¤ëÔÒÁ1—×ìb|¸\/ÿ ¿ÁñÊAõ~ßb \M¯F÷ŽîÑéb=>~ �J4Ï2×oZ iEÏ«YWAÙñÚ‚ê¶ýÝ1âÏXð““«öùý'îÝ6Ù߯²‰:!�´p!(:zû¦Eð¯¡m ¤'È' . Sè_ œÃ>å6ïkLÇr4¿B~`D’að¹ £¸ÍÈþ1Þôo³Íä-ö Õ»>Kñ™¢�4Æe¾iRÝ&ß`õî‰C1Ê7#¡¢»I�ÄꈫÙÁ£Q´íÛmoo3Ód_gÿ†�¯# €×ÑŠÏÁñ�ÿñ?>ü¿þÙßoGÇGy‰®±Ö2;Ö Yßîð_-µõŒzâzœ¹#*ì;ì«:Á‹åŒYlÇÓyšà“nݵëR¨ÒÞR ÈlÜÏÞ`'O6²ä\L%±tð4ãÀ¦°8ŽXŸ6fmÚ!Âð6Û‚Ü;:h?<>lÇ0†[‡8á«iq’€‹ï¶ µuØËT,ƒ•�œ•;ËÌ À)�iýÈm:{–-œ�‘Ùñw*¿ûŸv�Ïv™ ^S�¤?s�ŒC&&}—B`<ø8Â}RÒ»Gí®ý"€ ûu|]«X”€3×K òlÛ¤¸úIoö‡ç°"TC~nÈóqã3T帶~‰ãû½Ù¤Ý½I‚æÙ�_‘D$)##ñ>®ï.9¸æ~ÄpE¦Þím$×ÉL%¼Ê¶5Æw9Òyß:ÌÎofHÀèØIZá¯D1³¬ˆmÙ¥aç€)i±`A ÷9RL´-y�O^&†<_j.€4 ah�¡†ZàåZ@~ÛóôÈ:+„¹[æ26€lîñÊœåÑðù>½ °é•RÂ�ëîæf|¥’NÚ¶„]ÄŽò/â§ìÎUJ/»ÌY1ѸÛàò:I]º)‘c•ÇXñ—<éäe $FPfæ$P\2ÎÒrŸ0ˆ‚£-üÐØAO݉7ƒÆsËšÐéÓ Â’~Zy†<<`Tå˜þ j|ûðƒÛí'?½Ý>ùä¼ýÁ>hÿò_>lŸþˆ¿{íî�ïµSvÏ©éåÖ��×û³Îœõtyæ­3z‡€){øys- ­v†^¶ÚRfUæÍûöõ ±Õ<:ÃWÄ»8¶Æ˜³Å\:M*fê7Éef?1ô7é†?¿=é–ûtú…•89kD@;Ž.h±E»¤E?!K/¦Ð_´ßˆ¶í’Þý½ödzJüë ƒàõ´ã—bù“GŸþÕ /íÖ­£0_~ Ý¦¥˜¥/ùeƒL/”^ppı£ÅKŽLg˜Ñ ÓÿAfêò!„6‚si!¸2½lñC¾WjYG-€Àäè¿=ß“ÁUGÙG¬ëÍ®Ú.óÙŽxßî·¼s·}pë°Ýc˜ÿ€Nã„þåZ5ÌBçsâ�D4>ÌGvB§�0ÏK¦ªÙ¹Ž‡}:ôqÂC|d*\Lç{q¬G¹K¦÷«UÈ´œf¸`VÀî¶t\å¸VÉ>¹ÓÇ‹Î9ÄÕ“š §™‰`r@aˆ]Ùa®…¯Nì|¤808m€#$™ýKCï™âŸ†3ÂÐÕÝKþ‚Ìú�ÛçôÜ×¶KRŒì>>Óòby&£ýIyó)[7a*‰v£½i<Ÿ»7øD=„eÆ~ LÚNHI¨{.ƒƒ<´)oΟ®Œ‚¨Ž:éä1«˜Äše\&ž¢sÆ9~&ÎÏgíììªíàFä6³*OåSÅô[ãþïºÞ< m¢º’¸ I †Ü?C -0´ÀÐ_³Âka¥úŠ3:Dô’NK͈´“¼–9PR¢xoáuIï#:*!×òðî?Xº¤œ„UÞ÷A±¥<òìaZd[°9›Ó@mÌ�«ªen(Iˆú T ”Þ%­.#³Ô’®È”¥^—�¬JVaÈxˆÌc‡Ü‘xô•'�z­¡^yy‰CÀ1K)wXV9f Å5âk¬+Ξ]ð�ûli|ûG­ýèG‡í£�Ûœ}ÿ‹þi»ÿàª�Ÿ}ªc»p…Ð3yò›©ÿýSR§!¼Ñ(-åæ €ú>bˆ>Åw„�à!Î�<š¶wŽ÷c,¯[tæÐ85–"óÑÑ–:˜ôñA[E²üª ]HÒ3+ ÷"TOâ{–~ÁéŸË»·ñÛµZÖ¯ÿú¯ïýê¯þ*=»W ƒàÕÚï…¹aÿ‹ëEöé°MWly“¶CeXЩs=Ç2é…hžŸ*-CYÇÆ"½I…Øjý¯]Ï!¼�P9­ß ÅÚ‘xyCÇÂt¬· ­ñÑ¿ƒ£™ï3êÿƒã[í]ηÜ�}ŽicŽ^p�Ñ¡–ÕŒ±R{ˆÝõøD¯ÎKÄ�›“üí Ô„‰Å\€£Á2+�Vjå6Nn¶ýna1wW€18Gøµh÷F(ËðpÄÙÑy0¤,Yl=åÊù,O”öE=—ÑŠk™�SMøˆÎðÓ0Aq㵸ÁPð0Ø ÍCˆ|Àߟ‰ ¾¤t?©È͈o~]eQëNöþ9½‹Pð9ëqêØ@ÖÐç6¾V.°]z—?É<÷M#€tÓC)$ÒÞæ'¤Ì\R§”Å;´ÍŒË�Pw-BußmâcBU‚§žÃ'rÓº]]`8Ű»b$Doƾá.�ÝÜöïŘvñÚgˆv¼RØ|èºÊíð3´ÀÐC -ðµZ �ˆðÐâ£+wÈaê¹34ø''®‘¯«“S¼îÛÉ�›…UŽŠQÎö°7ã{øšåWwç/�œ”-Oçî9½±=¶›Ø{¬ž ÂúpŸÅz,)¤ÓÌá£Øßò¢ïw•ï­.�&Åv°(3ÈKe—mbÆJŽÑ"2 É6!M=‡öT|¦æŒÈîa`«øö§€¬…Câ+àÃÖßoßÿþ½öOþÉÇíÿùÝÏy:ûVb¡{ª®¤D ?o­¤­^ÿ�Ü5kC"I[à$â¾>½Ù~òÃ#œð±ÍäüÿGèÂÒž:7ôæRÌк$&�q'F—U—V†¦l ‘œ™–Ò™ô*xRÔ­5æAl�«<+–_îNvÒg4ËÞöÞ¿ øßãx¥0^©ù^œy¶˜}¸Íúl=®_ÚQË(Z1×t¼Ž`ç«_æg R^¬Xï?ß�Ë9€[R’©&â‰n܇ðV[@j¸y Ž�Üå;x8ßEèüðö­öçÞ}‡xð×}yã`v òµt+k{<Ä=ÅívЙt‘Ù0Ÿ¾sŸ}MÉãÞ¹ ¼êøÛù¿a Î(Xkà°ãïÎÕÝ33âd £eÊt{Gø¥o� X½ÂÜlä08Ì Ÿšÿt˜{lšÔ˽ÏÒåÈuf„²Á@e)ø Ü@”Ye¨¹¸çåëi»Öldüõü¤™Í¤ä tÚ=`üh4Òï‡!ÖâÔÅ;ÊO¼õ°N%êŒ÷¿ð÷gò“ž²SZ•‹ic T0ÚîK M¸I¾ÄàÅ•&}�è Ê‘ÖÊðP÷›íIB×Ug—ž ah�¡†ZàZ@>*Ku{U=Ûy.FÛ!Í�Ì™{x³'Ãæ¢nûßÈPo@¢¬Ø€Õ•dªtጰJ„ŠëR6¹ê¢°¤?Xs”ܹY^ŒÏÄ®ñUÞ”`Ç*"Ä3pfîÎÊ›¹^ŽÕ{`uÂ�N¾·,�µ�TU|°ÈeÅ¡ò ¡ç¨¿† ,?Ž�…�ø'¾fVÜ¥Û/££Ý»»Í,€ ΑØöÚ?ü‡ÌkQo:ä×Ñþɼ^c@ð¦{6.†ð¦[ÀèNìûÀ¡Ã©Þý(ÞÕÙåº=x²ÀÚ>�öóŒÆïCM–WJ@d è,4éEÚ«-ëmÛ퓎íÀK®¥„èŒ�W߆FH\«WëÈ›¾°«ùüäô—9^)ˆkßB @£Ó³“ö½�¾Ç4¢ËxŽœ²~[æ£#Àê´ç;RéÐ[¼±g%Œn—é!2Á9#¨ûûïà½ò²ý13v÷îÑùÇ?ij»·�ò~Yþ^eöÁ+ÕzÈl øö³íG‰îe9¬[óÀYÃ6ÓówfÓv Fóã»wÚ¿úÃ0LÚ«óÖùI»ã” „ŽòœEk¤ô¯¡Äi€àÒ©_Iwp&»5¶vϱ�Ñááf˃¡þšI6®íæ¯ÙIbk,MaêÖŽÇ–3è†qâH†&¹.�qÉ"娚$Æ®@«½Ý>cÏÃòP>™È «ÃÈ3ÚO\Ø&ùcmÚ|};Y˜‚¼ïP[–øc\³"ÔI´}\êb…»Ðç}•sÍ~ð9òD]}x”Ô« êS'Ç%-;�ðN|f˜(1yö<ü&>;uÚ lfÙ8i5Û>²Í½ƒ + 49tD„Á&£%´�/)3'à c:ðÛ¼Ÿ g7 —о`K[ƒ;†ê”µúx ±5u(š`$ʦíô|ÞN/ÖmÊl#<M€Å푬«³“¬«5æ�rÔUZ*ï¾oµ ?C -0´ÀÐß \㮼·“*«ŸÓ�™]iüáŸEïA%/Š¿ßäóBZXp„$×ðþ‡÷‘YÀõœ;US¶öG!P¤Vý£d[É8“•Á]A›³ørtr²f"(+¨ƒ2º«Çu>qX†ºA�­›£¨â—£­æ]¡ë®è”¯9;ëV7¹¤Í#£¼èöâ�lèCÏFÅá­£¹ê7¬Í_ácGg~ ‹ñ›.?²ºüâ ža ��©•³6½:ePåªýà­ýåÿà½ö—þÒ÷л²÷3ôsêåþ¹ÀïíÜÆWƒã¯joCx;- µÙþê�öÉX"ÍÇ@t³wx§�bøôþ¬ÝÇŸÚÖÎq‡è?îPºgž 'ˆ°×�$Òl½ú“êqêT™�+áæƒ‘ M¿>â;BeÌ8zÔÉç,Øiï¿ûn›]\ý Я†¯Ü„_Žà·ÿþoÿTbØá…å%Â�íÈJ‹©Êèê²ùr$_+±B„…§ì…ë“p(s¹ÿ` ñ °ï•z/Á¬dÅaž—,›œCxµðíçÈ+à�Ø£Ó»hÛ‰ö¹¾Ç,�Þj?¾}ÜnñÊF8_ÛfÔŸHm Ú††|“}ÐÒí½tQñUFã»·_‡‚áZo>Lj=®»‚ÒI¥s)°8’ÈW.¸¢)ÒT,_!~#¿y á¯ýM0U¼�à /ì})ÄP¥Ö(tŸnlbðzƒÖˆ.ŸPhú»×sî‘ûÌ©A_[îmÓî傺ùg4g“­A÷Å‹T…‰†œ@ÒPÞçûWeª4³©°,×( ñ>?Ê”ÈóÚØ}yyÇàåO#×5*Ž08ÕìÞiüƒ@}òA�’9f¦‰3G,m #m9iŸ<œ¶Ûw¶ÛÝ#:ý"WlK©pK^ßgž\†Ô%µL¼WCZ`h�¡†x¹ˆÜ@Ȳ™à‰Þ[ž#{í°ºÄŽ?e »+ w7 ã>Y˜ÑÝ¥QæPÈÓŸÎ]ÒÝß �L‰ÆYråïÏ=\þÔI˜ø# ÅaùÖ±«C­ŒŠ d€»<\G— ­bȘgèïÅŠî$ó _§\séãöY 5÷nw¬Ö“¢Ìh³blµ³$×,‰³Û—ÓÉ·F‡í—ÿâ»–Òþé?ýŒ-å>fFÁ1#‡mJ§rk­À”äÏÞx øC<œy_sf†AêÀðÃLš­53©O×íbŠï450íBt.ã.àf’`@§!. ˜‘Â¥NVÆõrß½ú1iè`™]✙-�Ò­�ƒ<•Oô5 V£—'ëýêa0¼z~)†«éâ×|G‡¬Õv4l�…Y…Š)ÇÒù¥¹¿~¤–SgŒ©•“Í Ê§sFæþä�O!¨CJÄqXä$)IlP_(õë—5@¾þÐʸâPû.GtúÇX‰÷±dß‚¡|tx»ýù÷Þi?¦ƒµ3…\]´}:bZýe@Û½ôª· ®¢-Ïý!^¯eBçs‹‘’Ç|eׄ¤a6uÓG™¿ÐxYï�Gð¥±<ÌoˆÎ!ÃLVÁ¼uÏe}oª¡fXÃZ °‰ïr˜5¤-ð�”7ïAg9…õFÂ7¼ìó§Î<�Ïï!¶.‰�•ŽßÃU|Á õIV•–Ä'/8”† }çÎ]y�'ÞQ G90úmÔA•Ì!2J#q1H?ÐRœ=XïÁº€ëøþÁqfvÈcæžf‹+F™.ÛÉ[Hr²>m?XÇŽ8aX-™éÔÑ¥ZiðY…&XaC®»áwh�¡†Zàëµ@ÏËW aÏf,éc‡–µÖàh|ÄCx¯ü·ø­òÅkó_óå>5"cS�äëŽt Pòmpm@‘U†Ò« »2-æ,²çÆ-—ש}^e½ºD¥(·»†3R#èˆWn䎩òT ÀŠ(Š!C0•!Sõ5[Êwd))Ñ�ÓÙ/œÊJuŽ^ G—r>�†pQÅ ®s8p²«@ô~ÿìOùÿ^{Â~òOž|Ê®cfi”ÎN“ÌΔÂÛh�ÀbÈËÑziÌ‹ÜÐŒo\ã­ƒö'¾ULø°öy‡‹)ï›:é+¤QôXÆ%%„RzvH:ÊÌ€^ ÍI‡àV× -šÙ {”åwàlÚ1:”yõÛå¬ïîëHñVáeÂ`x™Vûy.®Îþs×ÿïìÇ[ú '€2_r:z0f§$Ë _6„ùñúÝZpÂôì3t3ÂÉ߯Ï?¿€†°³ÀˆòeN‘üJ&ëDô²Åù^±J¤ð&�:¾Ù‹Sÿ'x=âC—©Ô†uÿßÛ·»�‰ŒGšÓ9S€y=Éû¬üâ+Ro¸^0×ކ̤˜ê¦¤í´™ � ù”$ñž"D€)3DÒþ‰ ÞCÁZŽy6¸ÅÜ ¯7¿3'lg‹õÑÚìë^12$_r)Cþ )éqe~„áåç§øqû?;ÿ3ÖýŸ²ÿñ9¸mg‡¥)ÝeùÁn»wo·±3%ÂÒ)uæDÁñ½f@°ÚÝB-ßó†Z`h�¡^²ÐøÔä×L˜M—9ÂrÕúrYå)üöáÞÙMÚ3ÑB++"Or.åVwí)¡GL‚i–çÕÓRªR„Ãõ�1_ æ}®â®a#CR¶uT´U‰^§ƒO!1œwB?q« 1ÍŸÑ.è|—e +�6OžBD´­uFé -J|Ö~û„�EÀ�œÛ™ÞŸ��úÙãýöÁ[í—þÂ{í!ÛÉ�œè4y–åYJà >‹ÂoéË>“ÍŸx×¾û:裱 Ä=hY°`ÛFõ£òÅš¥¸ù>�ÞV¯RÕ&úZ�JüÀ©kÕ»†¶¡I¿ÝÀšMYªÉ+í©/vyŒóÒà2€]F[~ã×c·ýj{¥�@µékÿÕ¹ÚÑíCtcœñ¥óÏ Ì[,Òêë+,�‚ŠÆ®×¿k†]ï}r2mONæ¬[‚`³n['R�Ü�Là5‹~åZ ^ª`¼«XþøàG FU÷0ÜåÿþÁ3öÛ@·î{Hö•Ó¬ù›ÛÙK‹·Îñb)"«ëä ï¾*›{é‡Ûà >6¢q±ÂSn,ÛÔK_î |Ö• +‚œ½èî7g ó¨4.®¯ƒ„šé;�ÙÀ�_2åZÅÅü~/>CŒgÆS¨XŸ(N|7ÃæÖ´› ¯x퓉/ç\ô1ÖÁzi¡ÿî+žÜôU|Bî"LlrÑA¤Œ…Ö| ¦£UKä smǾ;¸¾²a�àÔ}x„ÈÅï!‹K¨‰w:[LÙ%dÉÎ!W¬W¤³�£ˆÊŒ{àÎu8©`äYð²ùrJüŒì0+`|Ÿ»j~�Yl x@LP �Ö,‹!‚C:ñ�øL>¿Oæ³ ah�¡†Zà›·@�0ÖÊžgòmwë¯GÞ+—UJÈo#X¹WÈø+C¾.7Y¸í£ÌY¼š‹Ž�÷F€âÝü¦~ÜÝv7öa®%u�µÎþŠË`‡¨ K&òKºB’Æóp[jDåÓBÚJm( ÊÛ8+Ô¥%‡Ö|æhÐ@®^QÆ�j­ÊC ,šœë¡@fáurÇ…5³ß¶F̶e ÀH;”yuyÂÒ¹Û̸×>¼h¿ó>f-÷ºíï~?Ë6,Žÿ!¼µè^`7€7¼©Iè?Œ§¢'=lŸ?¼dðc§?ì€n À�qb¡av¸¡—~P'kûÑwÕ¿’‡Ò|ÿùî 0¯ûüV+¦ÈÌkÿìüïbØŸ.ðßáxé0^ºéžŸñ·~ë·\=jïß}?oN¦�AKÓF`8ZuNRZøóñ|�”¢3bTLè ž£Èßp£A¹ÇÛhÜÊA‹Z0%"òV(p`?_§�¿ ˜|ôÐ�ô1 ‰2JŸn‡ô Üòï£;·Ú=¼èoŸœ2S�éþLýYsü\fû^ÒQëY–FmqzÖÞŸs/s!�°½�ïÏ¢‚ Hà"‡#ÆFB+F…nœŠ¤\#S’¨ì�Žóň‘Ñæ "kÎAêM…§nÅßE¯pMyÏ\[åmèˆþ\°rÑÂñ¥¿_’f1)êK3¼|¤EY·:[B]õ}¾|nÂù.¸Iõ¸t�´Àôõ¬ô$óò+¡˜™¸3aéoůz³œšZÂ<&sàf�)#ùSFñuª£PùÅÅÉEÁЩw„ÊüÑüC'؇c“ô¤ÄŶ£s®)qkŸ°EÎ'÷—íˆe[G«vKzL¶ÞEp 3,ŸÁH�! -0´ÀÐC ¼| DŠdªðlŠ€�Â�áÁšÏáÁòZþ…”ë*+Š +‡Ô +$�Ÿ^/è¢7§baêD Û§–¢P=Â.µÊPhkÓç*ÀнÆu �Ç«>ÜÌßË“TKÌ"³#ŸúˆÓ§%9ˆøQ�EþVHAIrv\ê¥Â¬zyåâÖûÃe'µ+Ö|]eicË?½ñÚúHIt~K(r9mï½·Û~ú“ÚÿýÏþ¨=~tÒ÷ßk¸ëêp{ÂÛj�z§è²1ø"¯ßr:áÌâX®vÛ§ŸŸ´“ÓívÌN+œlÄÉu ù‘|ï`.Óé'†÷ßÏ1¡è³àRŠƒx�fh”³:z¡†ë8~†¸üöì'è@r{çß8|?½ºø/(t0Øô?OáàÖÁ¿÷ùåƒv|OŸ|ås”ê-:uvúçÜKn’=Ï7ÔñrO Á9úïÔþ%K¶ì ^^µÏ>»`4ÏškE Â öBJ“Ð$ö!¼­ȧ‡Èä<™ïÆ•×ûÐÆ=¶�ùÁ�ã69Ÿ6Ý8ÚÍ›À¦¼c·×[@Oz[_bPЬã›N¿kÚú5þY÷Oj­Í÷üôk5W>ºmœ8R/¹Rnœ• ã±3GçŸë±ÂR!+ªXñ;œ¹¦€>®ðu¨,6•õ¢Bô¡ƒ¯ørN (¤P(dEÕÛ#xãçÔ©+µ¯‹Ì<Õ'Þf¬§·½º+ëÍ�mTÏÄYAá‹ñEúøg¯E,n¡lƒvhpk>wa˜º”$Wt槤2ÑNY§¦ëˆKÒÎgsŒƒlYÄyÊYdÍ.I²�Z à¥F"¼ú»£H[ìq¬1 j$©lÁÆ5©+ieóÁ“Yûôáy»ËŒ§Ã= {ò6pSÆ›<\WkNŸ¡ÿ­'NÄð3´ÀÐC -ð5[ Ëñ‡Õâ}#îÌuÃ8c�©FöD�Êa9˜›„¯W@/§nB‹FQU2JŒâ5¢K¸ ü…ëöÙx¢+»é=̳çæffÊ¥2‘­W®ZëÓÁžçèŒ:ó˜µûÙ-G�EgÌV„–²M±emÄÇuB"¸Ruóä,…¨¶³µ. #;³’mYx� ÖPÿá‡Ûí‡?|¯�Ÿ=þŠw úúÞv ø‚é+¡åÜ j·¨M¼^ý,í°¤úq{ôx§ýèÝí¶`×5ñeô?p�ÓŽ{h’xÉE²¢€Zæ*‰iÐHÀIÚTïŠÎœx~(Wšv¦AùéB/‹íŒYåÎ Ëäe–— à €—m¹äC ÿŸpÅÒöŽö2 &ƒÙf>6Y˜/»8s^îR {é ›ãT„õ(¬·#°Õö3­÷áãy»š»õ(i;B¨m3 M¦i}´T¾tùCÆWn�X e5ÕÑÞ�Vx#wm½ÇšêÕ£Ëìý9Áí¿Ó½§¾g �`ØÙBXé\R™å;T(C‘Mí—±ÈpüãºÎK�h`óòÊÄb!9;‹D ¤uìãL•nù�ÓØ]¾ �€c픺�SÍO5»aD=¤º\ƒÂkëUÿ–Á%š²,®¶S��ŸçB˜£u|ÖSX`¤ñMÈ·Æ�ÜÔèî¹7—O]lr¥-¯ï¾ì*5MBPv uÝ•O™›g‹P¨*TªJõ1úlæIKTž®²©6Ï<¾çÎñúj†S>ôˆs¦éŸ0ô˜ã Ç9†¢+Fýï?9�  ‚=¼ ÓI;ôNKÚaÊb”#êg{Z Ó™£ÄÁÛÁ¸8ãý ?rÖuXø,ÀÌ@q¶Ün�£ö�¥'¬F›±% Žt4­°0ÔÕ`­6õ’PFIË««Øáwh�¡†ø.µ€ ±ç�žûë¾ Lï˜fµ�Aþë‡ ¦i-fÞË·¥TV€NÙß •`H)‘#•–ô.åº$¡ê®FÓKOEô"w�¹‘¿Ïv™ªœðtʼ>‹‰{Q¦îÊ.¥6²FÙf4AiPæ%�Ð×§b„$ÆÈ.“—âÝ`éâA Œ£«ÔÛº‘Ê_ËdAudœµû ¶T°‘ñÓ‡;ô¢VPƈà:é’¿Œøœîþ…e6ÝZ ®;·[ûÑ�ÞiŸ6Í1c§®� JÞÞR ø‚£ ñ~jöFÑï/4åÒG¾'iƒþÛéé%‡ª·T9a nHöŠ|o%z�•®}芢¼G' ]sRýÙCpÁ‚�kóà®ý%‹Â`/n›ï›}—~òª 7^µ¿$ÿÃˇÿÚÞ�ݶ{´ÍÜ«l(£›Âƽ•ÒõÎÿ$_' ŠÙ¢#h˜/ÏÛÁÁûíþ…;l·ßûƒ?d½øq|ŒÎé�-1ØI³—¤þ®×ÒX-»Î[� ?o¸ Ö^ï0’/û™Ÿ�bTž¶~ÿÃö£ã;mÉÈê.ÿ+¦ဴ­˜Z½Æ00�Ym/xt¸¦X¼Ã0,Þ«£Â=C±k¬ÜSt+ûúøVn£ðÎÿ¤{öÏÙгT2SÅ–Qê‘’™aý^Á·Xïæõh¢gÛ º›l‡£gUËøFX¡|JŽ¡ÙV }Œ�Y£Ä`)Ó`j�:^áØ�éžSEZÇø<°¾>“Œ”Y^!\c| ƒJYaªÂÃ(­¿†ó«h8ˆù�6ÓA�¼{ÉŽ ñsàƒÉtý žŽ!ß`ð !�èAñbsÛFc Õ9¯ëÞÈGxáîÄ È5Y»`~î} BŠR±ðÚJ�!V_¿QîS·îW\UÚëè°}üÇÛ?ùýOÛÃÕN›MÚ%£[ÐÊÖÎ=±@ÖS  •8šO'>±)�Ÿ<–7¤ èQ~e(4‚jGÂ!�œA»ŸÒÀÿü“Çmo{Ñ>ºûn›ƒ}yˆ3Kž�÷)®¥N‘ü“nŒáyü³¬! -0´ÀÐß½�3zàËé„ÈŸ{žˆÔ“Ï"=»¼s�awÎì­ ë�÷ö÷˜å‰ñ—Ÿg§øxB€ï²LðcÀ�a²Mú|ž«o(å�†È]åŽy‹éÄúŒŠ*92¼<ÆõÈ%�ú5H­Ã2§Œ­˜]&Oßfä:³MÑ_ÔâT–üŽ–Òóå ó™E‡š‚K\çWœ2N¼d/Ù)å£ò¥o;ðÖ“_å‘!Ò)x�lt�J¦mR:hâ�Iç¾2_x"o}ÐăÀÌ~L}ÑE8§@¬‰Ásjʳ˜*¦àç9·ÒIã1åß^£ÛŠÙÎÐÜßaÎsÛ~ôÑqûÝßý´ýÞï_ ¯ã€¿ëR¸Âk)Ç¡õ£¶Ú‡ŽU§V3fI…FÔaçè§Û“ývúø´ýÁï¯Û¿þç�ÛÑÞg€^²€„È·Bá'ôa^ã½-Z*ƒQ¹ \u:Jv[ÁJ“¹öC!øëºå²qÎ|1m‡ò——|Ï ö¼s|¯}vÿA`_åg0¼Jë}I^:[¿þ[¿Ñ�ÇuŠP÷B‹!˜¡¢Îõ²¿Í׌’ 9å B� ¦x�ßÚz‡ýF¯pV�ÊOGËeI+”o øs*‹LŠ¢UØÈ€†ð6Z@”-ôºéõô³ÚÂó€Nî¤1�ñØIö�ÉÉUÚîèäGÒáU²åo( � I)~Êé7í[ö­{V¶)¸ºìœ �÷uPÌ+21á9r.øƒp#Èép:ê;ÊÙpÈ AÑãòlw0ÂV¼hc`ìØ«7pÁèω¢1gÞúl6k‡‡wÛÄ}�¯Xúã[1mN%Âm�œñrppƒv½ú2Ëm"”é”:+fBƒÎ»zqÇ|�6éö*É#®ç4Ù:¦ITxÓµmÇ­ÜÚÂnãz#@Ýãë°þ>O—=åªpQpýr}uõ1>ÅY.!åp9â€o“C:ÜÇ·ÛÛó]0ª¿pdÁ{”Ç1 Û„³ïÇ÷¦Âäè~ù èø�ý…`«’}j6Ú:^A¯Oxg�.—íñ9�sf ”º#à#£4·Âi©CèÍZðÐyWþ/=D -0´ÀÐê[ øk *2°®å—r[Óëˆ1˜ë<7³±H™2åÿ’ÙWWlÿçôÿ5 ŸkÚÓù†ÁŽ'ø ŠñU\tù‰óPìYÒ%Û Ç0Nqª#Š_9AE#g‘• 3²Ô{EãšÙˆÞOX‹¬!!oBÍRžtpÆñ,åø‘·‘‘¤Y:ðzS¯Çó+”AÞë’IO«PX·þ>‰¥Ý˜RX"m¡ŒÙ€ç¢ Lì�ô^'¯ÀAÝÃTùþ]I¤Qïà5^ÐôâL÷¦Ëk•¸´=Uj¶h`°d›�í] 8ß=zo¼|³Ò"Á¥�^¤–¤þìËÕøù£CÉlÇ3fœ]à§ëçîøBZû-nèF<ê8`òÛåÂë\z‘ëŽvüŒà3ðS‰�MÅ6�z™)úé@R¼õA½D |y¾Ú¼Äþ!çËEÈÄì 5ˆáÒ5ÿX†?ýìO`ìŒÄ¦¬*0ôCvÖdZ!Óp¯—+wÈõzZÀ®²BÕ72Aàîñv÷˜âƒàà½:zî;VXËêÍÇ»ó�cà⥃8{êàZÆó5ÃHcÓØ4|�©ï6Lt‚±í(>tÈÜ·tþ–Žò³4`…Ö1bmÜØÙ<ÓØ% Ë]˜lˆg9b “1uNÃÀ6 Ä ÊëÇÊ…ì�·.v\{µ‹2Cyx„‘`Š1kµ ™Y~#œ"©…^¦ [OºN8ÓŽ¶-±i8ƒ4{µ@µo2øólC›‰ £Î{°¼gB˜x×úó3 (JÔƒ6y‚‹{oà}/!‚*§‡+o´ëvûÖA{çNù.ž´ �Û;8®IÅúçñ9EPg¯;LÄ}±îÏÖïËïyvfk\\ÌY0k�·ÚÃ'wÛÉ=ö©ÅþñDä5–P-%&#¯ï^¾ü/¯Õ;´ÀÐC üâ¶Ü2ºrJ¡„~`§=b ¾­c0Å�jÃŒpWlÏz1m³K"Ù·<ÒN¸î6²T£»/½ÖN¶È‚•·èŒºÄo�ÌŽÀôŒ"ÒOxT/�%°V'ÑçŒ�ΰ³NW%;ìðhÔU.Ù9™(s¹^0[!�!Ë'ĨM&WGöÆœ¸ –ëuß9V‡­ÎÀ�¡ê–³)%ÁK’+ß }á¹óá}âÅ4Ü%Ír¹Lñ‰z:>@ÝOòŠEd³®y'k‘Ý!./Å+¶ÜS·ÈÝÝe€‡Ý�vØA§{+Báç¸Ô!w˜àÖ�>f‡µwÛ‡ìÄïÆ¤£ù" §":Zà‹ñÒÐW…^÷Ë`Qe§ xÌw½·§g°"1/^& €—iµä™Oçÿö�,:4ô¯yÓØDŸòd_#É€ÆØ1®ù•ö¬qûä³Gñø]k› ŠŠº}S鳯§_£ªÈ—¶@DržÎ>ïr—)y»Ls6@¼íçÝqÍY±#J�°âëx]!_Z¿g#¯Ë³>¤ë)m÷ZÇ€c;ð¬×F UÂí˜3=‘e F‚Gœ.¥NPV‹vžX½N'A¹RÙÀ  utå�×·ÛQ)X0³Æ P¯èüÏ0šŒY‘N4å©Z\ñ ®™à¹51¨|xˆÎ©Uj3‘qvŠ%>…¹c@IDAT¼<-쯟©¡jÖßqýø˜Àù>Äß��{6ôiýÙô�%Tý�épy¶®)IÒ¬|´9n Qyxû;íÞ�£¶¯§ZŒ"n'éŸ^Ðä‰ÈZOæSyúäæþØn;LC�Ræ´=<·Ïž´Gï¾Ó0�g”Ã)ta@æÿŸ½7[²$ióâluj¯êe¦g柙ÿ' „i%M0Ñd&ã#ÈL<‚dz â=ô¸Ð­.Ä ™DÓ•((�üÛ,½Ö¾œ}Ñ÷ydœ:U]ÝÓUÕ3Ý=�Q•'3cO�w�¼µÁbýœx¨v5jÔø(!PáÁòíÁ—é'^¼¸ÊdQZvUÕðŸväÆ�×ò){ÿC#úó x iŠtÚ¼ ¦…DýS•_íu Š‹ ¦ÉäÐm�¦jéâRceÝ,´•2#?Äg—^æ�+;�^«õÚdÒ$=á>�ž*$6Wi°ÚªZSý ge5¾Ð%÷MË dèH«¤t™n]Ü�‘¿�@\5Ó¯Ræ¼r™úáÔ�ò¥ÁHäà»ÉÃo²nÖÉÔ‘¶�{ö3�ßa>¦!.ß/x�7VG “WkA�Ù¡‘ÖPån¯ôÐØˆ&ªÝ»€€�íZW[׿ýÄw™CÆÕÑñy:8:§=Ñ|qûuhìDû^ô«—?&Â-¬dlIö7û }Í>Žç`‰¢ûÑ“sxá“ÊØ7íç.ÿÕ_ýUó/þâ/nÝ‘j@û[ûÆÿ£Æ?6·6‘œ:QË©ü–‚J+]¯øßôîÑ‚ª{yþ¨ÒÙ““QÚ;8ÃI°êUáèDÑ÷ªÎUõ¼×ê¦%Öñß&D1à¹;‰nÓž®pÓ…8…æNÛ)…ׄ€Á?E`ºkÿ¹ô-V&r¼.Wý¸"�Ñ¡¤pp1É3ÀÚr·Óûl&ùyÒêêxÊU&§oܵÀ¬“Àâ­þ©!PC †ÀÇ�+X8‚‚«;7i’Âu'#žø4AÀ�â´\Êv+‰‰ÇAÇ=âC-Ð üü‚yY–tU¼ÌØã^æø�!š“þÆNÞå#¡£.ökjàœK .½�Ÿ‘YŠÍ5hßáê·K=•  ùZŒnCSB m‚° C¾j4Q…¥ùHÝ R_·2P$—uö©ÀÉ{¹ 56ï¤3–aúúç—EJ¿ËU|žÜ—¸9é�„I¯ÌJeV²8~`d’ß%]€3è§Q„Ñ«¬�H}h‡ jJ˜ŸÚxjLš©Û2‚ ŠyyÏÚ½Øn4$í—[€6�>ä[¾ìƒy­Èù[z=ŽX?ƒÿÜ¢¯¯Ñ¥â0Ú™44¿÷è=vïv=ïæj‰¸F¦/…ÀÌ>f6º‰iðÒ†„‰"y¤#Zu_GÐ}ÖE2—00q;Wfˆ·K]§z ãéø¿í¢š±ÂÞ¨¼Ê(¥'TϹ­_J{�èl Û ÕÞL�Ÿ§“30ts“”{N ¸@hvpû“�‹N¶3ÖîÝ@ Ú"Ú²g[ñ_Të$<à†˜üÛDªÙOm³hRÚ „!RIü¸Îþáµì|—ì¢ÈÇäZ‚¨À" ¬ž©«R«§ôÙF€o¾“G74V Ø&ÇÎÍ0¸2Ÿ®±¼°ƒÒf5_ÃF-޲ãÜzºv�½Ž½�–î'éÙù v,m&Á]ŽHÙÜXMë]ÎJå;Ž6ä32ˆOý±Lå4 r-3r¶Î�`ÉÑÏV3`áâñ2À3"'j`xãÛ.9M 3ýUÿÌŒ�)Ã¥p^ ˆ{<ójgXðAøYç9B€u>ò!Gñ¢zÌŠ¼„K)uÖqÌ %ó¶ítù[òoxÜðÇúimÚ}¦«´Ë$=Þ;IßÞk§ÏvÓÎ6, ”\­~ÀSÐp¡5y~5´v5jÔøˆ P0/÷ r äç‹}óblh8Ü5ý1¥{gÅŠÑçÉÐôL*cò=3*É�djïFºÜ”Ë3�Úé²VY,½½¾Í�°`&¤#hðì‚ÃúÓÙÚMf‚]—ç”÷„ã^_` ýœÕkóè1!ê ˜_C`“£‹w6ÖÒ+ÜÛkMèQJØÁF@>Ð!6Rsê)fb³f<–ïÜ{A›Q«€Dù‰íñBÚ€u]Žé3Yá ˆ»I2™5cBƒp'M ¸ü‚©Â?èeÎKÈ:…O£í]`—çHÃ("$ÈßÙ‚/™³â\ÑK-F%3¤#j}òbÖµ{'°Ý½,Ü—á¼ò»íéöV'æM,ï�8qÃÖÓóõtu¦ÍqSõ^ûÙÙ[b_¿ÙÐ=Âd@Ä!M.$�Kû!Aѧ‚·'œ»i£Ï‘04RHB%òé2Ç7ÏA²¿�üoñS n´×%ÑXÊ*P ©“)�p ‹*Qió×åq“0;ƒwˆ¡´&€o¾ÿ6�£=C(àÙàvîP}ŽX }; —�ÖÊ¼í ™uíÞ‹¶a°;À�¡6k�úª½Ü×. ÜA#j¥_d•Ý�ш‹Ž²ô-ÅÏ;} Ì4dëI£…:?•s±†¤Â÷¬úÍ <ý¬ÅJ¼v:|C‹ºgëðɺ°¡¶ ªäÍûÖ±Æ:žwÓÙh&£Í¹õ+¬h7ÓÞé4=‡ 98ÇJó©{±p<ÅJýŒÉ¯ÄV€ªð;Û\ëid}µ“ÖØw·�¿ö $`àã‚#î@èjhs@! ë+| ª”<—•|f>|Êîê݆)ÿKÏUü¸½§ ŒAÉ3͈b|.˜ÒȤ˜§Í�Ë >ÆÅ¿%‘ ¦¬ô¬ÀL|²»‘öNÎÒùðœèX�e�»-Hƒ’˜|‘Ö â»ª:Üâf^nßHhi(¡Îúé)–r¿}ÑJp~/}6C3ƒÕ£ ¨öߪ Köcýì¬Âê[ �5>ˆ ËåWW”%è»"v§ëNàóʸ+ËN Çùw-<;�÷㈠8úOfSŠ ®•zµÁñˆºsžb•øNU°dsוçªÀì™­Äç®>¦Ý¤6Lc? ˦ǢúÆÖ€9ÿ2!D|È FJØ ³©`f�ªN`\\E¶ßž šiŸãŸs’ÅÁy#}óüœsíÛo9‡ñÀâ1“Ê1}Jº*X+,s7´Á®P,ÑŸŽÓ‹þQê³ê?Oø�¾LÛ›« Óy_:œÇœ<âs ܧ=…NúY¥�‚R3ÆUuÕ¿TW¼øt°Pº‹¾+ðñ5VÄä¯pA}Jxf>bò�W&$<È|ÇXSÂAžzkàPFowÑAEm¡Ç6,‚ÀÄi¡Y 2…¤¥0ù”ò¹Ý^Q±7ò†DÚ´ €‚žÃóizÁ6$WŒ8¸&Ð}©®üØ»sÉÔ:þâ[¢oTX©†@ � ¦Ï÷=‹B0¹XÜ�Apßÿà Ê7”¦A«Àï�ç¥ @)4ÃÀ÷± m›ˆÿ Þ‡žôÉç×ßî¥ZÄëh­nB;Ö˜µk©¾év;Òþö»3º‡é7Oö˜üÙn·žkÛIìhÊæèß)x?å €VÔ£iÙ>Ðï Ãëhì¢p{3ÝÛÞJ;[»¶ÚH��Ðãô86)þGÚ”…îÒ jM�3½Êwi2,D%àˆT—ú…>…Nç¸Ù§*!èg. 3‚†æ:�yæ©äÙ-¯âÕ"ž€Æ3¢F1!ȯªkˆ‚ìñ¡¶´2l6 0ƒ¯È_é÷Ôî�AÀË ÏÍ>`›;–¬s8'Û8ªl/·V{4õ)'Lç«p>Ž´œÔlJ[šëÕçÇD2LWJêþÖ‡«’'E&%~t.ù@ûõŒæÍFVÿsdx‹ŸZà@{]’ÇO§ÿò¿ù3æ"¬»aÐMIjL¶«†/�¢Ü�ûºL_&ÒA­ª»¶“þþ›> i:íÃ’³?Dÿ,ÝÉDAÆ-l¿õò­vï Â^âcÛ0®YÑF¥O"­¥„9=ÎWÛì°ÂÎ2ÄA˜T·S¢í>ù©ÖYÑ~�Ë“HʉÂ,ð"¶~Jó_…�‚°Ÿ@þcUý~�óQÍ\kû:,°úL%gXñgÞmsÜ\¬30Aƒ¡ÕÑ÷°2<�؉°ZØ©h3)�3ÙÃÀŒgLÛ÷XÕŸ…ZÕ3VžíŸÇä�o?F0h° À‹ÉþÓò#÷œ+Übb)c0�ñiQ·Ë ¾KXýR�ÌÈ_ÿÃ÷ìG_KŸ>ØMîmc´£�ì{ƒvL¡áˆšc%tЦ\LbåA¡É¹$è&ôjDùîˆøS>åàp˜~ÏÕí£™·Æµž6^ÿуít�m{Û[�´ -Rèbó.‚Ã’µöÜo=Ÿr‚<ˆªóÚ¸ÊBí D™—âû¥�Â"|©G~ðæ޼¸ÇEý¤ýÂÜò`Q¸€?þñŒS;:ø™M˜­á^ÍùÖ¹dóP3vˆ4þz|\ÃÇòOCΊ�Åä§ìÖÞ{qÌ)]CŽ’Ûfû†ik÷n àÈÐÙtö…hž•Ã\}—Oì¶Öb�exvœŽXàx¶×KÿÑd“‘@»Û_¸ ïÊ~Ø yá(„‚,£ðu¾äwÒ’�$b©ÿœ—5Š-"Œ}yDó·¿¶T×Á�åµ´³»ó_ï¶îõ³‡Ûæú§‹cõ�hh,»Qt2[ç͆̽"¿Ç«^·t!ïm¬¦“sö¦0K­ TV(IìRj(¹¤SW(1*  yÔÌ hÔê–…×Éî�{ÛpŽJÏ�vÑŠûé‰ù*^ˆí™@XÄb:M&tw*žÄW{_î¨c·ðHK-ì‡ö|z�£ÈH$GÚØš`™HΛP3&þÆ}š¬ g#9“½„1¿Æzê¡â?² ÑטÐJúÿ²bÌ^~VöNQ]g Äœ~úðËÃTçÆLúã�©ƒBµ��FÕ±}}›>NgÏåéŸp68gµcÀ6‚= ¦€P¨ËOÅËXŪ õŸ iÂüàþ=&Ñ)TùÞí�•Ñœßý•Qx�+)¯‹06YPPåoÅЧ¼F{WþåÙ}bJ©Ãv3¾e¬¾³ÎÖ‰s¶HTíÛ†™ { äÆIeUÌTá<ÜÎÉõàf´Í&qD;ŸÃÀq$ÕÁÙ4}‚æÆ.Ǫ鄿I™~“[–ñàí ¯SÕ¨!PCàç�%JˆÑwöâƒ3EùYõº‰¢ÛÕª!Úp1ùwßô/ó€6/éI¨‘Xi”tNã¹3&êŠ|Ÿ³�ÿ˜•÷ƒ94vÂJ&´®…`¶Õp©¹ªffÃsÅHÓÚ¨�¬8™+8>îÓŽrDËÒ„¨PýóBÀ¶ŽÉ7ý"÷ŒÜvÁ“ãá©Ú3.\È톱ulT àÏY ŒØZŠà,úŽõŽ>ãÍüÔÿ¨ú¡™Ë²gVɘ°ð”ÅXˆ±Ésh�rwÞhŠ‹x†Çe^qhüó+^7z­7×GîÀh·‘ÐDóƒ•Jšòºüá_#w6Q^J/�Jž@!˜<�Èô‹‰-7އ‘PØ¡DçX¢vçñ1ì7Û@˜ÐMLJóôìÉYzüý!ûÅ‘¤Øç?mq”“ü‰qA¶0dÄ·òŒ”_¡‡ò,O`'�d8ÆÌÈÄ4 ]wùS;…él²rA]ÏYAÐp œéÍÌ¥ç^Y©@è°Ò\gÂ:J§„p ”/¨+ÀÇ1„�T ™Íâ…çºHc�„ä•…”fï–›žK8y˵�«° 3´A$Tžr0cIa‹•œO9ðÇÕÈôÅ&´$<³Ö¾¢–„'$¿»9anÿ>ÂyøáÍ+/N¦éñ‹~útg%}vŽ•£é¤‡Ö‡åRW—w€ñÀw·ª×©kÔ¨!ð¾@@D¾À†+B÷šJßT¬Ÿ¢Çê¿{ÿhyz@L¸AêAÌz’ÿœmH§¡ Ëfg#º¼w›ÄÑÐzq”Ž¡»ã5�üm@¡ØÒ„9ôŽ»‚Zi¥'Z–¿+PÐë»Nᇼ™ßãô“bùËsõ Ú*�†5ÁÿÆ0­+�ÖiÄj~:Hû+°Ž�Áõîih ÜÛ\K¶ÖƒÿùìÛ"©/`àhA/ø xƒ•.ø¥‰�|¿'룳œ°áÃBþ zz^ãBý_“JC}”¹à9<ÉÛ÷ÅV¾x§ ‚æÆåÙÉ]”.sÂC¦å>YÚ e N9J<æœÔÅB ß ù­Ý»„@-¶¶N®:jðR…5s¯}ƒ6TÐÄ@uopœž+Ä}¶œ²º?ÇÚÿ «+|¿ÆŽdzFPˉûÚa8‘†HÕ¿À°bYѤš2$`Þ`|¬›°„i¡~2}$íN“Uå“‘ I|ÔŸŒ‰UN ˜5Îâ<ãþ¸—Žĺ¸Û Dè) Ø›5.†‘Õ�)ÑëZgc½Â"ÿP\!$‘‚B×~š…CQòª•¨ ß´bE=¤Ç´Éfw#=` e‡o;C»b 4SŠ�`Å8ª†:ÿŽÉ;¥,>¦Tä ïBÚm!²Mù(RŒ*ÒÞ§ÃIz~H=Úãô«Ï6±OÀÞR¶^¨ªðÁ¾û†ÖÑjÔ¨!ð³ƒ@!× Cp#ŒÒ²ú>Æè.Bì{�Õ˜1�Ïg¬€‰Åç\qœ.�ÈWºˆgË£táUð�¨ïØnwÎö9È0Û뤕®RCó¸·$ó'}�ô(¶On9c2)nÅ ¸u—"è.žÇÐ_ë¯Ql· 6¸"^�px „ðcþN #|o±umuÿ0mj4�3¿úìaÚfoÀ}¶ñaß–mð «!kËs‚K[Ud!@®…¤3×%®ý‘®Ê'èd-b¢ï«…èª{žÐ ÁáAüå“´rI€$X•0°[y�Øb8Ÿ¡Ñ÷SzÊÖ¸ '­­qJWÀ)J©Þò"´„ÿÑWo"Û&š›pú‡±è¢�ØŽÚoÁÇž‡-€tO¾?>dg߈®BºH_õ#Ÿ£»•þeÞñL”õ¡ïäÉ?aÔ/üKÆ‹{î=nº‹«w�Þ5iWV»ÓÎÊ »X«:XŽf±cý®™NQ«zÁÜ}„‹öxÍÓ€òíÌ–Jg‰»hÛwë¡ÿµ{W°}í­ÒÏ ”S$¸=Cp€Á÷¬·Xån@dì|„홂uǺÛp"¥ h"¤xǃÿ„Û¢òŠqF:òõtŸüÉøÒø9×Zj­°õaÅ){�žc(eÐKß?ã;NNí�Óá){Ç]¤áÛ§¶R“cúÚ@{@µÄ«ÕÚˆÕ|&¶­ÊMqZôÍ}9jD½ ªhøv¹#çzúªúmZö÷Á®š äHž]Êž Å€ †g¼²jŽ!û´Û…ÁÁ®, Éü #ÿ|g!·t&Íy ßÈ5êZ=š‹±\ÛãEu"Ì~ƒ/�À› �äÈm ÛÉôµÊçÇhb Ô ïÌƱRÆ3wó¼½3= ޹ `™Ñ—é 8£­§éF �¹Ÿ³-icV„å…V ­fûÉÖ®†@ �5^†@úrµÜêbvQÿŸ2‰Ä8ø40j$Ìüf¦�1ÏW+øsèßœgdË>t¶‡ ÝÁŒp¿Ó„ý�Ac`3aòáîh–�é®Å„x=Tí]ù£¾L˜bÎñŒ™ã™Ê³Ê}÷ Í3èqÏõö$!íÁÈ_Ìö3k¡Ñ6„îŸÇéÙø]в‡ðBw·Óî&¶ÖÑ(c}�Å×Ô&3ë¹AùŒ¸lˆúûýæ2£b‹Ÿø.ën`¼ø,5ó%§‰üH��-[aÔ1ŽaŽHRkµàˆ7îòTò¼ËÒ(ó`‡azü˜­ÏNɽëÊ-¼úˆÐVWíÞì�þÙòŸu±Môs<ض –¦ò`L¸1ðˆgØÐˆY5`ðr%¡éI¶¢H5ÌwÃM<|Ñr=Hš�} g=Œ·Ü�+¶=­ »‹«w�Þ5i]1U*3âH¬h8âØ¬¹_æÆ­š÷šœÞÜK"±�µÕãcŒ~a`Í•Ñl´�R¢§d”–;�=ɼK·_®Ó›—YÇ|[ mÀ¡âÏ€o nÔÃ@ŒZOŽ�ÓÖ&eE‡8в˜ƒ–¸Ó‚"�J}ÛÚ"Êb‘ŲŸ+(ÉS0“5°Ežü»¢Àäœ÷N˜pö¦ìÿ>m�9+øY?}‹¤{£?Çç¨*6ݯ¹¶‘V‘䫚ïdÄŠ;Yð-®JƒhUW„ø[~ÅGy”Øg‹¤CŸE®¬ìW+ʹò Õ‹¯ˆ§­-ö0’ï”|…—ŒŽðn01ð2r¬Ä‘F®Fœ±rÿð4m¾«s÷ŠyËxµ*‘³¿¶·‹B#ä&?‘µ ÌHÆ"«ï°}ÃQŽí\^�Õ_��Gíž3{dÕi…~ôàþNÚäD…NFBMáŠYE·1Mädn·qâ5ó°.Šd¶XirË}øÆrnsÿp#­Óaw×´0àˆ  C†Ú&in[úmj\§©!PC †À‡p»‚kpdžüOQýÇFÒò)Ûëòé*KÁ¯Î!b2!e�v@OÁ�ôêa­öFHªZW唾qQ£èX"0ªqQË·X§:«†€� ’‘ˆ²î€ �Tõ;ôÓãý½ôÈÉ9m`W¢+ááÍ)S^%7=�wl@‘Y¾â§ô?À‰#†j~‹É¥{Í]•±UA×|ç‹ôìˆóߟ¦çì‹:aï÷€cûÆÓ§¡©‹ä¾Ô½GÕÍçXÿc3ßC�mVæ R-ÃwÜpÀV+ú/ŸÅŠuG™�¨ ¢žKí€LB““ÐÓÇ?Aøø\îSTøÝ61Á±Ú"ÕP©¡ þ ªu�Ø­²aÄ>õT~©€º˜O΋lq‹Ò£*ù-—œÃ¯þf$Õ÷âÝú,œÈŸºêeº‹ÑiûðNäðç^âx ¨D€“ Q†ÂGW?àÜc+ÆjFàöå“E´cS"ì5ˆ¾Ð¢ø›>Xæê¢dš®äPÈ˜Ž˜ä÷iµ’ž½è¤-¾-4“šØ'˜°M�TÀ߯ðª] �5j\@ S•à –ì—ï«ú¯€ ²´Ã8RÇŒC3.•2ˆ—!9ë¤B£s�uŽ0;F°w€&€<‚ñÞ!x˜ÐYú¨½A$È•KiFd'®†î89J„ �hv-U¶l“øÎ„‰}þEë,H9qÜæ7G{ÐÚ»§ß{Ò 'ÿÔžA~ÈÕÖV›-…„)‹£ý^œ(°�†Ùò‹Ý´Ã>„-ŽÜÞXÇ(ëëTßUwí#xÚAvå^½_Ê(ü�UÎßà§òR…åo¡â¼[ÛâoäÏì'0óîGê��……‡chðo~}†úÿAðž˜0™°ÝÁ•Ú½_°£xG Ä\n„Äm ÓaÏ„þÚôÔ#ÆÞþþ¼*ƪ‘Žeš”vd\Ü®t¹ý,bå¾'ÑeHc&-÷¨Rø”Àj?o¥¿üË¿,Q#×›üÔ=ð&Ðzƒ¸Á«‹U\[Fé©­ün寗®ÜóÛÍ~#[°ª«n'èÙ‘ ³Òdr¥8$Út"e90êJ+•ìŠØU'·“–Ž{³’ëØoN€TÏM? ‚šô”£ÔŽãô„ë ΄†ÒtÝ&­¥ªº´ttžÜ~¶pq<Ó1‡ïÑÇôæ’6yégù9'r9½d9‚Ç“É9t”‹�У[ ™üŸ¡æ #ò7ÿþ×éxˆÇ ¹§�ˆ¢Ÿçqä>ÆR*Ÿ@ý•”S[�Ö|TFD�Ð!_íø&&ŒÆš™ jÛŽ#¥®:Y¿&ßË×0J6^õñuùyÊÒ‰+þY0—ý‚ˆS÷QÃSX&ƒÔÉŸ¢¾þŒm§n¥á»UÐcÄP:+” ³cú’‡‚kw+G†Ö>˜ˆ*ÛHÅ×8@u‘½ý$Ç]`ãÊfm{BH þÑÚ¾`Ûàø¿Ý­NÚ8àØ(�„0AŸP€ÛT»Ô“šÖâò7D�–\¹ªñVžKÝ8j¨ˆ_8šgW�Ø€&Ò‡§³´ôpsž>çxô*!Q¿P�{©ìRf}¯!PC †ÀÇ�‚SýÖŒ{ƒ¾HkÀ™ÊiG#&ÄLþµ³3wRt²ÄÎé¥JE>Ôóy—¶uM€ÜqTk C·ë§VÀÚª)…s5_±°”n£�qt¦IÒ¥ w¹ŠQÓà'|Š*T‘>"3Y’Ï,¼f�-`Ì–ÕÆkº- šd=‹Ý,“²Úéæckåw« }¹…@ÏqÛà´$jBFÏ>/—ý¯êHÅ@e”„ão Ǩµ¤/èUxÙÝnìjÀ�Aö h`'�p4,i»ÙÀ†qù·¬Þorc’„`ÁŽÁbÀ$Ì|‘ùR¶ç£‹È�怔@ÒªW‡„“4úÛѧN ý&e×qï ��0»êM�pÛU”jÃaälSé9èß÷ú©µÇéö—‘uŽÖ›ãw:¦ö&„6W<2¨*åÑ�`+ð<*ÕÏ]Q¿f¡#¢ñŒ]ϼwßö„÷±Ɖ!ªäjÒ­Ò1l^<p¬ýN{éã<#T§­]â³Ý%ÈfU0ee'šºêdâ—9̾éõzw9Ö¢ »Àë3XļˆÆø!Ë�Ç4ˆ»cã<ø!gI'Kz `$°-íŒEÞÂv\óÙ̦¿£‹üùF?¥†·ò*sQ*î0GÏ0±·*œ&§Û(‘É0^‚óùý5öž¤=`îÆ©1h>Pí6[æST"~U0oá,\·ðö¡xzç aOVûONþ0JDéS4@&i5cfúÈ«‡ÁHúÆ�©= èƒZFíjÔ¨!ðB hK|wF´™w„F‹¡­ÈsÓxˆÐ™kÆj±s9Ëà\�æ9ãâü$ÏWagp1{ì¡YsV1Ù�•Î58`Ò ÕІ�M‡Ä_ ù¨‰ì`Áôá±øÉ¾™æfÏ(+3‹X˹,?_Äx“§Kµ[ÊÆ€†‡åwU“h09S3ñhè„û,m",øÕgŸ¤�n'Ý[os<.ö:Ð'_²K® µ)õŸ1‘r¯·²ˆ6üQ›U^•ãܶ¨=‚i„³¸à!{!�oöį1acŽOlr4¡‹-þOlg��Ë“^:Æ@÷� np{sÚMú×Á^�µ{gP€å°ÃÛä£hû˜)ò1›ñ¸7æ”>4�­±íš1ÊÑž ¡ W[™>ã°pTŸo‡³±£œ<÷Ê–¯�‹QE™l>¾{¯ªVº½eg—ŸÈ)M>ýÔU]¸Õ›»\ë›§«S¼\AÖæ³õK«½"îÛðVbëÑ0CÔÅcï‘›Ÿ‚(ÂÀÝήtŸr¯¼ëÛ;�@äzÛÃ>“«{ïxwÕ~Èdt¿‡±<Ôî=øwŽªÛx­Ã±yªØ3]…ø„aš29$ 'øq.¼ý@A+®AÜœÂPÌ*‰öÁ“y 6=‚9¢Ä�(qV°‚¥ßüö9DZ�ü¬ŸŽ°Üg¯¹g7ˆ_Îεþ«p^�˜Èš?UãÏÏûÖ¤ûŸg&ýð�+÷]µ�]ÇвÑÞÂxWШJÆ‚“l-&å°ð.¸…p-ï1Ÿ1aMè˜wËÏ,}ñèŒ3ŽÞìEn­på©ÅªÝçŠ3Ük?© ¤ ¥Ú–}8Š·>0˜|È”~rtv6M(=<ÞLkp¨Ú³†j Ô®†@ �+¤ÓòŠ^YU^$ -’ÆÂÛi×i€FÚ�ã�F¯ÊQ.Oü¬J|ƒ‰ªS)Wæ#2nÖOìªP¿‰íØÃô|ÿû6'`kJP�ü+ÕûdOø{ê¨z7D¹«Í×ç#½?�w:Ä6Ö=ŽÃ}´ë)[é§l¬¢¹¯#«,�#ÄbA šÕ‘_âð£ÕÆÅ‚€4T£µSèÝÚªQÅÐ €ŽÊŸ©e!<‰pÆVaú‡o^¤ïžBw1°è)Nl3ô^I·öˆ´±mözÞSðÖÕ’ÿZŸ—!â˜=gëõd‚áwú œ<ì6}^Üm!ÁÞ8¼.�Íèqòhv†è}‹¯~ ªY]ÊÎwê·v†$åÜW'~uH-x5lnÖLA?�€Î –êõ†XERé?̵z¸yu²t™ånSõ¤èxvÀÚ½3Ø G¸ª9¼é§ô�ºFÙË>=:Œ£õmm¦O67Ó} ßlŒQãW�°äAZ÷ÍKøÕ P@ä¾¾0ð#a“v9”ñà>C*޶v0l‡Og0Gœ@pb;GÕééþA¬vO�»_Ï£û¤Ž":î"»ÕYó€œß#¢ç’•yŸ!x¾w˜þàáçï`‰ê#ªƒŒ,þd¶`£âÛßâ÷S¾DaAtxµ]3.ɽ$3ŠãÙ=˜߆­ê¦Jf›öÆÈ!¶=¸—ï�¥ç­”ÛÕ…B®äY¾Ç÷òì½z•SÉb6<¾ÉÞc£¯eûNþ¹¨Ò9ª'ì]uÿãóÃó´ çµ¶…Í“i/ÊÈyÖ¿5jÔøX h[ôZP-xÖÕsœ@ àíú¬ÚËßiÐN…M âIz<5§é’¿ô(.§ü9#Pqaµ¤ú:$Z~„@¶íߌ «tNªñ¡:¿Zþj»jKÈIx‹-‹M·•¡ 0å¾�æ[ŸŒS(Ï0¾–v¶68Jpû�´½íj?¶•¸TË'»°§ËZG,´õÞò<ÆâL¹Ò�Ø6©¿6x�RzÂöÈo�˜›D�ÊJÜæ~Â;ŸûÑsÃp>ü”³ŒÝ¯Ž€•G– 6ú±“kø† ·üj1áB˜À“u’zpÏ%]οŠIŒ¦6�ì¤ó‹`ã/êÊ÷LPû¸¿³Ž`7ퟅ]ˆ6¦’Ï`Šd|,!(–�‹R£ˆ¥ŸÒÆR¬’&Ä%ÄÉD-Ç–öf¿�}þ=¶ìŸMaŠzi»÷Ö8» ¥5·žüè8ré êÇ5j¼?È3öÀƒÀ«‚�üO™NQùï#öYÑfõ†‘ç–ô"�}¦âûr-ð0BZq°X³XéGýŸÉè‹ãs& ”‰Þ{£�0ŸY«eÚ€r£š¨z-ó]­õå·0ôÚ¸÷ 𜤘¢c�&‚èîÞiZ…­A=ÜN«,ß®c»kká4t)ŽìBÂࣵY#�ÒpŸw[Lþ‰u—О› (8gkÛÞA/=}q�žœ±HC[aÄxe:Çê¿ZzSöa*páàÅ ¹ÂÜ-…Á@D®7úì:òO�¼èB{ÑÑòâL~ö„,5Eg³j“Ç­'LѰ´¹=åêÈÒOç=_ÑŠw„å×Y®¦^ ^o毴¸[Fnêev—'f6+RBݨܗs-�pÙ¯~þ©!`+HÀu±ˆ;t&O¢ôG0f¥tÂÞ3yæH=ÂÙãöøø4­�¦�ÎçÉJÄÖ°Èœ/ÔÑlÿheÞ�_z~°LÎ9b°? T˜§çì™c{6GÂd@$5º£v@â¬S–iCˆ0#C…¥?™WÞ»†ö�e} NØÈ(9�õÙ–Á‹ÄG瘯½CV 0ÔãÊÂfðØß…€¯…u!õ­Ý2‚Æ®ªu�ØHCÂL/PŒg†z¤ÞK @߈çîIñ=è�L&ý´Å¤û³Oï§ïù&ÎUžI¤lDõ _rx݇-ûÉÌä¾ZžýWŸÌ†! Ï¶:ݰ©°w:Nß??KÖgé«[))³Ž:r¯] �5>BÄä?p­´'Ó"Ñò~Îm�Cv´üúèL$šV.6å­WEŸ'óÄ&ŽšØba"z Ãðû=GÜû?¯èzr—Qú‡ê.}T¦¡6„Z�(Äþ}5�lkû@¡¾|²ªø}Ûƒv7á{:À÷éÑqLøWWºi«üÛiíÊÍuŽ0ÎÛöƒŸRIPP¹ÒO2NBâXcx„ghUœ¢.p ?ÖÇX#gòP�Mø ¶Ð^-à/¿¤¦‚™+l!ô¨^Ý„-�jÁ•ö Ïú罂@^ñ—U±õ3#–…´' ;`Ež'–B*þÇxÁ«©É_ão¹Ì¦<çЫÜV.¥Jé¯ÿ !ý5¬ˆ^ç‡|kÀAè†átŽ U‡¹a7ˆN·s‚Èäm‚X2ö�¹Éiç“X‡èg¥›-ºa¹«vïÑ4®Öfw�hW^$âÐ5Ú)·pÓ6NÞ�j£Nvr¾ŸÖE”Y[]…hu¹VP‰c_¿w:�ÒH�ü ݇ö€§T ¸+3š¶°\KrbÛ@�€é?Dn–‡'SDÛäÑbµ MXK;2)„g‚¦úw »w¼·Q¤ÓeAØèü-ÚOì‹BíŸì§‡ÛÀ•Õ6SÆ„YÃŒ@–ý‚YË"ÆØ[©N&‘m=ƒ».ëÊ „'ˆPÄQcÁ¯`Úí;aÚ`í'ÒMavVš s0h¸³‰=€‡éìûãtØ?�qëX°‹W>!—TòÓËï–kz*€§æD&˜Ôƒº(Ž˜Ð·z¨<î�p¬åÞ$ýb§�z¨žHOXï-÷~®!PCàc�@“‹ AÃàмÜȽÿç—B EþeíÎŒ-ų.6‰{šً¸T§ÀÞ£aá ‰·6KOX™>ãØÞÎ׆�¼@¬VZhIi?œ«ÞVp?â'h öe2,…í)†oÛÀ©£Æƒï6q�7º¡ªÝÆÐâ8ŒNÓÞù Æ–OâXÝiüâ.ÊÎ>Q�Wý«wˆ^66˜ßCƒ…U Hé�1(ÙÄ(G2éß?�q«'¼çR­,È«v5jÔøˆ!¤\VÉ™ÐN™¬�±�2W;O±ï¼ xi•˜YÜ›/CãÉ$ä¥ÀõÉ#m°@Äz䣀tmÌÁ6ñÅÀªó{ÝÁ&/â‚„Ún~º'ïÓÆ¢ !±Í�·0†*>< K$a±E¸°ä?H焉]ßýù¬è 0ç_9ét>¹É{†ñœcƒ] q; G2öÜL´Y„Yc À+ƒn·cù$Ž…sÛÛUL…„0m÷Ôîƒ�€ü¡Ã/ø/ûƒŽž|qô ò)•_ŽP<ßèr‚3ò//¹�:Èí«oÃÕ€·Å¥<ÎÎÎB ;ËRØÛÌ�ÑUâåN¨q Ï+m1�»˜a¾­.óö¿âcÍѾ@óHÀ<æÇ– Õ>&S]÷¸Ñ¾3—ëéOmŒÉ´Xn• ú Cúc2½'—ù•{Eá£à=®*¼‰Ä|á¦eÝ ¢!'�ÜÄxLV͘ÊP!ñšìÆ�ÝÃ-ñÇt~¯«ÿJèu#§°-¶@Œ8Óõgù<áz¸û g¿n¢9qÎ1B¬ª«-Cáª@ÞaóT°"Ÿò\î‘ù•cÇÿ"%W/TÌ'¥ÌÖ1\‰§‡ÏÕ»il‰(ËþC="˜†u*®]Ð[>Zô§/>m§_?ÄÈã·‡Œe(¶ ©/`kêB­”ô2I¢�Êbv‹ZäW; � ôYɸ¢|¢.Z6jœ ûh°³×Äàˆ“ÚéÁfN5ƒ)r5˲dÚFš|ï¢Õ¢ªv5jÔø9B@<§Ö–Æœ�èËËa^†3â§©‡y5s¶ŸAþÕ¾Sú›'bW¿ ×®B�¤Ú®™i¸ýuNLÐ÷ß}ó$=å–öún:Cò:¯wòÇ
ÿƒuÀ�É´ßÝ®haœ„Å÷( wb.} Z…CèÑȪÙj̱Qt„ÿ…Ÿ|2ò¥I q%)¤,ò ZÏn³P�ÈLþ�Ùbâ/%´�ÔÐಪþA¡áÛ å{‡É(|° 𳯸cÄ1Ú7p4Ñ—ä…iHÇað‹t–6Á¿ŒF=ZºŒ[úƒü‘Ì;m­s�äBp�ù§EߺÂ^EìÑñŒÏ?¸ÂþÆ·ƒOƒ¿kNPÕ½�+ÜÝíRש^‚Íű¢¯jÍ—¢ßÙÃY&¯/·Ô©Üï\t�Á]!ÀèÏIGFAFª&’HH†b®e•89¶SC¥ü‹ C—¯ëªWZ?çì/*La5¾Ä&‡)ò[zYÏ/sÅ}|žß{#vp>ƒ§bÕ•ö)Æ[šcFÐ&Cqe<þ82Cq},p{®O%˜ð¥@Ú°…«p�eú­Aн¢¼7aƒa¢¡H]¶†ÜßZI¶;¬ �3éÞ‚w)ÄŠôA° 1ä'áËn¹@}2¤N9�Ÿ‡ý‘PT�Ð' HªüF YNki€!¤“~‹¦éÑN3mzç(7ÝIÄe:…ºò/õO �5~fPК%¥Ð]ùwÒïê¿Æì3&ö�[ÁÅN ‚ Qí+]¹¤Gü»ðãÄ“hO9ìIÀ€½és÷£ÇÞBƒcAÞU>9·êWª$¥>‰oå¿‚>^¼5ag‚€Ÿ÷W:_�0îòTR¡R¢Ëérúê…wy·|EL|¼sE”*‰c1‡�R£¸—L—êQêŸ÷eò¾ÌßÎ Ùâ@IDATe¾+ ²Ý¥«Õ¯úDéü²Ÿ>Ë®ÄXøÑ�–ýÊsðMÃæù"Þ jÀ öCÑYÍ€zž”Ç„üjËþP7 · ¥Q"± i“ ½u��-]Ö§ÂM7,ªŽþ–!Pš! íørW‘¸é[ý1š�„yåØw'YÜñ‹˜U¦/çu]噤1)”ˆfGªH¥D~ú_Ϋ"¸ø[ã\Üå9¯á×/¨êüãK%Øá§Ú GvÑ8IïsìâÎ.cÍ•Y–dbŒSq»oÎŒÅRÚ ÔR³�›$ž«àxv¿¿.¯bÉ 9Iê.“è‘RÚPE­í‘Q „G÷WÓW�¶R�³Š ¶xdämŸÀ€ø "¯(ÁŸR2åð蛨Pý7cVB„ŒkÿÍ`FéYÔCã‰ÓÆ*[f± àÉÁ€s™Sº¿ÝM»0ª3¸(qfÁ›µ@X×®†@ �Ÿ;$;âh3 ÆXüÇHûÿcâÞdõ_--Ã�ëj¿„!óz¤E^¹éÔp®”¼Å^w Üœ÷û'ǯG<“6æ ®ƒ?eÕÜ-lJ >`'²˜`Kþø–ø"xÉò'ÿxÿ¤¨Ä cúPÝyŒt¼ùÄû"$b9b-Óëœ[UXDã9¢ÉGTyÈSWÂŒ¥EŠëJªêÛ{çX×ñwú9÷²-Õ-¼˜ãÔ¾vÑ·JOðn˜\WéHUWˆ¡]u‘KÝ#]ÿcݰíÙ¿>ô‡}kÀÃèF1 #kÇøq�R_Õt5ÔæDDôÏMõW'-ß^õ£×ãÇýÊŸkî-D3ÅGæþ¿ÑnUŒ‚( ) ‰&•-ˆ÷ÒÌåÝ{Î*r}Õ�ÙŠ@B˜`¤\ð¥è¡~>f¢–#ˆ/û\JøÁ¼\|“° äí��ÿPÜ?9HÏNÓ¯~±›º«Œ5WODüF6QÀ!<$Â�A4„ïë\´ÁR³‹­�­…w£G“\qF/IPn¯âr¬ ©ø{Ï5+‰h³*8ø­ Ô˾Ëiëç÷ Á'G›åš9n½Üâ¡“_rþ•[Tþ‰¡ÂK¿)÷J°$(½jù^b¿Ò!ïdíÖƒµéZ½ÀFx«m €²·èÇ«H|…ý´2øyòÏ�ÉtÆð¢'.÷˜¯2uÎ7…€Hâ¥4 �ª½ŠÔZ´Ü„’�옌úB‚åðºð»HP‚ânY0¥PC"¾©9TÏÆÆ7¤ ?â_¶‚ïê›Càê5^ÕõƒÓ>×$m¡²®ñÃFCÍ E0N‚ +÷«Ï¸ôS@^%«à^A}ô¦ðW½l‡†Ë„„1@ï ¼ ó8@ïT3ö²÷sŠ-€îzƒøNúúó�ôýÉ‚¼ºÔFuÔ5|‰™¼¤ðì–Kö9—iýØ‹Õ6²/ªRª@µ~÷aNYÝŸ³ 3�c˜VÓ¹¶8—êàtEÉ5'-€¿HsÌj@þúVC †ÀÏa!:â>ò ãTÿ÷Hç9'§@ÝÁ§\<‰ã¥×`Z~ó¶=ñ<³ŒŒ§�q€�ÕÜ’šy6ý³ƒsðl/�æ¨þ·5úK9üÞžeã½Wi؇d¿Óo*tôrÝ Ãe°˜žù1HWŽ•=®üæ¨ônA ñ¤±ö…O~(…XÃ^åAÖ�w½òONVÿ¾÷P`W’_ñZÑæCƒvá5ûga�ŸRµyÜyV��µÜ£¼Ñ7³\Ë]Véqz|kCIµÀ�ÿÍ#qÎh/WÍ“þÎθâ¤$Ù Œ~¡"NŒ³|ý•ª‹x#Ä€¦il¦BÄl)=ÊÔ+&rWˆD4k” 1EEìÂïâ'‡Dð…祧,±”wÈÎŽµâuùn¨‘Äp²Üù]$3øƒu™HÇ÷ñí~u¨Ä3ˆd·щûE‘¢]A ®dB¸"¾æ·¤�<(!3úæ+˜‰SPüK] Ãà=»Rvyÿ°îåû#…Üç{Qæ£>Ÿ­ÿÁPí¥¯¬¦{k«¨^!`ŒÇ±€¯øèÜ`Rµ¨ÈdÕã+rÏÞ!g$nÞ·2`%>N%€1 C|y$-cŸ4­jȰS8¥ÍµNúÅŸ¦á³^M4埒8†ÑçBc˜JÅ*'æò_ιöù) =„‚¼ë®ŽãžCKŒðå'U©œîjê‹TOÆY”ÆË Ò×L¹"£+¹E9%Ÿ’CyÿPïæü½2~x#¬×rÏj ÌÔÊÚ: ÚY:<  À~J�2aeiÞBU¸Ä™Ç1M6Ò“oø›}»€áæîø7ª¬Çeæà–Æ/“àH?Kád�‹³Þfæ7X6uó{`BœzÇ…ú¿±W׺FI#Ž×ãèôåít|vžÎö0ÅVó ËÓäÑdåhì™TÀÄ´¥Þª¥òñ© b‚o†ÆàÆ©Ê7NÅÍ‚4޼Ç"Î`x÷Ï[éùiJ_?h§]òZor^³©¸Ä6÷Ï ÛªdsÊ5(>ñ儿²-¿v5jÔø)!P°P)ó&Ø(&�¨úÏØ£ï±^N˜iÁl˜'”óHq;WU€tKº2ȯ<�¨Ÿé18þoºÂùõ�ôãõí4ÑÐ*<îV�q›´âö8[Е†Øeøóëg@ï|�G~2ÙÍ1^þÄ’¦ ¹ ‘OP²®ò]ÎGz!‹´×”µ[NY?¿°½b ƒf”ÖÉeØ�o¼©ñÌbt™Ì·O„åvÞ>0úš|ùd¡T¯™¯äÙ´2HU ®ŒDùŽÊ³Fɹ6å7pé}Ï~¹ËÛYÍHr‹ŸZp  ½.ÉÙþáo= TFWõlæsl3)ðнÛ4¥Ý¤L^—ïµatÎÁè$Ý¿ÿiÚ]ï§æ¤Ç~^ÊcõmJ!c-–#nSH‡Þ+‘�Wmwƒm'ôLóªK_[DíùãA@|ë¤ ‚ÁuZCd"   Ar~¼ô[�À²çu~Ëá/=G¡W±�$^‰�sµfUtòÓ�Ë+Y¾'wµGý ð˜ Æ$uRÁÿy›•éõ`ÌÚÍMV§Súí7{éNøú³ûéäð`ÁáŠw^­i£jé|2å('Æb« A°A)Im‹¦„††oÚøŽÿJX· ’e¸†&�E,G¨žƒLU‘Ãèy5+FD¡\W|¢xŽâ³ Ç™Š!8l¦ Oþb•s£?ÃJÿ~+=yηs.òh¾šzLÄ=JjÚC‡¤%Œ:·¦¬ÔÏ×RÓ;ßÙnŒøâRÄ!0¤ö\€¢áà²ÊêÓaCkv�zÚÀè`§›Ž¦ÛéïžÎò‡´½µž6©g‡#¯:½šôYã¬j´4f¥šg6g(tcW…·|‹Â+˜Ô·5jü'çÉ�¥ �ï�sñ-\'ó^®¸çÕÃJkjÞ<ƒ�;§Á¶ÆùØ?ù€ilÉ"�L¸Ý2ŠP Â)dÐ8Kë›i| ~͕ôø»”þúwGé´³“NÙû? ­ø{Ûÿ#dê ñØRW¿âCr™T5.à_ú€ÌÆ\X~óyAkByé¥Êï2ÿS †%îrÎá–@¬âqÍýua×D¯½Þ"€=¶œdL3ø6y8›C~žgÎ½É ÿhŒ¡õÎ:‚:¼moV‡ãÓôÉö<ýâØÆGgì¢ GEÃÛ„]$„ãi?ŒvÌ3†Âæ‘ðAŽåXôÀ3kâÂëèçP�¸ðDꦔ* ®¼#øb?…úi{µƒQeVQîàjÀ€w]ÒÆ´ñÓûnQÉ1c OÑ!dô3Z ta¿ÉDg3—‚D®Ëñõ~®ö{œËÆÚ g|70Xæ©¢F²§Ì<ù ë0ñ°<Vô/îÖ(ØgëQ»wç�¹g\.Þ�®»}ÏÈéo÷»Ü!.žßM]n÷o–Ê1Àå–ÆÌout€l™`ê;y{4^aÀtÖI§¨hî÷ÒÎÎ6óÜUÆ·ûêmAòª&õ$Å1¶˜ GŽU¾ÒŽ0ÚWÅ7–ÎZ¼äÀ¾&¬ŠL6R¤EÒœÏåÞŒgårˆeš6Á�¶šéø“­Ô?9K=&ß ŒZØ�²Ò\!µ|¦\¿7~«Màæçç%¥é^òß ¤ä†ÃˆB¾ÒÙ„Uªá šX«†ée,¼m‘`LµD¨!Fs21w¯øî€Yþ¢WCˆèµ«!PC †À��«øçZ|.‡eËà�=¡ˆ�¡'Ó!4fŒßLfQެjÿÆäÝ;¸zá@´±"ˆ_›$ƒQ|¹ ß·šPRKßôÒ“•Qg-�¨Š;[â`Ò‰ªƒLQF®÷ÕÚ/Jù 27{ûªfXHW~Ø]˶y�{}èëRÖa?2äË‚Ÿq<9¹®U‹º83�q§�DV&f2‘V»<Ãi̇ ¼cÛ1kݼeÅ׬à“åVڣƩºH˜¾8Æh„ác2�E¤¸ãEàXéNLS»· �Æü·ýÞ oåýU¥9«{`œâ÷v îÀÄoowÐ8Ðz÷º“:H~eÂ%&Ê™æœ'Ëɯ¼Ë¨Ûiìȵ«!ð1C@ìê8X ŽÍ‹kÂ^ÿ©BV´Eð§˜W~ül?í#h!n1YVõ_´ŒŸ¢Z™-°º‹áA 2_ÚReü“Pä´¯øÙ¿æZdúЇץu’íµµ±ž¾üâ“ôðá&C‹hvž:±†L£„í�ÔÎ3©Á.¢°¹¥çÉLä¼—g¼ýfþµ‡ŸŒüRsU ¡�ÅëãS¬T�¦s޾bW@1 ŠðA E0×»ª}—^£ö­!PC †À»†@`A€bwWð4ìç囂byÅÁ`Ä*¢{ÿñà? �+!((0cÍŒS �‰ÒÖUx½)[üÞl5¥ïQ´úíó§ªhå“Yœô‹1ý)(ÓIGÈm_…bß5àêòk¼Cäa¡M"æTÚts 1xZé„=I›ë«icÊm_*^Åm62<]ìÄg¼rœ1º OÄ]ÄÓ_�!ù§ì™ïòƒQ‹°—„¦é¿‰üoù“sºeâ:ÙË@}ãiïüœÆÌÒ›"õ)Rž—SÜÍÇç‘d;;­´±N‡cÜÂàþÜXŽ Œ¯a0��a5M‰—Œ;o–ÚÕø˜!àÈãÀ±p1±Ì¾Õ»WCXÓï±Týlÿ8½88c-ÛÕé6“h&¬!‘—‰°û-K.Þq#Ž—ÐÌñ®w¼_'cªuýõºÉ} ³Ø×¹ øB�ŽÝÕôÕ—÷Ó.x¤ÕìcSd„ú™L"4d!€ß jaïéœí*þ/Ã0´!*‚E­�G.=k!"NNò{0½GQuÌaÕ=޽R@þWA8k°$¼€P†ŸYñj¾µ«!PC †À»…€˜èâZÆKÁvº`ÚÁkÒ 'ÿ*ÿ+'ž 2|þ õ9kšÉ9z8_¾À‚à`±"ˆk ·¬…´±ÛÒ�·k±Uíüù{/Ò·'G¬üƒkÅ•\aÿ©ªPƦ¹Ö ÁÀ»b]z �w�åQ{¹ŽGJì?Ž%Çߌ­�®÷ïn¯§õUl1Ù7SbÂÎÀ“ô/�´œ�Ïù�÷ÈË{ŵ1}„›ßEx᥊`AƒÉ£ÑøÉ)o÷[o¸Ü^™ªµºúüì쌕xw§"A"¦�ngºÜÕJxeVo �™±9ew·…�ðPÊBI‰ ô1®Þ¹bÇ™_±j$å�ʨ#ÕøÙC  Î`”|y3FDäNHá–æ¬¶Ì&�t̪ÍÞq?}Ñ›²ç’p&É¡²î„_ 01eÖÌêb¢Ï "3o`'õoà^Ï,,î–Î*¨:áh¾ÕÕ5NØHÏ·Òð»Clƒ¯º„ƒ7îЃ ‘Í0€“ýV»î{ŒLœÌóWA˜°½Ütr>LgÃv:éMâÜêŬúY±ýÀ4CÆž™F�u¨] �5Þ!.pOñbe.�S�~2Îóc8•?µÊ&C4ËØ‹ßïaCe„®U>Õ8üÉVùÅ�ŸÀ£‘»¸Ôp=‰;â•öZês ôw{ãôw{éþnޱW· ªš¼À 9 ïøTÕŒ:†OýSCà#ƒ@ŒG˜WåyÛ´ãQ�vÔBp§æ£¶‡PÝŸ SÃjv7à›_f$ŸãœKN‡ç8žÉ<ªñLŒ(%¢âgq<;Ýf"î"‹ÆÝÁ~ÜyT¡hKÎ1ÚŒ­·ñø_™Õm�\níÞ"8Îê°ÞÇš+R"Ïߎ�;‚�X:›ýàm¹9g{oïÌÓý]ŒFhAÂ_±žÕÒÝÉ]µsÏáŽKÂÑ@¶�¯‚·U—:Ÿ…Î2¹|\ŒOÇL¾B�ŸÙ¼²4�g¦Îj±WsŸ³ìŸ²Gŧ!²C°Ð`q§… …£uöþþé.[­]¥G>/Û÷ÈJ|�…vâǪ—%ù—K¼TzµÒqª¸Nþ�­=¦.�>¶EÊ�‚†ØhšLÿ¾ªò­n²Ÿµ{‹h÷Ûçƒ�ˆ€Ò£Èûj“çsW¹Ká0çî?áLïíí§`Ù»‹Z�ƒ~šË§3ÙÝ´vn×ÍÒ­¢¶{—²ë´5~p €u/Æ©B3Ñb^iÑ*+<G+a¼ŽÛİҬ¹–O'éÛ'G á+:Œ+Œ:9Öê~ iNâ€Ó#_óÎ#=—�7ùxg¹†½úz…\ ä¹Ò¯Nk¾¯Ko˜û×VW¨ÿCRÔ÷‹GkéWîaû·œ ‚M¶5±Ð¯!ÄXc·,¶áaYâ/ŸËE!/Ù^žà¹Ô3� "a?ÌÐ:è¥g±¨ElêĺUÄm°íB™wä]ågIᯕ—ú^C †@ �÷™éW²)rj…Ÿ}ûÃBT…ǃ?k5´'#ÏÈh/TÿŸ‰ZøÇ$A¼j:¬—{`ËÓãIúíþazÁª`¯�QUðëœ+ µfÀñQWOþ3êß�ŒI�7V^Ü(+íp1™Yc•^�«¿ØAûqk½‘>ÃprKc~âCÐ Þ/rƒç�t#Æ^d…”'ýcÕ±˜…Ĉ‰®’šòi¦“5»@#”7b+BÚÜ<È%ÞîWN·voþç>Tý VnÉ캇–NäßÛvæØéÐ8­­"Øœ¢B‹eXXè�È#µì�¹Ó™éI ¾¹bÖßv�êüj|8ìLu�ˆ‹dQ1XD‹Ž.g+�¼Š5‰cþ敇özÚ;ì£f‰&l¦ª%c1ckó#%êb�¼ù Dî/ÏúUÙó %Xz¿éó¬þç±_}y/¿S*[´$ÍwrôÞxtœ¶°øåg[éán'­­(2ôx)Uߨ7¸,(Pà¾OáIö0«%WàZîUB+ÁœŠ¥Ú‰£ªÓ”ýÓ!öà�Iš”WöÖå2J^ÞuË€Ê>õo �5Þ jZª€X*Pd�ð'w'ýÓÑ,NÐêÿbõŸIC¬ô“Ï‚I/ ?Åù¤xÕsŽv•õ™¼@zº‡@�­Ô¿Mü_Ô R”<â.>�¿K¾õK ��ydð¹2E1HóèŠÑ†WØ-b'A1§k°@ÒfÑc¥5f¡»I;­ÌBH¥`.‘g5�7Ë2Êb²o9¹ˆˆ—ã;¾ó¥ @ü`š¸GzG:Ø@íÓã_í·ýÅ_ü…�·v9×['¯^… þ¬wÖƒ¡fŸç7–Æ-B€è &²GDo¸šÃÍÞ•LMÆœ:€á®ÿøO‘ÜÃPÙé Vð6R/ΈTj„%K˜u�"ÌÄ#ºXÕ ­Gíj|¬(“XÆA Q"W†©¸Äßâ¼¥&+ÒC&ÌÈ€‰²šN{³ôÿÛ_3‰EM µË*¹´²ŠÁ<³pâLúl Lþñ0S§! ®¿¿I«LrÝ=ʲ¼k.ËÕÊ­¨h…cK{Ûfã³ôèájú“?þAÀ«T‡is­Íž7HÝÈsmY«Â:àã�£É(À`+ ¼Fq¼{-鄟ž LF6WØN±’žœ§½£AhX¸ À-[¥ä`–%¿œ½ø«øDÄú§†@ �?9 ò~�k2o±´�à E› ©ç»'ÚP ­¦r)SUX ñ ¶[³Ä›¦Ä±Å¬…��¤ªÃ9CÀ´ôœ£Tÿþ»çé 'ªÌWÐPãD€üg“¸…ß»„£wæ, Ž-oõ½†ÀÇ��ùû sübÁ…\]:’GS«¼³âL (sÖ'eŸ�îáq'çqíÞ2Ú¨¸ž��§�Gh|ìÈ?ïÎEåÎuñü*òñ‹lܦúÉ‹”ÍôÀz·GÇìô£jZŽÚ�fvfɋ𠖹\�(«®!𳃀ýy 䉥LSþݪPÆJ ¹.n8:8b;À8Ý¿âokxiÈx„=ƒqɇs¬9�|ô‘*¨!àsÅÜùx Y˜õ-\|'õR €ûýçÓ>D°Í7h|¾›�&šŽé[ãÌÛ.5gÏ*j¦â¸°x�°Ëp\~¶b„ëE99Ä»�m¡ö?á(«9†']sŒ`E�`w`îÔåT¦ŒLÌ­v5jÔx÷È-ê!Š_z�q$”!žÙE{þG;™¹Ÿ cÍ¡!4 ¢8‘Ø1òò%c;IˆäD”¨uŠv©'ª Èú÷ýôì¼�-€öÊTl÷D[+¸=2*X×Jš[α`Õ(РÚÕøÈ �GB1S�¬ ‹ÔBl¹R4Ÿ aÛúœ˜ÔNvšhôK•=µ€œcIÎÆKWòïÐ$Èó.c9˜�!à¡Òa�þ\²‰º²@4—èíBŠ«ÿÃñèÿŒwø‘ÕªÝ[†ÀJ{ev°wZw²mW ú–Ë1;»X¦`_ÊæÆ<}ýåFºÇiãþiZa/˜½È½º³Ö‰1+vAŒT]©:ž™Ô®†ÀÇO`ZÑjåb¬::Š3 LÌ„=Ç5„UÔ×çXÉ?@ðÝóÓÿ…�Àæaa}Ùsì+7‘U•Ž›Ìœ ìqˆ� ºÍeÚ»¤§L‰‰FB×q…^u6¶l­·°p?ýá/"É>gåê�p-ó‘H#@õ´§¸O’‘Te.œ“Ýòg—É£id�OØ {xŽ C€‡'XÅ®¶h+ ŒèDÊ•ó­kÔ¨!ð®!|Ôy¿\�ñBÕ)&îÔþ‡ì²×iŒí“9ö4ü—y±kH€øT:Áoü¬vÙ˜üœüÏÑ(‚ûŸ²®ó·/öÓÓ#l¸´Ò"ha¯…lM#.qÜ32hó13\Р 4�=ëßò ÈÜ…<™ó%gÞøÄÄ�QÔ�œŽÏ¯œþôÙ&¶’VÙ Ðç]Ž�¸±Ð[-ò:™�äαH\eGNä«_ü’†xÆ _üª"Ã&~ÞÝ¢©¿üÙT[,,5Ð8²ÿ¿?ü[¢ÝÉÉ>Öî-C`}uý=Ä KV¯ ô^š~QmšûÃÂçöô „Ó´†eÊ/9ÊËÕÈñ�ãþÔ+sÕáÀ �9¬à�³t¼Û—\§¬!ð3€€¶ry´ò‚W6h'öV‹§`q;0X3ŽÈ¢ÂþíÓ£ôÝ3ŽsrvQÁ„b˜ÂÉuΙ‘&!Xq1ù_š¥ åh?ôL²»:·6Ȥ"\F‹Hi·ß6A{h‚į¿Ü�àm¤õ5,ÎŽ�ùŽ_ÁWñ±-s™['ÿÕ·…`é;sý2®ÖÕt#8Ô[(ŽÏÇéˆ3±Ï¤ ½ ¨È3T$ s Wó¨ßkÔ¨!ðN jª.QõË\ ï»r?áԓơǶ‘¡ “ÿààÄ‹ €³�@y9c·‘…ñ¯`ò8…x3´¯æ,îôÈùo÷†é7ǧéŒüòuCN‚Â.M‡íYS€5Jò,Y–I†B�"x¹ÞµO ��…ɪ†�#…A’5´ÿ$3âVNíº¡U��µ¯¾à¤¤‡,€`q#Í‘À§ð*ßï8&Ÿx¹ ý|Ò/| ËÅå±Ïkhè_ ŒlÜ0 ña “K†¿!èN®Ü |×'^[]ùŸúý{ðQ‘ñ_\Ä�‰@Ng;ßÕI/2‰ag2–¹?yØIŸ¶Ê ݘ‹Ê Š`ó+ÿMŽõò®%o&-Ù8!5x•¸ëGÔék¼3,€‹±*Ë”§ñ ÿP¦Œ]—¢®â!Lk¯î¤§û½ô[ö`ѵ»h×Àœ©¬åÝ•'³q”“ë¸ð Nì�}ô¢à{É‚QÄ¡–¨;­+þh/8чK}p¿•þä?J�>]M³©€!ªoJÃFwÁ)€P¾€ ¹,¡8Þ…ïå+ÃV?žÐ$˜ HÐ�Õ){cA™l7�äæXÜâ‰ÈW\.ëŠgýZC †@ �Ÿy•“qƒ¹4æhè‘Çþ�k›Nãx1 )ÚÃïî1/ñ¦¸T´NÖ1&ÀÄ--î ØWþͳ§iÏ<ºnH&I@wÒJ]ì«8Y˜�Q4 Ý!‹\› #G–S»#\ŒÅ¸W `ÔÅŸZŸqÄ|Pð€ðD÷¶»é«_ì¦-´­s5`\ˆ-·RÍöã‹xYBÈÈaLPyBøˆ‹Q2Þ°øHg|Âõ œÀ;w^Cý¿?`ËO³ñ¯#“;üøåµ{ËXÛÚüßlø£Ã£ÈÙg:ßßrafg‰û(í°7å—_ßcŸ A '/h$4Rh“•ˬ`wòª] ��Wû~©Ž×råÕÿ" Ñg†Í' ]Dx\h�Ù%w…‚s$fø¢Ê:Ó +X'½BTÛ8aAZ¨1�ÒBsðœ¥,Šà;êÍÛ„™@Æ•[ØâŠÄô›/ÒoSo¡í:Ç·`S =Æ-ô¨IQ6q„�¼2%_ü�wüÊcíj||p ,£Î⨨´3gߨHƒ'¬aœè‹Ï¤Ïí²H2`ܨà/OR&üyçqÆoÎÊüc|/—¥W•ŽxÆ5}5_!¨¡© 1jÆÏpÄBÉy/uîoüÞ¬ïâjÀ] ÷Š´ÿâŸý‹ý¤´Ç¢Ém¹Å‘1�ÈN*Ï?›ŽÒÚv¾~H'}ÈjžvdlÌ›C:7‚€�vÁŇûÑ*ö£|m�i �·ÇÀÕqÀ¸ ¯V¶d–I„Ÿé*ì2]ÝMN¥ß}ó}Ú?:ŽÕpäX«OáÄæYò­¼_*·ø¿Ù=jgÖ·t¦wu©ÁÊR ËÑžyËkà¬0 د¤AÂö_úòËûé—¿|ij[Ø½ï “BÒsš1ÝK5©¾ü%ÿìAÚÐ `Oçÿõ`�%l˜eÐ ^¬v…Ëí�óÊÏU@}«!PC †À{ ñØëàý~!À�gx1p�B€˜�ÞtÕ?#òÀ¦råÉ…¶dœ(Hy¤B“:`+ÁþñIúõwߥ#µ£.¸í­øx½ÙM+PE�ªÉi±�|Äšº\J~/B�RÿÖøø àxÈSmFÈbòïhÉ—§p¸-²IØú:«ÿ_}–<Ø`üz"ü‹¬1ù7~¤_‚¡ƒ_ï(#ûÇøcB_üâ½$±H:.çIZ·ü¨¢‰S §(p0äÈd4Ì9Põƒ;¹Zp'ð]Ÿ˜†šw±Þ¯¶ä–»TùÍ-MÃF°åos)‚d@)ìi³Þ¥Ï>YKŸÜ‡´=Ã[é•N‚BgE6*[°Ù„-wÇò‰®ü\WÇ+Qê× ª¾.§•b5GÏÌ—Ÿ‘C_ޱgùãb�Àñ0ÝÕ V¬;éé‹3ì•Oë¬Ò¬‡p5-–²ƒMŒÅ°-§‡½ŠvنÕuw®WoîGmoõ'Á£ÞÖh³Õq5Ÿý¢Xø—ø¨iº²B5Á)ž(ò`·§¬¯ÀXNÏÓ*įÉÉ"·)�¦¾!lÔÏKÜË*Ì`Hh 4Ø~¤í„ U‰š*vÈб'0ž²§uÔJ§ §ŒìÁG ä|#E†¿L˼øbkWC †@ �Ÿ’�8Z<*cî{à6qx®évKÄ3´Â&ìûŸpÄÉ\'¡êK ©ðoù%o6ÓX3´"ŽlFôª‘Ô†G‰ñÜdÐvö)é‘çãá<ýš=gc&üóF‡ãT5ø‡erŽ �·ÀëÓÚ†öÈŠ-u…¢Ä ?QÝòRßk|tpD8?Ò€†w¹ nŒ¹°“ÖŽÉ›1ÙÁàßv�>è¤-”m<2¹Ãxs 9ï�±ã:²©´?/�¹àZ ¥T/ÜÈÁ|¸â@ù&ðˆÛ„b+€¸@aé48Ì&Òßá§Üx¯Kú«G_þýѳƒtv|Gf)µ‘@´9›uãŒ& ë ¡Œðm�„óȵøªq®•eŒ�Ò§Sñgÿô‹t‡Üµ@¸ªºâLûLNX¥d¿XšÑ“éè9½yм¢;—{©Ûr_óÙz{_ö/që{ �÷�¸‹©“™“ùš6™˜ò ]0s¡#.Ý=[ŠÕ¶Æ˜Uj/&Í�æz:9k¥÷·‡l@¬ÆžÌi‹Ë<›ýÔYåxÀ6«@¨ÕËÐu;»¤[ãÙ±ù꿊AeˆzõÎÕ–€B…Û\~Lë¶Š,†f‡Õ#`0q“?«K-Ú`Âß‚àýÑ×kéŸÿÓ?L_< ÎƒÇi­Õ È©è .kµ€C£OÚc²æXÒ5ξfrßÀæHs¶ÆU‚Xo‰.ñ…€�Åþñ<}¿7N'“vš nwơٳ˜PO„ÍY‡6À–̱Œ²øÿƒÚÕ¨!ðSC@¬-îœ@/˜mƒƒeÒrvÀ—«©3ï¦á)êÿ'ìý?—!hAOV�®|†Ý&ða º2ŸM:ØmbÑFú3Ljû±ô=Ok�õÔÅxàÚhšî¡Žõìh�þ÷ï�Ò·í]âl¥YÏiÑ4è6ÒVÊ{,±þÄÜžÁAÁA“‰ƒôÌíÒ6 hküùS÷šº¼÷Se§,~0N/ð.FÌçk,ìû WR[þþg>y–þ«?û*ýçÿévôž¿3c\µáEñŒ÷H,š“{ÿŠPлÆ�¼;Þ‚�‹Gb±=Èþœqê‰nÝiQ‡6—wÙ$ñC�í‘jô¸ txv’N;£?xpt–W»+­ö·ÂþÖS,´ªòÕaâŸÏͦ‘Ã0Lî ¹èò|Ó;�.öÉÒŒt. U4g:äYÚÝž¦?øÕ:’+އ�D(eÍWÕ¡a’d”ª+>)Kb³ÑÌ2VèùL’½bâ­ŠÆì«þ§ç¬Î<ë'ä~Lú·ºÁ˜!ðO9…lÞb[޹äI³“ÞJ¶7½[?Ó,ÆeŸov_|'ßá¤ßa¿úU¾“1’n„+m•LSÚýÿÙ{³XͲë0oÿã�oÕ­ª®ê¡zn’M‘Íy¦,R$%Ë¢$ŠMK´%±ÃØ@Ãø% ý�'A�— ¿ˆ­ÀTdY‚�ÄQâHd›–d‘j²›=°«k®;ßò}kÿçÞ[ÕÕÍ®ªªºö®:÷Lûì³Ïú÷Z{Í{©‘¾5�\#ÏAš2J­¦.rfÉ%Ï4h~�ŸïÜÝÝ¥gN1*ó&sñËÝøËD7$nµ;¨§=Vè0é ø„‰qo¡!ð ;$�óùХǽƒûÖ)¥@ @ @à-‚ÀŒ$¡Š„—2VX •­vÒ9„'bò#OVûÌ=d2”ž‘í;ž¨úšivžW¤êµ4?7�\B˜Vþ:J�+(^¼¼•Îu'i¯†9” ÒI|® �C$¶>ð… ¶ ç¶É�[¦½׫^”}�ÀÝ�­ÿcŒ£cVÁ]™ªÕp™¿vZhc8…Ϲ÷d==pÊ:ò¨50è´ Í³¬§ìIl-p,„üV®üÕ•PPÇ}…“hfí@l/h„†jH3ð†47“Ï 06 ÆÃ?þæ7¿IFæ[/rS¥¼ øô§êOÒ¥ Iü2Ló-~Xãõ¸r¨˜ ™›»£Eí3#f¢j&{а1™n¥cÇ驧ަãkhƒÙ*‡¬ó=]¥ê ïCЦ^]Sûc©öùìUÿ†¤°?„_µZ¹Q ðΆ@VÔqWo äÛítÓ�ΜMç/°øóåxèŒqo~šə°œ1Ö™Pï«÷vAH\—Õt«Š8Í´ æ›ý˜xÓX@%wÖŽÔÒã�ÞËr£ÇQ @C†ÛL†C<˜¨œ>�´ /±D"©ª'º­A§´ØG´ÊY¡»L».u5 NÖ¸¶½½.ñ²XÕ‚,Ù¢Ì-L—ž”R P P ð¶CÀa©”|„,Œ;.§jÆïqø}p>}ŸÃajöY¯8óÊ+J( ¸árÍækêv;„ôÿ“WT¼É Ep“€ûq�™`ÀÆ•�Ô‡±mÓÊ®«‡&ÝALêp+…aE“0áXõÃ+¿®].×µ´´•¬™ÞýøbZj÷Òˆ$euÜlS\ƘdF$÷š6±Ø…À�Zm¾¢[¯¸0ëö«]¿•¯*ÏÜ9kÄå õHü.awéÊv:wa3mï J7Q�4†P› :q^wù ž:N4¦ðÚ«mo.$œ‰ JYå<{ÒÊ>³Ø×ui• ¤׿HÄùEÓC&|p Û>9Ùab4æ4?7À|?"æ¿en�Ààê®? —ý¬lp¬Ê{Nný´CÞ”ÝÝ á*kM± iKµÏgåo�@�@�ÀÛy8©4)è# /0LHö7 ™é�-gþ×Ê—i™ôÔx^ã�)}4@s¦¯4=5åíði4ßÅÃì ŠÑ?½´žÎ@Äþ/ÀïéPJ�@�ÀÍ@@äÅ“^D®DÔ­«QÃ`2bÙôñNö/¥{OµÒûßwo:¶F­É˜nìŸ�؆÷Ù¼,άa½Æ£pYÉ$É_û+¿úç‹·þ·(n†¯ÚÂüüÒ7FLÛ„�ü¥¥Ipö{:LüÝo©À¸�$p@£-uÜÄM“m&ˆséè‘õôÁ÷­¦{�3°á¨§=¼jË(š©7ÚK5¼´ÊňsÔ†jÊ^]¯gQá–º[.xGA`†c÷⬵ºA¼f7ö wÒK/ïaùW °ÊŸ…ˆ/ ‚ŽÒ­^$1Ø'×Í«)Þ¸ë2±y‹PE¥B¿.§Ð”6rcÝÆ$ž©11úÉÆ¯Þs|>=õ¦ûNâM„ÇQo—Õ¨ÑP·[ÄÏ¥¹PÔ°Z¹ÕEÇ„$ˆ± ô&ÈL$ÌÖ.é�J”Ú“ë(ºõú¨6¡™N‰)eµ€çlò¼.äÊÅ���7’#tÝùü3]Ëû!1û ÿ*FÄî‡+/5” ílÆóû? šhÌ/^dæ:¡]Ã6ÍÎ2ÅS¬ŽgÙªÖ?[ßKß[ï¤u”ÉÍÆ<¬|g)7y‹Š·ž4zc/OF]x[àÞä¨+é}ï=Ž×㸶�³W„{"ž‘mÂ*$ðZVZPIJ±W¨G=Ö+(Ø=êï¯À ÿ8�½¼Ç3Ù?”A*r³áM´×震÷{ð¾(n|ܼî'~îs?óO–°‚m^^Oý]ãFHìâ¬û¿#BW±×ÝÚõ*ê`L¿.&´…ÕNï‚ÉÉjÓ 4TWÒ»[Nï}|-�<Ò"`œ“ZP×%ÊØQ싽¸Þv½wÚñR  „€šÞºñ`ìµþ×›˜ÈaÎ6wéù/³*€sÌak8 žJéwÝ<j’Qâ]ó^ϵxÿ-ý ¼Å÷Ç ‰Y*†pôD¥%õîeJ§ÄùOI¸¼8MÞßL?ñn–ÅY…‘íoGÂѹöêþßèÓïþC.½a¥(Þ0P¾²!üdmåÈÎö:²�Nš'©„šžÐ1øãÞj1¥FÂ-ÇÒ�06þP44±ÖÕÇÛéÄ‘qúðOœJO>~”¬Ý» àœÀBo�i$öÀž8òÝ_»q©”��ëB@‹~³e‚&Ö²'Ž}¬ÐŒ€ í.\Þ#ÀnÂk 9V73VÜÀÂÞ$_@«Ï„õ¡t;{-kþu_:»(¦ÞRQ¨ïcFªZ“uZ0A!ëH#Ä7ø63WÛçÚ´Ï�^j×I6Êsïzähz졵tê8 G¹?$æuìRWÒ7\ÌYZ¸drevÞå;€‰*o^Y'7‚°1L„€R$ôI²#Eó¾== M\ˆiÒ})o\ÊOÁ¿ �TÀŸ ®¬ÿZþcfÀÐT—ô²N�2‰ZP·LÇ¡ ÈaQfÿnÁÐÉ!Ž˜+.1¯|÷â:ñÿ»i—D³ãæ2ÉeQ(Èü•R P pSŽF>%VC‘qƒ\i �via�N¦�ä>øWk‡ÐÍ9Œ¸Œ⻫?eI=Ët%‚3Q¡ Z»÷Zý þY1à5½|bŒqó\a «*v[º•)›KñIá"ƒ¿¡Ò_• (Cw9¹7L? ùß9¼þkä•1@ ½0¿Oß®ï/ï-¸s!�y±²†1”„¤DƒaE€å¹n:~¤ŸÞÿÞcéØ"|]�dÇ(ðZµyŒ"à;<‘+$‰ÉÕqÿò5û›íòÎ÷}HB¥ÈKþyOœÏωЙ«ÉŠ´‹pLÈvÙ  ÿõ¯½ûF»¢Hod›¥­Cøâg¾ø‡G—ޤ3Ï¿”:¬ æ�¿º¸‚°3 Á¿Õâò3n./Öš3gl+ úXïFó äîn:2?Hýà±ôÑ�I¿„»îe3±½¼ˆÓÍ ~3,“‘‘[Mmαæl.ÎlUÉÃ3Ÿ>®î—}�À]ÐBk~�Ìÿ.©9¿° \_&�MV8wy7ý๭´½—ÒÜB/-Ûd‘m»,(Bñ�)N*¯¹ñ¼Øy³›¯�gAe÷N?²¦ÏõnP=!d(BÔ˜ã]Ô`¹©¥E=:,�³šÞÿäø˭¥e¾q¾…b’0¤A�5vüq›óÙv (4oˆEk¨„�ÂA¿n,,/àò?$³n—õ²wÈrmlž«dV™ÎÌ”Ñ;êêã¯TJ�@�ÀÛ�qà ÷’9‰Xþh{uý× …ЀX±O«Bí áÒk mo¨@`?@çÚ#”s ½S]�HÆëäøwgΧç6÷Ò°µ„ЭT±@^€Žaœ…¾]?}yï¹�AÏì9Œ2áS<0ZÔF»ÿ£ôs_z*Ý{ÂüG—ÒøÚœàÁ9l“Ë ùzSBæCDÃÌž€›Ïßö™m¬*Ø« …`ìjQøACü§" òPO¾¯ÓEÞ‡?ÚÙÝIWÖ×ÿþ ò[—@ßè½Û[š[ümst X^XâGí„àà§24n©8èbMYóø§ë.K[L¹>—VæçY…à<Ëwí¤�|p5=rº†Ëá$X*»–•è÷`ȳЯ@Ón·ص¸~ÐÃÃ=�á~Ký.¼ �1aÆàqnïàÎ+ú%À6V›‹W:„ÀàáÖ>·°L�VX·çæu-£Tèt£ûüô->_‰×AHèTäz[Pª|o6›Ñm¬W“~šg"Íg2O¥å?¥y¼žðç�P©©kŽC߆´9®-¤îþß¿´�ÎtFiw‚"ÖµÉõî„&Ž ™¬\´1š,  n%0ÊtMÒ®‡6yŽ&»éä±zzïké‘0§nã“Ȫ°Gu”r5<;#<2x$�!Jê`2[à6ü� 7ªìïõ:ìP�‡å_‡f@ýx&·wÅyÌc±á¥“í ÿí ~à�­^?D·^á«?÷•_ž¢^¿x 9ŒpÍq5Üìpþ€ÙFÆB ënëÞ?]dPaÁw02¨W·Ò“ïžÃ àx:y×ã>¡ xÕu¼tÕãâ¾ÕFk�‹‹^ ¥\�Áf\ ®0+-×’c Mù÷òF'½xf3màßD‰ÂÕ.ÞANv†˜À%õ”0€²xŸ.¿9CʉҷۇR   ÞHû¥AZa•†þ½N?õ÷ȃB@ %¦n¾u™2üÒ*•¦AØ'¤�.%a0rµ–+¦÷ßJý�ïÕÒ½x)ýhs�º¬Üdhç\x $€æY>°¢ÉoÃ×—WÜÑ�ójá‘X'³Uï‚£ë/6Il¼–>ö¡ÓÉBÉyÔÄ’�¨Ä}¬¦àº¼J%üzPæÄMÔó;?GòF\Üç¡ê¸:WA�Câ©xŽG²6ÝÄÓ§‹¼¸»·wöëï。îÿö¶(„›\°¦O�,,ÿÌŗϧ^¯›tËk‡;náå³Á¥ ™£/„,�™qn¤ííM˜suÆ›Lëé#¸'=õäQ\Z.g¶�›?VIB´ú;ŠÇ¸•隬R@o€R  ^‡‰½ø£Èšñ0+ê,‹×%fìåó›éÌY9ò(ø‰7ÛOr÷ê͇'ÎkÅòë–ýÐn|o»f¥Îíçf®š¥f3Ö”½KVŸ:�üÐW„óyMƃ>V¯1®ÿ)=ô@;=ùĉtr 'JÆ6Bþ<“ìË j½ÊSô åÁK´§âRúeÿU:’Waã>¿s  •Ö�ÕŸ].»���·’#û©P¹9ì�Ò ë R*7_™ì`öÝC»² +¬§0²?d +šÒÉb#]�Ä}÷ÂvzöR7mtQ&«@"PZ#™ªÿ\�Õ§”��›€ø4%oÓB›5š,ï׸�<=Mûð©ô؃«¸þo¦&FÐzïâ7¨ÞLj¬ÔÍØ0Ñ* µ®ûj 2of’óöcÿ¹í½0_d2�•³g|\*íФã»ÝÝ_åðªò­o}ë–´¢¸ ¤oÞÉ_ú•¿ü¿mml¥ógϧb…�FT¸¥:gTZ%'Ä÷œ®-ë˺'Ó8‹[P¯‡VúJ:ulš>ùá{‰Ù]`µ€ ¬Q»B?²V‡hâ[TD8Ú«öз»•R pwBà@øÏxŒÝÌjž—¿?Y/!ø®ouÓs/žOg/ÄÜ€—Í‘Hv÷vãÐT53 lfMÝI“œ•Td@£°2ù-Q "AÔ*Â=®pæ™bÝ2YàtÌò€£AZÅే–ÒãL .=:%I�œ"u¬aèÓ©ÏRdÏÃùÖš¶Ë]´Ï”8¡/ýþ/©qäÈð¡�ѯ[£—|T)odâ‰ð‡¶éò¯ÀØÿJøå€<ÒŒliÌŽÊOòž 8hÐÆèRc™/¼ÄžëMÒ¿=s9môç¡•ËPÚ9<ª9ÕdsU•: €R  n _xèÔà]X³)=ð@?}ò“ÇÒ»ße˜ÍVuö0’¢xCù¦—ã´†¾Ñ�'B–’o �Å §iLE€!±÷œSo{ÎqÅ/Æq\CÌ÷:›×¤™Ddáßc3ÿï¦ýÿÖ¯ÿ+j\Užxâ ܼo­ rk𻡧í÷�}ùl$ÕRɽn¨…WVÖúŸ'™tv,ø¬¹=i°±_\ÆÝx²‡õ¿–u?®§w=º’~ú§I?„'áz%˜Àd\-uÙ¯LºÉ¿J)(xudGô™| ×@Š fY6X5\Ú§éÂ¥­ôÂ�.¦í]»˜dpód zõƹóšÖµv扛ÛâyÛÈíä¶2 ZÂw¸¯<‹B+­°¯ ¯ðÏ^žÔUˆëo °ˆõÓ‘e”®¥§ÞópZnãbG¥1 ®w„V}DbÀf/Û®4Ý*ȉIM”8 ‰ÖÕßæ™eÖ߬•È—Êß���·þЫ!B¿;€ü^îÅÀŒ>e`¦Zªý©‡ÓéÓÇ#`€¯V³tÛ¯¬·Ø¿[ù¶òl�À��ˆçª¹V � ͉v†x²BÇB,m÷Ò™ éÅ—.'“»ÖH©P}+嵯ï^Àd„.¢.EP“}×¢ 0ÞàZï)n¯&2ä«p)Q¾�ovyÀZòIsŽ�Kï~üÂMÇW� I×ZÆ2:0»Ò¦xd¸ô‹V|°‘E[ᯠ:Ö™»tæÕõ²/((x« r5“Kóg;N®þ3]M«[W_ºñ³×6?Ýx{å‰�awüìΕ=HºD]í’CÄ[Á¡Ú8s\íßQÄ?Ød–Ýd–#F6¬ˆF”ð�‡tEÎúb& ×׎˜Z&—ï° `‹|7à=+é¾ã,W3%æ ?nÊ-´×0é ²Òf�¼ìoÕbYcà›ØÆØ·Ü—¸QþÜu¨pT<ªM¼ö_ƒ‰B�wŽÕ?j„\d9§Îm¦‹»XºyxÊJ®÷œñHüÏVwcä�3s¢Én÷ÖÉõ2ö»þ´þ+oð¹µ �3–+˜|ÙAÛÖµp�þ…Ð�èãºÚíîq+B} @«9HÇŽ¤ô>Öѽÿ¾…´ÀR¤óíAZ˜CëŽë¿Lï”ůkÐÀ)“ì-»_¥É ®HÌc˜€¯2ùN=heŽ·�Èc-ËýŒN•?o*ÚWí¯m2ÓLé»K‡éÝ4b’øoB£†2eÊŠG:hË#Wüm‘…JŸzÔ¶VÉ9¾œ¾q/ýðÒ^ÏÁÙŸûT�(ðCóR¬<ª«”[)w5*¼ŸÀµʵػ) »eÌX«$%�bŠænZ¨_JŸ¦O|à¾ôÈÚòÒeŒ¤Èg äiÂpše2x2ž1ÄšÆse´‘(ôs)Ø�ܾl2”׫-Vð\C{ϭ瀲14_55ãû@oº½Ûï>óÓßúÚ‡W–¯ýë>yKå–]néíwáÃ�¯=þþ ?¼Ü;}âQÜóÓ …F©éà"6m²šŸv›x/,m V±j²p/_Îÿ„.96RS6”Ü«î+:ÈXÇ(�éŽ%i¼�vkŽÉ¤>½�~áó'Ó¤û½4Þê�˜l1uÐbOHPVÃuwÏøÝ–“ ïeE�:Z與‘!wà3rÍZ+’”R p·A@Ô ~/><ã©8âD�ÿ@è¹lRÍí=,ã h«½šž¹Î?³ž~òȱtÜÕ@Äs橹E´Íäíèöq5£ñv›\!â"8œ—“Ê"r ¹^3�Ó’îø¾ûæJž¿ìñ58<#"u¼†r¡NEkÔ†gªÂ_ÞÞ²çôÆä¦Îf5´å2¶ÇO̧÷=µ =餧Ÿ5üa#µîá{Ðn÷ÒòòêŒæ-Á@ãî6Þ^º´}j=ˆ{í$-¢ÀœsBçµÑ~“X[ Ã1Ë ²\VV ÌºYv7 �Ãô/3ù‡›±!Â6!íðdzpÎa= à‘:PÁžÌ<1–\3‘©”º 6/×G9:Á»²Ñ„"ÿ<ž¼[‹Éa­ëÃO��Ý—^À+ì·ÿäLúã³LËE沨¦Ît�Õcxž÷NðŠÒóžD²Òcÿ•R pwBœU—/ !&ôïóC–ùk¤½½mò®‘gƒÕͺâ/ÁN¯O{gÓO¼g”¾üÅ'Ò»Z@™·™–kG¹;—v·»iÉeš'ä6Òx† „ÒMãE®é1íÞ™í ¥œÇ:7†��7cS¡7PX;ž‘NØ_àÛ( ÕãÕ  =r¯õÙÚK ìé…—_BqùCoæo{óœã›Ù«wpÛ?ÿó?OÊìúú•3ë¸|‘ Œár{n (»“„ãCW0™]ÇUÞçóæ`ô8öL Zýµ>*(¨Uʃ×Ül—g�¨ 8cy‹ÚvZ[ÚJŸþȉôäc‹÷— è¥9úëN6ÈÜ�ŸÓõW<£'³‘.³fDOxI)w%BCÌ—‹£"I…ƒ•¦W3Pà5¹5@(b<ñÆÁêi{œž{)ÐÅÀbxéèöÞ#Ç6ë(ì´úñ=“k±ß7z\áå�îy6ú½ÿ’ÜnþŽã4?Çð>„•lZâgÊN¸ææ_’ZÕ\ò`/�:ÕNï~÷‰ôÐC«x ¸î{7IG––HšE¬?›îþ†ÔÛ0ÑÐÀ!pëö ]‚–©‰OóÕšÃx£Öÿ3ìµ_à»K)((¸qTôÏ'ŽÃW^^ËUO4ΘÌtLâ?=Â;8‚‚¥•òcÒiŽ¡g#„Û2^ßͶÆpüæ„p04*áa—©öôÅ~:³SK�Èë(™OÆXÆÖ }„Jý²—Y~Wt“k¥Ü�O-Y&ª$’Š/èãõÜdíåxÚï°øÔ64º±“8UKŸùØ=éÑû§xàý ïeÌ £BS<�õGŒ°ðwhô xm“0zi‚¯Ç’¯8–õþ PØ7C®ç{Ö•?ÔòoòPëN Ò=¯‡È‚»½«Gõ»¿øÍovâóÞ¤?ÅàMìk5;טûèËgÎ<σÇRmBÎ@˜2ÔäÉFCr2)1#Ĥ �?øíäR¯0Žç/\IÏýh=m’ Ы¹Jƒg¸„¢@1èúnÄ~ƦG8胘óäÉ¥šdndoCþËýº™=�FɄȩpŸ9ÕrÏ?ÝVu§C*:ÝHúÀýéáÓGal÷Hšu1Í/0ÎáJGA'ð«%t{5ò ¨ q"ŸÌJY‘uW«¿ù |Ñþµô1÷¦ü-((x#!�ih·\ÚˆÌÿ½Î ÿé ïdIkŸ‚¿A æ� ÜÊ'`Š¢3VV‚v×ñK­…4 ÎÿB¿žž~ùJzöìEb~iȰ0 B�ÓhK!ÃI„³Ù•xCö4x#¿²´U p'A óâc.zɸúYN‚®¬ÒDŽ13gdšå“í´2¿›Þ÷î…ô¹Ÿ|(Íϻܰ« uÁ7ü�Y-MDWÇ&!žéôøÉŒ·=Ö‚÷õ?O}\|µž{ëÍ”•â@¬–‰‹=u puœÃ=á ¨Ùÿ¿þÍoÞr’¿hô5þÈA•ò6@`yùÈ~ôâ‹çO=q Z§Ðø*`3øfq&-&›>ɰra Ä¿Ù Ú¿zó�ת?�ì¤!î&‹óÇQ,¥‹WîI£³™.]Þ"þ¶M’Ú5»Æ¥È0ºÃ˜ ,¼p‡ ¤ðF)w%‚ªóåt‰¸û«‹Þ<áæ4¡“¸Ân¼û³g”æçêi~õ(îñ0˜¬ùLzÀ u&¡†êäxº`ÛÌ,îƒùó4Þ÷Êw^݃ëŸù”óÖk=�Û¿þó9ü!:G#NtNÄîéŸ}ãÖëþm\'Þ�ï¾ÿFO¢ØžöÒó/]L½á%´ß(A‰•MГJÇ“k·krÁ6“!õik*‰$ûµªùÜgU$Ù«âú½+W   ^/**˜é™ó•ŠÂ¢¸Õú9žàN<Òò� ™ø¥¥Aµ‚ÒÄx_ž¯‡ϱô !DÏN-ÿu\’k„WðúÚ ÇË÷¯tÓwQ\êÀW­²^S´žì¢ ©ý~ ÂjÏ*…²óÏ¡ûûËA�À]�à9øN™�0Pꡌàþõ*ÚXæãI“û“þVjÎm¤§ž\ÃõÿT:¹Høag; È%4u™?„ÿÇcâð5Üd¦CT;,øK!¨üˆJ€øí ×£®øk�¼k=Îü B?Ǹyöª¨‘dˆ¥¤Ó!踱fõ7»H§Jy ð�¯|åBwwï_o^Úˆ ¤…ë+s .ƒ%¦'žkGÌWT´aªçZ=ÜmϤ•…½ô“Ÿ~4}ôƒ÷³&ÉmðhášÛÐ…��›^Åø¡Ètáq)w'ÄÇk·«2]à�íŠø®XÁ#½~HâÔ`™§ ¬òÜ™ËéåóãÔéÃÖ5`‘vµ(9§ žæðÍÎ/x˜hJj!^ÞÌÆ`NíÏ«o¯õ»î£¾�╪O왜‡ƒ.vKie a~�ÌþðÌ�NéCO�NO¾‹d€µ-&B¶És¡aOºÃ5S§[O;»ö‰Ì¼LáLЬƒÅfš&o: Cš½¼ì   nÒ/¶Ù.­péáú�±�Â~ÿ]„2ÿ�9—oƒ‚Bù¤Å+< ¼•v›VË¢ùœTLiÇ¥ÿðyJ;£ZzöÊ(ýû—7ÓKÛ´×^JÓö´�vèƒVK= r¢1?ËŽeúªŠÁþ•R p÷B ãCV·Ééà&Ÿ”Ëj�¤çõ„§óôR:}oJ?õ©GÒS�M{�ç‘}X /�6«i‡º: €&xj¢Ï�Òm Áß-r«Í޵Íߥ$›õ¸ÆqÜ›)BnšÕ•y Å‚mH3àGÁìqÒïu:ð=;›_ýë_ÝÌ_ðæþ-o.|_³õ“sÇòÌ /÷VÒkQ:¸@jšeøý÷f5Ë jµcƪMq�¹íDúø‡H›—é{O÷Ónw“»È ufC0á_F2E]•ȥܭ/øv'‰}\ˆ“ˆ“È�˜.ï5tí #6÷á ôSc)½|q‡eÏ¥öÜéôÀ=\"9èMp;ÜMm+oZܳÆXÌ•¼ÅªèýÎß\cö)|~>4‚™†pD€Œ,*N‘æÀ"I¯î?‰Â³vOd¸~é\7u÷ðzb#ùU­ÞFn@W"ÁÈ6ÕÁUoJ˜€_®M—àL}œiK)((¸Qd "U™“h@ÊRQ=�(måφ¸þþYÎz5 E-Œ< Y—|•Á—†àîJ©“"ÉXkŸIèÛŽ!`ý~úÎóëééKÝ´S'Ìri1VPáÙˆ dÆt+ ü™öWô_Zè•R î:ˆkÊL ɾÕ_\àZ,U.K– ÞL�>ÐNŸýøÉôžÇ–Ⱦ¿�ê$#®·VÂsǦÆðC±Zx,.ë½4® ,Y€Œæ{åŸöã=Ôt�÷O%üký·ž{ïIÂKÒãÀY^ oÔ‡¸ €•¶wwRo§þÀ[õ[¾\ä[ÕÕwÞ{XÇqpùü¥ÿ±¿‹†Š¥cb™='µÄ ]‡sqÄĨ9t>;¼¥ž$SÜjWçYZ†¥WÒƒ÷ͧO|ôÞtß)²eÖÏ¡ X'2™ ™h­\0MµR’Ù‹¾æIé–:Q.x‡@ ÂÓj}—‘£Diã>™RÌ=ÂÅsD‚š¹¥µ´µ7N/�ÛHW6XÚŽI"bûpë,g}¼¼ÉJʪf&Ð\1rõfŠ-[ÜßÌ¿x8ÈRn'3¿C»ì£“ÞÂü\êì±¼ßÞVZZh¤•E² ºÜcu–üàûM>p„0B‹&»lL†Îé|ûôÑ�£ÿc’w}ž2±ê`ïK)((xC!tÍaâù×0‡ ì˜cB0ásíÑ :‚5"^_áÀ*ÆGU<¶ÌFÞ$Ù+ €M<¡.ì�ÒÓÐý—¡ÿù•T[X!¢+$ü˜óÆË ”4é\¦û…çš�¤ìîrˆàŸ<€R·Fþ†Ð=iG¶~WªMYÞoi#}胫éÓŸÔ»y;ím] ùò‘4è²üùˆ¥þ@è|EÃL a\<6ÉgÚÁieŸP,佊q¾î¯ú¹—…ÿê¾ ‰¼ÅsÐ ù6•x4�‡#ž‘œÉãìu;ÿÇ/~óßÔÌÿ€h¿½RÞFüÞ?û½ö¹Ÿýü·Ž¬IKËK(”°h…º}–ã›#V˜óÕŽqú™7_ÕçýƒêÂëßWÓ‰vüÑÈ¥mX+·d]ÞæˆK>}údúáóÏ�$Cïƒpç9f’«Ï“¸K%“Û-táõw¶Ô,¸m!ðê ë¿a*" €‰Å$€ºÝëþÌ“N·ÛcÂé‘‹ã(ÚjYN’Ö̵PÈõxÞÉ‚‰�ôÀu Ž„H‚IÔ;Ç ×Ù‚Rºîùþ¿`2¬½ÏÕêùxÆs¶¸wÍó^÷{¬’Ù[*„0îtBÏ¡åsLduòšÔ]—<"cðˆYÜŸg)À'Nà�”ÒÖÆNf®ñ~XDWrd1¥c+µt”´k«0á&÷�96„"±V¯žsõ™B€ ¥Ü ‚Råg®9 :]k¯¯@`&ñîî u¶{ÄC‡p᯻©ˆÕºž@ï©*‹í„¶BcûX§íy²ý/`‹œK=Œ÷ÿ/ÿè™ô|·•:­U–‡ÅÄB=ļ åÒ6äÑÜòQ%4(8x×÷€DùsB@oà‘Zí «-™œÓ%ÎÛ,ë·’ÆðÍé6ÿåôùÏÝ›¾ð¹S+]L£Î•t„䛦Ws¹e8øX¤…—oÁã91=€T*„¯8†€¯b #¿‘†²"²9±tƒ�x ynÆ"Û�Zð �K~Â÷-YÅÈ1N/¼üRúÂ7~é±·ò‡ÌTä­|cy×+ ÐÝéÿò¹—Î'–ÄâÎX½!q³GRO TFULž>>tÙ[7\Žj¶]g�Y %@ ¯"pÓòüv:¾¶�>ùñÄﮓ(ð,ùô±ˆ#òÈ´‡KË ¿·

À½¤Ž[ØÁb_­lPGÐ$ÇÈÑ¥”øDzï{îK÷܃•ŒÜ#ƒáJÆÚy-bjÇã³CA zhÉ�Š ßUJ�@�@�À�@ S·Šò¦Öòè^—žMìáu†}ãÿ±Õ ¨©ÂxaÁ؇'V0ö³6U¸éÍÙšK]”ÝyPX×ï¹ËÃôÇ/\Hˆˆê‘óeˆBw}�%þxÜ$¢¯ü\‚Ù’i*R†K)¸K! /ÐÆPjÈŒÞÌ0T©¦ë>FËCGéy(}ø'ˆ÷¿L½�´¸ÎÀPŒà’胑B\‹�ö2áuð œçP-bû=çzÎûîÿù|_@�ð@ðoÊ·Y›cÃ…ÆðlcùöC�9-ø¼a?mwwSw4øÊ[ý3B�Jy»!ð;ÿó?ÿ>^çä©SKKËË0þ]–ÇšO]\eëMO¦ùìüç©z¤|ìø�‹7ñ¹-5[Ä&O°è“‘ÖAÜl ýj#ìÏOÓÚ±•PD\AcÝg]îfsJвXª5Xž¨n¢å‘�;•u†¤¯ù=㲘cÿ3qy`ØO—Œw»Û»¸«­¦ãÇôþÉuÆX½ÇZ„`Fë(Âõ÷Ó˜œbv *ðšo®nêypPÐ󳇯>®ê¾¶ ±0áŽýWÇ]S™}”fAbFd֛͠¯¦hÔ­«WÄüÜß\O«+‹À¡ ÖQDöÒÚR3]œ†Àñ#dF` _=Âåo$—ì1»vn¿êiÙ¼ËPñiô0¨šÊWhí[Lëo‡0-rLÍüÏõlÌ�œ�RCüãPµ§ÉþFxìÎÔerõ�^Lÿö™3é F—¬ÿCø)KÌûШЦçž—½ôª›´5+ò[}¾”�» *Øà‘Z(Õ¦SÏÁ9l6Á¡ž† ͽôÄÃÍô3_z<½û°fzo€IZC,á±XÒ›{T]ó¬:v_•ëû½N!lÐŽ\è‹3$[dãuï?ªæÖ¨§Ë¬zq½ÔØ÷Y¯—+÷KéÉ÷,§§X!àøñ9<".°m¤í�=Üüøxµéaõ·E¿Ã7ôѳR   ^?f4ÛEjr@«0†¸D3Ðè~·+IJXÿkämr}p…•µÒ#(¼>|ÇpI©‡p@Wâþ¿ÿÁùAzúüV:?h¤=ÀŽUšR7T4 ˆ†�\"‘ù4}òc÷¤O}â •—þ7pÇà¤Ê;ó2¡<˜‚ˆv,Š›™•­äµ²†Áo ß!#¤B† FDÎ/¬ÿ>‚ÊŽ4àqÂÀ=ïƒE ÷�¬æWsó ÚvÒå­+ø•ßøÆÃÅ·¼À[òWáïþ³ßù_>ó¥ÏþGO­-áÛÇòÅllºs Vÿ¢¥|ñÕý1wœdB\«6 °õ¸k)tÆ1�ÙY¼YË{nq!�»p%mmw 8ÂòfôçßÿcºWnÜÆpð;¸Ÿ•8¬³ê¢ûk,æRÏÄ‹‹L ,±I\X6]þÚía:qü1nu’’ÕÖIM²LáY¼5 ß¾ûðëö�õíp?gÇ ñyÖ—ê>ÞojvPyTOÚ­ƒï«®*ôW¿×ò÷£ºàuZÕ²` [uú¸Fb-—åa–^Zl§#$<ʲXdÛJ'Ž, ˜g•|3“ý<ÞêÌ\‹ò§@ @àF �iR&_ñ7“)š¨¨•Ëÿõ;xhí�¤u�$¦x ›ô¯FöÿœÿÈš3* m²)ÒZ:Bx¯Ï/¥mç;Óô½3WÒwž;Ÿ. ›i¼t"uhð}áAª>k/Çû«0០;…* 6ó¨¨8Èó�sP)wäà1„I·X¢œ$àç:ƒaúøGÖÒOýäƒiž¸ÿf�ˆX�¨A�=Âxêðmœ«÷z[3£'ˆ*i©Wæ‰=Hœ�lLÜc_±2<±�‹qO?Ä{ŸáùÀÛBy —@„sRKá_ùÍ<ø¼‹Û—Ó¾öåß®_.sQo×ÛË{_�V£~úÌK/�}tù12Çr;4\¯¨ö†\`ì’€ +" 3FÕ@3”ë P''@ &]G€:³Þüü^z÷»WÒúî£iúÿ]Nç/ìPï(ÓÐ5ÐÒ³ÒH�À�ˆ;Äš×þ»tŽ‹Ÿ4ê(%¡í9r,ඇR¤Å;€qæ9 .ðJ)((¸Aeƒv»šH�=”ú‚K1L| á`ûËs­ã° ¥á¼V›‹%ûx�QÄNYÂu>h2‚E“œ%&öê“ô¯³°œþèRJÿëŸ]Nß]'à‘Y€úÐéyò,Õ{UåQ¶î»úón…É$dÎÿlYàWèçô5+  �œA(£Ö ~x©^ ð¶C€Ñ­€,ïd6þú€q¯ñPžý©«-F¢r�‹5�‹àW©©Ë?Ä|}ù‚ëƒóÿõôs_|$ýÄ»çáI.€Ë]Zâðâ¾7à^üQ鿏ê™=Ü7Á_¶Ø«˜uɽIŠÁïpï—²«îù|�< [%Bc„ð?tÿ2B¦âš Cõ^”OÂP!F¥Ê]ÿÿ÷?ùŽÿÁü�·Þ¶"dJ¹ !°8jž~ö»Ï2ZpAèí¡ŠFk¼¸`¼p-[Íœ¸*Ä!ÆqfÕS¯rlýYݘdöŸÈ“IÜ•9�œ¹Ð̱~…ƒ¾…¦mKÝ}Géý�/§Oø~Ò”_J“ÁÉrÀòînm´l ‹K‘ÌÌ™L„ -ïuL�3“EìI)w0Á GŒäkGsïŽù¼þLëV8Ê$c�Ï´æœÅÔ…c<¸íNÒŸ¿˜Î_Âýö´É*!¸£¶P úXLD³ý¬™hÄÉ*&,pÐ}ÜéyA¾ç1“ßu¶Ü ¦‡èŒûƒ-b_½Î'ì·kûÎÝNˆNêñßÃ$kÂ,ãfC1Á}43Ë,›-Û¤~i↷�4Ã;LÔc&ü3,¾L ²À†HS`†Kl`QJ�@�ÀÍC^GM§4‰’=¤ UÐ!ÖçCáê^·Ü„Y¶OšŒY$¡‡å6Yþ͈ÌJ.-¸†Sá�ÄhÞ9l"ÿéÅíIÚLK,ݦ]䍨áÅ7ª q„¶+e@æâ¢?ùêŒÞ1_D7y9}À ÄÞãR îT8~óÎFpZqFC–>R¿_Óc˜„}c¼•ÇA'æZ Ú„Ž{—Ò}÷ÔÒ'>zzì!Œ“õuð¥“Úfýµi_þJÏdWÏ»ðõ›ü‰ÿâ¥ô@W}v¡°C ÿžs˜åZ«îÓ¶ü�ÞBûIÿàsüͼ펆jy¦ÑFEß³¾»‘Ö÷¶?ÿ­o}+zgß®")å6„Àoýæoí|îgú§—æm“¬‰ILaߘ}§Œƒ¿6Ë&™¸6?Éó« çQØÇ W_¯d”‹Ñ­[XgÕ˜� `èÝš�¹ðH˜Ç-yiùDzþÌe„\xA®z}æ6«d3_b)Ã>ktò,š» Ö<Ý_LŽ“—µQ놵�Éð—R p·AÀQïd” G2�b�3Å{q%\gg&t”Ž=šæÛºÿÊâB:vm@�ÔI)ObùÉÀ^𸊗ç êÄ>ZçÏ„÷€ïä¸ê‰u$U‰ÞxnÕŨSUš]å´zo4f#~Ku}ÿaø:ðÞ/´xä$ßësnÞåù6V²yÂ#æqùŸg– Ç97Ú•–¨P,¥@ @ @àF! ë‘) ”ËŒüXø§˜éFh,nÃÛdÿÇ8ITõô�nq ÍQY  Ò$OÓ݇'›â±9h/#ôÒŸüèJú7,éz¥ßêI5=0¦(ˆ´Íí„!¢ÿ ýºÑŸ­ÔG@@nAŸAŠš5„’_Ñ”åúÆ{:À’&Þ5$4k ìÉ öŒGçÒêÊnúôÇLî3,|]Ácº z±BRðòð ÈzT<Šï–‘w©³çŠåœ‡¥?ùZæ±rWCQ`KÈDz1ûŒÇ*ö öš0ÖXÑâýÈB›�ítöâùùË¿ñõÈ[Þö’¹¯·½¥׃Àßýõ¿óÅ—ž{1í\ÙL‹­y2Z/¼Û �Ò<ñ÷9³¤nöôløôðqÔš]Øæz/fàVEo‰îû4oÃ^‡}/-c‰|àÞÅôÙOœJ�"³æpÖál¬áÀ$ˆŠ|áëš7ûl=Üþ±æ�Q¡µŽ¼,é¥?ŒHYJ�@�À â^ÞŽ‰›X—FàÊ�^¾”¾ÿìùD æÊ…´Ó'±ÌO‰= W<„b"2@3Sµ'o€ÞC±1¡)ôW›Ü¯ lb£Ž‰­bãš2¶<+÷«-ߟØøî¶ÿLõ¬{ŸçÕF>>˜ãÙ¸o;n¹n$Öò:›ôÍwa²„B ѤûYÄFp›÷Â8[µ”���‡t Â–É |nÅøX~Eü0 €]÷=ÿ¼Ì:+í š$½”¶"$4PHö½´ÝÇû‘ɽæjº0h¥ïŸÛJßùÁ‹ÄùR0×Nós®`’à ês´C²º`бïwy¢@à�±Ü›ç7Å£Á^E€ÈÓ:^ÏõÓ=8,ç*Ü ‰náqc©éâ_»�>ü�µô™O=œŽ¯Á+ô/Âç� ÜçUÌ0,d¥�5úy_(4BÂÃÌ„ÿŠÉç¼À®�ó•‚ „þÙ5ïe¡?ó\ÏÚœÁ�šDóVÇP3Åx±ÛÝKë››Ã_üõ¯}ÉþßEÊRngLÇ«ç^8³½Â2|k÷®¥=¯Ì¸ù]²ó+k©Ä†|–Ç®×,ŽÙª¾¶ìÁ¬,z®çùLµ.8Žx…cØÜ[£ôñ®2àY×v÷r:we75îáÞ\ê’4påè\êM·°ð3ñ™Ðí^¸ú‚| ™~Ф¦+põòüæò·@இÀ¾eÜ<(ÞæÈÝ%fôûÏŸÃæ�žxøÖpØà‚jL|üQ™|,N=QâÖLPžy°;À8ˆI•Ù?ž£~~.Obq%`.Ò�a€ý =ˆI0®Íª0[Ffûº–.þ+ÈÇ[gME»ùÖ¬/δT™Õ W\gU­d0ÑæB¶ ‹ @Î{“`FÞY{³·—]�@�@�À놀ä#¬„äA2ú‚@©I�úÞáŸHºó¿ �«As‚îÀ©P�À­4FI;!$ë2 ƒgÎo¥?=»�^ÞAY^Ãõ—ðø]—ëä;q)0ÙlÖxæR î^È-€ZþÌ•¶#ˆDø_kÙg€¡Ú2þ×I�<ÁëÑ•Ëæ[;é©÷®¦O}üD:}nöƒKXà7qýçYpMÖC;ÅUÂ?8§T8/ï#¿$Û _Æq[\çRÜËuBYàó³ú‘À>ÅsyOÃП·n6á[ú„.\ÞXOë;Wž„÷ñm·E)!·ÅÏðê�øíÿé·_úÙÏíŸ:zŒåÀXÏ2´Kürc&£:Ü| Öà„´j´fÇ×Ý;‰U÷eÜ•¿�êËói“g¿{®—þísÒ‹›.¥~�U–x¦K£&qnBÏq`å%è!¡My•”×ÝÝR±@à�Ìa(Mèú¯|À&$ñ_ ™ ÊGà!É€ý\ü{éôýÓôKá±ôøC$íL[èØÖÓQVPnn<`4™çäGTî±�Ãñ¾¯2Žò�×ÁÝàA8�Ää!ØSïIù“7ê…LäžnR¯�¤yö½iONFÞ €N»[éÜå‹ÿè«ãWÿéíôÀíôk¼J_þÅ·ï÷ÿü/|éï3®š«kGp Ʋ>Ad „êÔ³g_·¹Y…¼! ¢ª×ì�&Œq« ëÆ€a–TÃÕQkãí´D>€¹æÂI-mï öƒ¤)'ákt²n·žÂ9NWfß´Ãæ›C­W½4ÎËŸ�»�oL¹0i\£ ÅÝõ]¿¶‰7€Î7Ý.‰ppImã°2�k©Ó ø¸Ls�N<ã>°Ûkü˯Ò.2ê+ˆGýèFU'ß·~u/êÍÚàîì¶K³>{虦ºÆ;öëÄ»ó=•9é–íÑ_ó}Q7„z{m_°Íq¾ˆð¿¢;­LŠä]0Ñ¥Ü(dÓMµV@ˆÒ9¢ÓîÖ$ím“1œLáay„.5¥5Ð"ãø9@PO=s1-®¤èÓÓ&é_“ôï—öÒ Çsy¹?éºÉ”%iM¼FÐf š-ø8ù(ûQJ�ÀÝ�l wW²p/#a‚`VÉP ¬@hÍt@n1=‡¹W#¥æéÓ�ôSŸ} }ü©%îbùïÂLÒù¥\ç„ôŒY) „ø%y y†*×�wtÈ ÷ôžÄØÿØäOf÷ôCI ð/º²)øôŸòŒ÷ö|Tã'Jš-´‰Ö/]üò_ýêÏRë¶*%à¶ú9^½3ókçÿ»o×ÇGï9žN,�B®î‡v©r¥�'˜?®XG®=vyê™�Î.3èøU êëòæòÁœ£›’€ÌFDÞæ´ÇpßKOœ>žvÞßHW6Ϥ½‹þk(ÞÈziÖÛ™ q^±€vxBDËÈãmåO�@�@�Œ�Æ¿¯¬®±¬f—˜ÿnäQø?{yš¤ŽÞG<)“cžr˜ ÁM˜M§;Uƒé¬0L‹ó…{ÁÌ:©å÷x�&üø¿ß ®;™i©’´õØz\—&Ø\\ж=öBTÉÄýÜάCq3·;«ÏjÖUøpäðͼ <žè§ßM¢&ÿïөٻʮ@ @ @àuB@Šd–vl™x…l�üÁÊbávÜ 1àáU%nHƒF†hA›^ÞLé{$D~æÒnºB"ä!ùš�C°T²|)¾Èmù',™5b6»=’›Á-°ZÀÔ•R pWB c˜Ä×»qR¶2ÇÖ£j9ð¤Å¿&yÄZM´s­½ôè£íô™O߃t† �!ÛiŽå”»ÛÛðBµ4?¿˜úhÙLêi;J4òYøWégXr~¥Â¾¯³ •àŸ•\–Çðº{»�ˆ.Úb\§m½ ¢ðêȯ¨ô#(!{ÛéüæÆOÌ*ÝV»âp[ý¯Þ™ðþ`ú…/á_íîuþêÉ“'#Æ`ˆ«ËaÖwRÕš�ßµe=vmq¨V›G¢†ƒ6†p �–µÅ‘ÜK­�Áœ‡åßI3#‚ƒ§éàWËÆ½c'ޤգ+éüÅséâ¥+騱S„Lé ÉCÜßèO*jÍáäÛf1G|ÉRĵ=-çïlÎÅÌÃDÄáô”dïä͉kDœ¿(Yg‚3FUFÒe;{{iØé�`ª�—p_Ð�áMé‘4ÀvÄk6ÈE´{„mPöྊ7ÚWKPÕqRÌÏZFâ¾ fÚõuie³®õô¬�g}?çáE4Ó”ûMAS؇¿n ñL¦=á¡0ë·ñ²Þ“æ.;ÝÆ…ÖxÜȾ-`J)((¸AÈÌ7‰ÍoAWëµyþFÚÙJik}˜z»CÃögB¬}pÿþ3¾W¢ýÇ&c–e~y‡Œÿ/^NßE ð2^�V@𒤹AhÀD� )xÈWiýŸP ÷d©8‚ˆD³”�»2Žæv¥ïZCO·HŒE% v§(Ë–p*"C\LŸù̽égþüi<�/¥ERo.À"Ô5Rȇ„Õ¿a(ÏH·eþ8ޤÁ¶†ÂO‰ ùÅ�à}à1ä­èŽ[xx úFH@\ÏÂ/9o`�¨–àó*úZ-Þ Žwz„ûÀ°Ì//¦§øLÚéuþÞ¯þGßø—öàv+Ep»ý"¯ÑŸßÿöï?ÿóÿÁ—¿¶¹¹uòô½cšË@IDATÞŒH.Ñ�)Ƶ̜=_ƒ m÷²Q¬¡#ÿªV½’·|/rç †¦‹á Àà>Ð~�h ðЂQY·˜ ±9Ö3@wôæ(%ȈÛ¥�+{\[DA²²°0Ž#i¡‚¿Š…A7Gà+»ÈÅR Þù8Æ?XÄDz.ˆ‘¹Ì®î_WA�— dòQû�ݰÎÏͯ°\޽K¢`OÛ.;Ùªy\Á¾Úla\|wš y<=xz#À…4‡ÌÓ׌Ã7 ²ÎjIÊnb2 =ù[SNü l ˜ >’z¸ðÛÅ6ÅežØ<®”ÔÑ3 ”Þç�Mò H?Æ?CV:ã>– <ŸG¬Ö´“.mn¼ôËík‰«·e‘¶•rAà›¿ò·žºxæB:ûÜKhŸ1ÀKL\$ÛÃUxž,´2ÌZàêdµ«mfðï fòe𳫋åA_Ý׸WÌ=ïk‰‹MD�âyÜ�qgk О\N÷²&ç§Þ·–>öÄZZm¤¹îNZá½+-4d/“pyCÇÂ`‚F/¹ƒà_ºZ ðFBà?m„â(Ø@d]ü�m²í‰[Ìc!Ã’ÊHŽÀñË;ýôܹ�ôód˜Å;.BVÑ‚÷¡ CÂuÂUYç��˜Ìtº‰½Ç‡6­öy³^®ë¹uBK^Õ…6Tu«ç½ïr„Q—}õ\n'_Ïí  îAx�´%úÈÞ{|èÄ6`Ðe ÈÌÛ€Ð#W@ëø,¨[J�@�@�ÀMC:1YØ�äE½Î ¶1ÖÄi¨/´Xa¾!2àq€õ~Ú{…¥¿wf#}÷G—Óó—¶ÓÖÀ©nýÔéÕD©è»{i6”4¨VŽý/ÊËRùs×B r…÷#+f�4‰Ÿ� Á^¯ãJ¬k¤�ôÀ©ÿO§'ŸXNKä˜K?d*ö§±¤8¸75‘§«�yŒ’- ðòR0%z ¸ÙvØ+¹½3†@VÞ‰§‡ (¸*Î`_bÙÍ#i£ÏJç×QªáþvßJZ[oYVgï€%– ‘�Í\½ƒãÕû�ÍÚŒ¹4cÜÖ�։ߊ¥Ü"ì ïÄ ÂÃK`�˜á^#1úc2ÿËÜëI)Sßë1ªp)Ökqkÿ�6zé;Ï�Ogw¡I¸(Oˆûï‚Õ×ò�æ<^™Sx±þi-sY™^…+²±”�»Žÿ ”äàâªó>®úµ=ö{éþûZÄüŸN|ßáWȯq%-´�Ôæå!ö #0.Y^¡5ÚòŽE/œ0¬(ÏðX…_%È+ð+äË|„2 :�½÷x~öœ­ÛŽ†ÐœùŸC»Îõ&.˜S<…\ñcc{+­ooþ—¿þwþú†wo×RBn×_æ5úõío{øK_ùòË ð_j-³,Öòñ'-&1Ýð�&7î(†ˆ–@*²ÇÕäˆ�Ú{"gV8Dü©ö�K üj¯‡€ñ6cÖätE€&ï­3áÍa�\d œå…åtéòë%…ËzàžÃ28#‘LËa `YôÊ^–R p·A 0rÿ£=Ë&VÈ:lù:øEÄdªk ‚Wkæi’´jq�„8¬Â‘5×õ‰{Òg>u,�82H£ÞËdßï�XÓgµaf¨ÑR “¿àª „ÍØas­ÿòAu< #s¿®ÿºKÂ)ïŽÂŠX5”4 à»çòR!7ÉÿX/®ó”‰‰i³ŽÛ“\L}ø‘ ë—ÓÅ�Ë“_ûæo|îvÿI‹àvÿ…^¥¿ó[ÿâ;áË?ó77º[«'8•VÛ«$›Ø�8“…9 ™ð*mU“QìÄ"WØ"’µt�™fƒÝA¿?ð­Á³b™yT�Í1Q. |4Õ†áJ×bò\YYų·‘¶özéÒÆ¸2ŸÚ(ÐRà¸3➈9C^+¥@ @@ì;ú¯=Î3›(ŠKi·ø:^8 ðoˆ"nÐíDÒše’�Yj¦ sÙÎ ï÷'Ë}<�†l,ðyþ3üÇC4wÏt¢º7£B~ÖëLà3pn­Rø|~$ ûz}òzÕVõõѬŒ�oô„ïÀ5�¼Û‘`i¾•æx—¡HAœò»Êß���×9Ÿ Æ mÛÿÛ[¸ùï™°X·^x(èkCŠQÉ= ©Û�¢.'Üþ/¥œßJ»õÅ4B0&N¥HÔ:‡rÒü,Câ–%‡Q<˜…xîåL—y¨”�»òþ9Fæd4*rñ£YïaØÜHüÀÑôç>{o:}ÏœÁK„wÒ2y6H†ø@ÅŽíó&^ÿT*�‡È*ügÏeó 4þ [®±—µˆÇUÜÍd�ÊâB?×B>roÝØx{= {  ‡aù?{ñ|ÚÙÙyß·ÿŸC)nïR·÷ïóš½û­ßüíÿê§éóߪ³x›e0\ÊK†Ú„5*ÆfÛŸÍ@òk7EülôÞì.Ú°œ…ÛI�k•` ÷9â=v’#¦¿…¶[¤jŽši�\ÍØc\æÚL„KG×R‡ù7:’:)H‹ÓȉðbýF^óSËÍ�w$*Ñ\ì˼bVRè=¼yM|óZ¾ïßÌ)(Š·X¦axØÝCC¾Gö\óƒ�€SÁ™š×År�œÒâ mz­ú'pãïŒndœÏÓs\ϯÏuìõíI¥h¬h„×­šÿHS<™�ú”ÏÆÃ3Í?÷¤UºÛZUåT&Î3½Á•Ö„§dæškÕÒ2´eqŽïV³5©\J�@�@�Àë„€Tqÿ±C¿�ÍAÚÚ�üZ…G@¥Àߌ E#Ü{wQ ¼xy”þý çÓóXþ·Ç®p4õ¸nvy®Kþé•d®£ KAä$tRnöñ_ê[Ñò ‚¯³Ç¥Z�À; Ž}õ‰ñ¼Àªß@>hazo5öÒSO­¥OêÞôØ#zÒ¼„l±‰¡<›¬Àý~\c9tr‰e†VfLÇi]ë¿&}Tzq#–ø Ë¿Öyd$ý÷yhßê#qÎY(8%d J`Oþi”wÂCÙü×>D·ÿó—.¦õ�­ÿó×ÿîßüGÔºíKÉpÛÿD¯ÝÁú¨±òâÓ/ìÔІ=ö®'X[Ï8{„k&$M\îs ÌØG”Äq##ßá·ÄT%&Í¡ÚûLÞx&¸ñƒŒódÅ7×%~®5·Jƒ¬C’6wÓ#kGÓúiRvlbñ±“ÎvÖÓ°I²BÜ”khͦ,˜øÙÉ™¨eñŠ˜–ÏrÿãF\õ(ß©®•}�ÀÝG}… ‹‹dœîö`dY‡¬ÿƒQ+]ÜÙK —¶Xt!Ýt!¼„)�ì·<¨[¢u´1f²ežÛ/N¤Þ®èC,ý'+=¨ê…¢1?’•³Á삯3EdëŒóŒ…ø¼y®ðÆðH‹ºéö´O‚?ò„Õ7Ó§>ü‘ôÞÇÁµt†….¥#È.÷·ÇÈ«GP¾EqÞ ˜jì¨pMÙEü—>(Ô³å�HŽsG¨¯r†‚Ñþ=ÉHYõ”.|›mI¬OÇ4Ðhã‰Éêk7/í\ÜÙøô_þOÿÆwã™;àOñ¸~¤×êâïþæï¾ü~þL·ÿKÇV×p‹]·ü@*Ýið¥ÑÒîÀ9\¦³˜á: Ýhb<ó"‘"4`fËÔÒo^žm�ÕVÁ¡�bÁ½Ú´&´Œ¸>r5é¸Üß�ˆ=Zjòˆ�é­¯§Çî=™–°Ú]<&í²bAš[N�“ï<�¡_§Ÿ<�cD�9Œ«iŸ}¡w~…Ûþä ¢ ékA¨Ü+¸}!pÕ$ÝÌ£:OKÕÝWîýþ›à¢:tpu΂HlmpkšÎ^ÚH«Çîá�ºøe\«9:¨;Gl*Üo$­19g”í=ôOõ�¤ q™ëQ5îç‰?8æÙĘ]û©C;¹¡¼?¸ÎdM_'±D!mJ�t§£‰M€ç’­&tÄ8YWiA§êÐ/'Þ:ŒyÚ6Ïy›ë —碞ª—õ“<Ÿ5<7ëp3?¿oÿ:GwRÑJÙÀ Y'ë±LIõ…ñKE0#’øNã ¦œÏìsý© ‹ŸHWÉP³Ìê×`l2¨yN…Žu¹0Eáâê屩hhôø9ð¡ž-w滬&\ö·²o¼'oÞ¯F¿‘?³?VµÅWø%ÕfG«/³Ï~Ï{y¿\u²µ¼³! ]hDXãÜâ�Ñ-˜�i‚Fãñ W’Ùßñær~c³…“ìoãâ m\Þ"™1´z¡’nÿhé!£ÅF:KÒ¿?|æB,÷·ÇÒÆã…Õ´G[†2bø‡æ`pÑòÑk¸Ì1¼ŒË2Ó)þåñî(­Ž=ºfs·”�;ábÏRdî¡Ê•ѸÖëÕ;£ûyÌWßä™´\üd•2挭1Kù­2§ ynÔHËð.Ã� .:éW~þ}é£ï_Âηÿ]r‹ñh¸ÜƒÝ$LX“ƒ9)¼ˆyŸs`LÊ.zä€ÇîcY?­ùN�œË˜d“ÂL¦qnŠéQª1ÃWž�סl°Ý&ó³-ÏÓwVû˜ ÆtɹÔ>º”.î]I/^8“Îí]|â/ÿíÿð‡Õ×Þ û¢¸~¥ÓÇßýöïþ»_ù‹¿ò׺�ÞÑ•#«i‰Õ\¶Æ62z¡ `Ð; CÀ>:¡¹Âí–XÌN¡»B–úA22ÉƳ\síMcþ]SÄ�IM¢N“6š0øó2‰¬°ÌŠ KËéÜÆ.K—±jÀÜQþ9�´84™§á¼Ì‰ ñtZ3u©S«W±¨Ôˆc¿C4�÷¹‹c÷¥¼ 0ÛÕ•½µ뜬”ˆd€CXoÖÀÔÞ $¨:²¤³uXF¯ îÆdÊóá@͘89ùϽt`öÏ£\¸‡þÉ[d "ÃyìgUy^zb’Š®„DéíCmÇ;²¤É�Üg½ÞNå Y1«’À¤·Qt °:Ç·ð;GO'öè#ÝÑ{¡¶¯ðÅöÙ—³-ñÊ!áÒ*wP±ï9„jö»Ä�–¿/˜²øNèoüTÎäïulÄ17ýg%ëEUê9žÜB‰C]ß%�×Fcr4%Ú°“òžjÉØ,ð[—çeʨá¶wêFr&™Fnì ÿUÍÙoïSþ³ü­~;Þƒªº›kDåòç®�€žƒª£ Y9¥‰@Úç–Ç„±ø°AðŒ7èH ž¢†`?¡Î�cg=¥Yü{]bý ]dPŽß#x�aâ²T‹˜ÿ?}q=ýh}/m# YÑhÈŠ+†2º®¸ýˆñ½yß�·ƒ£êÊ~¥rP pgC h¹Â´ô¼r‹9BºŸ©wM†BZMݼwžÉóü!£µ\KÛ;[$ _NËxÐô6Ï¥NLÓç?{Ë+­-ï üßFž0�ØnÓö4Ìb(tåÏÍs_Ù…Zû g^ è�QèF(ì1Jê*Ã4lw¿‹¶™»ësÞ‹PRí&( ýÖÖâ|Úì¦�îvÚÚÝùÏ¿þ×ã÷xõUŠàŽú¹^½³ßþ§ßþ¯úÏñ[uâñW�®¤&Ȥ6Úy02mÇ£2j (*Éh+üDZƒÞ:2Í»�Z ø3„¨ê9߉H�@3�@xÛ™h]@o�6šöBÇÂò‘´rìTÚà pe7^W,�¨A¤eLížH–ú¦F=˜E: ±ˆ¸ªú.‘Óv5>Ò})wÂ"ˆá¾�žSñx s»ÃT5I í%&ÙYô[�ÛZÇÅ;§g½Àqð5¦WiBlÜ÷�rÑfÀõÚþz¯Ú¬âñl'Íðœøã_÷ñß;QrΑÙ7ÌîeÜf¢¦Ÿ•€2ðlîý¶&Œ¼–ÿcKxàôŸVlr9/ð?ÿñÀÍŽ±íwØ«Q™ëw^ Xò-Si#ÿ ‘3Á:ó4Õwû«æ-«Œ ›pêg“ybx“Gt˜+­&KrÙ$½Ù L/O N¢úD/„ì‰̘í oþÛû5¡ŸîµúŒY`y‚YÆkþN¡,ÈOäq5;ŽßêšãüÛÙ´/·TߘÏÊß»þòŠŽ�‰¼ B=l}Œ9qÃ1Ò`Œ¹Ÿb‘í¯»Tªž†�’^ošÖ/uRŸ}¯G@¶!žŒÓÆKú-¥>có ¹‹ž~‘„/�OÛ,8ÆhÑç•8X±ìu# éÝóò¥û?2öeÁ?¬ÿà_Pä í †Àäù)ó±% }àZË×'ÌçÔ®ïöšÝSa÷9·d>(Ïm®àªJd+§ŽßÅ»˜‡xOë±Ü$ŒùÌ¥³i«³ýâ/üÚ×þbnáÎúËוòN�ÀÜ µpîÌÙ® O?þ ¨èôÓ^ü Ä€q¸ÍeÆ7,jÀ{â«U@”˜>Ù[«ºÚ3êÐDܯÁœ7B3ÇE®…†}¦�óžÊ€)^‹Lš;Ûë(%écO<�vºÓô}÷ “k/�ɬ›pçÕ²4±íJ…1œ£^ Æ×xyöÆè�}�£òì(NËŸ�» aùÏ «ëI©¼<¿°˜Î_ÆÌÅڴ͇H§×TÌ…+l(é˜ñTÔ‰þû¡x{ÃBˆ A Œ£m­¶TÏ5|vsïeœäZÕ7c²·~2ÉÀMž‹œ ÔÞ-˜^î¨4†�ÓLãÞ<]Z¹ˆEÿkð Ïcñ5½ãÑ51ÃàtÆö2at)ܺ°S–?¾3ÏàYò½‹>‡Æ€ÅpWÄ?uïÌc\q~,*ò:¶�Y5abã!` ‘s^k©ÃåvÒÖîÛƒv^oÉw¢�Uîni�ßþíßžüȇ~ô÷zms&åÚÚwL‹€`Â�aŒæðómÌ™$Äáµ@œWø3ägœw¦Í¾ï8—[ãb!ÏÀ/\ß-¾�8HÜ�‡L¸#Ž<›Î`¸l|ØO»{»éÀ=yìûiq¹ò$­®t~JzÕ™ƒè‡IÉ Aλ$cí·ÐJЧÊU-°X-Ì´pÍäo¾·&÷þ�0Ps4„QжNÆ­%ã†OaÕ‰ öË‘�÷ÚýPqž8ÉŸú‹�x‰çeá�KâÙ˜†á;óóD–Áôå-I9~AD¼œ_Ž[|HlYò;¢ÜŒÀÌõs™Ïi:»ìþ^��Rk*‹JGùF>Æ„D •Õå¯)sÐô‚WÓc¿�xã³ræmYbË|©í�¿Ø>±YüÑpRfêE·¾W�«òømp·ÛÆ�½�:Ç­£µUG3J™c ü‹ô Ì×ú”Ì?ôï²à¨\©• #_Ç—yé"/“çÇè:ïO_ñªˆ`ü“ØE¢Ê[ˆ¬íÿÐdbŒÆ( Xw¤K¸s‰;_â)BêÐ3´Vú‡XýߥÍÍ!{yPý¯/¥Zw=�„kû)=}c/ýÉW¯¥0cV*Çl @öÈB$ù¾¡™¡qŠ¡¸m^}dÕe d\]j�Iÿ '¸¿œ²ð7¯ü ,yÞ’?`Îxr˜zõϦ×=2OßûÞÒë^CœÉ•4€¯F²]!žp–žË,i”�)ë1ÛÅBaÀ}ùì}1-åjRßÐ/×q!³h2Y¹ú¯úÿœc–[À½y+ø«AOµY´<8 9Çýíì¼î§?ù3¯øãþ¢É^àGZ¯rwQ ü‹ÏñÉïÿ‘xwpøÈù ç…7\L�SB²7¤WÁÈ QŠ~üŠgýØCØ1lq\Al[TË) N÷̘NÀ4­åuÜïÏ$=Äà¹3«i}©›z½~ÚÂúneæVM#S hC —!Äõ_ vzÏ— oUòÄ€â+ ®\Õ ×šÐŽâ e~=Äš.gXk÷à ‡�ÍQꮬ§.{ï„Çêm-p‚pêDÓ9÷!®Äy�é>ò�;âd&QxÌÆËwÙ—¹X%þã�ÌÄá�ïÅ)ÙÏ©�·D8eKØGÒùmTHé¾i¬`Р…:y‹cÎó^Ô²,ÓLtÄå=a>FÁÞž~gøäl jøñ-ÑÿÜ>–á÷:ùÊüµÆ·\Ñq©bY´é£hwµ-šl)WìQVaÆýÔS· ð"×$N]ÜŽ�/êGsÚÍîËÈb&W�°ñ‚¶�¨`ÒŒMŸëêm®kù"¿5´¼Ë÷'O‘¼úY Èc!�?ÆAŒ±r¬…c+ÐB öð2æ†èïïíqMÒ�Í£4Ä¢ÿ”Õ|��ã¨ýåênúÊ•M¬ýÃü³çÿõã>Û5Ø^ZBK€£ÿ0ÀjiÕ\ !W}êI 4f¢ vnenÉÌOüI@ 1/EŒüL�4Çj­Ë¾ÿçÓ«î¤÷¾÷áôö7/³Mñ:€�Ôaž©k\œ+óÂZžSÌÄ¿ œçc’!4ª@:Ÿ¥dúo ‹*–P<ò*ÔGm·&ôë !ðY€Ûœ'#4(2bÎÚ¼¹›ž¿qí£?ñ?ú’ôŽu•àŽíº¯øïýÆïüÊ~ð?=Ó*̶pÙÔ`Í©$1 BH©ú"@° ÐÈ�À÷Ò‹ @R>ŸyïŠa+8‰F�D!@^Ù)�A™fŽq�&̽€8å˜�v­¢³ÛB¥îæ�#4´¨‰±²0§Ûn§!žRÁ&«”žVФœPW&½ßàJBùð­sÔûÔ·U·U ,J „4xÉÌ1°€O‘À‰?ÙB>ªóëF¨±�€§ÔX�½ó+L}-W± ž…U'B'…ð‰æ$yš�4ž±Ê¿¼Õ'Ç6ó¤Z@¥åL¸°Ÿ¡7*˜¡VÜ °�?Éõ<‰[rŽSúaÍß|,O�¢Ù¹Â×iLR—mB�n­&s•¹Qp l—Tjr¯p¹B·‡–oï ?¾!�q|£_緞ƽù›¶‹ÔM0þ™ù¯×Žx7BÐB°8ÕXôñ\Î:?jÑ앦½�;Ghz Q¿ô(Æ1=¡móÞkš›~Ð0Sët,”°n¶;Ãx…ÁB,¯{jA†ª¡@­®²wÊþ)};"ÞE@jHþó}å·4(æƒ)xÇ…OY@õÿPýgaAæ ápÈžÿ½ƒaºy0e;¢«úœ'Žà�1¿q�Ò“W÷Ò“7v¹çŒñGùqº’w"c@P+ÿ3òõTó.GåâöBõ勨��¥ùý“Aæ‚Qà^$ Ž…O…¿ø±¼p/Ò«h“Ý{nœ{ì\úöw]Hëíân`ßGšŸù�íŠ!ˆ6…ÌÎïE¹Ò.Ì÷‡Ü�ÂsÄ0zÇꕼNÐ(¦1Œ|"÷!ׯoºú_h( ˆø–Úp¶%oìî¦ë;Û¿öÁ�ÿø§£ZwðÜZåîÆøø�ütý¿ú•ÿfvÿý÷1Èéf$×uŽÍb(_ 'Î@àããU UΧü�¦ïä�Sm˜ #1lë>~ÿG³0-&Ð>«ýsÞŸ?sž£÷S�•ÿo½ïÕ鹃VÚ?ÜN½½Ã4fbMXÖTAaãnˆÕINüi!%3Q#D (N '>AE~¬~«X˜ˆIVÀ ˆ fËiPøc~ãݹ‹—ÒÞÖf:ä$ŽóœK=!ìé;LdµÔ}èžtžãfç´×�¥7|Òk׃ôB·‚>_e’P'S@Xoç½ £õ'CorÃ'0Vë­RàšðòO$ Ò!R{ªçÆÕ.4Ù˜iþ¾P÷5sTveDlÖõ,à1 %6»)W•të BE‚±� -0gî/¹Eè�ü#¶�$b‚ ¢]â�ðP{.ûEßö¸…H³×X©,m¿É2y4S‡•}š˜d7Q…–•R3Ëc\õ—hë7iÜe,¥Çœ!#FéùW!C¤¢ÖÏ7…Aeur݉F'Z\/Ö'$ }v¥_<†çûÊ-^ 8„vÇPùõŽ.`ß7YÉØS�úcÂÀ¢Ê«ÚÿM€:'¤ÌÆ­Ô‡ì±Ýø«›ûé)ðã&c §ŽQSžAø³jÁÉ)ˆÏ¦ã8ó;p$eZÆÉØ,ëPùU ,F dè“á—ñrNÔœï:œ›Äþ:Þ‡°×Î6,ú�÷Ò;{8ý�GÙ¼´‹�m«Shä£/sñ5eD~ÌEô¾-`PÚÄwÂ>¾óRi   Ó—† ü`jRÆÍ¸^ç‹÷ühMR¡0¬>ÆnÙÆîÖà‡?ú£M#ñî*ÀÞ�/V}˜�ùçþ�ß»ï_ýïÿêÚ»ßóîÔ^á0¨.ÏÁz4*øÁüÀðJ â?ˆ5}WæJ˜ŸÉ²®€ã$R¡Ê™eíZàÍ:'0urhNB Ô¸f{ Àcr€qÖ³L¨ýI?½ó�‹é o½†é™£AÚ=ØL�õ‹éÌêJêqZÀR­“Úª)“ÅãÈ£ðŒ0E•«Z`![ÀyY9'`';'ÝìðaØöû‡©Þé²jÕÆ�ªòLÌMŽÐÛ`"ûÿ艴þÆ×¤6ç\3¿¥£þxš¥5pgݤþþ~:³²p,ÃïeîÁÞ‰.xvkA&²3|Æ‘¢E œg›èåãÅ%™ ÚðÁ4Þº—6êÌCÔ ÏBßóàvº ýLŽ”zÖTÉ#óñhžö{£´.Y^�¢QÄw´T]�h±R7wn‹Ü-ñnr+X´xP_'ïé·oò·N¦»ÊøÐ«`GcWýáiPežÀàÌkm|˜ è±›ûÃÔ QsD‰¶±{jÏ!*Õ~BÛØè6ÓR³–Îwiwb¶¸ï0ˆ–Ðàb7Â�Â@,+¥ h/8h?À¹Å㔬K½«QZû—ºS'�stU5¨þ̓t1�qñ�/§ ¼ë[ Cw�/øbá=Ã|‚ÎYJ‡}8{ÆhgYA'ÆýXù¿�…¿Þ Ä#ôO ‚÷|ùùMVÿ·ÓÎÆE9 `‚pk¢æ£7pw–Ô@ ˜šË¸ÛP ßU¹ª¾¾ÿÆÄƒŸ…¾Nî'Ì?Z¾Ínlûu•½­Ý¡ù�¹ÁXl§9ÚNo˹ôÖoë¦ûï¶j½`ÎåOG-fŸæ3ÒH×ÔP¶ªe‚Ì&Àa¦I˜>ˆ+ÏìS%}a6ªÇŠâéw2¦£aãfÊÖžéˆít C;‡i÷ùki õ†x«Kgˆ¥^™|·˜½ �Õ�¢d>¢vT®j�k!PXÐ ÃnÈaþê2œÕdIaR8’™G½ ÿÓg®¤Áùµtÿ¥õ´²ÚM5˜êC,d3í¦UŒˆÂ�eF28L`Whf�œðe,uÇŒ¿¸çožš­W$!€úDßPcåä‘&ÿß@š€îà }(¿Ilb¹” ÎqÀ€�»ýG"È@Ñ)„a;í£˜è#ã\£\F™—O§ïóÛ;çWœÍKèØîªCÒ.^Z?÷ËüêòwJ<·Y…0é,Ç™-цõtp˜Ø×8LÏ_?äÚGÅq�ö9­e¢p�‹‡¨A²Ñ—0ô0ú [–8 ð�³Ýt†çµ3KéÜúr:·ÖIëØ—`ªá=§PpyTÚÜ#]KnA  ™¤OGމ¨±=ê'ðëä£Oˆ�[úÈàø²Ò�*·�-p;üŠPòØÑ±å0VÿYQä¿´7Hðr?;ŒÙû϶¡ë7SzúÊvznó&t0Õ]aœ£öOV"Î�䨻m¬Ýö¸�Í_}ôâ¶@ÎâÅÞ¶ ZD:áZ6m„‡hý"ô=·ÞJ½ƒ-¦ó£ô¦oº�ÞõÎóé�W�Q°¤ñxÀ¼…Q_ýjØ@Ä̼af$dÞpîpÊ/pl Ía8—üKœþ�šw a€Ùþ§î"ôP“¹(„ÓÌ=j#:_6±Ÿ„…áРܼ¹“ö8VùñŸ{ü�L~7¸Jp7ôâK|ÃOþðOþ“ÿáŸÿâÏÿé¿û“ÞômoJ«ëºÁîJwM€C=$²@ÐdŸ‰À€¼ÏÀC˜ñ ó­ñp-꺷3öòš®Xù!\:$I„4ãg?­¢ƒI:‹T¯}¾™vÇ—ÒΨŸFÌÐGlHµå´º¼–f‡ª#["i —��0€´rU ,r ŸŽz"œÈ0Ç;aÄ©Ó�Ö2†Ü7'EþžØÜMCTÜFÍvzèž%ðï±Ì+3Ùq¯«ÒyÚ€B;å²ÌÞ©ß‚dÓ„saÕr"˜¨ÆÏè%*“ù:³ÀsNpñ˜ù¬ý–c_œ#!î\_Æ Â%B$÷½Ã{zÇ©Ûm±â@™m Y3¾!*Fš²Œãôe>w°Ÿ…±ö‹Ä}b»Ù7E+ÞåU 5Fû`íˆJ¥'C°*rxȪ?6XöXx�÷ÁªñÃF“ôÜõIº²5L;½1'´Ì @îW…uVû[¨du±–ôÜÚ4�ç$† ç[éâ9îÏÎÒù5¶z­¥tÚiIÒÈj^혇BFGj,Sï<ªìݼuƒÚ2Ùø'ýÅÇñàLpÚ�¼?ZÝ/N 8àˆå>;~K°÷ tT E°�š6÷Xí¢Ö;_Á°_+möôõ^zúÚvº‰æË”SRæ ¼Hë"CäC~1ê/ÉXîŠRù©\Õ Úy[°¾v"`èˆí|B$ðç�Ž‘é°Š?cq¯6ÞJ>¸žþîc¯NoþÖ:ä-˜í>J,ö1(P³x./!óï\`þÁü€ÜÍY8Ô pÌ1·Àã £17:ß«»%ïÌ‚<å_ØÙ ¡4CD ì½i‰jNA$;0®om¡Q¹ÿ¾xy—üÐ5•»Û[àw¿ð;ÿä=ï}ϧ›,½\8ÕY�™Òq¥^ð@t¢B“ ô8@ P#N¹ @ C7”g¨<„¦Ïq‹8œØ 0à `‹)Úrp®ƒ• &c,MuV–PE^JÛ»ûY†Z/±³pMƒÄ“˜¡žù­�À÷ &Ü _¹ªµ„eZ¿¼r“Ÿð�+Aĉ9«èEp²C˜è­gLºô·»¨Ôû7#,C­�KÞE^å¤�N¤B6á–ð€v•is%"�€ýÈ�tY¼WÖ;ûÖ¶¨qTŸû2‚o¢`/ðI|Ðf5o‰#»¨¨kßÄ}º‰`"âã ¯ô ò ¿»ã~­½{$¿ØÎ¹Ýd° ò“�ìW*ê#jo.Åsoó³WÇÒ9Ϲþôé›éKÏî¥g7†ìn¤ƒé2"k©�†Àª˜#²ÃÄ…Á4µÆÜOç]p÷,öS÷†�´�õ�í>„R/ml Ò÷Gh_¡b “/1¥!%5PXhe…•í\Úà\Šmü’²»N:ë–;>,úÍÀ˜ˆð+·€-�GEüž1‚bLˆ3Ä^nqar\K[¬+laäoÏ­.GŒW´þýéÊN/há¿…ê1ôˆ/xTªL@à7i¤œ[@[,ŠØâ�‹°é«O®Z l°dþ…’˜|bæ•/`vBûk}á|­Ÿ½gÒ=—æéÝßùúô®·�åßm¦éMvÁ ´9µs(ï!<@ƒ�­dµØ^ €(t‚À�9€üùØB ?/} rÀ*a¥1sk[åœ Qóic$¶*"¬p‘AšDUÂ9טô»ý^ººµÁü¶ûÿý‡ÿñÏþcK¿[\¥p·ôä_ðŸúéOÕé×iÖf�æëßðú´³»ƒÊïBíÛâèÁ”K�•—€VHѲ„-ƒ�fœr•_ €s¯�ñ#=Ä\ä Et±„2O%�^›1#AíKé�ÖÒν—9`#]ÃNÁžX µÌž~&ÚÈV†�ô]&t]/‹»ê§j�Åk� ÂâÉ·ç[~})Ðà¼-ß;Q�ÇÎòT½Ó`�Éfq:½”^wïZ: 3­%¸ÀܾC½œ„±ò\K÷šO0�¾6Ì\yáäï£PÞEå „aÞ)i7mÆÞ�v>›>ûNÈ·|œŒ­aú¨¿70Z§šoï� ƒ3­P?oRÿFþ‡Ü^Äéâîè{i¾ÍfMy¿¥y�[㯨?O0Ž�ƒ­Ð- Ðö.+þ;)ýÁ‡éÚÎ4]Û¸™¶n2àÌ58Ez¬9&Ob‘¢Á§hT¸Ò“AäM_îsLÒ�Jìz\À cIÓ£ÔE*»¾ÒHklxÃkÐX­§{/ÔÓås)�]©§UÎQîÂlµâ’V­ L7D?©Iæ)b{·1¸ß:’ã+»c¿èWé¸Ê-f œŒ ( ‚pŒÍQsì2Î�0ö »CØ€ñ¿Ê˜ÿ*çý=³±—µ*Œ–@•é§ŽcñœƒP™^‘ÖÈ—eÆ #¥XfåªXÔˆí…àj7úJÛ.>¦ï�êý,(¤éA ®¦óëƒôèÛ^�Þúæ•tv­£¿Í¤t´ËVi™ÿ»;ï{ü?ú‡ÿ3Éï*W îªî|ñ��h›ÿòoþòÅ«Ï^Ý:³²šîåt€ÁPÀ# ƒ?&Îâ>�በÃûü.�‡×1ÉzÏÕÆua€ÆgÕwZ‰õ ² 4á‘¥…iØëëŸTQ÷Óª©�¾ê¾4îÍSÿ‰+¨ž6Réß"pÌezpB\m—�pf劌¦¨~´¾†4„ŽèE›ÄT™[Gàã­Ð7¾ö¡o[ÍÇÞ°JۤƵHÃ'é„qç]c�œü?2¸Ș)Ü+s ˜6L\!£¯ïô÷ã/œ–B+Xæc2]®Ud’¸•¨0»,,0[øySC]pFÝÆÐëc¸°×Ÿ¸’@�ù>(xâ‰�ü�¤ás{ç;:>˜¿ÄA�‘yøö…vVήÅ^fOYÅž_ÚFúúæ<]aãó•�qúÒÆ8íÕ8mƒ„ê3+õs'êˆ�!²Ä×6X¨`ÚˆªaÚ�àwÉ´F£�†=�m™ÖYç3Œ‚›Ç�VÊFO ÒjG�@�ÕžZ:‹0àüz‡í€ËõôàÅv‹ñŠç{œ`Æ(4ží? Œ2-¾rU ·@†ëüÈ )ñáÍØìÄè„N`ì¹a±?=wã(}å™�ôÔõƒ4n®Óþ«£YGÕb‘D–Fæ¥\`�áÏÚ�A EþüeÆ]õSµÀ‚µ€‚˜ºœ¹…4]L* -a„ø`çÆ`·Ó;ßöPúŽÇ„ùß…öï±�ŒI‚ÿ:ZeX–Ij#Ιwº‡­±]lŠ1âl_¬sNäŒúitÐ-cÁû¾ c�� äi¨�(ÁI7ç>g†Á{õç<ŽVA:ôŠ‚�˜ÿà7È·‡¤ÆŸ9óæ£ÿç>þoHy×9Å*•[�øâÿôÅÁ‡~üǾ²½³óÁ{î¹'«Ø@Ye ¨É#8\²ñ±ÂÏÜáú�œ‘€äžÎ€Ûį;™òÚ8s¤k2îˆ"Âlp3šxö“òãc虲hd%Žö:0wÄ>Ôü€8c$ùþµ(w Õÿ=®J¥rU ,b Ä„vۇDŽG˜¾ 4�S ÈIsÅ .°$³5>�³:¾Öy§£6Bا‡åø.aK®¤ƒæE’ ¶‘_ñÐm ¹¼|#lûžèzqå礜¢Vø9BIBèç˜æ‘¯ˆK ¥ÃIrº&–º]¥›±j×€`h·æ±…ÁÓÜ{¨ÝŠ —óå6'-ÂŽCs¤;è×–’Ñ�6v  ã8ç*� €ÏÛX=‡égµÿ¹ëÓôå§ûé�þüzú³¯l¦§®¡®Ï1Š;¬| HúzŽ…y‡ãÒ0ðçþÿ)6ZjMð9ûýkÜ×kùDôFfÉw áeƒŠáâ9‚‘•ý:Z[©†v«:;{#ì3̰œ‚/Æmç Ç «ê/ 1ŒA„ŽèÉxÈ”â`<e¹5JÍGCuÇø-žªŸª©ÄÏÌA[ðÝ è¼=OhRXa5,é7öÓ¿élzÏw?’~˜wµçÙ°ê÷µÚ`�U€ Û4ÂóM»‹6âܣà !4[Ïj±ÝØ5{ËbîFkl?3ãìÂÇ“£Ì½2Á€_§i™"Žï˜Æ²ú?a'S¶IϹöûØÅÙM×¶7ò#ÿà£ÿ‹EÞ�®Ü�½úßô›Ÿÿ­?úÀ?ð=76_ýšG^á…„ §„,K¹yp-€'èʈ€�,ŽâõÒ0¨t\àãRŠhÆ^cЬ$*lÉç´¸=jÌFQÖ�VV X©:s¦›Z+kéúj©C 2J'.A‚`0ÿ ÚX®¶œ1GL%|Íš÷Ç(7,3 ÞçgQ�¸ÇgQëœî8QuSµÀ�Ôy¼gb4€Êßêól˜°Á>b­ˆÅÄÝ`O¶«_‚W‹·s°^˜C¯4üüÅ‹§ÈßœNhV( ïìšÕ½·4}2‹šd=©_N°ñ¨�xÁØùòÉpÝéüÊgbÅwàGrà˜ÉzŠÐq¦’Œ;Z§çt“%˜ØV‹¼�ýÝC¾uÍeÎù¶Lä²-áoÇ�|}®Iùœk“[£h“òUáû-!šÁ·Y$Äü.m9LÁ§“ÔMO<ÃÑE×�ÒW¯8Âh”žºÚ�ëúÞ4@PõQu*¢8WI'àð1mé5Q�KÆù²µÊþ�!"®†Ý~¡qÁÌ·+LbO?RÙ&×û¨`š<›0aì­Æ€Ë!Fœ»>w¸§û;¨Yî§}ð~O{LGCÒ›Fc• ú-F‰ãÆyÆzÔ™;Ü&¢ ZaÇ ®'úñs�Á•ƒùõ5äE´âÇ›ÊÝq-À.Óà<ž™ !`ݹž1„&É`ÒÄÚ#Ý`ÿÿ—ž;LøÄVzâê~ê3›+çS §x¯ÝAýßñĸ׹(2™`# -¢/1ZnÅg•U®j�;¶Ä‚åU~Džoò\.¢,¯"jÄ7®éÀÏÀZ‰PsNòànf•Õ.šeýgÒ«ïOé=ßõHzÃ똛[»,.ô0 ®?tÛ!4} Ÿ|¦3xløÔ1xˆ`¸‰ýšlcŒ“6äü…sí§ ÿ,�;©¦RñRå_þÅê[Ÿ|ŸëϦeÒÓ™3›ZÌE�á~º±¹ù»zü#¿à—Þ­Îö¬Ü¶Àç~ãs½Ñt¸ò]ïù»j+Àó>âÜË•v'-sî„t,˜~ùzii)-|`€"Õ ©0” éÅ ™FÜ)ËQJ ]eôYù@¨&›W¨“ƒ6gù‰ð.çO/§}V�6Pí½Ž*êoüë?HWÈo `a̧UGC`ÚN-Žþ‚ìOG ˜ €�ôÉÔ[?*‘~WÃ�&àÃð@ˆ6ÑZÐ7Þ´9"Nžô ¨\Õw\ œ0Í·VP,\Fó'ϧÃ�@3sçñœjð´P±ë°¯Ãªú7Ýw™ëRzè,7|k#�[c…¬Cœ�Â9¬¼�xÏ:êà±ÇœÍæ½Õé`,Ž=â–=# ßg˜KêÓ/]À-‚±i„ñiãÀpæc¹Ì\b^X¤''V°4Œ0p¥=KÖéÁûVÒý÷¢Á -QT gìM÷H¹††æžSp®$ümÁ¿='ã7œîï¹ì_qÑ~>ãø~gB附WFüf“wÆÙæ_Ýaµó0=qe�ê”cκéˆÕ”Œö¶Wfœ˜ ,5´B¢�eâ)±¸ŠÆ'ë¨HmµŠŠÑ7¾ã·a2Ï¡>-1FíYW M0ïDw?¾¦µÎNZ_žpzÀý¶ÊÖ€eޤ<›¸ÜJœLÉ6SäÎá©ÃÕœ��(kÌØÁöcoÎV•°Àû¼í…V¥¯Œ»8Å‚zY7[*|ëÌeuÕ–ˆñÅ}åî°@Ð5›´=¥‹þg<°ÏØUC÷ŽÌ›Øª¯§Cæü?&¥?üÊ(ý»/o¥?}RkÿŒ�îø ,|óÉŽ�ì^8J�E #¨ˆ‚··DÈѪߪîˆp+`Õ1ŽEŽ÷ õõu„åNÜpÒúÞ›–…¸æRê÷ûœ¼ƒ-¶ÏŒ!Ú,*´Üõn`�g�-`éÞûpúžw¿Úý§ m¥³Ýep5‹whšeH#_‹¶ pºsrP 'üE�9;kSÒÅœ��Ò_Æåå„Eü˜È+ø´ÛP2ƒ®!ü¸˜“ÜJ¬Ñò&tÀ! sI½�¡\ŠÛÜÛMÏoÜHW{;íO~ò“ÊÆïZ'T¹l�èÃg>ûùÏΞ|âétÿ÷A,±�vÐÇ‚vøš¥ƒ½}Žm‚ºÇH§7~LxA$Ø‚bÕ?^CP‘G0øâ†@™ðªÅ-Y�3畳ä½Bóâ/4�¿µH»p3E§·=xoš_ÙH}Îðiq¨´Ûz‡0'S$ÿ­®R{ x3—ùè¹µ@~£ ¾³>ñgË÷|ƒïø�èx•«ZàNl�<Þÿâš ·:aXÈ0¡¥öw¬Ø²z6foÞS71·Áû³éaön·8#û�¡gö6Qè@l»+#[ƒéª³êîYî  ˜Qgç ‹–åø„>Kj”.à•Ç ·ehYký<¹›0pO¤u·® afá€�ØNÔ‡V;ÁE„u�©N†¨'FNYÈߢ_Ö¡ôo­JìK´­hÇÀ‘¶÷¹ê�ièÍÛ’O:s¤_ƾÅaºŠ‰ómTÿ¯l¥«»#Î8G ÿu{„�¨ ·ŒÀ™V?2þ¤9è·ØË�oZFA°Rö­µ<Ê�Pç©"÷3˜™öG(S¢Õô —Ò½wfn“MÚkH-®¢zùìf7�Ç�ཌ¹ó.¯7ÓE´DW .;?Ô]„¿ŒhÎ^‡ÙŒ¾�"˜Š6ó$"‹v‹*Y7êP ]ò·D /*w'¶@îÿxº 7M”w<˜Žƒ«›ªîàÆƒ¶·@IDAT(! Ä…Tż^Üóu_)$›°U°Ã¶1@ŽýúÌEcç irÎŒé Î_ÛLïzç«Ò›ßt�û-d û,.²Bxf¸ó9ó‘´ÌqguLˆ«ÁãÁÈÇÄ‚¾~8j"½Ì>€÷¸úÖ”LHɼ'/>'øÿR3  ¿3¡ÐÀöÇ^oƒ¸7ز¶õ±O~êgïjæß¦¬yD-â/öšf÷>÷ìs×—9‚ïüúz¨Û‘éžZ$g®¾5��P¦ßÿ X€ŸÔû-.¯¾~‹ˆI'pÞæL>uu�$²ãk²M"w‘$¬‚Þ¬±Böêõ9“zs8„hÅPGY!øGZ�Gb5ò^k•Ë7Ïœ?„ ÐÅ[§B?oe~À•«Z`a[@xÐ ^>–aBÓÎáašÀðÏŽ°ž5¾�>w†UÛe®®b'€9¹ %­Ì^ WÐ µmóƒ ŒëÄQ §ÁÄaÁ¸'q¼Ï½~RÁGb?@Ùà‹Ð(@0Dëà ?LÝÕÈ'l)j¦‚‰éø(ˆèˆ â·–3ˆú}ãĦ®fØò¥³5¼p~m+aÚ 2ÏÆæ<3è+lwp”ÑîÁ0]ƒÑfs˜ž¼ÞOOo`Àµç=ŽûÛ爾ý#OS�Ù×à#ûôÛÜ·iƒÃC"QPä¯oYKàŸ¢üí§“x ÿT]ퟬ~_¼Ô;©z¾�WÔ߯-bæÌ5V`†¨h÷mþ2f–7æi�%ÿU´9¹ÿ|ºïüþ¹t¹¢FÀ +M–}—Vµ›ø~ÃÚ›Q ,¨ÀG-‘1jÜÖ3—­@šqël#Å¡…n«UQ¹Ê{Å·€ã–J:æ„g™…¦GMv0ì‡qJÈ÷�­yzú™kéI¶ÂìôÐ2LKÁ hOµ_U®j�Åm�#‚?Á΂”‹xþ‰?2çkgÜ牚íbÓÃÐôã¸@¼ŒVM=M`ô—ú鑇Ϧoìõé¡ËÀäð94xÑÞ%› 7›àqôw)GìœÁ8ßû”]„;wÛËB�Ppe|ß‹Æ#¥¯Šø%Óï–€$qÊt#�äècî³zckS£¿øø§~öW£€»üÇi¾r Ú_øìú?úc?:À½w‰•žÕ¥es™UGz‡ªh}ŠAvñð‹%po˜€X4b ‰[Â2á—Á2‡y/# ¯‡&ªë4d!b±$)9nT¸�‹ZjCõAØÝdKBï#T½s¤uGØ/hBì5‰×à½*þù2÷@]ÜdäbHv�Å^`±çídi±òªXˆdežC½žûå €H)ø¨4@p€t\æjíÜ:§sj|f‰žSÎÎ+ÿ0¦¢é»6¯Z¿phÎBeÀ¶�äu¬þO0ÿÅOöã9"û"¢›äøÞŒdüD( ÙaÐTq„« Øiw±„¿ÒA³ uaVˆ]1o‘¨ 3í9Ã…l"òüÆÿØâŸ,ðâ²¹âž_—ÜxüÕX9áO¼ÈáÀööfÚØÜI_EKêËÏl°Ïy+=}£—žÃèÞ2› ¨²µjÒ@åã|s�7"ÿ!Ç¿ŽFCÔ§Á›ôU)`Ð�?Za€m+vGÞê;!(\µ½?¹|Î[9üÆCùŒ¯Py>žÍSÜÞèÆ1…ìǪÉC¯}€þÑ„ç÷ju@ ±Ps“oÚ`VeŠl#ümŠ÷i—üK½©­÷±¢$“çXãÙÎM5]ˆopÙöƨÜ�ØÀB¼9{‡CÖÑIª%�ši»WOO=ßOòÄfzúÊ>c†U4ØõŸñŸ+P¹ª¶ÿÅÜ 4ÜÒ YSË;cÔ¼×¾¸|*ı…—<¦hŸµÀáËÚÒ˜ì1ßî¦ïûžoN�¼š#þjûîÅöb‹™0ÿ,ACŒ`<ð.|ÆÎÜñCœ)…O /ïeúë5…»tÝã‰ÁÀ9ã‰Ý¤”Ç='ôÐü:àÚÞ¤k¨4\½q�¶öÆ \æÈ¨¶ˆj¿ó s>*˜;úVa@ž8ÊöûB„u³~ö»mœ…/¯ú¹³ZÀ¹[؇ºWíØÞ®³ú� §L°ýeS£—ƒôÔ•^l‡™ÖWm˜Æc¢¦­€;ë‹«ÚV-ð×ÜB€“J ¥~;fÚÞûâ‚Æ>¾'ÍŒSaÄ¿54¬×ИO60ú7Mç±{ÓÛßz�Åm¶ôÐ8sÞ!}hÞ¸4€@ž0\!àÝiæ>Š"Lpï´�ºn×– Ç�q�B„gÔb¢†Ì?—«û3V„¨öu–9�úl³ÙCýxieQ¢@omŠ|A0iY‚˜á”÷Ô ?VEH”ÁF«\Õ Õ%|ƒ°!£”aD_FpÌÕ@]¯ÝÅxÊߨÞI‡ÎYY:“V™ôÛÿ†FŽÌ�+¼Ò 2V2a’Ø^ÂXà_8àòN Yd ˆ*þá¾dß(B<ð+ï*&‘™ƒ 7®Æ¡ðg©ƒ@ãDž˜‚AVSƒ‡sDêŸ[óüF»hé¢ÐâƒýoãÇoôG}ÕX˜Ž1v† Ô” P-Žîk! íbpqey5­®¬¦3àÉõå¥tnu ãy³´ ÔÂbcrˆÑÖCl¬ ÁºcÚ�¾e[•ù* ‘av?¥D�Gð5$è,—ÛȺ¢O[ã—ZW!´çgÒŽZY…f–¹zO©Zs&w|jÁ ¿š$‹�£båä‹zkâvµöû#¶9¡0bu·Ž!Ã6'  ‚Jœ›¨ô hÀ‰Tžü\a¬Rƒ“·hiê~ìÇw86+-v‡:©yµxÔ%Ah%=‚ñ¿ƒàêö4=ù|/}õ:ö0v&ék¥S´`F †MlQóEU`ÇqåªX¼N]Ç \ôаãü<# ô.?G:îËIWÄ‚MþÈkІ$%ãBL§t¿ �ׄ\…€èÌRÚ¿ç"ç÷¦)çtŽF‡€m44–ë’@[BT ç€[||ŒUÉ2G™†\/¼ÊU-° -PN¦~>sd@j0IÜÉH»¶>v†1S0g_öAkÛ;=Þ`Ñ÷Ìjº©›Î¬(@•›Õcõzêì¯o)�'O'Z¡ÍcÝrž–UàáRØFq¦e= ÏÁqNÅ5¡Gÿi˃¬ÁY Àj!°+AF]¬¶8AäÜ2FïP£OsÔax=@@ë¿'¥…}Ã<Ûå“}ºÜhë‘E;ºuaÊ~v™ÿ~<îq} 6ί4ù¾nzí=œ¥Ìq{= r²Ê“l ¸É–Ì­ƒ ×8Ý<œp±ªÎ~ûKñkËbUTœ¸\ÆBÍ#™ì”1ýý'®/úL_'‘ÕFCK¿t9ŽOö¯Y¸ÚîWäþθŸgòp (×1a–âpWæó8œ‡}€V{•¾D�„6Àh6Ž#'½yê];HWö&éK[=„Ö5N 8Ÿ^}y=Ý¿ÞM—� ¯ó Ë¥ 4˜Grm¬… ¿DenÛn}+wçµ€cXvÌPyÎa= ÅÖ@¶¾¨€Œk[Glá!ÂGà°¬%I0`†ð Œ]Üy_^Õ¸j�¿ŽPp¦ËÝ;™~ŸŠKäͽáD›³ãCgsܬŒu£Î$SßN.¦Gßz1=ú¶ËØkÂðp*€Ë|ÐÌWjŸ…Öž”Ei]< d'#OyñGžD�{QuÖ:Îq‚0žu!^~GÚäð,8 ^æa¾þ‘&øÓ™”Ob¿º¶³ñû?òÑ�ü\]¬ßJ°Xýý¢_ëq¿ñë¿þèóÏ_ù×Ú¸ïâ¥t°{3uYy à ”å}ä”~ ‰Eä�‰¼‘^¤ÇºK_ÀÅoxŽ/™hT¥ 0Ø¢p__ ˆõ.[TÒ Ó}K­ô͗Χ£ë£ôôÍ�Ô8s‘ã‹U¼¨Gt5ƒ­«eø'µ‘hÈDm®q� ÊêW~Õ ÒÂGy @ ¡~ºcv5Vý—Ø ÄžkVŠ]q^eÏöò¥3Xo¦?¾º‘&ç�ÒÁ…³éþî¹´Ê~òÚàÙÖM€Ü£Eu2{š“c«`ᆠ®y’ç^0ôOç³LaéNÝ’sáŒãå£?&ˆU=TÎyTýè›—±üíñ¦4ÔLð»ÝÚpœ—y|Ã]Ö��<oêÂ^÷2ªbªyXµ×²=øoLhÈ-Õóçl`É3ˆ ‰�6�ºAµS4auåá×�‰³Ð÷Y5ïsôéþ°–¶ûØ`3ývošžÇVÀýåñMC 3¹'rÈþ{ñ�‘ ÆŸªÅÊ?ó¿~Î#RFa~«9#<{íÊøêÍ�ï6ù"ºJ°ˆ½þ"ßü¡�|äß|ö3Ÿù³Ï>÷Á„åE¶ Ù …�%U+!.]‘ c[’Œ¼ÄZ¾& “Ñ',ÞeÀË÷åûì»Ð_‡ÒôØ?8~ލb’6o§s&ëF R ¶ÎR] oc0ä2 È›._LãÑGöÓ{{1f5„0nuVbOëµQAKŒ”»Æ&"°N¦ˆ2 d”ò"-RW-p·à§gàÓ/  3øy‹ŒÆzX=…k¶—€¡9ûåXuÆ(›‚»æòZús&öM p=ü=̆ìWap�“¹±ä6`/à$% ðO€¿™ð'^¶Uб,^‹ý0Ìhƒ¾¼Õ•Œû±‘:yë; !" #¾ød ó|Èr`“òö`zW;Í´ŒÊ|Rgë� €)8fB]u>›¿N|q²å ‚^ö�¸Ò<̳ÌË|cUßæ;ƒKÖ~3ˆK¦_æwÆŠwïà&xT}öóOВ➇ˆ§�Æ4¡\…'Ï:Ú ¾E¡Kh@a›a69H«ì{>‹-€šÇü5Tïï[O£úrº¶7Ã8«¦CÔèQϼypH[!ÔACà<ºOØ�üU·?ârÿôÔÎSÓ‚z�ðG¨ÚGå Äe¿rñA®úèÇž{÷ŠòÞgn@ÅÔ“ïiñ­N9ßñ‰z|:¥„Ó1�¸EÁñh›Ú7ؘ¢í€Š÷“{iëÉëé«gé‘‹+éõ÷39=àìÃ÷P%…ɶµú\d[g|¨~êÀ§ŠÑÖ dí·¿”Ͼ«Ü+­2r¤Ç�X­Þ¥rKiûfJ׸®nÒÕ­>[úé¨Î�ÂŒý9ãÕq5¡_˜5�õ¯Å.¯´o¬êSµÀßP N¾þ�™ô�0÷Ûš/Hi4ffnÍ74Ìß;,K0õi¾›^ûH=½÷{^�z5óîèi 2W ½Û@H ÐMb| ?¯#À¯k÷«ÎÜ´¹Ÿ(b‡ ÜoMŒÈ;jæ4 ÃoeËÅ �07�t¨>hy â]l‚Œ™;GØ.rîñ˜sýýýý´µ¿—ž¿¾ñîOþ£O:É,¤« Ùí/þÑ?ñøãúÍ_ùÕ£ç¯^í¸·wÀ5ˆå9׈Õ!�Ük2‘Ö¹¦¢pã–, $ ë½s[\�;öêî*´$Ñ È¸¤1]à!"thÊC Q]"]Ä0áëVWÒàÞËé÷wn¦%ö"7Ù‡tDÜûI]µTyñº,‘̬E«AžVC’5ˆLÃ*WµÀ¶@@)Àऩ˞¿¾Éd�áÁÂeÜeBÁ·€h3}„–Î!“é�ÙetKâ¸Àc'^&ã ß0«à�Á�A£É�U‰ò¢–*¸Z(Îûiä{58d ™éWH.Hn³Eúü.«Ÿ·*jõ^A!ªã¬6–(j·ÀzÀ xzAɤËðEÞÔ/†äþWq%Ó_ Ê<ÃçC[h7M4êà J…°‚¨¢>#V'‡Ã>í&Ã*}ÂUƒÑár%÷†{îÆ@$‘Wh5ØKÜnÛ)hÂ4·è£XÏUR7 ÈÄO°ˆ~~eFÃiä1QÍ~ÚEȃ0–k„�çºÔGz}úà >Z Sç!i®íí³÷Þú³E¦jÌV… ¾s5(h5ûÃqC­£s‹þ!M‹KÁR~=ñ2†æ›èn»\_9CA M”WqùŽ˽KSN°AQm Šo“•ÑRj À |‹•¦.ÇÊÒç-O‚ Ýn6‰úÒºíÿ²쯲ÏJÿ¯ÒÿUÚ¿É`Ì2Öf"ü*þ‡¬(b âášKcÆöA‘Â*m”äÆxú›¬V•wÕwX BÒÈâèXm×/þ´•£à0¬ªðîñ´ mèkhíÁVºÿ�”}û=0ÿh°ïŸóY™ÛÙ€€À­¾& a?ûò Ð:NEYÜšg<ÎÄÏàeë“FL&'ñ‚. Lá�ïóüç3W<“’÷ž^L¿§š±Pˆ½�& ÆŒ¯mmn=þ�>ñÿXò¢ºJ°¨=ÿßýcûh÷³ÿôŸÍ;Á÷ÐýÈË@S–BTBD)Tm_ Í.ûùŒjÀ»hß´hŽ+À.Á€²˜½7W×�¤ú¦ˆòÜ«+�æŠX &�ò_ƒñŽ:ê¼O É“½èSÈ,&y‘RF’»Ò¨0|©˜Ë±ˆT±ÆsåªXÔÁXÀ“¨�3¯@ÜŸÀ«¯ƒ‰‹ ÖoI0n1�#0¹Ž9þg·=Z_O¯Æ.ÀNîhÁµÕ˜te…Cçqá:H�?sÌ`xŒ"܈„û2wü`þ �5Ü”â!ßõö6ü+<¤àþÑ”ÕmŒß!qÔ²ý*ªálL'âP.WéO¯þ[Â_äJ†þë‰g\¯’±Œ••`àÁ]üùœO%×"ÌD«b6òAnY@À•±#Z|¯ûÛÝf¡¡=1œÚ2;ÚD�#òãyWhÿD§1ãs/î&Ýd‚…f-îÃÇ�ÜOÉc Îsÿú4œÆ*++íì¦`5Œ?Iµ 0e]¦oµ€Z'× Æ èïF#ía£ïƒÙ¦ Ôá?.;Ê—…YC �Fû!qÑ/2ÿ-¸ÿ,€Ð߯pä[›®öê òß©�ÒVžÎRÇ•Ÿ+ý4;C¿žë¦æºBJb\¸åœ"•˜ç¬“¾)µ5ʱðõmõþo§3Ž«)ã³�€ÝyÀVäç®÷Òóûœ„fcxÂØž[Ò�w&Ö‰/ò]õ[µÀbµ@ |'I>;O´Üøào àq4夽!»Yhã4¹ÏÎ' ëþ—ÎŽÓ;ßrozç[/§ó­„û;àÐÌ9‰ÓAÈt©3t~DÁ�–'¦dü’.8C uåG_B‚ÿ¨#éKÞ!à†s9ï釭æ|Oºipâ�Æ{{éúÎVúá¿ÿ“—ÓOÿ.®«‹Û÷/ùåçÚÍÕ�Í­ÞJw%�?s–Wõ˜lYýþ2°æ,$äG )ý¸"ÌhÞ@�•áÆË –eð/ð€ žP¥Ç)‰ÀÇÖ!H%%\9 5YÍ['ŸûQÿ{Û÷§?Øé ŠÜ\>“†d²7èè5¬a¯bïË•³¨.žuÓ廢Š9¨ú­Z`[@æÌ¹ÿô*[&ð÷þpO2ÿ0…€zÁØ9ÑËH›�54®´�XÁÞã]ƒD�S°œjŒy ]â¤` IV>GÅŸÓy�f.C(‰öMù«*n¥.XìÏ5`N'¨/Êô» †ëÀ±±êAÿ„Ñ#Ñ™ÁaØyÔ.m3ÛÉ�ÑKT�*ã�Ò>i&¡}ÕÕl>‚bDN �‡:¡s@Ûз3VQç¬æ¨F=…T{€–¦N0è«”CSÏa‚Éç>˜2Ã(Ï{�Sƒ÷«ð óþøòÙx¤‰i¤x¦{c~°O½œ+ŽïÉO ²ø.â'N˜²% Dªïa€Š“Fmއ2NÐb#¼h­¢áÑa^ir65ŽdµFÊ~7›²¿Ô”÷†Wî•Ö2ô7�ˆ´XÝÓè'Æÿnì¥k›©?–ùwåb9¾¤1tRºâ1ª«J(±ÅD›ïã7 E�·k¬Ü7™³å4�«&Z3 ç¥w~Û#é;Þq_:¿„aî[Ö° Pg{YÞªæŠ?P¦E^' ³F”¥aaï3ƒO¿3VÌZ&áϤâààH®ïœ€k|ã9ÑxÏû’ñÏ‘Ðôc‘P#¶sŠQÿà =síJگ͚àwsZhW ºû_üã¿ïcëÿÆg~õ×olü–«òÝ ÝÔfÿh ÂQõz™ýXÅ HJAøÅ½qsü)�:dUnbyˆAÞ7`ìëpuV¦j˜Sž% ½ ÏH)R€` 5ÖZôêºI}ö0 Øgõ§µ„1@öù 1l¥6�!Мաô™D©«‡¾‹<­|åªX¬ÈL[†™BÁ3ûÞç+C ›Aöä†g¡§Œj#d†±@¡³Á¶!Äîï6ãø¹þ¥sXÊN‹ÕŒ {2µ^sn2žË�FÙ]£ÖE¢=\¼çA¿¼7�•R/1ÂÁG.7‚Or4í¼]Éoå‹(‹x.Ë S·î5žWº’4¾Lú_‡+þÒ7Ï(õþú„%K õMF=ì&î#ÌãsE44PÑœÍÑ€Y³£ªÿ¼;¡O½¤á$Ø´Á" §Q%ónpi¸Ï|UÉW»@m/u€µ¹g+ ²4¾äPE¸Q-ôÈHµj y ¿Z9øºe†Ý†sf¢lxõ¢9ÍÛj}PE.ê© ú—44>©`èÖN9cØpη*´rŒÈü“aôuÙßöÍéq@¬Ê½[À±\CCpwõªVÿüȧ>µãÛÊe2¨j‡ª^´~üg>öØ¿üÕ/ÌÙÄçÚÊq�F2©.€ Ø-V÷oÏ&¿»=4W'P:„h7/¶mB»³OGz ÀLb×U(¤wñè÷ObSªØý¯ø+ÿ{TÙåû8Èz¼³RGø"6~È/<˜ e‘ ü²òeÜÝ^Ëê¹j�»»ÿ€Yá„þœs…1àÍ÷Ùqç `F'¹ Ìjä¯�Ú5`FýØðŸfœÜqCu(wx°—vFÀäø0=tf%݇p`Ϋ C7Á6@ Uü²‹Ðå:äûc!€ïŠ÷áÇ3õÎ�Ú�§õÎZ}2„â&R« ”ûLœ x¡ç&v­…±W} ¦wŽ ÅþÀ°mB¼rÕ¾dsM^ø·d_ø-U�°¡Ý²°<+ˆ?ÚPM�ÂÕ�ßF¥Fñ­†›…�å¼PÃðž©ç1Ð3œË÷Qsw*1ŠägÊ}T¡ jtÅpŒÞçÔ³¢¼¤¼9Œç˜ï®q5Æ{i²ýçi´»�Ê2†KÛgÒÚåW¥n÷’k$¡ödѰÝñqä„“Œ¬8P|¸°è q"ï\匊ñCL.ëE–Æ/„ÊÿûC"ŸècWóaðѪ(Wý5ê²�¼B‹ @£„ÖÉþÉV¡ìB\ŽÈµìÊ œí"Î&>!T7_¼·:äθ¹®9¿·®†‡á&"ƒ8~–ïÓWôÐZÁÐýćťxÂ(’„c:à»YtICaŒú�èÿB ¦ã�:7Ñ„˜#¼Rh¥±E�btüÇØ‹ðC¼²ò½�~T|þ‹¹—z_TôÅ’.HxÀÏq;ã†NtLä¾Ä§�ß8æ}AŸ®s6ì 8­Â-âÆwô>q3̺úO:Ò˜:_/Õ7 ÒøÕg.l „@9 ÜBZÁ ˜P°,ŽEs«Ž@?æ#Z©�¡Õ‹Sýæ×,¥oÇYâ|{¾àø¹zUìxâÊht]PJ<^ ¯qñ°l³óžû€Bò$QÄò=Î0' ü‰ÇÿW“Wî¤*ÀI[Tw/ÞóFc¸vmûúþ2ç|Ÿ_; …q%ˆ®+€ªSÊèC—!�gâ…2t~®`Ák‰áîÉ” Š?|Wç;c V±¶D^”œÜ»vL7…ö;îÒžü¹Ú®’-·9¢ê`+µWVÓï_KÓn+õ¿üT‚ˆ¨þLØãÚ;bße+¼ðر1ûlëÔ³‰paAð—U$iFH/ÞnÕ›ª^Á- ó)€å„r0›<ÄóéêÇôKxö}=†P˜@(¸už…ä°ØL)ð;eÏ}³y†X0Ú0Ô_Þ¤0º÷ž;›¼çRzà–øQÕí²ŠkaSpÊL#r÷˜u¯±JÍ¢.ø€{x­äk#$޽#ЏeÎo ¡`$#ÌŠCRqÍÜ@¥mjpžs ÐØ3í±Q° ÞPyÂãqVÄ™;à®.›Ó5ÎII4ªaeœ,KüÓd/¤:êVHæh)Yd× þu‰&¾©nˆ ¤Q¿1+!^¨øÏ¨KöPû\ç¼²?N- ®¶îM“ÆCðžâèÄ:VøU©GJB‘à,ñ”Fùøu%{Æ„òÝ2¾v¨Q¾Ø£Ï7¹e*(²hVÄéØzú›íÔÑܤªÂÆŠˆWêÍ~�àâÞÑA2 g�Ä‹x a%´BÐQŒÞDrýp䌻ùàL“Gœµ° Â4…Ë[Çø^eœÌœÒ÷Ù‚#ÜïŒò²fÃKÿ¡ÎOœ¢u�8sX&cÆ´y`Fç²5cËÊ`H úŠWèûÕ”V×1{1Á '   0ž˜3´{`Mí‡üñZnО‚ƒ=¾Gõ—"kyâ¢ÒÅcy_úe¬Ü.Ös‘�£Aa¾> }ï˜W»HB˜}AŸO8º«A{wÁ -úEƒ•˜ ºc§7OöÜNúòæ!õvzNÏÄL&¾N>W$¤œÜ —`Uå?ˆW�ž[ ‰E:² ÛÿÒЇqò•UHÝSÚ„Ro¡%Ð4Òyò Ƽv�60ú1DbÙf_òa„+X3-‚’A "nÆj¥L†¸ç/ã‚f¶n™ÄUšª^-�Y¥“ªx>}}£:¯¾I"™Âœ^_¨dKÈg‡Àèækˆ�®½ÚMÎên¥o;¿{Ý]�oÂôv[Ý`Ô‡0ÏGÂ#LªÀZ!s þagú•Z)ë›/‹÷QÑ¡¸JUq¢Ç%çv‰¿Ó+ñC„-ðÄñÖ<¬7§‰ÃïR[ãw*’(šJÐ�a“âæ¬O†à„â÷¸×`Ô`æk£#A`eü{ˆËÞÉÌÿø�ˆþA_:ØHÍþÓ ?¦aŒÓ5V.“µ§rÁ¬P¯¨?%ÍÁW¶Bfmm ÷ØãóA±¢IC¦êG[Db?‚ŒgÃñã}y�J|ÒÛ¸®ø‹ŸƒÁ&Ed§õ7 ³s~‡ÙY¿â/Ï>[f~6£ü9ž["/|ëh™Q/óµMx¶Ê~eÎ�ئñSÌÉ䦋gwïÍ"ÊD=”•cC�áÄeÒÆk²ž^1  9QQˆiÞÓî¶AÎÌ _À�zYVät¬xm®•³òˆ±}}ˆ–Fè�o¡F¨ aW&ÕîNZ‰CGÒöþˆSHRêM›éÔc�3„=nzt�YúŒÎÊGS°r/qDh¾•«Z`±ZÀ­hLq@€8�oO‰ÔA˜jri5 !ÀähŸ9r/=úö‡Ó›¿é,ôöl浂ö×HK�«@½‚+Y9_ úOv>`AQC†ng$Þߺ"žy(\6³È‡W‘á¦�3lÊþŸó³óD>Q^€…>üöÓÕ��ëßÿc?öÞœ¢ú½½*Àí-R=¿h ¼ÿ'~üw?÷‹Ÿù—7¶6ßçñ®ù0æSWÂ@aàCÂçŠbƒó¹„öL˜f?)2ˆ¸œŒ@ ,ŽÑÀI<ïœÀ�ÀJ �Ük¨{öø·ÜsaÝ4¼~ƒó¿û©åjG?q�µÇiuÝW rš¨æ«j°X¦rU T-ð2[ „Mü€! Ãqë]Þòü‡ê=+Ù0É{½~œ5ßõÁ— @c8V@j‡Ga(Èí‰ÍæÀ>« pC„œ0šuΛ¯sÔ¡4ÔXÐx ~ fƒob�CšÅÅÊñ�½ýùKã>€C¢b< "jzÄö$ò¬±ui::€�¹™fÝõÈ· órߢxÏýêœUD]ù³hY?!»2 |~I¿Œ|œú–Øù´‚DË%Šæ6ÚŽ ß’¢xwœ-7ügõj#úºsq—5 /\|×)ünZÂüî¨á©ûœSQ5ÇBÄ!îq‹”™êç~/ç ²Áå:¨UPæ¥O�iÈò µO&4=¸–×Y=ZE³ m1M¬�å²Hd™np8gM—ÈÉÜ*÷—j:(ÚÕŽÊýd6öTôpp'î)fÅž?Û�1ž<ÙcŸ…Ç;ó´±s€!@`x ³°¸ á˜�\b,‘È"ÂÙg^Ç9¸ú­Z`¡Z`¸�™†¹HA êœ)ãŽ1ÝšêápÏv5˜ÿ×¾n%}çß}mzäahþésZ8/GÒû_ÂYḽâJ\^F¹Å7¾Éá#Ä ‘Ögñ?¾i¾k ÜE€) µŽÝÂvˆ!Ý�›{¬þo>bŠ[ò­Ž[ 7Euóõ´À‡ÿÁãïÿÂ/ýÊîøÙ¯žýæGÞ�h‘‰]Ñ—¨’ u7V¤\¥2‚Ä“�›ïKb±$Ö²ÿRµ€$€ˆ,"ÖÁbß&å²§³…Þë9–—–`ö9ƒü+ä½] lA¨�2çžRUŠCå)ÔO­»úK8’ùÝ•«Z`q[à…aÇÐ à�­8q˜ ~€™³j07ô�å?|îùtóâ¹tã{qe%µQi¯cØ«M’î›W½^M·ýˆbf¨ò{1×gÈ f,POHpP�ÂÜJ�}ðéNÀ¼€‹`Ž pD¡~ŽvP•ýg7†WÓd¼“ºˆ2ÄS-ßoòˆ¾:V�`IŽ*ŽÒ#~c…0ÿuÊZ sÔþk›”&´úOX ‚¶ 'SŽHœ,-§ÆòJªa³DafÔK$W¸À�ÜŸà©üÎOÈ-�ïâñ–ãeâ)è±2K£Ç}~oκ, ÌÆ¹íý1sλSUËm©ù)òÍ^1'٬ʼešOãùèÞ—yFÑ=ô³r}¸TpІ^ü�4šÐüâ81¿=‰}êNÜW�§ƒé7Hÿg?rˆ¨>‹›Á¼¾ž‹³�0öº{ ÃÍío}üñÇ™¤+÷b-@/W®j�—×üøÇÎ}îŸþòüÚæ«w÷ „,ƒÀo(ž‡áŸAÄ °3ò°’-Õγ³¯Ç”¹ãéJÿtMrXNëd^D=Ž¢ôqÎ~M÷0Õ)kI–A"ž:Ü£?¹|)íAt•=A»Q’:ÚX…ž²Ï`î&Y‰É�Û3>.á¥o^�½tÂêmÕwC @°óœª~þ8ƒÃˆ[0ã"�xwBçÑ]ì#´žØë¥ÍÁ³éUgϦ‡ØZt •C݉~«™÷­gƒl+§Ê=Œ�DKƒ|UÝ. –L¡ÌŸÿl;P�Q!€‹r�¢*_G‚2¬ò71^4 °ÊߺùLš÷žƒÙ¿™º„7<•¸~âœRse°‡*?L¡û§ÅÑ}qÌ! Õô'4Â2¿G’"Ì@pÑÒMD²}„­’„åÿYÔ%ãD¿£…!E ‹æ%´ÀSÑØ¶ ”ïO|[�O‰··Å‹G>ü8MÓvá]‰ƒQ�8Æ-â~¤Î¶£„™ h²"<ÊŸüÊ·ñ_ëg!ír*½uÿ–µ‰ +lx‘õ´8Ûß*› Ðg�Œþ± !"ÛJäQ¶yåìrëÞtÓ+þŒ±6>¤­éË0zUL ÝUˆL5Æxæ AÆ-óØLÊr.s<�h%Ž]Yq¿Œ®`x/û'ú¿è•ãV¡�ó=V\•´µÝfãØÐî533ÁNš®íŽÒ¶D†0-ÚІ �ÌM™§bñD„ Ì)6.vãW_¿Ð- f¬;GŠ’œ“Àiâ)q¼'Îh7Ããýî½ÔL�>z_zã9^»q•yîFs³MŽ:¸12ÐJŒ÷Â�Z⽈%®@å]q±¸w‘Pœ¯/ü;çø.žñÃΘǀï�Â|ðø6 ®ßØüÇø©Ÿú“®KZ¶€Ó\åªxù-°¶´üÜõ«‡+¯ZMKõ¥Ôqï.Ôµ[Jcâh5ÚÅ [7&€XÂ)ré\…¼ÂoœòÙ›’Äã¶@P%eN/°ƒ&ÆdunÊ1@ëI«�´yá\ì줃ƒ^ì²Ô˜þ‰/ âo媨Zàå¶€°Éu VÀ;wux£h(P+žn/Œ‹8XãHõî §ÀH$à÷YÁcküùsé¶œis¬ j¾MˆAU~Kè�ÁHK¸M@€å«/Ê0X¤t�q€óPo4ýmÔC:Òz! Ü›¯qXÂGM{G7ÒÍ�/§å¹ªþ 8cÍ�•}á× íœÇ F@X*)K¬À~×,uÛ~7õÁkúV˜ïñ;œ±‘ùeNn›„=�'R'3Þóqɼ”÷Ѩñl…Í/»Œkós¾·unwæ£3Gãòl;HW&ú˜¹�!Fñît<ïãÃNãçÈ7çm!ÖÁ²LoI%ƒnŒH_¼óÙæ—G*Î[š(œÕ°XgstïçqToxŽúçØÇ÷ñªˆ÷‘Š;ôƒšjÚ²™bp°Ï8e,`+–ÏÃàò¯Øjfg²Z–-RY«”ø9×(öø§(0¾ÜÀ2N^úÇ ë¦èë˜Ócœ•ó¼íJ¿Ò—n�‘&° •ÙÛ†ù¨-‘>ýsmw˜®î¥›‡ÔØû?sï¿Lƒ‹ô•|ƒÉ¼Ê1tB`¼Ñ¯\Õ Ø ÓbrÕ�¸M(ð¦Ö[ ½¨V}?}Ç·¿6½åÍg™º6À‡[lýõ¸YÔÌ™%leLö¿Ìñx>*El€ÒùÓùAº@€îCÐì½ #mÆžQ “D¼1-p®­'…óñÞþAÚÚÚú·0ÿÿåöæËþäJ𲛬J` |øÃ|þ3¿þoÞÜùŽsKg!ŽPÛ•`%bY›ƒÁA  � äÜnz6"´;I üÀx\†‰¸¼-ï½�{ãå8Ò"®éH#]Ë$Ñ�˜«oZƒ^â½+ý¯=»æ)HãêV»QÑ­5WØâ¤åR õ2ç(¤ú©Z j�—Õ¨E �ÐÛ",À8¯ÄÉ;I;u{žA¨«‰Ól¯¢É3Ç ß( ¶o²ª7H¯FpwßújZÅ(;zXqŸ�_�=ÿZæpƒÆ·¸ÈW߇²l|Ö‹ø”÷<“Öû¨C°í>3jOœÕ¢ 6«„]ÿÞÞuêÉ*¾ùûȃP«Ôh¬ð‹ý¤S*öPæb#M­£ ¬X5ÎL#‰LÏ>ryý±Vü-Ûíq�C­tFˆá‡ ƒgB¹Êô>ŠÈ~qŸÙlÉ£wÑÅë|ŸÛ,˜{gû®•ƒ²L$Êò;î­_„GÐñOŽ‘ë™cD´œ>ÒØŒôqyØ®Áä!`¡¸c!ùçüdÈ%ôpô]Ì!Þó2ÇçæÔŸºÍ‘Š_¿5>‡ç2ŽýÚƒiÄ~´Æ˜Oœ+죀ٴ�=€”–×èå%ê'R;†$>©T^�"MäªÚ•%áeNGYØ{Ú&ÚÃ6RlvÒvy…žgŽx”Ž8Ö"šþ©×s¢H;=¿}”®lcTô¡€¹'Çñ‰ŒšÛ ¦(%ÃÓI‰ Û Õ‡/l ˆwÕ€C?mák0Óm7œÌÓ1禷¼éRzÇÛ.¤‹ØÞ†ÑÚngÈŒ ËÍtÖb[Üä�g<—ç“<ÿ¾'êð} ÿ•|�~¤ïšK‘SøfŸßñÂxE_å9 ÌÐòÚËÙCïú�è,Ô[Ø.}™^ ^fƒUÑOZàOžùÒw½ùÞo>lÕ[�6j»±w UiU¦\¢m �Ÿ‰E‘ iEqùP‚³áæ{ê™û·tçq>ÆÔ‰8æñ×êx!´XI£cªëªÎëA÷¬ŸO£3k©Ï™Ï‡½�ا;?ââdÕ…<]àt©9çê·j�ª^~ ŸJ£'‡¤ÈèQËü¬5$ýøpÄB_Á }'œÎ1ØÜJWv6Ó[¾éttòJÇÕ}þÂ0ž8¦È7 8A{¢rQF¦: 7H¦MŸËJ¨±$ã®1@B 2Ç|ïo‹<Î`——}œßù[æt|_ÜäeNÖÑVÎi£Ý „_Öß<³°€hÑŠúÙEmr£»(˜‡eäû" ×Ešðs m � ¬#¼–ÁôøZ MÀôÓ7ÔMဂûΓfÜǺ_–ÜÂ`Ίˆ–qR§\.?¿?iÊw§ÃïÞñªsìç^ôW L‰!ôO“Õ}to0œ™Ò.§7lìOÒÆÁ4msßAw¨õÝa7Øå×vˆ|ùY¼†­¾¸j�m œç<ÆD-›ò8p�–:ƒ´ÒÝKïùî·¤K@ÝNjwÑ Õ’BIA¹ø[`³~ \�qŸa¸ˆsOY•õOâó =^ðÇ‚2‘yò®ŒïÝ ¹öÒ NAËwkkû-?ñ‰Oˆ¹+÷u´@%ø:©ŠòÂ-ðéOZê­ûùÿþŸõGG�‡xuÝ6¤L8P:E¢è„³±1o›€¥÷ÂX ¯¼ ¤Ám8 ·8I@�w¿ùáü•08ÓÄXê€a�ÔÑÌÞ@Ì“¿––YQ;<ØO¯ZZKµK÷@u×Óoï¥ÍÃ^š®ÀHx\Hoœ:±÷¤A®Ú­'L!<Ž0ìå™Ð/å¢Ê/¡zWµÀ]Üî"óGÊTå€Lx¿Õ¸q=Ι‰•±6õ{0Tþ…]”âÓzƒ�4@IDATǯí3©}åËéòj;½á�{ÒýÎ -@Ãú%àt¤Žv†Y†?.²&»Ø²´ºˆÝBmXhF>[ë,D�alÀx»Æ¬zq“sàVVÖRsŸS†ÛØ#àØ¾&[º]�ò‹ÐZàl1·',­tÁ5¡ü¸ÎöðòýRøhë`Åø‡fš¡ià9äjJ±[‰ÓÄd&ÅP)Â÷7+l˜ó­¶¢ßõV``\ó1KòÏøQÜ™ÛU¡khGEê $BáEÄæ¹ˆç·Gã™[bÄ;Ò•G¶þÄ�6‹{‚K¡IàuÓSÏ2o‹,Ê‹úøÚ ÷”Ë-dÞ8ÓøÍ–‰+ßy „uÏ´}4„±r /?êŽÿÔ£¨fŒ³È“póÈ))«¨k;ð;y© À_‹ùË–‘ùŸpjŒC<Å·ÇÀJKg6#¨™¡2¡óšœ á\“�õËw9Ë)?ºŒcìÁ²Ÿm•üT0ñž>¡ÙJ!�[e0LGo÷¦éËÏÝLÏo�RoÜLCŽï˜J¨•ÁÜ=Å@gÛ(Ƙˆ>Š1[¶é—ýB¼ÊU-°P-f&ÚÐÐý}àØ:³ÖÆ®íséü½ãôÃ?ømé¾ûz»w<ŒÙ‚ËæœÐDÓ¦Žf^ 6ÏØrKp:n¿ W%þ_)ðbà^"–̾¾¹8W‘�8Ó]~Ü0�3ߟKÌó´‚sÔTá-øÚ…¼­í�ôÜ•+Ÿ�ùÿ3¢UîëlÛ´rU ü•ZàâÆ}«纲y –U«.gñN0¾ÉèrEèå÷ÿ³÷æ1—%×a_½íÛ¿^§{vÎÂU)“Ò�¢©•Rà¢$ÊŠDi´“”AK‘(F#ÿ˜òG I�¿lÀ âÄr,Y1bÅ1l(R”YàÄ€m-”¸ÌôLOïß¾½ýå÷;uë½÷õL§{z†ÓÓ·¾ï¾ª[{�{ëÜsN�:8!#†Wop>�á›ïsiiúˆ¢“›€‰€Ç‡9Hœ£ÂÛbõf `Fþyž^[OO¬­¥u¨½†gsc¡»#á* ˆÊNºú3ò€až·ó¯t½ú êÔokäÏv!ãççhvùpÇÜ© 1_FÆ®­±!.‘ň{Ÿ9wÄþ÷CVe:­tƒ-;WvwÓç÷ÝÞãj-6ÐX¨V œ÷ÁÐ4ñüD³vÌ—Û·Ü|8ßU"%ÿÌÊæ´|Ÿ™XÃ\_¹¡ãáèWNËýš�ÛòŽ4—›‹÷yD9UúËØ"1¶’šhsVG“gX`\úWÚµÖXí�2ŠÖ]õ{–§Š�ös~ÓÂáQ}\Ò³†õ=�ÂÏØ€ýå]Vš�¸z|_P7çø˜䓨Uxœ/‰\k%ÏËœqó×Ë2܇+Ó±½Æ§Œz†_ÌU²„Á`…f„ÑþOû“0þ·?„Ö@*0TGºïA`߉êç·0¿ ñ ¦B›ûäõ�kqä‚í},æŸXYIgÙrw¸s”>öí�¦§žDÞº }¼ÉÊlø.�Ѳ+ôvaÌï!ó4ðÝó9‹ÕîµC >ɯ={�³†ÀË!ð‰/~bØ^Yxxçh7míoCÈÃ`»ÏQW…0—ª¨à* Â¾Œ<˜ê™jÇ/q•_!ï² ´@0ûjm®–Dž>ä�öòØ0?÷ 4´„e±SøO­¯¤w³·øV W9›»ÅyܪùJdÄiÔ,7tå £6@íjÔ¸5”Ë;ÓÊÇÜœÎËYÌM¤·sÜ‹ªø9wÛÎ_ÂæÀ½õ!Jz\ú‡ñ]–cûÌËØŸßQõ^f+ŸÅž©ý¨Ž�zlدš×|G¸·ÙÂüëKiéÛá´©aDlÄpÃæVùaðôÙWŒY>.ör¡tHÇ €ì‹:G^-öù·Ñ\Ð/ávÄ¡Z¾é%Í8nË¡[Ž0!„j0ºSÙ&ýÌÐ!ÎpÜ[²º"Ž›CñÈÞ„+ãž1Þ”%K®7×_Ú3NÂk|óùJX"¬0Ú¶-ìM›…yfÆE¼\¾r?sZÛÊÛë±^Ÿ.úd4nVWÕVÔ›µåÌù§aÆPâ¨3ê®úá¨7€±Ñ?•²HÆ}Σ1Ìÿ ímuÓ.Ww�oY»ÛFâûÅÈyœEuÙøËœqó×Ë2ÜWå}qÐ>!¿áñ¤*Ø•÷Ö§l|o!»¿´9H®°÷Ÿ�~C·ffÄb�Ü‘a­¥>gj¼-¨<+&ÕgbjWCà~„€3­ƒ¤s�-MKm¾§ã½´¶ÔMú–‡ÒGŸy4�[Fà ÕÄññ­R ˜ÿZ‹Ç˜\b³âüŽûÝ06?ÌãÎ.™ôã>Ç›U¹ÈVáTgª«ý2þ^¬ëåzÉÛ†>÷È¿+W¯¥KW®ý pEÔ0ßL~uTŸÙWÏT§Öøzøä§?y¥³ÔùÙ«›×ÒÖÞ6ûrØãšjøάàŒŒ*ÜpŒ š"�yt1ÍH7Œ/Á@U�ÞŠ0$"¸ÌåémÚ_‰œ†FxÇú2B€Séq„+œ×Ýr|*ƒn $8ÊŠÅkWC †À-!P桟Â~´cÖñË<Î@Ž ¦Î¸*GøZ.L¤8Â*dcã{¶ï™ÓgÓÙ³g9)�väð0øÁqí¨“Ÿ(…ŒAÛ3w �ÁFÌo›âòšÅ+0åâh>س…ú0ÌøµîQ õa/ÂZwu1 ;ª±Ò·¬/¯¾¢— ‡Â­xiQÖD!Cå—pí$Çn§\ýoÐn‚Æ:R“.÷Þ0ÛðœÆå|ærËn.hù¼JNž@Nœ‡G†É¬pÎç=y£í*md‚N˜¦»”Ï} �͇�¥ų̂'žK ÒúJ K Z>êÈ‚Òoãl³\Ö3Îå`ñ¢lîs„i2×—ÛŠ¾‘G Ï¿æ•�ôI£¦€îX-Ö {Ï‘séh‹øÝPXBd^àòýÐ�Êù­Ý+A@ø8Û3UsØ+pVù”2üœ¸ñ—¦|ÐÒú?F·ÊtÇœb-~»ÝÄá3A4ÇF�£¦\W™¿ú¹ÞL#pS»÷›�‡ûéÌIïÝKliº˜>úm�¦ïùŽw§3+œ‚’®ƒýh;—˜+NP±tÌQèùò�¯ 7›Mæ­"ñË,ös畱¦Y¯•+ƒ®Šÿùs‹›¸µåw-™þeŽû×î¡xæc{ëoüÒ¯þÕÿ¨Ô\û¯bÂÚÕ¸+øÔÏ|ê7‡�á¿ÜF `÷pÃÖªÔÂüƒ ô«÷7%*_kó¢’™E¨=¬!íÀM"ñ Ó@VF‚(<îo<ês7š,´½-€÷s:À#¬06ÙG슔Uï Ô®†@ �Wƒ€sÒÏH¾Ê‡ÜØHá[îŠjN…ô.÷ñ�—áÇNH«ã Ñî w‹«Í‡ß­=+þ�Ÿ(=òÀJ¬ìõ8æsÌE£%¬�·Øë[„³.“Whü Æ¸¡ù`öìœjåîå÷È· m»•Àm#l‡ŒØé5&ç0]"O„ ™Ú 4ý6¿ñsi†Kñzàv+ ÅÓY·”Ûœ1—%›§Ë´ÑÎè° ¤‰¬Q¯¶öw&l`õ¹;Hƒšn¾ãtÖ«¸ü« KÅ%±ö+øÐœûÎ[Ÿ…!¯<7F2U˜ÓAÓåë“tᥭtmŒ>æ3Î#æMi´dÖ°Y'‚¶2W|°ósÑ:c>ÚXíjÜ—`ž4�RŸÕÿ'žh§ïýÄ;Ó“Ot°§qí¦Ã´Ü^N­Ñ2Gz”-ß&fФ�¾Ùåê‡0 ÏXq\5Ÿn Gæ_|×ÌUåœÕ·Î¦N\J°?tyÌÔé÷@¼Ýæ×ÖÖv¬þoîÿÚ´\¸m°ìP»w×úWÎ7êoîl¦Ó+gcuÝ îy£¡Úëw:"^_»Ö1/åÕ~>ïD(AÔâ/x‡2.y#Þô8?A@µÁsÄ¿û�Òó­#VXÑ9:Š~ª�‰H;øêÎÑÌ«g«Sk¼M! QÍ,€‘ žÎ»¹i“ƒs3¤š“ü±‚�¯ ÎüØðŒKÀ€Ç8—ÎÀü·¹w¥¯‰ €†?ú-V/hŒ3@اHûöÁ:¬¤ Çì †Ÿ¨àËJÿô�À‡ùD4¬&Qœí±«þ±*o}üËX„£+Œt’›¢®Ö@ÕpÎ þ±?æ.2˜ bŒDx‚ÉJ8�û{œy¤0©”7@r�Fäpùk��Ue"Îø’–û”é-Çï³Ëi.„p©‚se�×cKQ¯бV­�-תËη]å±mó›Ë¾Lۯ‘%sº„`À4·•GI¦G] l­Tl5¹|OÌVÐÙx-Tå·}žMÖ`‰J¢ock= gšH’‡Ô7 ß!+aÏÂZ‚ ]“�E[à–'Æ8{V|s×.&‡ÂáB€<'y¥Z~Çãµà�Dû7íîÓÅË›éy›`ÆÍU˜f?é òb۬úûÌcÞw-­ø$³+¾Ï¤v5îO(Àî´û顇×ÒÇþâcé}ß´:¼†@ó:‡ëtÒvn&ÔŠÙ‚¶À˜£µ'¬üO8ÅÆ¹¤�[» üÎéÊÌÊwù·B­‘*žâz“«¹©.üü pû7à´1ƒVý~?mmn¥+W®¤ýýƒŸÿÂ~ýzU²öîñù»ƒru‘·„Àç?ÿùAguõ�W68 Å{ÆHB;>ò" Wèù• ¾¥“<H @ý«nå ¦ù‰'Õd]²H�JA�VÒGî®f--j¸‰¾ì¥eÔþŸX[JOs¤Ó£ k,lAÐM@tCú:öø0„™hÈuÙrYe¬ZŽVˆ®] �û1#7¾Àt:瀩ÇÜ4ÝÕìæ 4’;£°ó6Tý_•ùazä¡Ó Å!Ðk²'`q™=×lÝA€J\•pnæy‰ÇüŒßèOTëmåbA›Ü±òl)2h0T-÷ê}°õ0�G0}Ô¿+.‘쇉ÂÑV4eš!Q¦÷èp–  ód‹ÿb�Ù5Ã-ä§�ÌŒ}²~‰3j'? a€±28…!ˆ -zyU—J8ûT'ˆ¢®xF‘«¤‰‰mk“©m�¹xáåv‰™o˜rѶ8‡3~Î÷âízÁ›�©¿ 1Õ⸷Éà ƒšG‘µT ·�‚ Ãù²½¦_d_ü‡ÐÖœ……‘èC›#›à£a{)õÛÌý�€,GâÁ8m@ÂŽ|”Χ ˆÝÞä˜rk‚€2"piî†[›¨ œI8òUõ=„¥&zo'ÅœÖa%2büegœáœ·ÄEQãr êw%¾h`™/×k_KY}Ÿx{Úa#goP ™#‡s9ÇYÚÏ»gG[?W| ª&dí�ïaKNç6êP�aš¿‘Ïx‚ÖïÕâyëâE׼¨~P$Kžm†Ð_HˆïΩ”–ø¸�drH�|o�hÅ÷ŒÊ|K’Œ-eâR˜ŸçÐÍÎþWÂÅ/ñt0\ñKü½åûŒ´�Ðdâz 9ëO‚ß3¾[�Å´w8NW¶GéÅ«;éòöQÚäT†Cö%7Ø4a_ÐD‚¿¼h´³~çˆõÉ;«b!AÏg¾¿7ÃÔ„ÚÕ¸ ‹bÕà¥4VJ·R!@ij_†£û:l—;:<ÂpÞz¬ l¥V{�–WÀMƒËé{>r"}ä}ÍôÐÚQò�kB›ûEsv“ýO“ñQ5W2.þŠU'‘ÿ,—Å] ÎAf#SËÙç„e";àGä4û-mìÁ·IÐpÛŽ´5­úÅSÝ™E:¿õÛ;{饗.#ÜûKŸýåßø½{à ½å»˜ñâ[¾›uïE|ÿ�~ÿß\9µüåk;×Ò¡{ŠÖ—Ò`Øãê#adÿGx8Ñ9ˆ(¸üÕŸ9±‡—D’˜Ä.ç/y��^$å\³z¢ "çK-@À�†vçòRzÏé“éü"Þ€þõ1Q!¡uå~å~æ:‚`4¢v5îk8ʼÌóÁß|Åì&\|â�Oq1ƒª0_~Jp©¤4�ªnk·£Ç0ÿGh�Q»Öh „E›|Úú Š‚r«a$­Æ×M¸FÕ(Û’IFZÍ Œ|hÀœÛ�QH0ÇÑÁDó+߯Æ»'iÁÕÞ`ÅÉ®P�p¬Ð‹ÓªËÁØý)¾àÞ.qÅVÚqõ_�ƒø&òÇJ‹ø'kèë¢~áuEæÈo™ìªº«»_¥E™’^òÛ�Ü¿c¾ý§�‡D™÷åÊéùÙÛâ}0ö�+4Ìkü´Ì|8ç5-—)õá—~Viæ™Öã4/åÍ'œ¢mÆé¼úÒÝñú¸1…`œ0Ã{Ë‘t#íWð^‡ †´¼ …À-]éb¬ÜÏûÑ«[¾gº¼_)§Ï¢íÉÌqçæ~¿™®ïôÒ5®Ý.Û`BÀŸ5\õ.DÈYˆ±ºœ™ù©û;ÿîåwƲµ«!ðv�@™ �5Ù¡áÆ÷³ƒM!@ïð ­­ ,iøïZú¦÷œJßúÁÒcç›l¥ƒùg¬Á>»¹øFŠæ4¨ÚÐߢfgà>ñ �à?ú=Ïø*ps™[0ýS”Y+|xq; þ@#Ü|oâ–ùìÌU0¸ˆ&B!}·ÛK›is{÷SŸù+µfþ�ÏÝp¹v5Þ0üð³Ÿ|�F÷»{±gr̊Ȉ•‘«lc—ò ¢ ”ñ‡Ä™HÂ_?܆s¶ ÝpS\•PnoÓa A:ëë­ôöž^;•αò¿r€äm�«†n[ðR5¹uÞ9ÊxH\È؃ÚÕ¨!p'�ôg1eˆ]cˆEçs¬� âsqÀŠ Ç€M\.…YÌæD†“/˜+˯tÙ£¼êì,µ òÍ ¢œyf}"Š}Û ãb!€¹ è”ÌÀ�Húz.·ŸsƯ”±Wa5ÞvW…ñ"=úVðKîUK)þ2¾­ùp)Ý­�iîúÍõ–{ý⪸‚„K4½ÕYϱº¦ù„·9æëœ Ïå3Wy>9<«3C ·àJU½EµÚFÔ L§íRO©??¯Ü‡‹äçÖîÃ_šç•Ì?«Ð `‚bLÄ£h‘6ØûáÚnzñú^ÚÞǘohÿÁÇh´v5îWȈ£ ZEà” ý&­=®hVÔæÁ4jÊz©JßÁ�Ns¼ƒîfzüáVúØGÞ™žzò¶Ø-‡pìTáVæ‚J¯Ûu—¿”Ïß¾ ÞôCŠ# ÇΆWKmš—, ,ŽbhôïÒå+¿üìÏýâï–:kÿõC ¼~Ö5|œ{שåîà(]ݸ®±tFœß»“Zå%.ZÈ ?Ä–w•t0¯ãš@F…Ü ÂIæCCN."=€ªÔ»NœNïZ9‘ÎÃä/s< Ý£Õ,•tu�®sÍîëUͰv5jÜ>œ ×\9äUÙ0V½!ZzçÜÝë¦{4Ê ¹_­`þ33h=�¤"œ�2fv'|ÓªxÒK¼q2p±á`ÿD=äg^«•€*·WC¿šëÑV®Å*¬Á[þfÓ …ð1Ì%cr\¶—U–ý™\µ’[ŒˆiL¹ËãžÕ_1ÇŽ�¼1lƬŸk«Ò£á^ÅO™P¡S]WÕQ�ÏüQg¹�zs¥�ð«²7×5½¯Ú/‚Ÿ\6ׄ`Õ‡i[s÷Q†ûxÔôçæü¹�ŸËçç\ÚΰÊc,ÏÞ–J¤�ç [ï¼€gn¨Ógî7i„ª¬{eûÝaÚç]ÝAE}!÷€UlÍ´Ìjö*¬¨¬£Åá*×Ä-#Ôjxüe|_ð^“›öâ5å~«gò) ÛÁ\g~Ëü£%ÑDë‡-È0,hSž}xü+XüîÚAzáúAhLPSö¤fÌôY¼ÕÇZ÷¯†À݇�=ÿj"…†l“mG­}Ö*m9Zä»)ŽZ__H+‹œXrt1=ö`Jßý±'ÓÞwœÔcuýˆ-¹ýØ" ¡=q”Ìÿôl?Šña,#pæ7 ‹i°$ó�UXZñýUÚ„~Œ bØ·µMm®ÄÉT«?¤ïÛÛ;éÚõkÿé³?ÿ¹¿u¬ÒúæuC H€×]K]A �W�À'>ñ‰.xè{v{;iûp3õÙË;^D)¥$€ôb �P/RÅÈKK/äVi"¢ŒbD<3äó*Íß:‰†›P#ô6Wúãô4[>pòlz¢³”Ö8Ú©Ã ƒç +!°M·‡Ú1ý’IQÕðVïÖ�Ö)5jœTª:±ò¤–µ#R"5_˜¨íÝ£ÔE £«ñ ÌÛЈ¯Á˜RlÊ0’Ç•þÌ`ßäÓNä«òÇþc#ìJ•� ÷1ÇÑ8h°GQÛ#GžRãA¤f¾ Ê gTϘræâ;èvPØ”I^¥tI¡ˆ U÷Æå&sš�Îq‚m–ßölËKØ‚¿bˆ¹Ï€†b2O9~ �y cîgõTõ)-µÎRô/ç›¶aýUÙ°»PÕí˜6w96¯¢öoÝöoZ¿ýŒüy,‘Ï>X®êƒùm.¶]ä€àfy¦}#n^À\<Úð·0ý–Ó £ª©ÎÑÓxm<øP<‹‚Ýméfuw ¢�ì*á � ±Œ6‚l<„MÕj9Ä.ð²B[¹ÙE˳Èòà_1ï,Û½â-dŽ©àw Ø�ï+Ûp€Žîx^ÙNéE4+.lp´00ݺUf1ŽfÌ_ßò¬¢HýSCàþ�4q6ø‡Z?Ŭþs²•*ûÎŒ1LôB‡™2Ú‡ù¿”8ÝK{æáô­8“N.#(϶WñµöhdþeüÅ—žˆ•qSÁEóx*&í¬IGÝäâ[ÇwO¿¤.ñÊÙ½&àQío»^–ØÙÝÃâÿÕßûáûé¿vSÕõí]€ ¯] �7ŸúÅOþo « ÿÉ�½ë|Ä÷Rg­•¨+!—ÛÏbªbö³V€ØÁ× þÌ[>úÅÏåoÿW d ‚ƒý¿H@OÓ�'V—ÓSë'Ò9ˆò…^7-@�¸?Xb9h00cFe Ç@À­Ý~ëu‰÷7\õç£/ƒÌ<Ѐ Öøú6ì_l¤]=„sLÀÌ( °@ Ì}µŒ�9™±‚ò"â‚“”’©®Y¼e¸ôHËÉQQžÛôAÆ$¶HˆxA¥¶7®«ÚÎÕ¼æß |Jn©.Vÿ±tVµ—µP2rsn:ªˆgF_ð³Ö€#ËcŽœâÔ€ä¡GmÄ9ÎÌ8Ëø{o™é¨Hô>jÈa[9v_¥E¹\vVON‹6r/§B€<óW× ’ö܇aUŸg”ÍB€ùºŒ/÷úÑ÷ª�RÿñtªŠ2bëWè[ÔQåÁ‹®‘SÅ—ÆÅÄeZU& Pìq|4PÕbUں㴿=H{Û| ÂÄŽã(-·pIíZ±B€0ißt6x³3n>¾„K|¹¿¹Ü½qÓ1° v#Œ€a*¹û°üÚ¥nºp£›®ì# ì/bÖl‰2 RTkfœ|÷Æ�ë^Ö¸‹`Äb8<>ñ˜¾¸ü¦Ú ˜úu™ƒz‡—˜/×ÓG?üpú‹ßúh:½Œ¶@‹ÿÛí`è´Ã*¼ø­Ïþ%¿Éj¸÷þ8þ9ÞõhÂùGcs–tSr\ä‰;²)p®›­š·#WüÙn;rZ‚çuh!�«‡�°«×o<÷?òÉ"µ»ûðkT»o ~ô~ðߟ,ŒÿŸÝÞvÚéo§A“}JJ*Á å¯ ˆŒ$2�[‚ûžïæM˜d>é5†% µ"¼%Á!\©Ñ¦u~êô©ôN®sþKP"m�¨LŠg–˜1#�”+•ö«v5jÜ)œõ®6”ÙqÀÜjÊÃ,yØÁa?ÛpªÁ0‡ª¼a™E.yèÌă+dȦ÷ö‰t©šp†Í[Ýâ.Ìœ±Ò$2Ô±µÇ9® ÀÕy„jÀ¦rQ�e-®¢dÊíM~i_âgžù7>JRøslà5l!_öÉ?û…?½¼‡±ä2ÎALÑ£ƒ2¿¦áç(ýÌøÓ?eüÍ3/�é/÷–å 8Waï§E£wÇëÍÌyn/(¾*OnÇúi“62,;«§és�öM¯êÕwÕ•Û,ý¨ÊF�Ä‘i@Ó÷Ä2ö7ú`ظY}ùùçôÈ#8pf M�ê>"ç~L·­6ïFÓ=éØŽx_¸úG®ܸ:Jœ8›º‡›dÁ_Ëÿnˆ÷Ô>9ÖèWtÊçZ(Áh©Ü��ûrÍbïÉPÌ5ÞwÅëÂD투Uñ�öÄG-~奭ôâ�~ÚèvÒÁdÀ2»�™“€Î™’áwO¿ît �»�Àöú©9‹Ý-ñwZ‹‡[i}í0} «þý¶G0ú×J‹“½Ô€¿øâTx²)• ÷ê³(öõ36ÿ}:=ŒR·,"ð,ç!y†m,LB¨@°@�ûW»5î™Q�ç“C .>3Â}Wdž­>Ýœ?+ßTñ¥ééT/fOF‹Û¨—ŒUž¸¯n�Êé‹Iñ±Œ¹d7‚{¬*�ɽÂí:©‚À#Ÿ�ÛˆU}š ¾òiü1®Œ'Ë}ÉGßc ö*�¿ä†WdW1֙Πz0ÀÂç“_ÝÇPË8eÜ« èXÇìšËcü\¾,@(õùLÊeù½´ò_êó>÷Õ¼ „on#?ÆÜvõ´Ž§S§Ï~šZŽº—«´e¾R¿Íd�@®"ƒ“tª‹.X5Wq†]%ó[0mw‹±w2j§£}ö®nvc+@¿Ë× Ýl�Ëun;‰97\UWj.~žq·?_ö­ö‰ W ™¡�óÁ#Þï·Ò¥Í^º~0I{ƒ…`þÙ˜FÝ/œ­†¿ÕÇW÷¯†ÀSÁ•´š³2þh!ðĘå…A::x1=úp#}ç_|2=þö3&;iZv™®~ ;4]‡H(5Pª®ÓñÔ¶à"¹¼ 7¥†E¿¸LW¸Ë�S…G§43Ì¿L¿BT¯¬I屪C4ÿBõÿI¶K|×î ‚€_¢ÚÕxS!ðSŸýñöâj']ºq1¡ÍkÝOGCÑõ#+ò®…É´vö "úµ³¼hQQ.aä¢T(Ô™Å[ˬ,´F†éÜâBúöw>‘[^N'AŠ Î)¬X€1à|TÏ4m°o)hÍ7zuc5Þ>PÝoЗø`0É�›†€Z-˜¦¦Ll¥ë *Ãni¤ß•øj‹/Uqn2UÁÅåpƒzæã¬Ï2ì8$�Ú–á&#š?2åCêi,b¼m‘3ˆ±D¬V@UÅÜOV*hc"W÷]¨,3>�cÔ-‚[š•ú?¤W´áÁð÷E»E÷iK?w“0îC ‚ç–Ç£`` NË‚Š0t•Yx‘ÞpÅGŸkžéÎ ±õr ›h£ª£Üg¸�7ù‚>_yõ½)¯ÚŠøèGnûXü\r¼C³¯æ%þñrócðq{_âblô4@DZÑë)—jû®8«ÅU壡ŽUhâýð˜oú ™—L³|„ýÈWˆXTÓ y�aú»‡£´ÅÞõ=Žôž¥nF»=Z;®xE?¬8jÆÃ÷SåþÝ™›OŸÅÞë!Ǩm„!Âôpi.œHW·é�¾¼—ž¿²—.\ÝO7öFépÔI=V5‡06ÚÌpžÌCç^‡CÝÿ· 4iVj£¶›Ëipž´Ó*GÿuÇè¢úÿŽGÛ黿ëéô�÷ŸeÑj úv3-ˆû`­e¼8þ:�õµ± &€ß¨••Uºt+¼ãìË4µ´´øjÞÈ_ŽË3TMªR‹§ÝdÁ§ßŽ)„Ùsôà §„”©Í÷pks;]|áÒO=ûìç.Ý6Lê·>‰µ«!ðæB€‰ÏæûÖûeþ7÷o`°'4:*«nBcx†iùÊ2ëiF.³ûÛ‰?Ñ�‚hƒp†0yD!X´ªÿ«à¤÷p<àY�e 陥=4š2I®.²¹ªtðö›¯KÔ¸ï!༖ó–x� hÃmɰM™9˜¿6'tÀ÷ƒ˜ŸZVó«EÞÈŒ"QFG=بÜ\å"Mn—‰Ê‘WUŸëÑï9BU{$× ARVçcÀ¬QrROÔvg?Ñ+0ë€ ,ÚˆA8ÞŒõ�⮊«â«{€Eü,=3ñ9ï”a/Œ;~V=ŸcäƒÁç¾ø2ö%¬_ýˆ+°Ô7_ñçó•<ÆÍ¥—üÆ•6Šõ”g‘ˇ&@”QMu®Ì4onßç—k.}¢^ãsÿrz<çª>ãó}ÕE³–zvI‹(RÊ}tÝ{»ã€�+·ªßÂØ« Ðà(ÀÞGYîö9�û@lˆ@¡±J:Goa€m¯±÷5¯hóÌ¢ÔÉ»§`à¸+o\ñ�§Þ‹w Ýò3fØ!g•ŸíƒNº¶;No¥£ÑBêO  œ#^jñ¤xF É^»÷)¤G'©?Q€†�|!ÀRÜÂZÕÿµ¥ýôíÏ<–¾ù}§Á;àìoAÇŽ`¼³j¾³I<šqé+òÕñ�ø/»ì‹_Ù�EC¨)ÎÌøs}e-˜ÿ6ßÙ•¥U¶Ní¥Ë—®ýγÏ~ö·^¹Ž:önBàæ/Ìݬ»®«†À-!ðc?öCÚYnýÍ­Ã�t4Ær)GNL`µ ©_@\ “[!”[Vÿš¬µœ‹3¬Ò®«üZ&wßÿ LþS'O¤§N�J--¥Eî¡èÂZ1ßÛNÆyâJ>¶|÷ÙâÃQª/]¼rãÇ>õì§«Jjï †Ð¯] �o ~ä'~诧…É•ýÁnÒ0à€5€ MvÛC°Ôù+!¥»Õ_‘Äšuå$žUFŒ“èÃËwŸ9“ÞûÀùtz„Äã$«P!‹¨JIͽ"Ò,µÕ~ �·‚@ M™mæV¦ò²hÄ †G­®°2°‚EbµaCàŒ…q–q**…™9ðž|qe‚£´]Vü˽~Ȉ8�õœý�OÐ$\ªãCP¹GjÐnæeÚÜ�EïЉ´cRm`�š!yAÙ}ÇQáÀè�¼"Ñq‰²HËùˆÉjøŽ?îMÅŒ—’Á¨WŒÿ1¦�ò7êÍ𛿯ÂÑÒçüÂŧ½#Ó‘Â:ù²êS ÐvjLõêà­SkÜ ±v!W„Œ–Ô†ƒ#ìÂô�Ò™³«iÛy¶ªÜn°Œ{ ½Äà·¹+ÇoÈYšgê±}‡0eŽÅgv0÷yŽ|ÆeVª¤ÏÂ*>DÃå²~ÂÁŒÍ•�|¹�¨‹ôª{7ù>+Š—>Q.vë·Œêþô5CÀñ3¬ªQn.-òÍÕ5­s.�pqB@p—]t�`0þ6K¹Üòç,´o_,Ÿ#Ê“)}TseÚ×hײdæ¿%sϹõxt8N›¨µo\Ÿ¤C¶8Ñ'³ÏÚ¿ÈêðtPâ�\¹Ò“rÿöðcTÀÎùìBà«ÿÏ_Ãò?«ÿ—w'é`Ȫ Û$´Ð"Ÿ'õ4ãèD ƒ\qíjÜ·h‚7‡¹o‚6À°¿F¹žž|l’¾ûã�¥w?Ê÷ex-õXýç[6·Œ˜OMŽÿC TƒÆk…wgøÜYU&×íãžR¢øåáÌÛ(qbfi€×6Ò¥‹—~ùW~åW¶fiuè�†Ë(µ«!ð�…ÀFÿá…õt©¯!Àvc…Îx^2èŠëeø—EÜyß%ëÜs ù�1JèÏmŽ«vMY€8éôÓxúàÙó:éO6PMÁ ¬­c¼H¢øfTwç}ªKÖ¸¯ AÒŠ½½ŒZއy8³¸‰öÍêBzðÁ3i €.ŸŸ™~³j�]}¡)SÎQÔCa¼S3ÇÉD‹<æH¤ñSœA2ë©O%2ÿ±'�º£4 gíRÎØ.½6ß•~ �Jà ڥhé¥Li›âؼ'\ú ê‘W FÑÈ83ä~Z‡ñz;Í“û˜1lά×UT®‹”—e1Âè›ÆS¾¨ß,ó.ò䌹{9Ãñp®ß¾—â1þKIËíçtÇHoH�1ÓÞTS£j;Ò~”ç?Û�àE©àh9ËÓ2îÜÿª=êQ0m�ûiß\ê’‘-mÙŽù‰Ó %´8c[û1Ù$¶ÈÐY¤…%·d(ðÝö{â#›Õ”[±¶YÞ?Œ:FÅB`º†êÿó¬ú¿ˆåÿ=ìh„sÈñŠŽÜﳸAèq‹ð®] �û‹KÚ $ë1WÑLÝO�=ÜIFõÿCßr&õGYùßLë+‹|S›éèÕ„l¿Mý„Ž~YæñŠagœ®øùîµü–Å·ÌñÕï­Y\�!\ €nÝØJ_¼tðó?û¹¿õZÚ¨óÜ=ÔôîÁ²®é!ðùÏ?3X9±ø=$˜]ì@µP±(Õ”âšÇ&¶QEE4á;u-«nmT5ØkØVÍ i¨FÁ0¸×¿Åv²?Iï€xzýt:¿¼{“'S ñN;P—«!p_C"ÀùÆj{¦ÜϽÿKKítúÌz:n-q +˜#æc;¯Ä»ÿß¼DZ ˜¶˜ÏDÉÀE¼ ¡÷U\;·óx…¼3fÏüÕ%3Gù{´Ê/söF¸`üX´}¶Sy³¾Ùº#˜¹’Vðãôž,/çÑ—aˆl1ÆŸóÏÂåÞ\¹\øââ©›‹ŸÏc8òÍ¥ß|SžÜ×\·ì^d¯ÊاããžÕý�Áç²ÇúJ)ë�–·¾›ú‘Óª|Uóp³å 'CÇ]‰/~N•=µ�Ê'F¯¸�°Ê5A `Ðk°`Äv€ Úã´¿Çmiu{Æô›¿ŒÉšs¾q÷¾‹ÇÁ·öûÕýôü¥-,ÿo§+Û½´�%ó1͘€¡¥ã�Mq€Gò¢òsžysýÞE=‚· ¿ ¾�~;Bý¿=Nž[LyæI˜ÿóóǶÚîVþi©Íé#žP‚­ gã&Bƒ&R·Ð˜Ç5·Ý�ª8ê&ã�|V5Uâwvödþ96µÿð�¶\—»sÔw»ºä]„À�>ûoÿŸ¿ý_ýÓß:ìüäòÇc¡6ÙÇPI‡•÷ €$�A"=ï‹?¥�J_"O¾‘9/¨­ø%›¾øj$±£ß„AŒJ�ºC�‰Ç ÄÆ"Ç�¹xè"Ä)fÌ;N®¦½ý^ºt° }²û‹:bÆ�¹5 œ`æ£Áœ×qØtIÜÔ?5î+pÞ½ÒÐòÁø7!Hâ\å¸ÍS«K‰©Æ¾Fæ GÅédk:†À• ù÷* †�‰ªŸ÷6æ¸2Ãl©`‘In�‚õ3YU‡ÔþGÛž 2 þ^k‰mK6Bk�Xy�óÜ-Œ3Üz¹øGÙFv¹�8VÎ,¸¨¦fÄ(CŽ„ytSÃk=õ›ë´Žz3à BV==žT뇰Åà¡HP–Ęs›ÀƒæbÌÑxî—øÊ8YQ›mn +ÑÏ6„BÄFߦ}wE;âKL” j>¾Š3_ูûè�‚ãªäÈ·ñ“Û¥¾è+x7VÑsþh›²ÁÀý¹]ËâÑ<ææÄ뀻PW€�ŸÕÆ»E$~‰;–N^ŸxîzÎcؼÖUÂñnùŒ�TSŸ¾UãÔ·ÏQ–ðhhMÖm¸x²š= ï^\lL¬ð Ž– Øí¿¹éí)ˆŽ1RY¶~ŸßÑ óÃ÷;R=OýyJwåÞ\%Õp¾Ï¾yJ>sÝ™³†R«5ä·ëÕë²Ì˜w¹‹ŠÿÆÁ‹ÿé…«»éò¦ÛQÿñž‹Žyž¹ï|ÀÕçÀŸßMÓc ¾zSuj �·(ò|Î�—1�Ã(^`b�T1=ÍçÍœŸ ¥‘42ß­EŒh/·éñG–Xý8=qv’6ö¾šN¬P/g¿ë9¤„é|w&}×z©³ÀóS�ØP4fŽöæo§7ÓNCpSös©üë µ¸u8w«º™³Ó¼$5ï•ËW¿|íÊÆG>ÿùÏc¥vo6øzÔ®†À[ÿðÿæï|úÇ~ò «e‘ÇÊÊ2–A!‚ƒcökïjœ¹Ý!–ÍH àô Å%n2”q±Q""1#q™HCåb;Vó’"4 I cöI !¶ÚÍ4 ùȬ½ÔJ'×< —ú»{éh[ÐZd»°†Œ8I€Ú$ÃP-yÌ`\Ó6az`bu6¢= uª®] �û�ññÕLK++ÌóVG÷ÓÚ¢'p¤së é™>Æ‘FÌ\æz›¹¯�ÀÓAœÒÄ>Àî¿C¼ `ÞcÌÖϺo8é,K! ËW«%-ç7±mü¯~¿�ý‘#Ô"'íIýã}·Cƒ?��¢áîFjn}%- 8B †JJ“/&®$� ‰±*zÉûÆéùBrx¨)[O[ìg%f/­¥ý…‡Øüt*]M�¥Þ꣩qâD¡‰M¤Ô… Ò–H+RQõl`­#©çEú®:yƒmIÚ+°C€*ðšä[.‡!!¡�ª˜‡6ƒ\&¸*#¿ÔBó p#{ä)X²ƒ³†ZºBSæÓ¤'"Mœ(UXÆx-h¹¸Ç7‘Ç�ñ­ðáWö‚z/mÃ'k'ÜÏZu&pr[JGù „«<´ÓbU«…µ}ñµï�W“ïE«ºwlf¼Æ“sz™›ÑUÙèAôÐïDôÈþD4+¥Ä5ñ¾Š£â ¤3 8=$QÀבù�æC¬s÷�óf7yö-ïâ!À•]¶±Üè·QÇÍ´¸-7!ÐÛ0¼K4ÚâûÒàâcAó„Yå³¢7jÑ7ž�F‚6}Ç/ÊR.»xC¹Ž3ÎÒ«l·á… )òçv„]™ŽÀQ¾­cæýÓÎg¼œ¾§4ߟ,¥-`ðG/Ò¿~nƒ½ÿûéâf?íÙíßF(æóÇ©QΉs™zfÙJble|·Ññ:k �o08» ?a5^§p¹ >kŽÁï!Ú¯¹èäV7·‰³€X<¬æÓêp˜Nð=ìLn¤oz×jú‘ü@zì¡1 T_ æß…-ñ³X/б8›ü�Ã�®Ì8#ÏáŒæçT O·æyé§õ3'#•ÊèÓNÐã„»GGi™c|GwŸ0[{,÷üWŸOW^¸ð�_ú¥_ÞÔ?o:ørÔ®†À[?þÙ|àÿ׿7îcp¯Û„È] ­áqIp0É+;ZNöeˆ ©ËˆjJhNãÁIsáY�œ"*ÉN‹JKPˆõ¹â(&0›' •8p­Ðî#HO�N¬cØ©‘®ö9¿€ÊöòVÃ9û�æ]Ôº·etÖI=ÞÙL´W…#Ò<µ«!pA@FA‚¾‹QÍÅEVº[=ŽIÛI§W˜_žFu²„ #yâl̸̡äÕzk -æ­ybv£oŠ%½s6W5àE sQãm{õÚ©ÓYaE¶›œE¶À‘DíÅÓ0ËéâåÒÊ~#�é�Ó²\ D�ô’B>Ϧ—�²¹Òr4XÝeV¨ÊPµ�育 :œy²–.]ë¤/õFé+z%¬¡ùð@;=|~%=yz5�?q.-À@.±²³ÐBø0ì¥æÑa pê³U  á£{;[•ðR‚qˆeõZ’Œ ;²|,„š Ö¢#ÅÀ¯�®®26 6ñ«F×FÄDV†ò¼IDUSe—…j�»¾°Ï÷æÉ8Ù<”æNqkÞçöÈy"_ŒÀ2f‹ŽPϬ¼¸Û#…ZÓ4@IDATceÌí‹UF/"«?»rí´nõ¸Øãm«Ïa cð<ÁÒc{ݲ�Ô6„�+¦Ì˜J¢ßTíé –[i! vÂmÀjÿ€Ð'ßÀgÌåK±€ßÍ5ûÁª¦¹u‹.ò7SÄy¼íª æâ*=©ÂÌß™#l´u…çMq%,˜`Ëg5¶úõ{=4Ђ‚V¾~õFºvéÚßýÌgþÝ+¥Tí¿ù¨o>Ìë_“tzùÄp£¿;èí¦jÀªº:5� а*¸í&Rˆ·‘ï1'ò%d56šô‚Ÿf�›Êp[Å„A)=cï!H·Í>äÓë'Òã'®]ßO»‡i§²EmÙÕŽ¾4×#W‹àöE³Êx(1 äÄ›­Õ®†Àýgf›¹=B€Ö^…1eUÀc�NŸ~0=þø¹`P�&L¿˜©æ�y-AÃÜ�))#3ab¯~ΘóRA0�äŽ<ÁBÉFALÁ@v00ØcN£I Ó·š:£õ´Onì]OƒÍ�´rõ(�Û‚1ï)l°z WhP�\]¸è@¾•—™TË7^CÓà]i{ç©ôüöÙtiÔIãåÃtbm+=²¶“άµÒãO<˜ÖW‡éÌÉ£tuÎ3lGX\FXÒYB;Îû|Bƒq¸´Ú†ÙtÛRF , ¡Hk0’Ç•SW�$&·Ç» |Úy?ih PˆÄ1vy•Ù{/Ç€/3',i[Xf‚RVM8Ä“±¡Î½ðÖ/ÂÂüËÚÜt.E¿b«‚ÅB–vdD�w& Ö<õ;ƒ%£m¾€«u’uÓGÞ“Ò®qdɸYð욬Ê7ñý,ØL´gر’…ƒ³ýÄ ¼>{óØަºQ×RMÝapÅŽ5éjšU‹Ýsíw)¿q0NG‡øû¼[{i‹ËwiAZ5ß+ÞìqŸLΦÁùÅÄái -—„-VýmX¡ÎÌ a3¹5ǽšÁ8�?úŸ3˜©ºŒp\x!¹*y�¿3ÇÌ ‚Êߪ/¶�`Ë äµ$Ù÷‹ÁÒ…Á •¶„\Äêÿ W0vu3m¨þ#ÀM„±/MT•·Êå·)~ioÖšm×®†À=Vøhƒébú8{�ö¹-5¶gq¯€|È<�ÎÕ0¶ßKçºÚ4ÍÉ!ߣƒtöÁaúð‡Nßüþ%„•[”9ïc[£Ú-½�cmA¼í¼´1%¢�ôß©³ÊŒ³sÞÊij™Æõ»¢�Ÿþãƒü©µ¶qu#]øÚ…K?÷ìg~ñN›®ËÝø6Õ®†À[ ŸúÔwîý“ßüƒè ÿìp¸—!TUºm¢ê¾8 ü%B ‚mÚ{¤DðÈXÅ¿dª`ÜšQ7—g.9Raäƒ!�*Ã2öîÍ\F÷,ÄÙ#]Vä̳ÛK=‰Q Ò+Vž†`iû;á>t¬ì¿mEdËsmçÎÔ¿5îHê�™ ã ù¨ŸV±V¬åÿ3g˜Æ0åÙ1�¤]¼ 8eœçú\Á|ŽˆÌLæ%Ž”H—]ñ‚#s嘸Öûð�8xµúѰ•v¯Ó…¯^LϽô\šì^O\CÕ^æ Óø‡B¡þ®ò¸¨FŽ�ȈüƒŸq‹Œj0¦J•3(S;‚!:.¦ÃÉIöÿ?€FÀ2[жÓîÆDÒ'�ôÓ¿¹@ìò �=ÕKçOvÒ#ë§Ò¹Ó'ÒÚ™UT<'é+ÐË#0æ AÈØ`µ[B£Ñƒ.Zâ«QB&´€¡p—Ií a0‚èÌûOí+Eµ7@¸hzlNÇWaÚ6£Œ{d.ÇNáŒÏ¼‰à®”ö3Ÿôça > ³]0³†\¯uFW"[îc.¢†kÉVnù\—"¡ü²ðÜ¢aÚ§­JTuùLš¬ì/ßfE*ÆÍ˜lg„À6ŸÐLèæ�C�ôX�#{î'ùÜÞ?aõ^Í~ä å Võ9ξ~‰Ò.«v/íî¤M„Ã×`þ7Yñ?¶¾¾íÎrZå�š°�ãâ&è¹�ІÙÜ[C`5=t¦�Öy¶Ë°‰LÀ8¬âóä}¥ú}H‡(+¬âÙdxÏÄϹü„èðñè¹·dÌ�WVªO€z'œýÔ¹M%oß˰Ú>Âøï§?¿Ðcï?0ÚwõŸo& _K®,f Æßgem>$‡‡“½È®Š¨îj¯†À½�xÏQõ�yß”!ô#+\Á˜3À;j™¹IÕ¹ÕB¦p×­ijuÚýtbu?}ÇÇŸJï{ß pg7--z’–si�jÇÊâUߨ˜<–'JieFÊÜܹ ÛÔçl-®jŠÆ÷|¤¶Y�“D� Xó=:è¦K/^ú³güç¿é§Ó/ÜyÃuÉ»�ZpWÀXWr·!ðC?ó}ÿüüûøö÷wjÈ Õ ÔŽÆÀš,±Hø4 Ôd$³«[¹ b¨Üè‹õ¼, �›–%Lþù[³x/sÒäRmѵ !M[DûÈ*{‚Ñ`Wgza{;í°'kam üÊúç F!r3É1S4ÑFtåXËÔ\»oøÖ7˜[ 0CýînZhöÓÃ�>�<ŠyÃ!¶4‚ ªæl̼BЀª<æhÙœA€Ð@žÕNf/f"¸Äý‰îYEìÉ /³ÜÊ6Ì知?û¿ŸO¾ò"ûï‡é,‡“îÁ¤÷Ñ ˜Àh7Ð:² Ϥ÷¤qXiîA•y#³\¥ß9[¬˜T%´ÄN'èÿÚ2ªÿ'Fá?unÌ–‰q:‹Pà̉մÎv†%´avé“zC¶kŒµÃÀe�=â®Ï÷Œ§�Ø¡\¥ƒeH&ëjbk¦ß¦Ó‹Í´†v™0 ß#ÒhSÆVjËŽô€0ž/w6ŸAaäoö…{™|'Îz£ s“Å9 “œ\}îô�• Û´mÁŽŽü;J_yñFúÒ Géòö(u±�0ˆ˜&äH÷qu˜ÔMW>©Û÷É+ À3îð‹Ý »P»÷ħ#Þ{ßìf—¹„03ÔüÅÍNØ|:ŽÒ݆¶ZœTl/�Œ°W~_[ê¥�|ëƒéÛ>|&�=sˆ �«h,a'&¤^o{6°5øéË3Ý túâW\àagò�8¾¿”ÏµŠƒ 9Gà ¤ÛÉ´ß³´¼”ŽöŽÒ _}þ«ÿê_üñûÿò'âN½“ŽÖen�Zp ÀÔÑßxüðOï³ÿÝùO¿c@u=¾D¢ BUf<®tÍèD:\\Õ÷‚bŽEy3ÁT2d&�«‹âb3�˜+?m îC”8·—ž†Á_XCÍjt"prç±Â€»#o¬�X8¨Îª»T© ·QÚŽÛú§†À}� Þ!ðÛP(Vÿ×V:é±GÎ%Lk„q»+1¥¥`˜{ÕMøšs êN(ìx0ÇBÛ„@(OÞjj!B0ýÁz1Ÿ©s¬°Æ~îìϾ6HÿâÿøJºøo6`×Xa?Ï m—}ݬ¤°Rëê¿ ¥Ë€ŽÈSø¦çe£$LÓªNs.påDƒNÍe˜ò£.ŒÿšlG Ÿ[žP–$Ï2 ¢AÅ5P7Ç@{¦'{¨€nX¤?ynɃØûyúÄR:³¾˜8áµ�N.5ÒÙõ5ö©³Ò Á¸ÂJò‚£¨¯Éê´ÌÕ¸‡š¨#cL¢(G«æ2qà±L›à—ªk3æø‡C~Zr×P› /xèðG>#3ÈÈL:ì”`¬ž§ì¨Õ‹`„0Á°õG †smJ… “‰üù´a¢eÏ’_æßçŠÈ6‡]¦WmVá ðÍ+Ç>P2n`œ*ÊP–]µìÝGàC§9­/„1úû|födøYÈÒXt,*ünû꥗På?ä;tÈ3«¬´>tþ+ÙË32g2¸•ª~>ïØcg�޹åDeRe£š™üpfÅjIžb‘“Éî%ᜳ,jÉØéøÒŸí¥ÿýÿzŽÕ‰ƒ´Èì•åS0p/�-. zJÈPBÃKðÄh÷Hä 0 úúÎA–˶ùcþ»ê½»¿�{g`áŒ�(6!ÜnŒ Ä"t_ƵÏf�#ûѬO`Þ‡-TÓ^lŒÏ¦ –£GJ.³2ÔP 0AÐJÈt`ü‡é$[«O#¨ô:±ÆÑsK+iÜöàâ£i.-´„+êlj¢»}úÑG“æ�qk¶°…Àí°°øÀÃô1A�ÏF˜3TÓ •ã*|éU8VãÁ癥%#ã”ù‹Táw1~œúxÚÊ?¾Í@4«¥Ð„¡. ¡ö â]¡œ¾B[…™¤²6�Æ?Œ)L87ÃUFFœ«Ò(o±úŽaHp½Lÿå_¸± £?B}¿ŸvzƒHWkd切öÙÓ0êÔã;È‹ëÖ/÷évxnÚ©ñ.�°tñÖú=ñ{¡q¯G\ì!ðjü†ä²:>zÎ=ñlAèžNGG¨÷>„@ƒ_+ÔçüM`ŸW<¡Aþcþ£bc�±?Üû@Âù„t΄;wQ‡ƒüÌõy34#ƒ>/ú,Ü ì+Hñ¤+ž„p¨p_&Ç÷ž¬ñ ©Å:ÜÖR±FUík´`�ç`ý[Càƒ€o²ïpb+Ì6l,œ5ÂFX…yļ¢ÅuC=HßôÎséÃ<™=ˉ2ÝІtÑè#Hw›×BðCX'Ïu¿;ñt~–mC¯^Ö音0p‹ªTLânà‹GàÏ«¯¤‹/¼8üã×Ùd]ü.B ÜE`ÖU½1xÇûN,\ø×»}�QB™5ˆ+ ¨ ©^F€*"í•ü WHÃÏ+w8ˆËÌ¿AÊDгÆ3"Í¡œëÕJt0#Xæ†WH§YñyäÄZÚF`og¢°—VVÓ~ ¢EêËíK+Љþ_Ö|¤Ô?5ÞÞp–µaʇÃnZ[k§8 cÊœpõ�%N4¥cZ(Ä‘jL½ 5ð�…†CÀ„ʳ2ÿ¨ÉëxÅ,£�Bªä½çIJ�zî?ÿêfzþâ>ÆõâØ¿ÓþæŒ Gžcî3·UË N?dï¥B½8R<$^p_x5«K³s~é�~_d�èX›'Òò`=-®päÛ"Dóªi·#N›ªŒ�\ ªß§¸—ßñŒYñibài@™NëdꬉSÀŽ ·wYÙÇ.IóÒ>ZS˜NVˆ:œãÓU¶ ,/- ¼l¦Ç×N¦5ƴΑ«'×W¸Nbtp!­,bH��} Iy,�ëâ-TÕ›H@Æ–m#¨î„‹2¶Œ=«g"Œ"Ž 2§Ž=˜Eƒ¦w†3Œ,%¸f>8Ç`eü¹5l´½€AÇ|dõ 2Sèêÿˆ 'd&¿ú )!£/Ê! lIE-Ÿvž¿tȾü!Œv7ía˜î(íÈܳšd^`¼Ï*–Wßo jêMµV°²½¶ž®#ì�hpqI£ŒùHJ:ÀÑ’äçY-³ júŵÂ?…#ÿ¾[H0Š¥`IqŠð�ɨ•®ï¡¢0f´ á¿ÇaNN0j”ÍÐìeÿ¯ íøS Åà„-.žCÜdÒü˜À¬Ê!œs¾ˆ¸³+¨*‰ÇZµY*3.Œø©=C>†ÌÞd4+ðûMV'1h©ý�m1(¤ÉÛQx~<ðh¢š4Öa¯c˜Ñ®áü~•6k¿†À=ðzAkžDªýÇŒ=ú^#TU@tlEƒ«Ýÿw±ÓLï{×ZúØ3§R·ûBZêäoÅ!xKáàÒÂrÌ'÷Þ/tØJ&>uù Œ6Ù–1çé$~]€³ +ÈÌl/°íigs7}õË_K{[;Ÿþ�_ûê#ÿ^œïnáZpwáY×ö@à™gžüîßÿƒŒ‡ƒ?êö÷ÃpU içuAWñ$@cEMâ@â"PDäêÃÐM :�`VÁ͸P„(ó Î ¢"ˆ æ& „6F½3ˆRëÐEýø¶ž °,ƒmÛôöú�s’Éi !¹{ȾÝåeöŠJ̉ìé…±4*Qñö¬³ÚÕx›B`8„p�‰õ½w^�Ô[®\›ƒù‘1}졳éñ‡8/ØÕMÈç7‚�ŽK�1+c:V¡{¢Mv3·B ǽôNqŸ´ÈJ«Œã€•r§¶êÈm;QÇþþKéù ¨×÷–]ãFýî„•ö& ýÉ.+ì¶wY}‡A!ݳ™5Ć­}[ñ„uW} ¥4®~!�šC�C"Lpo#˜Þ1Ë#:>¢#}Å!{»­’Kƒ£pOÁ a­¦—yˆÅXù…ùµ»àˆG4ôyHÝâ±&b“ú›Ø°—-,É{,ÝKл0XM–¶û£µÁ_ÿ’£Eê^à\ùÅN=@8 �`…ÕæÒ†³§V°Í€5z+į!(XYê`lŠ‹~œæê ­! ªÖ…ÏÀí*ãÐ�µ%ŽÈ’î Í5’#u ñ³ ¤×‘Ta+.·tÅ ÞÕ³é†0‘˜’Ð2—2ö2ÝásoÕ[¨Ô÷a.»$°ŠQ|€º~ÜËù éÅÞA:¢_d Á“†[-çÞu¯ï˜v&ŒÝþÈ’Ž” áûž­Ãô�]Â×H@ÔBïøwl ‡zêÀ›×1f Fuo6ß :lQó8Ò� 3&ízÜãϪ�u™½íÔÝj¦¿÷tZyœ1’gÌÖ”„@›‹­<Ë1sÍã xþBIëá+_¹èX4FÇüQãoÏùn�l[a†ã`ž;vç¶ŸÞ8ÁFßm7°úêÿø{¨&?ððciùÆ5ì8ä¼¾#íæPQƒgm�ùxËÛëS�»†À½æ +ú-V�Úîó߇fófŒVŒ1+0óû[×ÒúÉ&'‚€§ÓQúøÇ¾9}çÇÏrúÔµtb™ K YÁí6{þ™íèbÿ:¹G-Îõ uÁ1¡i”±X¢×GŽÁok+«÷;J½Ã.‚ä,ˆ¡É„¤ÏÕÿ­œðñÜ‹iwgï—~ã×þÚ?¼7žËýÓËZpÿ<ë{z¤?òÓß÷ÇÿÓßû_ÿ‹ñ¸ÿ…£ñ^K-öæj`(ˆ™ "ÈNbB2ʵÄWN‹[ò„“PƒØÈäOÉcÖŠ 2ª –UÉÈaImHÆ5!(!VOÃì<¼†A/÷x¢*zÄqGËECÕt�C�Ž¢^‰3å¾µ«!ðv…€Œ¿sLb¾Ö¼÷êÀè�vÒžJçϬÁôˆŸç–ed‚Éó-`är²ó7&¢ùtþæPd¬²Õ‚‘èc…}aUJöQ÷{샇PRñÒ )]x�Õþ=˜$ÕµÙs/¿¦1¦þæ¢êÙ]‚ŠzeD%¶¢G2t¥­èGù©úRn§~égöý Ƙ:eü½Ä Q#oŽ©IZ¬�CTi\-/Óyò�;¯®o¯ÌŸÕê«#‰!gÀzÖ²£0ÌZ"lÀÀ �:ðM,Û¹#½ Tý_YDà ÂQ�Œ¨vL œQµÙùβ­ïѨ �D'á¸Mæm}ƒ¨´Ç# >_,hØ>Àî±zKw2že¬�ÇÍXbÖm2ˆ2´hbÀÝ+8U ÚCð»ÉÆrzÓÏQŽ^äï»ZOúaAn^ßÕÿ>?Öã>ý!xûˆfƧO¦®R{$ÌcøÑ¡l ?Ì`#/uÅ[€_Ns)o¢Ý'š÷%¿³Þ[­ßOƒÉ+ož- .}S¬à;'q®@î+‚ÏódEУG¬Ù"œË–`s/¯{°:\§!hG'9ÖKBudèªÜb›Õ"�/x8˜£ã­q[»o#¸ú/!p3ó/ÃL ûÓ{ä–ÿ!_˜V2¹Á�Á #ÆL™Îá˜vÎC gPf>œ‡™΀˳Ó0dõuîVÆ›2ùÌ9h•´ËêŸüéåtñÅ=VÇÏÀÀ®PÛ˜³M÷×c•y89‚ #³ÜöÔ6’¹¶O¥_¹�;{Á%‘ã Dbܼ³ÿ]®Æ�á7®~Êä·Ø[o™Éõi¶*HÐlF„É¢fCÕ~Wñe gõ—6æý¶\ƉúÔÁš¬øÇ˜ÐðœB«�p¨�‚÷Y9·þ0ÆÌ£§°ÏSFo„0`Âóy¶� ´À¿2þ±ŠKÜpÀØh‹¨pBѼöÀç<²µÂ½f0˜‰× ¾•6—ÛB¼LW]<ãw޼BX4�&I(È�ª�O8¯à·Ø «á= j…~ÂûhýqÁ(÷Q·÷Ø?ûd¯Â�ã$ζªÛ(e½·ÚqQ`#l2l‰'‘ê ŸÜ'H䊂ñÍ#óÌ»6â8ì#Žá˜Ê ‡²ö'­l§÷a0¯ƒ�G¿wTÅ; ¼¨o‚0' Ql‡„ÜZåß|=!íu8ÆTé¿ô[m€¡}‚ùŸpÂ�[öº mæ öŠ�­Ðýw<¾F|/mom ÁÀóÄ6…Ïv€½…e„ÏW&>1Ç’ÇdTçwçuô¿.ZCà°TÛm[0ͬøsP¸M0èE·™)ˆm¤Ã8§�vÖ{ž^Mßñ±§Ò;%¥ÿÂ2fš4 ¾Ib/g3£òIcÞˆ�Ž3ÿbÉ2‹ ½þ¯öÁM‹§«Àù¯vÝ„}>W.]I×._KGû‡_øÕ/\x=-ÕeßÔ€7®u­o~è¾÷Éßù;ÿ¼ß±ÖfÕ•×Xë�¸‘h©I…éÇa)$c&ÇJØDÂS hüË]I®ª™ZÄØœ_õ[W\”ÖŽY�RSôsâÌUŒGîC”íC°»g5V“ÈDžD Ö¡jWCàm �`ÖdP–ÁÊêÂÌV":w‚½ÿ¤c%#÷¬6ËP°òÎ\j˩ǜv®ÉfP$ˆ2K3xÕä4WLõˆõFKz·@˜4`¨à™—)]¼4J_þêuTÿ Àhx&ûØbò{Žòÿ ù#ööHœ±³’¹*#Îæƒrú’ñC´lƒ¹å‚4⮤å¤iž*-ï÷¬˜]ã(Ì3A™e™9÷S†J(á†{îI�ÕÂÃà‚ƒlP4·“Y¥Ü� ûÈ_DÙ1ÃÅW-5r8z“­UBRµí¼‚Í} WSsšTåÔwEYæRú&šMq¨ï÷°î¨–oñh—o>:O�&¬¡Ø>ï‘­„)9ñ-côÞñÅx`NÛrê¶uÊ��Ø,… ˜ ÇìªÁÐlCªØyϲ¶¦_}•¢ZóX‹o.=�t{Wý.ø�pýžÍh®¬`D«—¶Øª0æ(È~ƒí À`ÈkÐCCà‘u„FLµg<‘!jfÌS‰ô"4`òxf­æ¶ÊX(r‡Îñ…]žEhŒ€-f°s—Éo�ºJ×wië°‡f̽sȱã�9™Øús2ݸ¾”nlÑeŽCs› ï†ÏÒ£&ó{gË•a{‡Ý®‹ÕxK@@<Œ.ï8ø’ù.FkjC¬€-—ÿz˜¹˜Þ÷Þµô}ßûÞôø£|À&×ÑÄꆑ0¾pFŒ84¾MY» ¾“´1�g2¢Íe^0üf,qħßÎG™.°ÝgÁßÕ+—ÓWÿük±-`óòæ©×ÓF]ö�ƒ@-xã`[×üAàì;V®]8a¨«�P1…`jB|Ø/ ¡A~!®ÐA‹j3òœwU¶¹ìÆXE)9ÁÂLPo‡U%‰ô–›G!Ö@�é¼Ö¼Ïœæ|h¬Œ¡¶zD¼f´Z‹œñ�Á@÷�سé^Ç\sÔZÿÔx[A@f¿0üÅ€÷ Úˆðž|ÇyŽ1b ….S«y ¨V2!‰0¶Œ¤Ä�ŒÎÁLÐ’¨Á19ƒ™2›É^Að°‰�ÅåE柫Äã´Ž„îúµ”¾ü•ëé:G�uÚ§X g¿¿Â:æc6>Hm¬¨r‹ösuìV£UjÅ”>uŒ1Ƥ•|&6—+õà�è·ˆ^zs —{)£3š¬!œXC�o°ïƒÙb<2Éñi‹g�º†Æ‡;Ú¯[=VÓ·Ów½ŸñóZ²-Ê"¤Rè¥Iç�[`¢RÇb{¶ÏŸï 1wä2D½nõ‰m4¶‡h†Îh;”é«þ78ks¿ÏS`u04âhÛùåθÇÏ·ÓÎãgS÷è"B·¦Ó*U°uÀ�Ç;Dâ[žaeß…SŒ¡ ÅmýSCàƒ€[‘œ ®øKÇJGN8§ó�Ä�9½‘Î?ØK}æ©ôÍïÅ èèZt·85‡d…ä"þLW³:ðU9U ày™¿'1ohC!£çñÕí‚.sT  ~€}¿M l³Û¼¶•žÿÚ Ø(ØG£¡ù®/~ñ‹ÌôÚ½!P ÞŠO¥îÓ«BàŸøÄð·ûwŸö¿6ˆ•ê½™‰J Vt•DgÐ �!E}^">\N @\þIÜgÚ(±òñüTÎÕ WšÜ¿èÊåb ê5T¢ZX6ßb�éhŸ£¥8ÃUÖšÉoYhUVn¬ÏjWCàí�,„ã•�÷œ©á*1n «é§O´ÒC²úΆw· ´áÈ‚Éwå2M5eœ³9G ÜWW02ÁúGoãŠäi`<õp“˜aÔ �’.¼8IÏ]Ø`¯8{§1"§ÏÀ}ð0câ ŒzŽ;&˜è3v$ã�¾ò-� +”ÖÖ"?š �+÷€0�¿ª+c·@´©æ�ÞÌ[‡\A%YbmÌž{÷àOÂ�s«Nôe›0ö¡á ,æpÙñæmà -Y…¥øAZ™ÂK5 ÌB|Pƒ>z@EV[à¯e}EÄp rÁ0�ÑlŠÊ[G\‘Ï:ò¼‰Á`žq¢ug—ß•|ßbÕ_g?|wì“«ÃYõ»‰�•Š­ŠÇJ´]¬œ[Pt™·l•`œõ¸•Â8ʇZy¤ÛãàÌ™Jñªž1Û§jÈ‘Zu…°ý4ªø%[U8FnØ–㔈·´ g’ý@ ïA‹÷ÁÕõKÿÝ-Ž*äYmo¤—÷Sïl'=|~1aƒ6hM„RÑ.cÛÔ˜mE‚mÎ^•xÛžoT0 Vã+Á³’q7Øå±°s�Uÿ‚ŠnÚ>ì§žš4¾ÌCå±½‚nœZk¤'} mlí¥®`t“7­Å�¡‚BÞ¡°ƒ=[Ìš¾ƒÑëÄã¶þ©!p@À7Ù5#�ÒÂ:óž£y¥ÆߢVƒ#];ûØ`ÙNÿöw§¼ÿoþ¦ï.'¸€•˜ÿžCâÅ�8æŠu†À2¾T®3²Ëý^Šo2^TPø7*¸ý罸Ráðß’ƒÝƒô¥?ùRzéù‹�=ó åç>÷ÕÛ¯µ.ñfA ¿oVku;5î>ýéyî¿ÿÿìß þ3�Qr;@V%fJÂJR'S:Ä)õ „(ÁPˆ㹕šs÷¡î ÑY¢È b~žžÄ"˜°ƒ0 ×òyƒó�‡¦GÐqìc=k*±tD>WÇ"àP—Ìdµ½¬] �· Sè¸dà¼Ô8‰�ŒGÑpóᘆåÚ¬VºßUË6¶44–ÙtYÓyç BƉ*a#ÑÃ\�Õ 3È|æ¬æÌy™“¨t{0Ï�EÔ©›iƒCˆž{þFljcE…r2±Xc &ÑsÛ56g]ªý»ÊÂyo\¬J²GŸåZ%N €@„sQðXÌ­nä·G,#«J?ÇÄYòôCuˆ ~^‘ÎjœT>�G\)ÖJàx lQfÞ%ì¸ Æô3¡€…��NµøP¬²3ÚÏÛ3ÊÐVL¢þ0ÆK^–Éí•ðl/ZA£Û ÞR·Œ¹¾Íä{Z΀¤ÜËáâøÛ¨�’}ê”M„«Êõ¨†ãYÓ7ë3¼WÔ9¨c±7àÖ€2ŽüÞ©�Åt”È­DyÚÕWõö�“§’˜Ípâ7\è�plÛY/sDU‰עDGóÏl<–s‰sAk³®h[â_œ»h†wLæ}„à ³±Rîÿ€åþnÁÇör¤ÿï_}5=ƪÿøI¶Ó,'v°gXÁ²°P€&áï7ëfgLôàæ„×~OÇ«%ð‘ðâ;ˆB ß7Ôþ9Å`)ÀÖ~›NCð]ÏŽ‘‚ú§Pf§ƒÃsgZìm>Oþ+i¥9 &j.‡AD²ý­€–@ŽAÁIíjÜ‹pfÊ‚Áü7ÁƒØ³£-ê´••!TÇéCzGú á²AH"ê‹trf|gºDžéâºìTÕŒz«{½`ÚÉÛát„¸—ñ÷&+ûŒ‘¿¦+è2È\m”Ús¸2ÐZ°pü]9±Àz¢¯¶l&]0pU8Çû=W:Þìl‡~D{¹LGÁÜx¬_—µxn¼Kv+k(|õ¨GÇ!ü&œ’¨EáKÁ脈c|ÀÖÕæÿŸ½7�±,;ûÎ[ë½zµôÞÓ3ÓœEäP wZ\DŠÑbI–d‹¶bŽ,[¢,2Ƙ‚DÙ”a H€(@ä¯pÊ?r, ä@1Xä?’ ú'‰�À–¥P$‡³ô2ÓKuíU¯Þšßï;÷¾zÕÓ³ug¦»îé¾ïÞ{ö{êûÎù¶óóÙnø–b´h(ÆM˜%Ý`ñhÞ4â¬Õ¿Ëí!ç¾=Ö÷²‚\ÆÏ:ZÚ·âï�` Ö ËºÇ__n˜ Òßðÿ~c"|%5Nðª ùs-Zœþ�o.�IÒSÇtÊjŠUŒm¸×X!QÄG›|wñ]yÍ4eü{¼Rq�g"-b2ªQ˜GŸm�/Ë-hÿ˜­ƒZºµ��î}-ò=�C 4ío à[À‰ï”ÿ^j5Ïž^J«¬—{ø¥˜ÐO�åŒí}ö“£Ý4q) γ¿Ÿ Ãd¨B5oÛž –†˜˜òœá«X#þÄóŽøQ†@îüî�“2—ºeGóÿVû ­téÔÊ ýÈg?‚&}›úÖS‡� ÎÌq1Xƒx-~GK¾Ï:”û ¾îø›Û�^ðhŠkZ”±hÄwo U”3—ß\ÇwẠ׮_K—_¸Œ@¯ñ'ÿà«ïïÜV¼z}Ž€³zª¸oGàgŸùá�þóü/ûƒ½ÖB·yY*f»}'R%©èîÕ•ð‘œõ ‚�ƒ¨bì_�MŸÎ†�Ît<æyûpZÌ©‘‚`‚¸Ôóóå¾Ä=…jœ™&Z0û×é=lÐ\9}:-Bìü»›7èà õÙµ0E`ÐßÅË+&`ÁšR5Ð’4!ZG¨?úœWÝf´íÆt“t¼—gèLå¸ê·�·s„K½ÐÔ3�“àö=¯ ³#4šY÷ ö›ìK®×÷Òcg–ÒûJIý»N3›5´„:£kã�ˆãܳyÁ^Úí„×c�93Ê0 t$™H•¡£O0GT}4‘‹Ý³a‰ó¿+£týfoã'Üe­«»Ûå‹ô‚¯‘Œ¨Áã ^ ëà¦Â§$ÎanaM Ÿ�ñ¢'4š™ùð›ƒ%Ä1Ÿ£aEöSB0¤¡¥9Èy°$˜²ï?‘æè6óF“Ù£YsË�‚>ŠKÏÐÁ€éüÏoâŠ@Ý £aûÎlþ5œÑ¼‚ð3o TD•?EŽL÷ÙAÓÓ28kJ—FUÁØi‘µdÖI6šë°d®Afz‚÷m.n–Èñv…‰þaµÅXæçñ2Ì×P>�±™6�ÛÏ‚£0å/3ßš_MW³Ïø••Ùt$ñaÅL;ë“™L˜+ùÊFSrŒùÊ >—årt~S¨bžâoËSX Y/øñ7æ/ýçæwÈ ›xÊ_Xx"ý«Kû鹃éûv&éãß³œÞw¾–ºÞØ7a+±p”ZX�Õ±†hºWœí/Ö×çY‹’æ„cÇ€YD ô…1oçXGˆÀkMÿ”T–2� OPÓã°¯Îi�Æ"‚ ޾%ÇM\CÈv}s’6÷ëis—u×õÖ?ŒÈeWBðÍQ�x0w]¦ZB“í@õôÑ>–úÿ××Ó¥+WÓÊÊEdé~?ó[=Üš³ØksºÎ&óÃNl#R2^«©B5o×Ëq²@í\¢ò),Ò|QÂOKà4óvnÅ% ‰G^ ä8pĶ2�óìÕ�oÖ„ñZzì|#ý¥û 骇œn¤º¸*LP6)8®7ݶ¦e›øa�©A߉É7žÊùú0_»½ÌþçR Á-£ðOr”âÝ#W——–QpA�ršŽ[|t¬êÖ­“‹§Ò!_§½˜®\¾œ¾ýõçÓpwx°~uícщêç]?•à]ÿ'ª:øz#ðù_ú‹Ýßÿ'ÿëdo �„O} ¤ ’ÒИ9ùÎ&ÊBZ*AÇ 8?=::üõÍÄxL”¹šŸIm=p;§�¸xÙT“Ë´ž=2=Ü]L›«+逳Ï8kˆ @‚šQÆÔ�i¤kMí#í†ö�»Ï¹5¥½>û[†S¾U÷jÞ®�PȰè=3ÂAÜc�k±ï·ÓÀyfiµ[OçVZéü,|68"n=¶pQcDñ#ÄGe³F#.4Ç%dÂ&›Î‹QöÃcàú¸©G˜\¹ºsD�cÿ`®Ä=qKm¶á x¬V4�ØŠ�ç>†X›ÔeFTÈ4A–aó­ä ƒÑGn¾‰2ÏãÂS¤ù­Ô� '_NŽ xÎ#bàB«)“ä¬ä¸XAŒ«mñªmç yV8œÅH:¢Ô‘˜ÙK1žÅíöèüíÏ’hööÜsi¯ñ˜KÝ^Ùk ëݵôjuÞ¹¶rüò8¿ZÙ½?RÍá÷‰¾c5s9‹Íå4R8¿Cˆ1ϸu˜J~`Ìí#›ƒfR?¸¿…7îk©‡©p‡��ØÃ!<îÖµrA+/kO]©%‡Žø<ª¯“/CQÃÙeM5}0.XQgn­k Œ:'ži³Üê0ômÊbCƒxÊã =mašv±ÙØÏ�l!?Øåõo_çÕ ï�Ó6E”—¿…¦äoYË ‡N¤½í[vØVwŠBZ€uä±i:ûg°–¢’ê§�·u„Àü/@;ÿ8'ÔÎÌÞýñ_^Ã|Ê+S†}`¼™ Ä<±ˆÏN�Ùg Ìûk§O|ì‘táŒÞ<¶¡%9©E$ÏÇL¡àŒ§hBÄŠà[ÑâµL+ïEBÐÄöÊx¯\Ö[Ιß[÷ØjäŸV +[,w\ÃöG W:«éÆÕ›éœþílîà öá߬œþ9È÷E�Ú¨B5÷õÀdLÇÝ1F�}ˆý hvö÷¢é˜²w2›8J¼ ëÒ2ˆn§gí fS_ŒA9gÓákŽK9uÆ}¾Òm^:±…ƒ±1NÏ:é‘sgÒŽì@ÌÔûhø¡¨<;»<úKâfÞ�ј†v,j/úásªxwŒ@À8X”É›£Ä„ojen<£Í…/Ïž>•Μ>{ÿÝ�C ×ÅÝŠ 2¤Ìqxeš´Ñ,Õ•qÚ~©ÁW‰,ãòÒK£ôÂó—¿²Ù¹½|­@:•íu¤‘×*óV¥Ñ³LI¾UVõ7óÜ@ÅÎÔSÎÙšA\θ©~¨ØÇ{$=tÁýA–× Gí¿Mcùã!#äyéS·û½êùöçÐ"‘1hõ¢€·<‰B²„¤“KºÐ…Ö:³ÔJ�œXM-rö¹åô“ª S–ëT)<$ÇÔ\¶èâ1¢•ùˆê¹�·yÀ ¸k±)‚0Í[hµ¡èÕð»¯±ŽæñäJ/=zá|hùTp]|Šòe=wø’£ðoþÌœ›5ëB`"ä"‚à2áF@ Ò@³tùò5˜˜"›Á`�eçCþŽ‚PóÛhT!@þª²�¹DŽŸ/ýV=Ï©Ïå5_ÿ�âæÓ«ç}n×05«µ`ÚÑÐïlŽÒÍ«[éú¥iƒý¸ý­ëðÐx½œl"|ãÈK¬[Õ‡� ý Ȳ¸fhçBzé OS_OÔQ íi`Ûb`ü§˜�8ª¯¿ƒp/ííõÓæö~ZÇû÷Íõ­tkc;mïìÇåØâ“̾«›->-†€|Ê!ŠÊošÍ[æóž1D³|/~!jÄL ¥!^âØv°/tåÊMb1ZƱÜÖÎß]¬$°Ž†’X³=–Ë´Xç|xë™ëçrðœ@|ž…òÙûÜå„P&ÍòVÇebýb/°¡Î~ÿé�}Á»õ´Ç Û×ÖÓfs=�©ãTsa˜?É:Ô §}ZÈHÔì:L½[j@‹Å�Q! PÃ!49mB¡\6aÌ9FåäúÞ¾:é¾6níq<á° «Ž™2·ߔóBà�Lm*±Î ¼j]?]ûÆî-¦ÎÖÈók¸¹u �‹X­ñC 5�‹`!†+øÓi·ðT¡�wjòÚã$,rWáãÚÏöÊ5É�W*á6žY›ê\M¶¬Ž9ês¹»Ÿ>ø�•ô‰OœHÎbr?|)¬]ZA·Â¦)ìŠ:r±D1Üî*D�r碿yë[¹Â˜Ê3È*ýZwÛot–ÛkvÓ‹Ÿ«Ï_IW/] ÿ=�æÂObúŸ'£»êMUè��jö|'F½jó;6åoýà›‹ƒ&�öHî¡ Pët ¨á“MCj“öaWÊIõ0†§9Û¹2òÌÅ‘'ÒùÈ<íë`$Ä]Bk:ìã‹ ç)Ìå—–Ò{8 mEoÈÔ[‡øi@�i&†�ј=±vC´’«ßjÞ%# ö?,$îé“¿ád ¸orÅ)÷ÀûÙ“+é¡3+! KIÒä'2¹QÂxñQó¨Ïezn#p¡Œ’t¡¢ìObËJÉqå>ý1Žþäñ¯^ÝO·níâa¹G²žámÙJâá°áˆóÕ4ë—ý)¿OoIoy þYðù¶÷²Iæ‘H‹û¬@õp\GÀõcýQÀ?{ˆqÔ×Ò‰$Bå½WÒÚ ’ö®ýYš¬ƒ ù—SýàfêŒ8c´Ç´}®½ÔÅô¸ËQbÝÉvZà¹Åss¼“šø¨i°aľÞÑ&ëÓ-ü½gÓç>óX:}j‡ÜW9îÏ}ÿ8ùó_iöϳ´d\GÖˆ»üfªRû¯€KŒW¬0®uÅ•…ßœö‚Nû½Ü]J-ð{íÊõôÜÿ÷­4E èV '‹ßû½ß ì¼ËÞTÅÞ�P¬T…j¨ø«_ü±ÇÿùÿGëƒÝ�-LëhñœÜ$âƒvVíàÞȘîüuÂ{CPäq’,CDEakÉõ;ùóH½Î®hÃyÇ¥@àÔѨÔÐJžt‚E°�—ã—�¦n³g2Î×ÒB¤ÛëÜ–­”­Î?—½¨îÕ¼ý#P6{†T b"ïý‡Xî[x¿?¹ÔM:›Vá½G8UóAe<™¯!àŸ±jþÛ„Ó2Èü×<‡Nœ+pdÖ/•†ÛXý¿€YôÞ>„½ó€;� ‡h”²ï¹>k.Ú�öÅA:+.BÓõסdÀ¶=´ÄLÓÞtˆ Éî©–7ÝlUàþ¡V3`È^b†aÙ²Üì±µŒufûÌøå´Ù¸šÆpÓ�½'RcçBw±ŠkôâÄ µîºT\íY ȵ<¡åŸàa|ŠçqÎÅŒm< ˜ô)VuƒýÎûÞÀô=­�–ÒVûi‹Ó+0 ƧÚLÄl!UeF"£½ÓóŒÂñ^g½;88@³ˆ®FbÄÖœá;�þBpðä“¥És×Ò­u},„¿­´«¾ØPá£Z…w`ˆ¸Þ@IDATÜRš…Π€>׉  ³À+ "3gÁ²á]»¾›Þÿ]+éÓß2=ö(v9õ›T°�àœS7ж×`‡ß*êÎ' ( “v5ÜÜ[GÈ¢.j�JóJîŒ`ˆõ�f¦Z8þt®¹ñÒõtåÙËl1ÚgÎYþH¯Ñº±w0øî§¿ôô¥\ªú½_F Ü/©ªŸoj>ÿÅ;õ»ÿí>×h¬>Æy^0&P hƒI‚GfÀàÄÊÌWÌ¥å”w'Ä;ÅG¹YRd)¥ºyúÌ,…³t�#�< Í}޼28nkÁ£ÖÿÎÏa °‡VfÀq€Uš4ªá>á>’шnØ—‘²‡ñZýT#ðŽŽ@fœ3lfæ“A˜’|Aàð|j©“Î�lá vcw˜z•ú0ëC˜ƒ‰Gfê_@ËêÂØ-pŽ~0þ埡À³`>è¿Lƒu²Óf ‘#¶ÇÕð8Þa‘¼øèrº±¶–¶·wôyþy�u’Šñëáv¹î–uW÷jÞ¶ÈkG>¹Y¡CdLLËÌN7ÆÅÈ QYm'-u6Ò÷äé}OtP]B†0ŒÔ�Û[¦=t„ ¸>ÂÁ`yÌl؉Þë‡ÚŸ¬´ I€Ó@�›¹æÜÿ8ª ÎSBöÀß}1Ý|éæ?ë-,þNmPû³/?óeò«÷Ú›ªüÛ?•àíóªÅ·a<à·~ë_½or°9X¨-¤Î+Vr:F’9Å!Y³�Ã!ˆ¥¾ï�÷ùæiZ$âC#OÑ#c�L=¡îFF ›<‘b ¦†�Éî¥p~¸…ñh“»´ýÄ94‘JVûim‡½_zK×Ã*“îÀ²Q—�äNF;<Í_…jÞ©Èšq‰ƒà£±ÌÃÜ΂ÆÆáÑGϧ‡ÏœÄk0 ™°¡¯CÌV0#˜�†LƒDH‰G|ŠDI€»À_�ö³÷þ26ãÁ˜z––8Þ=$iÁ9lmsFz�"tÓ³ÏâíÆZI˜ŠÞ D«€íÔí,Ò'ißÈf;´ïÞc¾iÄ¥C3Ÿù¸lßh°ïïGž‰s^˜÷'`Ö<÷€ûQîp bPbLŒ+ãË»-Táx�@f²Ðü×Ý'�¹‹™üJ{œV§{éÎpWG7ÓÖÓáVl\NÓ.Ì?Gw)Ðb qŠ€°$K2Áì—/ÇxͬÁˆO1Qn&òp„ç!Àá5ˆÆ6¶ª¡‘Ÿ*ÐÆIØØ=ÂîWF“¯æRZÀ2xAÜ-]Wcmå}ž-téaŸ6Áß6‚Ó1–KKX =õÞGÒ.Î/]¾ž:�sœK¾š­y@FѶ Õ¼3# óœ­Þ•HB¹srfžñn‘úœö´ÈšÔÆŽÖ3íÖÿ3,ˆå~ä‡KßýT=�^í³¾è=fõÐtÒŨ­KU®�ÔÁ=�H�@´]"Ò]Àzs¡�”œnü Yèxâ �ÿÊÙ MGýaZZXJÓÝ'Œ¼ðÂÚõõOü½g~¯:U¸ßG ÜïÁªÿ¯:Ï<ó†ÿãoÿñM~¼°�@Æ¿ÉÅl‡frÈ~CX’(ï”mˆ»É<øìtîO™îë‘ç"͸È?�˜ f�XïÊ…¥Ý]òùé]BátY@Zf¯ä©U8ŒQZçè$è,h((Q°Ž¦£¬{Ö²�2² Õ¼Ó#•?v[ 0Ùå\¿LÈAWïä+˜þŸÁóÿ2Ü[˜ÝjÕ16ÿQ žŒ·¨fÆxcfÏ2ÞâŽÌò,OÖ1Æk¦¦Ë†`ÒÙ—(Ãn kðR>@«È‘KÍN6M¯d4²éf‹Û·öòÒÀ?Û ý0�öKÓÿŒ„¹×‡µ¼¹'Ç�jg! ˆˆ8ë6”÷×zŽŒÕÏ1™l�ùeË6ñê­â>¸¶›:S÷õü÷oBij饿›†;7aÖÒÛâu¶`FßB §�ä`È�o÷áON×ÑB¶8ƒ|ÌU¯!\wÛ°(lfC ·”úX´íÊìã\­œQ.C$~Ó3×»h ‚5wª™1îïfŠô³Í£™3õ(X]i¥Ç.žekÀ$Ý\ÛÆ ©µ c…–Þ¥ Õ¼## a§å !V¯P¹©à!ž4�çõº=¬\öÁ£qZ^¬¥ƒ¾§rÔÓ‡>r!}àûz8¼ä„Ž„…ÚpŸ¢Ò|žpÑåd Ö«@�³Öa5w±D\Kføe'Þdå<¦Z%•½nÂø7‘ÎÇé¼{Õ>§{œ?q.�÷†éÛþlºòâKù+_üJÅü¿É±~·f¯ïÖ¿LÕ¯·dþú/ö'~ÿÿ߃ýƒa«!Ó€p©yþ1Lƒi4‡òþZ ;ç—A!�û¦,7¯c•lË‚©Lܹ VÌñ¥‡tý��Èiâ m ç?ZÛH›hX˜îan ª ¨¢d.ž ò[…jÞéîeÀó×>%&t®©…Mæàá³§0ýïaæH™µnÑü‘7ðBƒm1�7à†u•pîs"Êç þù·ÈI"de9Cƒº³?ïc¶üLì)¸É)h7oîp,šÅ„D™Úý:}õlsýH°• æöèO�¯�ãTd]™9/²z3sÙ¥¹è7ó˜­¨Æzl¬ù½|«îÕ¼r‚]öh°`¸õˆ�£¼:L?¦Åض!`>HK€v7,ú˜õËCŒð(^Ÿpj¹ÆZ£�Žcühˆ‹ ®ëhõ8ó«k¡ƒ€fÇ5.×´I3Ÿ(PÇD¿×[{ÔPÊüc0Ÿ©ÏŒþ�úŠ~ó,ªÉ/ùX ÔnúžO´o91rÂúØàÛ´ø®'Oc™0M›/`€€€£½ˆ]‚ó‰{°«P�À;3vY/òBF'ˆ€taSawÐy…âQo€)kì÷¿�~§O>±Žr¢Â:OåhpÚEmŒeÚÜ „t]“ù÷îZeÈ"ê¼^ääø7ùKQ=ü±‚sMl lj °0(¬�o]$lMúñòå—Óóß|.Ýüö�¯¿ÉVªìïâ¨ïâ?NÕµ·fþíóÿ¢óþ ?Š"æ€*ë Ó* ˆ'Ów1�:?ë鞉jHðñ<ÄtM>ã2aÃ�5*�’ÞU0ñÑS'B3â<å§h~¥–Ri²Sÿ|;Ñçê§�wÁ´$ ÖGhþ8ëµ›é쉕t«–ºÐþý"‘�V$öîJà‹jK m;2Œ>Ëx“‡ ¥é¼9 2ä…h,˜Ï+¯·Ài´c¡Ùi®]¦µ[œY>F›Øè†7cùºÛr´1&Xã!Ì?uØ;Û�È�|¹í\& ò"Úˆ» Á$Y­¡¼Ïs‘Tݪ˜5Œhã=F^pd‚~Øß#±Œ|[3àX�n7È=¦Y[Ä`{„Ù±c¶ÄZæš~곦áñàPà ~ɳ_­ÓÚ+©¶p’²ªà¨‘tuóÊà�ìÂEÆÆ1c™™ü@|ÚPÿ¨Ö1æÓ-C¼88À‘(ó‹n ~èdºyc‹sÇ÷–ã=:ôÌ=äV…jÞÆ/ Ztæù{~!5¢§hü÷Ò ;Pìフ_‹…ôÉï$=ù8ûûô9Rs,®b�ÓªËüçã7Õ�Š" ‚ƒ`þ­S<3”­ç·»ù TcÂh´ï¢:eÞð¸?¤`5þDzËé宦g¿þ-Žþ;øÐoþæoª›ªÂ2y¶~@>¦úŒjî4LZ“Å•Ú#­Eö0âuuÈñGìð ‰gÐNy®Ž¢NŠåõzs¬Ó}hEÀ¢ n¬� ãŸ÷¨‡IVS®±“mL¸ùnö{}¯¯ì¹<ÇV€‹gO§“½S/%И*$�:âÕàÞ�#õV/Õ¼‰.5‡ï´9‚ †zˆ“°:Úÿ3'–9òï$^ÿ!êá±'ØOÕ&û3æbC¦=BàIÙp Ó%|ç»b0³KkÍ M"L‹uéÀ«Á6þ‡ùÿË×n¥NCSŠ–’¶lN>GFè�ñ.ºØæ—™/g ¿Jì|Ÿ ¯°˜K{£�ŽG¶˜¯»—Àûòù�ÖXå;.# Ã\GS¨“1vïc€£¼Wû$L=Ú¼ÑÝ£þÉžÂkü#a΂èNã('{ ®Vs 3Þ嚞ø°Ã¯-p¡õbžÜo.§ýö™4ìœa=EcZC5ñZÕdõo DÇ%ƒ¸!È+ŸÍ8�-,—�mJ’Æ‚JYÖI¶#ª®.7Ò{Ÿ|˜£ÒälÁ(yLš€*T#ðNŒ€«„kÈmWÀdA·yµñ¥ÎàfzäB+ýà<™>ô�UÖC¶ä 6¹ð—3mó¯Çÿ ÚøZ¸�Áéi�;Ÿk~l�¾q‰÷\ûÇ"fø¥B‡âIYÃÛƒÔþo¯m¦çþü[iýú­/}홯ýɽµX•~·�À½Cѻ틪þT#p‡øüÏöêârúZ½�¹æ‘ jz##8¹Î‡xgrŒIW ¦óùÊ4'O/ÁXH¶ðPþ3Òe"Ÿ—žÿ‰B.…‹a ,Mö[.Bt�Zj°oz9õ ¼$©‚À‘ë™Ñ7;6×¹ùôê¹�·k$ìCùcÑiïúgO�L§Ø·Ûæ]Æ_çd5Íî铬 �™l‡ùÂ_5؃'sð_b‚Q^*ñ5ä£.™õºgÿ®ß˜¦7Öɇ6bfˆI£íÕñ–.þO<„˜W ,bÐϸó¡¯dÖ_½ôIyõúîÔ¯2®¼¿‘ª<ì°¶4× %¬5öaØGÜÂ\”¡�×°Ÿ¯¡>¯³Ÿ}#àÙ-3#ðD?S$eSà;ïáa¤Ô¼ó§cøÎ4ˆdž0}êîÕ9¹¦uAÀI´‡8,‡I4¥Nù ±Ú»èuøœ™¢Ð˜Âñ+ñTúÔ'ŸL+]¬Ò/s.§ãptçBk 8GÀÆöÏñg€m„­}Ð`� +±H!^ô[åjzoÁ^ØO b!ä{ƒµ±Ëö½6óÄ„Sz¾þoÿ4ݺ¾ö_|íï|í·ï­µªô»qîŠÞ�_Uõ©�;ŒÀOÿÜçþ+”ß”?�ùVÒúFBLçAÅäܾ$^düÀé1IKøÀ8pe 2£B8¥Ò@v„U uÁÂŽýÑÜ‘Üç0�¾À!È«ËãÔÏÔ•m†²‡1ÕS5o÷à †Ç‡-÷zéœ,«]œÒè"”ˆ!ÈR8  @œ±O_m_]5½8¸>Ý¡ë¯`þoË+ «ñ·­Ænàí«É«W^N[81j5¦a¶,q%6©uŸ 9�y½`eþ³Àå2w`¾_¯WÇk¥d¦¨ Óò³_4½V�UÚqVkîçW¬Ææþ:G÷5ú0õ¹A¸¡€æ |É0Ù·—Òˆ-ãvM>w��µ¸xŸ‚LíãrëH±¸!,@Ë€aåÝúrÚ®­òŒßšðú^ò"gXæð‡ahfJ@Ø,Ïð¿‘h,ÕD=E^æx˜,áÀ£p @J�½çdzâñ‡Ù`Á¢OU¨Fàm�p³Ð¹ØÉü«>Ÿ]:²Dx…ï©'Ò>ð×Å´Úqݹ�pk�íŸ-ÖGé<ÿeÁt£%¼k©Š,Vc €4¤Ì?¾;xú€ø/ô‚†µÖCOºž>Õd½ÛcݼôÜóéúå—þõ¯}ñ×ÿÃ{i§*ûî)š*T#plFàó¿ô™§êÝÁpÒÚbOã:&ŒzXUá1T wgÇ�²Š"8�"Áyõîd²ÙL¼�3OªÜ}æ: y²v>&^óÖÒî>fÓH]û¸,ŒÓÙeˆœ3Ké<ÞӺŴ€™VK+¨*»Ç4 ፭†¦X¬½ì~œÇ®à ¼f½QäÀ¿Yû·÷ñ°·ÕÓƒ?§Ö(a½Ÿ+tJ Ïé&”${@Yäô)¼‚£AHûÛ©�ƒ1·®¸÷Å­‹îÇoÃT¸‡WfV†{D~�r¿qâ Ø.€B£‰Y;ñ`gåü/\Y>ÃXÖÓPòÃÜcÚÈI7nö9¯æ ‹Œü瀚k†áO .DÚÓøj*´O(@CxÕƒçuÌ¡ëx0l�¯fÔìÆ�S˜}ÊtEˆÞD÷ÃúG�,ñyÆÐÊ@âÐw´™n¶ÑDËÓLû¸*Äs;û.I!‡éö&Ï-“rN¢ÅÜ/ûêæ >˜´\/•UᘎpQ¾ðì„<{øYÏÔ繞!šãb¥k &jÑÚCä�ݶCú�üˆÿ!’ì1GdŽqB:puŠgpÎ ¤pæ€mÀ(®kœH[éVKÔ N(U§~ú@³ÍÞ3fdœÍ¤Œ>G^sPŽ ½sž2'3ýöTOïÑʈÆÒ…ó‰­gSoÑ•PÏá”DqÁLy]ä�`\‰+™I‹D?ÍW…jÞÌôP€»„Ôm!`tmÄ=.Ìô.ûþ_Li ý¿˜N® Y›®@Ïq´ž[j8±&´þ¬‰¬`à3˜„U¨a×#l–o‡SaÚ0×—»x¶¯-ðŠ á6qææ€)[ö6nl`úÿ¼V7)·Uý>ˆ#p;d=ˆßX}S5GFàg¿ô Ó•—9ÆèJš´™d[΄L¿0î¡&Ë0×m´#¨D˜è¹$º�(™s'ä›èѳ˄SúÂÉT‚K‡*#&q¯‰ÿBÓÈ‚€˜•‹wîJ\õa<]XL{p``mˆ­6DW}g”NSχ>‘ž\YHgð»ÐǹÓNžèE íÌÉ1;6Y4$ºèYq5©W�ë^œÄ÷2ÍAÈý÷[ý+3¶ Çqd² õŒ8¦díNý„›p„yoÝ3¿�·Î�&ÁeC¨@�/CÈ,�úé,öþ��\IV@%@}܇h·~½òËð‹jÝ}Ç Àí�|˜âÃ+q^à‹yÅóCõËN«™ð �¥_Â<Ùy¨¥­ííÔ\¨§>=ŽÌ£Á.]Ni}]Oçg°@J}M:Æ!Lô g…àuK�Ëà¶,÷�£ÒÄ-wt|¦Ut�½›ÃÉ69w8l¸?“ó�Ñ„Öaºh±è„‚„ܧ†Û ÐäÔA.Y¥:û7' 3NÚo ‘­�Ù³ CÓšn§¥ÆVZœlp!d\ÉNY|% ðÃ;ýáR’BpLíóxºîkÎM昃rzdª~Ž×ƒ“ú&&¼8Å«ë p)õ8î:À{7ëX‹#' `—“cN ~¡�£±D ´¬%¬uÂBèæü-à» ŒépÚÃè#@RWCóØÔÓ2åV,>Ä6€óioºŒaÐE8|×Y7]•\œ?<Ä ü í„T—@yàׂAm¦øb¼é¤:po2ï¸þ™OLï gPŽ·ÔâHíI¶=p„Úx´G[ùÔ…wйØ)(óè4·HÎf!º‚¸Ð¢*|¨B5¯;®<ÂJy÷¹ÁQ”\d¬0Ï·ÒþÂ(à© S]óMðo|p)}ÏS­ô#?t>}ä{ZéôÒVj�÷R¬÷Á3êl¶lNð˜ptgÃ5‡}øCÖ‰åÅG@TŽ4Ô8æÓ|‰»ó]â¢oô/qÒ…å¥P. æÊuª¼ö¤)Yo9R³ÃrbáDZ{i#}ãß=—ö6‡ûÏüÍp3×]ý>ˆ# gS…jŽÛL;«ã•ḿ5Úß‚°Ð‘¬µZï˜;N˜<‡hãó„_NµL”N–1Z.CÂS™ƒŠfÏÒ¥©°®ós.{ø¬&G´Œ—’œeNž8w: 1eÞÞeOX¦Ÿug{¨ã–fêvYð0�Jì‘•Å=Ç¿ôé¶ÈxçǶoK:R²zy°G@æ7Ce†Bƒ€^Ã"†·p°¤è©[íy`öh#…M5ÿ�Xh¦‡V—Ò ¨sè�“.Á.‘t{�ñ.Üåðïs!÷¡Œ0©ì]Ä‘„KiY¯:�òŒåü‚ã¢�”nÝšâü�Ö§ÜŸl§ü6ç‚ø¯»QZnÎ"{@W¨‘Û ,'o F¼Ñ _Ì ÌZ¨©ÉVöÌåßì�Í7*"gád�ŒGœÖQb €g«·¦ý°°Y'-ì“ÿÐY2Ò| üfÌšk1¡8ØÕÎ Ó °","€NY‰´€ºÃÚÑR�ÜNlŒ0é3!R”@xs,¾h‘âX>åÀaüÃ*ŽcÂô `Ì wŸ´ÓF·©àº‹ÅÍõe 0.ÅIá×vkðÄûòCÎ'CBº0= ‡ï¶?!) là7õ«�¥‘*ÜÐíÔ°?h§G=•^¸ì©9Õ°ô#œÔj ÑÄ7‚xxŸ¿0·î7Û®oó}³Ñ*T#p§Ȱ)3`ÎpºÄñÛ[8Ìlb‘r"õ±â¬ÁÐ/. j‡ÎNÓÇ?z>=ñxAô%,å¶R�9|A+ ST±FVÚB›:ú‹W`7æzïbî|È=#L¿Ñ `}¹ Î`…ÐÅÊÇSrÖ®¯¥ž½”ö¶Y›Róƒo´®*ßý9RhU¨FàØ�Àç?ÿùí奅§§�mí ¦_i4ž{ÊD¨ÖA¢"&]4J]ã嘌%æÕL  &çÕ‡¯Üã{ä®-£”Mq™æs¾B¢ê´uîl�Eä ¦c½ ƒp �¯ˆ75Œ– ˆ,H¹ÙýDyת¼^ñP„ò)û°dª8�L*°C´Ž2óþ@÷3¢‰f#®ÛU„…<¨íS8­F—9êH�Ô€ppUÇ›1§êʸÈi¦^9¾ Íî´y{ÐqÑ­ºZû¶¾žÒË×®§=ˆ±ü=þZ·¡l#¿ùY"5𬠔Iò{e´Jb,jt@fõ©iöRö{Q<δS0M9I†ÈeY³¸¢íø¹½šêý¸�€Ls@Š0Šæ&A�L27Âí0J¤ð–o¤ò�5,Ÿ& #Œ‡mšwêц»Çíé@pÒ`ß?vã V5ÊÔ œ!K„¬i´N[Î0[ÞK\ˆ~E¿)Î=ÊZ¾¸ÊR Lͬw‚`ƒ¢� t;Í´ºÚHßõ$fÕ'{ô�E8õdž¢"çýväõÙoà¹À«è¨�i�æ˜ê·�Ã(ñf)²dȧІ,à&\:òkã#cC­UÊro�>þ±‹éþ˜N÷–qä³Âç&>i´ˆ �¼Gø+{wØoáÚ~•—‚¼òù0W<‘56Ч}:Ø=HÏ}ó¹ôò•—\Çÿ›¯>óÕgo+Q½>`#àÌX…jŽå|þ ?þÏZ�ƒSoo3IîBXÀäÐƹÄPjA‚ñÇT2îA ¡Q €RZµ‹‡Áçx/Ö׊#ïezQ$ò›g–_‚ަ(å…µ4篦‹l|ÄÊG�{œPãô€”†híÁø—%è³¾d"D-£"!63‹6ìDô·*ÃȰ6÷áDL O<‡�à¡ÓG~( É6Í�á³Ò"r†ó§–Ó…Ó«éD·�Ÿ| Ù7Ì ™5à7Y”‚qP@Ü4„ærºÏKZ6ç„<¢± À"¥ú9n#ð â›8 ¸É£¡€4³ÄŽûØ=Žk̳�çÄŠh7t£§réøí[KÍ¡Ä|T#«á“Wfpós—såý-ßsz0ú1"M†B¦À(­d”ÇìûUp‡OÍtsm çàý0µà<Šz©3˜Ë[ƒ¿ÞsˆIÏÎøÔ$Ê\±—Ÿ+Ìäh"îcþ=ìñm5‘œ´ Áôç»ÏáÏ€?@í\7õFeâª[wÇÊ÷¢Ë1/ðB\ô³ø5¦ Çs„aUsÿŒ{ Au<§ âdÐç`€t`èÞ�”�‡ñ³îÿ¸ÜV‚á µû¸¯QðÞôdÚ!`ß�c˦h>Ô ¯ èÅÏþÛ‹lîïݪó¼àó‘µH .}ÖGÖÑPa£[wÈ«y4óÇȈ4,’X¢ßóŽ=ƒwöVë°‰€|ìñ£:æ_€N µpp<±–ƒÓÑ¡UýV#àÜ:»báã]˜��/‡ ØÑQk“-pžD3àè™!B¨ÅÎ(=õäJúÌ'KìP�ɾ°î¦%„Ö5D0]c]ã?ç­‡?;+ž‹LB ã\%îçÀ|5öýcízPK/¿p-]yî ¾&ÿòïé«?X~bu°G ˜ ì�¬¾®�×�Ÿý…í¶q*ÔhaÊ•v¸à"p°Uï~L¢yà×Å!TyšµÖCÝ8³ÌÒx.M}3$%S\jW‘4„°!?¦G+LÚŠ p°ÚÿÇ.œKïyè4^žY@Xh–P¹FëE›6ù±Ó1ú\�[9‘ ®%áe™*ßTªý øå½„_aé\eZIq#.Ì¿Úþe\Ÿ]]I=Ïç’g@ân]­VÂd^fÀJ¬;îB5ïE\¾ r;Êrö&?çzÌe9·Îý„ov=‡yð­[“týúf<78} ›ùŠÃe(údR(ª�äÜNüR¿â4$©]•ù—9ʾ,gºuq‡¡ÉÁ’³®ñD¿ÀYªƒIœÁGdz.d+rÎÆIA^0Z‡!·Ê×Za9†‘RýÇh„?·…5ñ€»<¶‡! Z\„“<ÿ;B@PÁä²®^ËK�@4o�æ!ݹ!æïæÏ}¡‹¹¬Ý%= Ÿ4ã ±~RÏ¡Ä�ùFÔ;u2¥G9ÅQk1ú/cE�ð]Â7eÆß™ÉÕT¼ŠT*ûNi`i  ÷áVÐïÞæÞg_S"PäÓòò {û9g˜«ã o4º‘»ØIŸùÔé©ïZÂzæ%V¦}NÆñ¸¿iÚÛÛ�“pš œ¶�À.×2«ü2dËè áå?ŸgW‘fCâj ?kW×Òåo_Ný­áý÷¿ôë?nZŽÇd æx|kõ•ÕÜq *¦�öøl{2§� ®O€-,ñ¶DD”&ËÐú‡V�ª\'˜PgôI±n8Ý–kHL½å:Bt™–ÓI˜•1SùIâæC{Göý£¿Hgpû虓éç¬/ÁÛ(Ð[PAG¦{è'‡ì ÀóU>•Úß«p|G ê@Af¾•0+Û+{-·êÞú&ÖbA‹BKíV:ƒã¿eî-¨ð:šXË á®öMâ\¸Ëd|Éxphµ“¯3örB3X¾p·~›ó0EçÅÿõëÛéÆ�-xÚ£Ïa¹0ÃÑÜvÆ+²ty•ýÊŒHhU©·ä¾ê|ÜZÞ@k”Ëß•el f%¾ÉXj¦Jï9õ3–!÷ã5j,aØ.D¼åÃÂHÆ%[äºøõ�Uô7j+_Ë&ªû±á@–VjÁP´ñUã½)ÌŠ <æ›�+Vñ�[2ð:ùS Ž*È3-Û`­«ãg„7þ]ÿݬ¤{½´Õß&Ùynfê ÆÞþPý‘8æƒ2Nƿؚñ‘V0ûY0-ZfþlïñÝÿ[ ,£uÖ>–××�Ÿtá¡nzâñ‡È?dØåtÊú}ÌZ òìÄ�^g<¦‘*T#Pâ‰÷ «¼Êá)p'„h>›C+6ÎŒ¶Øz²‘¼™>ñýçÓSïí¢´a:ØDóßdÝTó�ÿ&€¶ÕÒ{BO߈9=ªº«Ÿ™à¬(]2ÿå:1�µJ¼â_àÄáÚÕ›éʳWÒÞÆþù_þµ¯ÞU'ªB÷í8‡V¡�c?åoþðÍ…Åþ3�ÿæ-ŽURÀJR�¬ :ýsÏ¿S9!¼$Õ ¸n”kÇ�ž#®X_ÊtÙ†|NÕ>åÉSÆ6«FúEƒ¶:¦‡8nít�¾x, LWÞíŸuþe-GëÏ5æ-ÿ�Rý×ÈäMfÃ}. cƸJ?kb/,jNÜâÝËS¿—ðz|r±‹{˜~,¼·�oÊ�ÿ3�a ưžÛŠä¹c¹ÜÛBð1sññ>—§ÄëœÀñh2Ï–Ð3Ócã\òÊ�až‹6 æ#Šf €„i´ŒQÆyÛ<¬‡GÃ\š”¯eÿr¦Ã_µ­jlMˆËÑB€b—¬Û~:ïäjýŠü¯(?ËS¼W·ã7Œ³B·Â`vÁÇÕÄ— çØŸa)¶’¸Aâ—`/ægX“!(ᾄ¸ ßš6'œkñ°¿[_N·F+imÐK;X Ç®… l'·ÏÔ[ÖW¦ÙÏ`:ŠvÊô\.—Ÿå-ê²iÉ[pÊk;{`¶tHÊœÄý`_$Ç/>zá€Ad«KˆKŒRÀ)¢‚Q’‘«B5ó# ø” 7ó¡r×µ|™coùÝ6Ný&ëÊ®¥~h9}èC«øØNƒýhþÛšiŸ#i†ý~Z]ê¥Μövb€sú[Êš¼{…sÙ¢~ûZ ²� ![~®È)ç8/"¸xîdzÇ®r, û4¡¤”+{²¬Gì—,˜�`@¬,Â졌¨îÇxJÂ=ˆƒ€œCF]À•‰!„jÂÜ7°Fîî`y2Içpüwv©“:À˜B™�¼9k õ¡¡¹nÞ£Ÿ ÁÀ–Ü»´w¡õ‹(ÚÉI¹Mÿ$yï?¥H0íðÊïÖ­JE¿mäa7n¤ôÒÕ 4,Ëia¡‡c@ñS-KØ1P£°Ï’B_­¿\âK ¯bfbX4t°n`¯f» ƒÅ^ý)Œ•þЛp%M=�c£Ä3}q0#ä14…O„0 V ?~4ÚZËÓï)šs’4Â=Î`Æt¹îçô¹‰ÖU §Ÿg¢n#¼‚u ‚n–žsU¿Çh„Œ&°¥•˜ÇŽ�Žõ{Xä$^ÃÌ~¡�S2� F0.®ó’@’ZuêüÂ¥-öÚ[xpÝÀ¾f°Ÿm N¦µÉjza#¥k›ä—ÿ§‚!yð»—PtÆ‘bzAw~0üàˆºzõø¾ç{6_ gF�bN¤±c¼�ô‘~"fÙ�Ã'§°o¬£?q| ^"›;±RÃü‡€½&§ãnÒ7vVÄ7Î+P+ç·œBbªxÕ` S–Ë�ÀÉÍzÐdÁs{¨Ž2»ÍEpn’–ºûé£=•>÷¹‡Ó™“Û¥®¤¥EðHe�ýÇì-`-w€/€Ñd?5ÛÂ!´šuÏ…£kž°ûFƒyoËÏ«ëÔþ¾1 0ðô?ÅÆb»YÛHúoþ,]zîÒîÙ¥S?óF[©ò=X#P ¬¿gõ5÷8ýâS­Þîn­ÍÙÂÓM·8ùKÄgB^¦aŒÇ³ÑÄ3\!P¤/ʉÜgûPÜgÓr‘ù|ž¥K„ùï•Álš@Фy5°Õ!†X;ÒêbK�.°á¸kµ>mm"Œ!èRe³v ŸW¶TÅT#0?ÍŒ2QûOÄvm8 †n{ Æ£ZHü(�ùË\kÀ]·(øá}¾‰x3ÆÊ å=¿•Õä·Ûi©¨lœ[¿NÁ sR¿�^}Œ?—ùŽ-r†@>±©l‹ Ùîž|ÖÉ/yäµKœkÀµÔ1‰®£©ÏÒ èÈ]2™çÏo6a(º–ó0޾—q¦Ç8ãö�–®Õ¦{XUh¾­E€ñæ¡�åÀaþ­Á�¿£ü’Wý·4<ö/öþ‡aÖ¥¼G HÎ@¾¼–eMzÀNü(pаÍÛÝ\ë(kyN×8ÀûÿvZEÐK7ítkoš6‘�ëë³²R\ßKèƒÁçî{†k⌾Aˬ�ç¸@XµýQ–gódÁ¤ù çƒe©„àܤ…œéÈëðÐM˘Éi à¶�üMæ5ÇüÅkªˆ¸\3ù’QŸ œ•æ#lálr4Þç™ M~ëZúž÷ŸNŸûì“©Ó¹™Æ—8•!ÕÁ.ðëV”fÀq®O¡—Hð–…£u•_ðΚ¶Ü[f>h¤áþk„Na1sãò�´öÒšøú¹§Ÿ~ZįÂ1W‡*T#P�ÀÜ|á~f©±Àâ ¶4úM˜3igmf&¢ôà:Ró‹D.\.¾•Ï% ïÌ̳x3eJ(ó%Aœ‘nžò"KìwTûê3ê�iX¤t²×K�ž?—ΟXN=k#ö—±H)PP�xÖ2þE}öÛFû�ߪßã<‚Dw‰qÍúkšôãìh ÛÛ3ÀÞ*GµÓ|XG »²Üù¹`w‹Fò› Hfšeº-�÷²+¯Œ¿=}'v`ŒÂ��aÚE0�2.ñqÔ<ë$¢`ˆr g8L‡e8dJd,‚±Bc꽋×Ày¹û^TÕ”N3M�_wø\æ7&Šó�¹ÖDcÛ©õ9ÚsÄqL2r T˜^ r?ó|Q<;¸ù£ÕÏq� ¯® m4’ž€±1ðÓ~ôüœd³÷I¬1À�€* ? ¨‚K�èëfÂV·€DpÅ-3ÓZ' ê'Òöt5ÝÄôÿ:rï›l³¹µÉITÑrŸ>Óƒ wÛ‹#@e) “}û`äI³©Ìô{'OÁÔûœóä{™f?㢿>sÙu©«ÆþëæGÁš:Çö¸Ó=4ŸvÆoRpgg¬À’’¼b°ß]Dq«Âq�¸Œù^W†ÌüÃÎ㬙¹k­)‚¶„b¨�Ó¿úøVzÏ…Vúô÷?ž¾÷±¬Å¶€Ñ-,p@kñU¬7ÂZ¬3±‰¶1ßVÙæ›½GEw,díú÷hq|§2‡&¸Ý·×_ZO/|ãÅ´»±ûò¯~éWÿŸ;®"�ÅT€cñg®>òÍŽÀAÚXjw<«ÕSô�O¨iB4D&"œÃ�‚ï8Ÿ—ó{‘§ìC™?ßçÍÓ6õåÂ.šRë„-Ž“`âZ@»?NŸ!À2N�Ò€S  YdPŠ„@Ù»hÅ~xYwÜËöÊžU÷jG Û°:ƒÑn`¿Üj‡`3öB™Œù�¡ùÎÞ€5Cf´sÈ£ˆÉˆÉ0ÞL €_Q&æ(ó/ï@’ÅÇ}˜’��>&ËæÇÔQÍ‹êɲË›yvùnSÑhÄÞĿ07&FæÆ=È pCgꄊš¯¯(ZÖJbQg97÷¢Mó™¡Ì¯@sÐÄd—-ÌK5ÝkŸ`šf5–5wãÉãäsŽã”p¤€®ŒÆ€˜ÿ{yM|%^8îKX/�š"üÃ=×8õFfYÆŠ·ÿ ûƒA�ò°@ !ØÁ`Ý“HÛ<˜¤ ö?cüx"¦i^ ÖE»1wPy0öÄ…ŒAØ·Á¶íC¤ó^ D¯ÜkÊ”ù-S<Çà3Q ¦´8ÐG€kÞiŽ];Ñ€¶C°gŽ| ډÿÙÞr•ßñÕÏñ�À„€¯ªã2ÀM5k~4ýgéêRúá¦vû =|~’~ü‡ßŸ¾ï©n:Ђ·®¦öÀ[[‰€¯€- ÙaÍð+¶íßÓà‹ ¹×e5%~ˆwÃ>–0ã:Úy®ï¥Ëߺœ6®m²îtÿÓ2u?ž#àLX…jª¸m¾øÅ/î.,¥Ÿ¨5÷™«·9²e“ýúØ<"–á¨ã©^cE(‰pf\§á¸Š9}ö~[ÝñZäñ9Oß>„Z, >kάšE‡Fj:Ì{%Õ v–›ø8�:µ‚„w„I[ œZ Fx��ƒêÊí„îUét¤äöl¹ Õ8‡Îúòx:A.ƒn=9Ñí¦œgÌéÁXhúŸóÍ`]<ð¾Ü œe?ä8”ÊW†>Ä0òÁë.ïÖHÓ"=Þ|.ò› ,›sÔÜ †¼Äc¹½vï}éôÌ<Å—p· 1ö‡ÇPgÖ4fÆC<Ó �£1�ê -b!ˆ£È¢ë|µ`¿¢ƒdðþÊ ÷‚&æÚ ,» t›6›ö¥Û\CŒ&Ì�QÝ�ë}eKUÌ9+n ;‘žÇ‰ ;‡>`Ž�¿2Š ì $ G·u·³aé¦�›i‡2-xr �sÂF²Ì1€+i¯±˜ö9`ÍûN˜ú*C­Í*�[O Pp¦` â¼Ëð›gŽñ�€iEYïóB€ü|ÈÍ[ÌÏ„N0®‰òj2þ'O,¦^æ+4µXí„ :(Öæp³\¿#¾ú9^#PçpÛgg(q¾­)�ø�Ñ`Ì|=d¿‹‹éSŸ<“>öáFZaA<ØÞkpŒ›–Ó¸T=AX0á4©‰Â5ŠÈÀ§¼-@Û�ÛÛ¾­+oòÕÚââ›Ä™1~<ü[‚˜=ؤç¿ñ|ºÁ±-¶É5µß“ÕWÙ°¨Ø´úœ·nþÚ~ü�ÚÝñ´:˜T6w™À±€¨P±‚Î…»¦’ ïå’Q¶>{w66y"~þy.-òÅô�Ÿ,M–ž¼€öx/ë<:b©/©7zf›®q·ß�4U6YÝ�ß³PlŽðM&¿Ìuq(´Ú]Ä\�ãѼ5%èªÌÅS0ã…p©xÎp—a0 ¸Ìä·�B às!¿ö!’­$BƇ¹ì±E'mlNÒö6¸‰–CÁÜHÇaa`ý\e>ÌêËi™¡·VŽli£µ�Ôp~è*Ì? ÉÙÄ7ó{´ëVðš!²ýð¦ÓκÛ »˜„ mÚÒ ,+¸çíö?÷µl;�µ¾fËUâƒ:þõÃ@K }UèL2úȈm…€§b5Èà°#£"|‰;l(,dT,7W†hû£nÚwSáÚ¯çvöiwÆ[FžŽ¢‘¨†Åšqâ[Ìt¤9’�øù¸Y>k"oýgž"Á9‹Êüƒ–Ö9fNÂð!­¬4Ó©SKMÐ@œ•ù2äÙ' FDì*ïb å½€µb¾u Qû¯Œûÿ‡C¶†‚cË+�ôèÅ•ô©OœÃs=M[lË\…*\a§Â3œì ñOÌ?µ)s|4S!¦øu…XÒ®Eщ{ÿ±«ñ y-qÚéÑýzºŒÇÿç¿õbšìOR¯Ùûï|å+×ï½Áª†ûyªð~þëU}ÿŽ�ÀÏ}ñ‡~z¡;Øh´Ù\¬5‰¨‰{%99wèF¹žIsóržŸ_7>WPG£"ÑV¶¥åeR§Ë:ræD'=‚O€“«8|añòø@=DÏw£ä{¼Ïú5U?Çr‚’¿Ó÷ ;‘®™í"„ÿ*6-O¦<ØKÌû,<LE ™e†‚ "––k(:ˆ=BÝßþN�ÒñÑ¢íé´ÕïO9þo+íï»/³Móª§•Ì úmÓPt´|ŽûáO´o—ˆ*ñL³â|œ˜Â Š _’¿¥¬ÿ°®òÉ”¸r—ËèˆUTÒ@°à€ ô¢l—ã óOÉòʵÌ�^¾¢Òù Õó>ñ×T\ôºß„‘w[‰'Áü�à?!:æþx~ \¶2®Ræ?|�jüÇjÿ)©`£Ò¶Óþ¨ÍV •}1Àè.ûnv0½™h†ž(H ‚R€gÎpíŠ>F¬,3ÿ± ™‡ p k÷9žß"�ï·Ï ÆQšjTù�<µ¡ø"[ÎÀŒa²¤åNXïDee…yL,Ÿ¯¨¬ú9¶#PBi9ÂÉá¥ÓgçþðÚÏV›•ÕÅôÞ÷=‘>ýé°Ý„­¡“K0Ø»q—°·_N£~\èžMeþÐ� øšèÆš4dÆÏ²Ý·ê.NeÜjz„çþ0½øÜ‹éÅç/{’Ô¬v{ÝÿàËû'ߪ֪zîß�–«B5Õ¼Æ|á>{êw~ûŸÔÐ*Bjó/32…0ªéY²3álâå]"KòJrHí wª 7‚°—ù n&—%!ËЄdÎÌ/”•Ç”MTm`ê)Áf²Ç–5 úÆ2b8yYa7‚w÷ö!Ì8§ í›3h%Ôríe�ya3.۪±þôÂ]≟1ï\¡Ôv`¡QLMÇŽ [“€×f£Ž¢Â¬½Îð5• œ8„¼œM˜§4ÌB@(ùÄ�` ¢(mÿ²¾ï"úˆ ì¡t¯²w÷ØÿÏ–—F8ÿ‚iÁYf] K‰Ÿ¶ï·Z� Ä›ÛdÃý&ð)ú�ö­<µry¼™Â3³T‚Ãu4¥åÞjl Ï­Ö£ óÎ…ès¤–‘‘“˜|Oìmbº€Ã²6× ëÍ¥³ƒóFÃJiWgl€I�SÊo(k­î÷ï aåÍ ˆB �Ñ6öÐü ·càhÜCL7ÁM®Qv2®‰ „O¬.ÔЊ+ æÀ·�{P[äœ LÿÇ�Ôgÿˆ«€Eåk[ƒqÚÄüû8ð„êÁ%ÑÒ‚ž "î ­ç[‰–I !ùÇར®òÛmSá�™×±1.ÒùXWÓ<^¹„ylSsëgŽéSoµ�çóÅØ¾ƒÏvÊ*ð^ç Æ”)Õý8�€� ¬%y #nÀ,ÉŠÚzé­p4yºÅžÿåô©ïª®¥Å.p�€`‹uÑ#^ã Q¶e¶Ö2ÐæçYÅ*0kïh¾2:–«x)+)p€¸2ÆŠÍ"&¹–ÕÙ¢ÓO[Ä7on¥oÿù·ÓÖ­­ÿüþê×þ#óV¡G TpP�Àë�ÀôtkaõÖ´¿9ÄÔ+!ÑåäeJ®½2•�Á›w"×°LÌíXpMñ¼jæ%, áED 턲%YɤÆÄÎŒ.ó?…Âñ=Ö)+)ü,£åØßßAÛÑM�žÂ1[ë!Ž/œ¦nl¢ añ"{¿\Ä™èE¶V´ÀS�d6[…c6”tð|"¢>™÷ÖºHxÔÖêJ/µxWKlX{Ú¡¾3pZ‘àéåö+ƒ˜·º ñaä ô æ�Á¤dFEÀŒ·]ëàߪ³ØÄ¬rÀuÀßzøÆ,yhÒ©ïêÕaZÛØNõD>'w¨±l¶r«i‚E€0�—ƒŒ}¢cú³Oýmµæ¢ ¡AmMâøÏÚx‡­C.·>°'ú`ŸuúÒÇL’†“¥Ôh-avŒ �ºlm¢k|WÜh¨Aò;™G…ƒª0�is„g£5L'Ûã´„ÕNÏÒ»|ß"rCÓÂ[hdŒ–vBzŒåH R1oPoîϸ)þ~æ�~Çÿ´ÂU‘m ,j9r<,5qVÛçjÖ°ÖA+îV�:ñ©…åÚ”ãbƒÑ×2L&Ö{° üÊ"¯‚—T„€«^Ç¡§ Ô9úoo|&­ O¥�´˜vFXèPL˜\XNû”{n}7�;ŠöÀ'q�µ¦Ã$!¶Ñt/¾{�^ƒ úªiÓ¿}Øì²š[<?DUÞÜö&¾èèSüòƒ•�y�µ«ˆs¶~FNÑXÀY!möéþ"KîéÕ©¿«ÿž1ëc@ÍÊl “ÏU8Æ#À<>W˜ÿø¢P«δ9áf‚`vxÀÚÐèp÷¤ „½“�têlJ?ö�§¿ð‘zÚØùV:ÇL�É"° ×ð "døDã¯SÌ:æ(À¼±‘‚â'‹ÂˆvÇ!"Öý\æ\Ü:Ä_Æ4AÖDYK¼Ç3¸�P¾É¿½}¬ houqEµ¸™â—§�××Óóö\Ú_ßû“ø+_û��ñ»úô;Œ€Sjª¨FàuFà§~áS[Ý¥Ú϶Zh>ëœï ‘Ôlf¢"-&h&x§éª—âp\dR¸¤v·ÇÕ`ÏûDð?f¾—É�Mòäq½ˆ…ENZ#êGÍÕ ñþüO L6�@¨Aã$gàœLÛú@ pmŠÅÙÁõƒ ö¯abìJX‡qš¢2�é’9��6ʾr—­×L×J`æì’¾˜×9§¼‹cè{à”ó@¤ǧ„…‘@„x b\xu@�«däüfÅG/â¨;ò}«nÇsšøµi"°jjÙP�– 8RYÚ¨áJ`©×Y`¦³l³üÔÇß—Þ÷Ø2sö�´Üu-`}r� ã$ �iöÞ"qª™�þ•+©´¡À+ zÏ´bmñ'G„Íò2:Ãj�1c(`Ýõ!û°þÁ7O·ÓMû»´�´­SïpÌßÇý½�6¯o¤ÑþèQ T¡�è‡cQ=U#ðš#ðï?ýƒÿS{¡ö¿Ô9³Ûc“j ¸�:¾bÿ$Dy̯š’©ùÇA`, 2 ¼Î]jDdJá@.W4mZÔädÏâ`t¨@òÜLW‘UÆcš,b2ô#$ÀXý§Gj§‹Î! Æ!šD!’ìƒK�û2ëH³±ßFÊ-úÓ`ª¸}2fxFÔÐ×aEž€¥l6€}{Ù7ù.±Åÿ¸nGÍŠeöƒ CÛ!é\i¬*�ç]”.k77ÓþÞ¸†1'úèÈ8Sv§|+ïB¿Î Ãë>ZBÈ?ðM|à i¨¥õÌÐ"Î?;i�SÂñ¡jD¯ ZÇ{ 6dVèí7aÞd'€~žBû“ƒOAàXÌ%¹ªÛq�,hƒQ~À�ÇU†€ øPˆWÂùáxd€1>_b€G–iþ�˜ÃTÕÖ†>Ök£&šþI7m4Ò×€½ËSN³Þ AÚ-¶ÞÜÚÜ�AKŠa€Nµ6‹ÖÁåXp÷B¦EíÂ5¸V9ô‰zø„eç�`€¼ à¦ù�wC™/^HSààWœ#ò©9´Çb׉³sÚÑߨÜG£«·c6¿֙™�¯añ5ÅòeÂѬRgmÎÍ&:úáÍÔíí¤}ô|úä§Î³ïjеa�12ÔÞý° Ï!Ô*j X "x//#2NZˆüs- GqoA×díÓzìÒ ìûñEœãî°ÎÕ~/ª¬~ª˜1  ÕT#ðGàé_øÔO-t§7ëÍ>Ž’¶ 48‹¥¿²ë5šþg³ +&mé0Í G¼kÈSUjç§ü˜ô-CŸd€ÊP>F^^Ü=…s ÁMˆÄ�¦˜KXeŸ;ÑH1Í<Õë0ù‘ÓG³Lœû‰Ça‡­Nó°þ²�ê^�€# 1! ƒÂ�Ć F6×ç¸{«CIûxÎ0ýcà:ïS–Á€È·OøPË¿Ž»‹[ëÛG†PÍ䔽�"ZW®ë(|‹£ÕÊ”Ä~e™…âe©Áôc–�Yg¯¶…ôn4qFÅJàW®Éï.D$6Ñü{.›¸2•qŸ—ÜMdÓP¿éèwÝ]ëU©û{Ôˆ+اBé&‚hO­¼-~>~„YˆyØñsg®¼NiÕ‚¹<ùà@Ÿí=õ•´;é¥Í~+í ØŠƒP[íÿD¥ö£´¶µ—v‘…S„uP¼c¾ �'„k¬I L)È|¦f~Éà¢ÝŒ®"`+{ߢ ¯L+óÑ”y§Z�h~-…t–+Þ+hi‘@|„¨Ð7®h¤x>ÌQd¬nÇez�ðŽp€¥äë+}¾Àð7[Pg¬ìû⾋àZzìñVúä§Ï¤3ç@�Ønæ )À’¨»‡0ƒó,Ë÷€S›(êÎÐjjxϺl¡qAìãý²M·Ü[f}JéÚK×ÒóÏ=:Û­æ_þêW¿ ±Z…jŽŽÀ½AïѺª·jŽÅü�/~â\³�³¥´¥±ÉµÍ: é‹DMÖþkPV°/2øSüÈ6H¶…± ]ˆÈóù«�ŒIÌʳ!H¤½0ö#˜$h®˜üQT¦%ÛO\XJ�_8•z 4; FjIÙ?Íf7è6ˆµÜ?ëªB5w�ÌPøÖ#€^ˆÆ{À´ÈPâ€OP:ð�b -›‚¬‡ÎÁ@_是cã‹õqº~cOä8=•L…\ÈœsΨ»ìë+É)-tþÇ…¡AU ¦ �t¡ ÎöjÛ©7½•º“­´€ù?ˆ¬m5mÂŒ3?Þͯ½ÊG ²�›¹¡ƒéèÛZl1@LG?‚ÆãÉ~—}7²Z¶ïf¼´2ÂO-»B£6g�·Ñ`ÆFA¥`šcAØfX›„w¡J=g°éàï0ëêÿ±¯ ؼ`F\[IÛãeöÿ÷ÒÞ�#±l ‘Õ)"tÛÄúf}›óqXSÄÍB7Ü´Ø¿¸`ùÁ×™@ë8Ûä¦'â 4¢k¹ÿÅ7Ä TÆs·¯ñ}Ôý.¿5¾�4ãHtñÝÈÙ“oyŽèê瘎€kÛ^ØÖ2ÂÿŠ~™ZH«b ¾†ƒMâo¦÷÷I˜ÿGÒ…G»­4Þ‚–~4ïÀî2ˆŠÂ~\Q�°™¯<ïóv¤‰(9Õÿ àmÇNq~i‰#ÙVZ»¾–žûÖsi{sßPí/|õ™¯þ‹(PýT#pÛT”ÄmR½V#ðú#ÀÎâÅár«C€ Ö@¸Š©p0.7é1�C„L`ÜS9q&Ïò5ñÅE¢Ñrâ÷Åg‚�bÎ�µþ6aœÏ0*2EjF= ªG5ìã̧̌_<»Š5ÀbZ^À#¬ ‰'i¨|‚�UáøŽ€P�uÇ!b{F�°D°÷êÅîX׫Efæ#äy"£îéÄkö?RÜKÝBûóµ8uˆ ±Œ9ZŒ ,dóÈY}>D°âëÜc¬ðn ÷QŸ4¡ìp_Bp¶ˆCÀE\ Á cžµÿ…àŒ~Ü[È,˜xÙ…�ëÖ`¹¦û0Lœ4+p‘Ìøžû|h�[6¶ Çs² ÚlGk5ôÜ0ùãâœð¾–€9°Íq²ë”ƒ“ì?ÅtÓδ‡À2ÛzhÿqØÇÚ¦•Œû�]ÇGƒî ¦é¥[›éÖv ¸Èöá4Éç :ýkj�ÆslˆuOæ_G–®Y\tÓ~ÛÕ`k¼sÕdî¹r>ÞËøø4{op$4ÿä‹Å’"Ô—ßÚW²P°¼G#1&T2»û\…ã50Ï8Ovë˜Û" ¯„�fNöÀ%¼_œ§ýѦäfõ×—u¼þ PŠÎ¤óx¾Û |ÏÃ3mGûF\ ³>çfòSñ"–Ðöá›L¿ŽjÇdþ¿ý�g±¸ÎöäÔT?ÕÜa*À¥ŠªFàõFàé§xgu9ýDªcPß‚qÀ€Èbâ.˜ÿxcÚVûóŸ…ZÀ°C¨dïÿ³©¾ P($±bÙX[ ÂŘ`8L³Î\nÄBä)¨Gd÷‚¶¹Z/¯ïŸc+ÀÅó'Ób‹å§1d óHÍ%«pœG@(+ÃüsŒA\«}75®È–�Ð#ÜtØÌìI¡Bø‘Á²—1„…ÀL¿vagš.]YKk˜ÿ×`þ›­E¶vÈä•Ñ YÆÁAX_DUAXcajà#mb;Ü„ùï�ÞCh·˜¶`Ê7Á'¼¢ûÁ0-ì.&?BûtŸoQv2púèbnÚ�f_±-�~çyÂá‘8ô;2Ôc‰*×�io ]o‡‚#¬ÐB¬ PÜ30nkÉBñ&ìJ HʰÛyxÔTß­b ô€ LvCwÒÎxoÿK¼/±nq¶¹u€—Z ÔXÇêöhâ ‚¸—×Ùj�ІŽT¬ Î4Ygèø#›C™ýÓa)°�Ñ—é�{çæ-cõQþð®�åùNð]܈mIÒ£{ŸóAK¬¡žó7‹K‡�U8¶#àñÊ2þ-Léë5¬[ð£4ÅR²×§óg›é“Ÿx<½÷»²5XBûïVW€À3�óà ¾…I>/Ÿ¥c�*Þgí–wj [ Áw‹{›»é¹o>—®Ãü‹#­[uöú½YÑê¡�ÛF Ü6 Õk5otþÚ~ô�8àðD€Ú»Ã5#ƒ‚ÉU0W«)É—{ÿÑšóoÉ7§ûbÂ�§L¦)EºË€Á{œ�uÇö¯Ìü‡‹v™=þ3ù#píÃLÐÊC§:œ °š5 îlj�@”å­¹ Çs„¨º�ò9³Ì嘨ˆË°š¡[ÆTM὆ wÀƒW«JÓLÛÖ¬XæC½‹Øµ³?N/ÝXçŽÖíGmGök¡ù?ÌŽeÂG�,€ý,îQ•±ÌÞÓv�‡f�Ó`šº˜ä÷0Éï`úßžâDI?ç‘òæ_ :U”·ž» ì &ÖiaÐ¥|­ÓŒŒSXÌ‚v=˜¥<9ÄßãnZ­Ê<# rkO«h#€n!DÒákÖ– ¬†’ãVÝ0OòeœA‚ :pè–Íò±)ÀË?fÿ©‡  Ç®—,ô²ÆšÛÍl‡&¦0O}ò¯íì§5 ˆS0ÀRG 7{~ pi Ã^ò6ÞË+Ãv†q»mOÍ[^ÿÔX üΰ ¯ûÿ©žÔØ Ï#Í„x/gSg¡ltQ=¿`×ÿ€/€ù‚ã:&ý¥W–—¦é‘‡Ûé3Ÿ~˜c×ÓöþÕ´‚‡e}Ãx¤¤¾6<}âè*ùæGPˆ,A1 3~Äÿ¶ €ËI_Ï‚³:J|`�3âxÎÝ�ÝtýÊ5,ð]ÃñÏWýk÷×þõmÕT¯ÕÌF`~5˜EVÕT#ðÆFàËû¯þ|§3zyñ^ƒah4% ô$+sÍä³;÷ f˜À¥š¼\@ˆÓt_«÷YP£O²ydöÕî»ç¹|6±¦vÓ 'iyߥ P‡L=&l[Ó †'føxòÑ^úž÷½'�YűÓέ4ÜÛä‚�£¾hpÖƒx¨,ŽŽÇƒú&¨IÈ!fˆ4Fg{Ôihâ·w÷ðN^ŽLÚ R§×{CLhÖåhâb]ý¥wÿH×E𒘇š7¿ù$äeþëx9v¼FZ㈣k76Sh€öÏ­šïÇ—X!;é‹'¾¤¼—�ø.ÜãÌŒúmÇü5pgÏóË�´Š£ÏÆ�-ûÔM¹%öÔ,pæ³{.Ñ®Œüž¨÷µÄ­¿Ê1ðÔŽ…VÓmŽðDhXƒÈìL6Óé.g9#À«ÃdY&o¢oÌ#ñ7 0ÿ¥œ9ªð`�€¸a^„‡Œ?�\B:Lû Xžµ°i×÷ñL^ãœ9p�²Z'áœV!šë„Ø`šu+0àèKàÞ­(m[5ò' iwÜI[#öøÃÕïÊLÓ ðÚ$Ÿ‚{hÙ›]æpWon¤ËXI©¾Ý놅`L1ÊÑ ÐÇ2ê4í©žöēϛB™z/óø^w;�ÝG� ëꉼ0ný=ŽêluÒâ‚}§W´éé »‰æ¶!¦‡øîøvbúS…jŽéð¯Æ±ªÀ�&ô¶¯t0"{ÏÅ¥ôÓ?õ¡´Â”êD�£Ááh܆ÛÀ8ˆÅLàÑ[4”€nÔˆÖìãÜ×.„¬ucn,(ôîsRM}!­½t3}ãϾ‘vY—ˆ�F»7.]ÓXá°º²Úê^�@1€zª¨Fà^Fàþ'/ü“ú¿M÷vw`$:˜×sL„É�EÂc•¤xœ…Ë™¸œèƒ{ "ŒDˆ«2Ý'ó�_+‘Vä B°Ì3[42ƒà¢V§½X xîЗçÚÖX$N-·Ó#çVRŸÃÓwú;,™àRãS2(˜>Kpz®LZô(!/gÀ§?À�P¥KmMêÐÆï#_‚?¾kñîö“{ ”ÏÀ}[5Ö‹%Kgšp ‚¡�ˆ!@Ú`ïÿK×6a>€v Þ®fÆÀþ V^~_yÏÄ/· €¥QJí©ÌTkžU¶ö¬Ô·ÓÂx›ƒa8 lØ8í�¸<3Ú- ¹WG|/21ôL+ƒNÚfË�[< €ï�à„_™€÷æó;dzâ+àˆâÎØû&Ú¬²Þo#PÎÍóý6N†¸ ./ͤ• û–�aaD¨ÈW^\ÞË«¬É4ŸV+8víPˆQ[N ç¬g{l{qs@¸¯EÀ\3Ÿ€ 3­ÐM'¶ñ,{}k?�?Ñ�ãhÅϦy”iYà3WèèiW†ÊÅÃ]Ì#Þ:§ãOP4¬€"Êô¢ŒkÕ˜­˜û³¿Ë;ßî. x¥´¿ÏyîŒÊáwÇÇF½üTá˜�€¬ WGÀíb›½’,2ƒþVzê©“écy<�Xu�ÛæÂ²FX ŸsàŒ+R Sw7˜ÂòaÎéÄÌUéIû}﬿màÖC½t ˜pzA�~_¿„Çÿo½�vÖwе™Z÷+Ï|å·î®GU©ã4•à8ýµ«oýŽ�@§u½9hœ Åk2I7ДŒ B‚PcF÷ŸÇïebÄnH|«åŒKAŽãµX ,•SæòÌÃP*, ȑق’”²î¬Aô,ÛfnjaN¯º!à$ÇÞì¥Ë×n¡ÅÝH�ö „ôNê‹�µ®”'4ÑþVáA�îŽÞB%´z®·Â ÷Þï÷ѱˆp¨…æ �@íÄw.dó]™t�±·@O×oöÓÕ—6Ðú£à@8]—1&-ð€ˆ ÍÅ;,°h®«–‚‘Ñ&Y®£‰tboµ¶™NÖ×Ò©&ûÿÇ{~ˆ`pÆîùÝã,§öÑø\µoâÑ>ÆÚmÂü» ‡3ÀÅ><ÂÃmÁüÇ#í™?´ŸÑ† {•_‘ÕÏ1�r®v:ü´C° 3½€0V“ïX Žb ("Á5BÛ3pX+¹î@ 𹾌`ÀJÚ™ü�8`>.…QSœZŸÖiCaáØ6ëÊ•µÍtáT7­œÉM,â`M‹4�¨kpRjþ‘]ˆv´=‰¾Ú…bŠH!\ëO¯±Lä±�mra²ÝívRŸÄ>Îoë˜i[ïöBn,›jòw;— €ð»ùÍãÀcŽïËZÏ´†X�×éá ‹éã}2}ïû›©Û/ªWhýëœ�)9ý9 xXÄ›{b.hG]ùW%L¿ß¡™¾iÆZâЬÚÿ:'ßìrç¥g/¥k—¯ÑÇÚ~{©õÈWþÖW8žª Õ¼þTþë�Q•£�×�§Ÿ~zü»¿ûÇ�ÔúWÆi³C4%1yFYˆ ½“£ý�‰ aFÈOžì}–¹�7ˆœXVŒ$®\ÊâÆPy%¾ÌRÔa¥†(¬FG¿ XèLœ?YOƒƒÕ4î@¬í£oôäg-Å Æ ¸ÔªÌ¯Elõó Ž@€HÒ9LdJA* aßjÖö‘hmôÓ©ÅE4|ìƒÇd2Ãï[7BÑ'ª �÷1æŽC4‰Á›�¸ŽÏÍ—Ñþïâ°Ñêɾd|G2 ä>Ås‘ïÖ�±‹÷hÈxðÔc÷Æl™GVaÄO&˜ÿúuk0åû°NhŠ`p†r$00SükÈþ¨ÙÌ‚7ª¹«àlÀ�ÙœìrànZjâ{€U™�D3ž,~|ŸSFtt�yLl·øÌÿŸ½7 ÒäHóò»¿þº{º{. 0¸±±w±7–§IZaZ sm<$’^Ò¤xˆËX†ä°yíßþçðR"¥×äbis’­°&MR¦Å�|ȼv±X`0Ì=Ów÷w~ž7«zz°XÓ�©ì®¯ª²²2³Þz³ò½ó@]¨n:”PÐ`\vùøwø¾‡ÿ?±ûkXà,#vÆ_pÒÎ) @âþ+ô‹ËX“hÑ“0ožܲ±„ÿrÚ!úÿê°‘6`8úÔ1†a ¼£.ÖÁaœm;ÚÈ&ŒÊíã•M’k|#»i¥+n‚Ì0-ö+·l_@Xn ´uîòB¾yÅafö9 ¶Ü—ïwÖÔßßãxFêQ2Ã7ÉUmø,¥U\„®^[KÌ£ë¬~SŒ²hÄãÜ27U釴³F ˶­ÕtÁÕã�¿'}ð[YV’Me޶/à«V5tOˆê€Ç~“_#ó§›_q¸¨+æ(ÎsÝ3è6ðÚMÌÝÝÂÕæ¿ÓÆJ7¼¯åétå„€­?ûÜ/~î“|Êj^cϪÛïðù­R� ·?öcßv~aiúsµúDÑ5�-˜'5,’J�]fFA€ÄŠÌ“• ­3ÝÇ×[ꆣøË³@î^9Z½?ÊÈ´; eFLB*˜¯yBù)&›mÜZ2.¬0=vßÉ…ôÐ=G@¡¡�‘á�up¹G­¿Rç*ݽöHñ‡óÀCŽÕ<Éo>Ìï†w mD_*¹V *évR4 ìŽNÈ슋C×8—U~¼p~7]¾¼A»sŒ“�äYhFOâAì[æ–‹¼-L.b’ß�åÌ\nsL'ÆŒ±H÷€-›æç~ßê¯Ý�©áKÚ¤íezâ³Í.áßû)Ã&—yÅ¥j÷¶ƒ@©íßÿ`yþÀ2‡Ì.êô�_Ñ‚‹n2Û~úeLÅxˆÒÞ±‡U1n&Ì c?÷ ÙtÒDpMÀ?˜ÿAZNÛ,ý·ÆÅ-®õOÚÑ"%ÆæÐ.ã'3¯Ÿ²±As=â¤töòõ„�NÒ@™Ò,˜â]8–ó\c^ Ñðí§¿Ñçb/ªÛKóƪþ-Gc±�ãâ±!tÒï¿Ó¦~ñúµQº† ÷S ­Ï�֜ٶh�ü*Ý©FXGŽGkieeœ>øØÉô¡Çšéè sÍhzIë/0ü \ŒyD º ´ÚK„`�‚~ßEg÷YØk}™þÓ"³Å¸i×ÃqÐ@ÈÕe,�po9ö|ºúü•¸çä¯þâ¯~¢bþøîàÛü2V©‚@�Û�ù�?õëÍVÿkÈ&|‰Ñ�Ää!bp%÷‘‚A�XãT^Ý$�S|q\0ù‘WŽT ;QÄq÷Ycï)7ÊN ŒšD_jBq9¡%¶¥^ !ÀbzðôQÖ´…8“±1Ú:“�Ç ô=s«Ò��§|b�ƒ0� v§›ˆ¦¾¬,±N„­`þk™Û“¢Å=ÄÎÕ@t6P„ýu/\Ië›úöB©%" b)ê�R˽ÑÞ±rãšGÁ]¨ý'ÂJot?Ѥ㭠,®¤ÞäjöÇ�1§¯3®ôìQ€V¹N+;Xr¨Ö$ h³ò€+uôØ5…-ß�çú³ ÀmúÁ:]Ýõ¦@ 4çEËÎ ZætÔ‚»MSš0k –½ì Ùbj9‰öǘ1FÍ„û]ÕbÇ>šÌaíƒÿÿìKÎ¥M„:Œ˜º&Âßï‚Ì4±9° ü´ú53H'ÌþÕÍÝtîòû”v.î¬ÃÄ4é«ÚzWK…Àý‚/=-Ž5õ—á7…(Œ±�%ï}:Ç‚ã‡a˜§<ò67pº|5mb‰ [Wèã‹…æYƒ©Üç³ê÷΂ÀáUsþ÷àtzüS§ÓüþG“�4×A( Âeæ_å ¸ã/=§LF›ÀÂ×°ícÝ;¦…ŒùTA�„sMJ‹½yúTc©¿Kék_!èßñÁ¥Ïþôg¯¼¦NT7ß±(g„;ÕƒW¸ÝøÌ�ï÷Ì»|²ËƤ!ÑÂç;$É�3ñu/T7>õ{Ì¿ý)îËÉ öVStX¾Dß~±‚SY>Ê�W“âB¾ÜßËìçV›ì¦#sõtÿÝÇÓé»O¥¥¥¥`úKÿ Ír‹J«Ÿ;%žÉôŠAœKþ¸Àõ�õ´¹Ó'R¸9·#•m]û�i“&àü7MÏ>{!­±Öq½ó�öqŠOf +QÜÄÀŠ¿Ì)�!™_’ú7×ʆè‹ÀI,›Ó}sá¬ÿ|¼µCÀµÔ™®-,ôõŒ¶ ŒVÝГ×fM:bxµˆÂNÝx–6cÖàiÁÿijíï{ùýð ªt§@àÅÌøökŒ¬’A÷ð=Ï¡[Œq!"•[†šXÅâ0öŽ}ù1x&èßÍÿ`†6ÜN»ä�í¸¿ L/:j¦{8¸!¥SH¸;„9buŒåü•ëéëg7Œ�eÉlÛ¹JýãÆZbj²£OÖÞð/{êPŽáÌ%Ë™{ó9¤ª¸® `ùöùó«éêÕëá:Ô /ö5œ ÷jÝwÌa•îHˆƒsÄŒx÷»H�=ö`ºë`¨ÃKãú¥@M›ÄÒ€áîÂ,èj aA +0QUÜ:x t§‰<¯X_>Îhg znAÚ̽¼ðÂ…tæ™gÓÎæVêœëèhS¥ ‚€"Ò*U¨ p›!ð3?þ]½ÿþ7ÿw”%P@„%΀nhZfBúO¾Ôô±G£xÕI'T!”ç?ˆ¯\ \ã\/ Ü磄ôÉ`„S5—lc 0CÛ8†PSËby!½ó´fŸ¬€ª¦ÏúMSËŒ\f†�jùDÛ…ÿh9IÍè—ÇA ÅŒÍU?‡™´'À+‰!S™ç�($‰3Á<Þ–ºl£‰¸ó¢¾AÀ#0ª®ï-‚Šw™8ÏõÅyΊüLé�[\Â\™v–&öÞ)nëâb­}üÿñœÁ§—À•Ï_Å]¥•Úíyp�¢Kñ�Ï1 æÀþj–xIµe(Í{=–Üä‚&ü=ùeu'ÛéTóZº»uÀÅ´0½šZ–Äô2G/ÏZļ:7«Ö,º½ïÀfŠF÷.’±ÿ8Jä:9 b!ŒVUæèCž£-Ìùé{þî—̆¥1 æ®&‚¨ Iœ©ëûÏ8lroæ\†Þñ£ÕJ®Ë20ëpüŽ÷˜]D#]Òü¶3 Ûƒ3Ì?n›µ#i‡Õc†\·¼Äbƒ€€ Þ°£G¶�6˨�ø6Œ¤1ǵé Üxãâ0?:ŒT›:æB¨EMZ¥Ù27.ቾq™äóùËŸ¸mÄŽósÿm×ç€c.£”[g»pe-­oa!ókôÐ ãî}ß%:ŸÛñZ•?|›lâÑM~9ˆ/�óœ_WGé#º;=p.^#‚¾¶†øÓcí6QÈÛ Ë’`Â¥Ã#Yûïý"kÆ¡NÓÑñvºk¶™NL¯§E„-ƒö `É9ÞXqF Æ ‚ºæÙ `;C?›¿Qeõsˆ à¸hðísGÌׯ“aE`âÒ²!‘eéKì`ºuåwˆåÒà›}¤7ÀT™¸.m˜wqeg�€„­$jyØ`–ßGz.ˆF¿1^  ¢ú· È!yÑ‚_r1|ý¯�›é2«¬Õ�λÇ5¯&÷›ú‰ù¿ñÆ�÷Ä€ñ¯aAc÷¸Ô4»Œ–v']¡�úÕ¯§÷œ¾+µXJ�9¾#Ó42W.d,·šä9Á‹ãÓq,“¥Æ3Üzdª|f`d Ò1߆B¹ÏÅ#Æ÷�˜h‰ÅÒWÏ]Ng.üH�åÑF.×cÍú­›Ó`Òœÿ<3ç¯Òá…€o�·©‹-ì!C¸c¾´“óP?µ»Î “´=3¿@[WŽØ^MÿÁßx$½ûab¿`ù5d¾³Îm «€6fg#„Ã3ln:™ØxX¦À '51(ð*_Éxfi¯å}>.ʚǡóëŒ1¥�¢…Ý!VuÕ9o‚ßSÆÜãh°=HKmæ‡ÝaºðµÒúùëýÏî¿ü·QyõSAà5@ ¼àU·Vx9|ÿ÷ÿàñ_>ÙŸl?1ÆtK¿qVkôа31±ÛE&©%OÔ˜göANbNìÌwr“3Š‰Ç¢ÔY0 qݺŠûó9ÄNY_Ô"Ae¯!樷ÁöÀñy&›X\MÏ\¾”j½•tda.íî`bÆLådeï´HpÚrbµÏ{ýµº*J|Ã;,Þµï;ÜAˆfy‰ïy«øÍí´þï´Òü—Nͧ4¿ÒIMdÎ&À1×ÇìKæß¹ÌoF$Ýè2íO10Ú˜ùSÑ›Æ�TÃú¹Ël箤‹«›\G �0EWçÚ0Ô)æÊ\£}Îsšõï뺗«tè PâŸy¶r<ùÁä=+€U 6$xm·Ç…ùFZ]{>k.¥oûÔ»ÓöÒñå³H?æªF£Ã˜bNaôL&Ú˜o¬'oìÀ™ò8�¢œãó½šS¾'ŸGgÊ �qB¶KûÍ ó'Óß`œÔôy£”sœ±,îZ<ž¦ÛÃôÌWŸI—Î]üò/ÿ̯VÌÿ4«ƒ×�JðZ WÝ[Aà ðS?òïÿÈ?úÒ}z íò” …u¾&›º@B‘˜4$èƒá£Ä W$îÝœ�l;¹qtó&¡GÉ*òq.Sïß—ÇQ>îƒÀbrœïÌ¥‡h§ë˜v_Ùx“ÏëKK,!º$êføI«EñXMp–¶Ó_+«Ò!…€˜•±Ð¸¡ËÇ�kT�QþðÞkP纔ôYðêh'=7ÛNCÌ|O9K'õÁ� Z� ÆZÇášãÒ†(5æô:-ƒ°úVo)ÕÍÔ%èÖÃá� !­]§KW×Ó™³—ÒÆÎ�zðwî¸*€ãEbM˜’¦Í²=ô-tò0Qêú&…6HRÊeüÚh7[ô»ÃØ›kÒ<ý;V_O�Ìo¡q?ŸN6.¥ã�µl~ÏXìÀt³}”tš„¡B`&¼¦Ñ¾žÑÂÆ1z°$ãÔÀ¼³NŸ…k˜pó}hi„Ý¥…®¡Ö´jà —9 ÁŸÃ�§T0X փꮷ~Pã›ê�s‚Ì/8fû\Ži‚K^Ö¿ .¶h°,î‹’ñaünú�öŠxêž�±b}¦˜Wh7,�`>&S¬ p¯ÖÈ8ŽÀµJìd¬ö’ýt> LÚ,˜üDDÖG{ŽÉMã¬n°”çË�£©r)�"ÐÆe�ó-ÆC‘ê¹GK6­8¶wöqªÕÇ×fX"°².ã>7£Hãâµ”ž9s1�Å/zŒp¢Þž +—­³*ÀxDåQ™�«ÒÛ àžßù~µJOeÍÅYð!¾™Ž�F�>ÂÕùn?½ãá»Ó§?žî9é‚6›à×0ÆŒ®‘b´Êšý)�–97˜ÿÀúnåˆJë´7b37ÕÀoWÊû§¡!òûÏÜÀx¸~?ýÔÓi´1üoo¥‰ªl�—ƒ@%x9èT×*ÜüÔ}Gç|ñ_Mg´øöÂA°1Í ¥pù¤˜j ;³±�ã\JzPj‰H,‰¾ØÊ2žçã|qì”b}î¹ßc5+œ±G£Ûß æë]Îc†¶œž>Ë:ë;S„øç»0AÖÜ9["¨gÊ+È�äÖ^¥ÃQ¢¶�Ð  ¬ØGÔ€02S5‡à˜É„5Dùë3kô:&p±#Ž­I‹ ôó²­z•¨Ù¯aDeƒpyáÞ¨†¼íí¼æro.�#ý_º6HÏ_ºš®A¬?ÆQ˜qÒfEЦËÊx 1´ßáîB4~ =‘º4¶òè'DÕ¦Ésh7�4l¿d™¿…ænZl \Ow/§ãÓ‹,zÆRP ³{ýïés @]³l"m›³%ƒ0ÝF‰<BŒ ¿·ž P1Wv•ÇdMÁ K‡6k›)X­£;I=b-l®Ö3|RÃ,:ˆ\Þ }( Ñ[o»ºã­�ò=úÉ7ùmŽhû1f€ã™iïÁ8 jÁÕ%€B­8ÊJîtl9š`#ò¡÷:xÝb"°5Ï•åï7¶`˜õëï�å²êí!Kÿ�ê3ð;ë-—{™™,ïeœÑœ‘Òí¶Â‰è7¿ ;NlÁÄÏ�ê .^Eȼ›î9ºœN±íq<áz ¼oŽe�1³ïê5ºìôr~‹Øvù¶ìÎÒ*Â…¿ºt)]XGÀÀDÚìÎñ)h±l(VHüuùt”}�xº?½dæþÕñ[ PÅÍŒ•0÷Z±�"6ò]w¥o@ÆÔ5NEߥ!¯¥}èÞôÝÿÞ#éäqG¦ÿ£Ú~\mX�˜Û˜½@4™ñ›“õÃ+öù<2ðãÝ*T&ŒefæHF#î4™.à̃æBºðÜóéé¿~* qXX˜ÿúšªn© ð’¨/ –*³‚ÀíƒZýÙoù�îçó~vf{„ýb{ÊV› KaRÉ0„0+§­ÔûgâEBM É"’\2Q\ &À㸕«å1¤]P‘ù\b1'ˆA¨5ï-ó"*sÌBxžõ/§cøÆ}äÑ£¸7o§¿xê:|ªšÖrŽ­é±fŸ6 ÁW§ß!}/Ú*[©ö‡ àC0 ×åÊîƒ72ï ¢Œ«ñ×'W­š‘‘ëX…è…2ÁŸ÷*´ÒõÍFº„¦í8Ìê]Ž.²>9× Z4‡ZßI¦ž4eRÔðA\ÙZ5yXï¦Ëk»é¢‡_^ÛL[}üüÑ…·ºKõT†&GeÞNW¨CèeöE“~ún6ÙÛFÄ4GÛÉ—Ž2ÎŽbo|²Õg‰?\Ðò/5`b¿ˆ©ÿR:—k×Ó<åÐ-â&€’‘DÇÄuˆ°°I´iì V�¦÷†Y3) ‹ƒ[þ‘€�9Ž`l‚³ÁB(ÍÖ`䮳àF:2#Ú¡pÃüO!f]‡Ý¶£/6ìø¦ž*Vøîò¯ÒÇ|*F¦¸î$Psf/yEæ¿ Ã3W'FûÆî„àø’/²ÐÍš­Ç�c·½6‡jÁ­qcÀ"sR/í ØQž1ˆù[!üç²[šV8ŒÆd0.Ôé,å=VМCÈͽ[Xmc5tíêZºˆÏ©þQÜæÓƒšeSþ,,ˆdº‚©µï F�*kSXŽ;tºr}”Î_ºœÎ³Éâ  ªùw|(À‰š^ç`H±pËÏÊ.’,73(_¥C �ø>ÅK°OëJñÏ7\ƒ‰CC ¶#Èßý÷Ï¥Ç?þpzNÁjH#ðÒ Åå�]QCa·Â±Ùó’öÊ5Þ^l±ŸÜåü¦3‰Ñ6Ï å xßo[X‰n]YMg¾òõ´Î~®Mü�ç®àðR¥ ·Ž�*U¨ ð:CàÇ~ð;ÏýΗÿô¿�ÿ5ÜZ‰3L¾jøß+¥fÊ’ Ú,úÂì ÑÇŸÂ<e¦>˜Ë2IÅæâÝÜ’­8�c+’Ìdfþs9.S†)S¿ã^)ø&týtÏ‘åÔp)­_ï§ç®lÃB¡š�Ujul3|©eµå*^ä7X¼ÅùÄCH�c0§®$q%£ !@[×f&Kh GZ0ÿý+;is«… ›Vêé<4«ŠÁ¨€�Zà³–/Éàf:²Ñkéký1B„u4þ›i}·�Ö_óaüÞëÝxg_ÂRb®Ádp´AüÚô§ÛBLPwU ÍüÉW#Š ýÌó«[oŽð÷ÜM'XÚïXs ßúUüì×S¯¶ó´†ëóYX}"î£-šãy:¬{^šüç%[Å ¦tG+ ”9<`â~MûÃìÓú]Ç}ƒçYKó*–k;i�i¦¬�Õ⓬Øâh&¡ì–ýµU:|(ð'>Ï~—ó8,ߦãp# æ[Æ:§,à5l˜®ù:xŽ  ·œÇ2å¨Gñ™ßgec~«e¢CÀ1ÕssÙ»Ú ºë ô§‹áû¿�`0ß°¼ A¯„ þ¡ØLüÙ v=¾¹á&Æyæ|DàJ+~èÕ$�øV¬]¾žžŸ]K›++i Fk ý³»|/Œêï”§l|Á ŠO4þC„‚ö}– Ý%ÒÿvZÇ­`DðÐÐúS½šÿ:[Ý^x(ìö‰ùáLJþÙëHq@Éç‘of•#²ÛZ‰™îÅ¿ü§i“opÚáh5�8ÖJŸúÄ;Ò#ÜØ/iú =;8Úbœ‰#ÀA_9†À×@é0³s ·V„p%xg“`˜„ª�9±Å\ÐÑ �©fʼøµ?ÿJZg¬tê­]zùÄç?ÿy0½Jn¤ªTA ‚À�ýÁÇÿ›òäŸüd£6{d/æ¾Ñm(ÕÒçIÓè^7½óþ#0þ�ôܵg‚í¯ÏÐÇš&ËLšyÒ…{ƒàV5óú@@ qòþfBÞ<µw]òN„#ÿÔ¨Ý2ê+S®u`ƃÌ©pê2/S–Ú»ººŽ¹>÷ÐÐAÓ„ë@ƒ2¶.Ô32@Km ÷pE¯ö ë/×Ð⻜™Öó®&@‰.L°¦Îshnz0ï"Ÿ·YBï$Þ|}‡õÇG,•ÔO+hú—ê0üæñ§ï`ÙÒo²ÂÙZ• 4ƒ,‡† ¡�Å@ë�:îZ3ÐEÀàà`ÊD@HJ†õ�Z·ð,dn7 Vp«)X´Ü.ö5ü¥ëÄi×\°a‡Ã3ô°LX&&ÁŒSˆ ‚á Šâ7Æý­6[• A �¿rÚ±r4毷cÒ�|Þ¿¶±ã¡«• xÞE�c㋌èÀ•þQK0E™1ær®‹2Z¡i�&®k7³‹ w§¾”vjXœ°Ü¥.8 ˜Âú&>ô¹gù›Ï/Òš@)ƒíÚOóB@¶Í€Pý~;Œv.®ÊÐ3 ‰É~Ÿ}—Zs›"<œ¢Ùgù�†öÓû]š­��¼îDÕs]äŒ|cZ°c.‚É£]]ÚP`Ù'ÖŽ°3ªú�d¯ÙÜUém±1¬²|¥µàKŽÉâÛ÷{ÍÜÕ�¦áÎjzø¡{ÒÇ?v<�\¦ã&–«EH&>Žlk i0>—¼U% ¾øÑF�;4“Û܇DûíÆ­%Æ*cÃ@…ΫSVŠ Ê $×äÿ¹gŸà_-üë~8ýpzâ‰'Ô¶T©‚Àm…@ÉuÜÖJ«Ê*TøæøÚ_ýA÷�ïúöÉ`„Úm$k«;� ™4·o±ö«Z�NÏ{Z{&$ç·`à)Í!„LíqÍH¯(Çõ}{ó÷Ÿçcûë5ÉË�ÕÐàªÕlÓÀ„~¡ÀM�¾óhº†öåÿü‹K˜_ÖR›€4}ÌÒ4S›Ÿk¤-̶™I©'Ø'+¬Ò¡‚ŒdMÁüà ˆ]úïŠašÓÊ K ‰| d„P’ùí�"'ë0§š£sÂ!YR‘­Þ¡>Ìo‡2Ôåf2 5–Z"öQùAÌx›h4µÙmh²A´þ6+NtÐðwaò�²vø"&΢ñ/ãÇ«Í÷]¦o+šã2A2õŒ£¦ËV¢¿ôÚœL>l�ºS×U׬±Æsø«q§ÍÐÀK<†öûc´/3™ú F\*J8ަÌÿ„ÎÐGmx]뀃¥°ú!ˆ¢Á5´0ìfAÇ|m=-°p¹¾HŒ‚]˜<‚¨Aá+ããw Ö�®Èƒþ-qWkŽ‹2e“f¥›_x´sÌtšŒ�!."àÂ+b¬t&¶D`„U‹V6s,¡Ywœ’êŽ;ØwÏ2Òp,ÏæøTì<  ´8;à=#*m pZµáà PË8åž²—ö)4ýÞHÏüLhGBŒRñ,¡•å>ò;Fî'×Mî‰B/ŽXa`H¹llƒ`9Öý+ž[IG‘fÇ´çwcj;Çj"0j 0ZÖ›«‡‰²‡ä;8¢µ\Iî]™³¯î²‘jH! ¾�ïwˆ�ñ,ëôZ‰ÿ°‘æ .1\Iïÿ©ô‰O>”N�Š‘À5æ æ°¨)x$niuÒlb}F�šþŸF4g3V†ÇY™'Z—%âÂ-þXÏT‰cˆIA{—±ÝLΞOϲäßÎÕ�æ—~ñK“/¥/ÝbÍUñ ¯•àÕÁ©*UAà¶A@?®'ŸüŸïîuzÖÐNÖXï»ÑÄo-†“fhPõ¡ŒàfNO19ÛùçvÆü ~òL”™œ˜�¤în”!‚Lë)¶<©0 ¦‹<ƒúÅšÐÁÌèCEõ�Ü7Ÿ®m.¥¯>‡$�€9-473–ÝíuÁe"0æA;T¥C�üÞ2y„u�?œÌ¿×Õ�äîÁ+†¾ñîaüe\Ñ]�#b‰¡ü€Pü¢õÓÄRª\BIœKhiæÛ·}‚O¾ |ÜEë�‹eð4Ï�àføÀß3O�0´œK ý÷Ñì7ôßß FÍ<ì»Â%6™E=M Š Xh§²» ÇðÂtï@ŸÔôC`Ò‘ó~ÇZ㞉zˆˆÉ5µ–9n‡ãDׄƒd ‰¸·/É>å5©çp_è±2ÁrãH0yF{'ŒËUe‰ŸÃ[“Ñ*^8&ÅQR™8•YÙkSÆßsÊš|Ÿ‰º‘zŒ“9Cs³õÔf)Ntß”UÐ&V{›#Ñz­%Ž¢æÀY‡Bäs ¾Ñ÷G¸Àà$ƒ-VÄ¥£p ãnëʽÉl�=e|ÐÖ”v¸XÔm)K�¿¶ï1gÜ.ãïð !ûü¤º–qd�Hå¾8cÂ2'·ë1uæñK¾õø}ðžÜvÜge}¹K”9/>ö¼J‡!¤…ÙÚÙ`>9‹­¥Õ«XO™KË4^]:=üp7½ïÑ“X5ƒø1ë}¾"˜žoÉBm7£h¹û—#¿ÄÆ}·}CùW�".v‰»A\‹.¾9\®còi·?zçç~ñsϼ꺪‚�Jp U·Tx­xâ‰ÿðâ—þÇ?þÙ­í�_ŸŒ ÃDÖj"½† 30Œ>×2J!V )˜ŽMYão¾äàä@IDAT–”¹™È)£ýç|ò‚ùÏe‚'*Ê{]ÿg‰´XcÜš4FãY3ìiº÷ĉ4z÷É4l¦3Ïë3 ‘I%Ã! Ró’Lµõ*>d<yâ?0&cQ�Oj eê0ë5£øË ›§Ð`·±Ì…ÉsO]“~ï¡ùÇ¥ |ü�lN`¾)>ðhøç æ·€¹ÿ­Zñ9,ºjÅ@t4Ó§ÝDÀŒ?� åà%mŒ‰®ÛŠ瓹r€ vƒþèGmtóZÏ)æÎÓÀ{™˜›`jкÂl…•õ˸4Âý%à^öÁ´ üâCëÝj-i×5�U—gVp¬}"­ ÜX oƒ~ïºì•ß‚ø °?pËÕ�o>ÄJ“ø™ÑIŸæˆ¯R^Ù{Á¾sâ` ê1Væù>Ï# k#(j�+õÀYêÓ žJeÐË:e½ƒSŽ[oØ<Ô†M¿ËÿmMçÂ`aÀˆàžŽ M¬ëd“ñ�‘ÄÞcþh7öÖí<ÂY~Žã<ï3ã_,ÓnñÄ¡�è©5�l!§²§ù,zßómòY�Á1™å}qR\Ïy¹×9?nŽ^î»!gV¿‡ `¨=Ätßou›c¬(gcÿAÃC&ð±?”}ÏJ:�¡â–2cV8jÎ-1+€ã¬am–q6?z>¾�ƒ7$cÞÍy?S fø¿&f0]”@íA:ûõ³éÒùË©µÛ>wðš«;+¼:T€W§ªT�Û�þO¾ãüæ“ò3ÛãíOLð[”9oÖç1‹Ìúœ&ÑÖõ“VÒ]2øîƒpdQP9¹Ì æ?3cš‚f&¯¸¾WW(jiS!€�&1FùÂ5Ÿœ•üáS'Òp»‘›X£�…Ú›˜švDk—(¬Òa…@¼vÞº8”Íx=–扂֑i–Ô7Ý`šcCÛ¨0`ŒæpˆåÊ„=†º\Óä&!!ë‚Ao£áïà×ÞE«¯Iœ"Ø7±Ð~ÀÈßÛS縉O>&ÿM´›ö³\‡ÀM]¶´½Jdþ, P  ‰—2m4 ²ë®B€ª¿ÀcX˜ÿ ãf*ó¯9?$�&Ÿ>'a `:d=ÔÜkØ�Õ ›9òBÜ A�a˜µŽÉÚJ—ÌÈxO'ʤûƒ$î ÆMöŠúa¸j4Ú´Ûu%˜»£ÝAZÁ•a« „®V:™±â=…@~‹i½ºç­�ø‚ÓÞ?¸T~Óƒa/^­óB°ËŒ¯À5/ûÂ@–ÆZàŠ/p3`B$^a;ýíMŽïÀ]2m#r[ÔšeÖÆ²„µ0ü·9ÆüßsÇ÷8ûâi>W`� Äý<ØÖ�dÑZÞÇ<•Ÿ�&ã¶è‡e?¼7×Q<´‘„Šuå½Y~¥ü7¿¬Çü›S\µ)ÇÞŒ¨0~âjõsX!À÷�vaßǹή‰si}ý…|äãïLŸüè1â°BMÌ1ÄXÄâ‹W¿£’Åù�qß`@PbXÞ‹&÷�qqVžç“Œ]Å…[ÞùŸî"Ìk æÿÌמIÎ]P(ð»ŸýìgYŸ°J^_T€×¾Uí^ŸyâÛ?ù¿ø‡Ã­Ý~kwßÀ<­U‡ÁÆ [�¥&–ZÈ|S2ÿ1)A‡•�ç™i³Q Ǻ?ÅVÞÞ‘{DQ­’�Ü•ˆËüÏð)•ùƒ$ât;½ëô"Ó¿ýó é"‹¶ÏšóÔ=ÁY¥Ã  µç9d�´�?j#qQóšsö8Z†O=ùcð¢6îB°ÈXÃø£ué¡™\$ ߘ“ELô�¾¿XC“_wC“­æÑ¸µž–X÷¾ƒV?˜^ú¢ß~›öÚ´ÓRãI ¾&øØ€À«( ö¼Äü^�¹�Å`T‚U§ÛúOôé4Þ± ª®^]e&¤EýMlTD<››c F)˜pž7ö2ÿ²ãj†`¦ ÒÔüGÀ´‚™Š5šÁ)8pr\ÓŽ0gœJfÒí! Ñ +ˆ#-à8ÅÜ{ˆ%š-]ê=ÐA¼Ú×üÞÜ…êÆ7™µàýÉ£,p\òm-ã-CoX>Ìkm´ÿ ¬dŒx¯¨Ž[ØË¢s0ú¯¼ÃÚ|KZ/ø<⤎€"»–šÜ`é¿]]¨AÇ5«D!àîs\yØuÉØÇf�¦<—ä‹çç &�rZ E©¼‹þyhÞ×r'ãØ7�Œt夙y<•©‘áÐÌyŠ¿ó„m¦Iœ>Ô¶CÛ=[[W#Ûß³œvvwÒú¿{žµÛÑEÎãGWÒ~ÑJõs˜ á�ÙÍxKÁ'�â1‡—K܇ðK‡�ù耮A®™hÑgýðµoÃQôdJ`Ø—,·0ûÛi -¿šþe‚•-é³�@ 3Û�™eÃô:ºF]»½`öi£i,êoÙ7šŸ3úw û%â2m9>`H,�~pƽ´Xˆ¾Ë°‹ãÜVWë/£áRQñ|Ž�e–X§œ6u•Ñ• ––Šû¼·`þ5ˆde´åFV0]Å•[Þù<ô9#µÿü9œíU H½Õ«ôtXâ°NŒƒl’ÝáX½/Æ÷-·]Ýð�€x•q+3y$æœ|,ú»”^áU a˜+¶ô‡sm˜1g¼p Kc€ž>¡<2^�*ER¸•™ê<œ´ÞQÀ¢‚"¿Lrà=¡9Ö��B2ÆŽ=ŠD]ëA�šô\}ÔÉa”ËÁ1绕É<Í÷³»Ã� ûËÄ�Ñ¥£½òîr_ä—�F¶ylûSœúýØŸY¿dfy±Ú¿¥! 1ƒ«—ÂgdÂÃÝU–—¼š>øþ{Òw|Û#éž»`þûÄ‹i Æ_<î�X h9VÀ‰›PŶ_n`F‡7�‚K×Mù·p’ƒX6Òå W‚ùïoí¦…¹åÿ,wâ*ªŠV8 ¤5ªTA ‚À›˜ôÙ“Oþþòúxº6@ËWC³Zg)b$sœéü õ%v<.£’Á�ëyæ f¿,ûx6&,NJæß,¯)pbœaR=Ã{‚yi܃ֳŤÆW¦.Õ¯§Ö|-½ÿÑ0ÿÓôç_¢)òÞÓ¤uVé0A@â] ?ï?º] $n`ŒÉ¯£ÕoÁw±�ïÑ»G$ò.±)Ú¼ú…´‘NΞc©:¢�kÖÇÞE0G`¼Ú~—í븾ÊóuV–0h™Ì¾Bƒ&Ëý¡ÑŸà°\#Ð`�M.ϧÀXš1ËXÌ\ <›ÀðO`p&pCS´ÿ96†ø)Ã,_X)À,‡rtR³…˜5Ï Gh\&9“ðÛñŒhÖÕt–\¡fàÒŒà˜5ƒ€hŒe§<ßÔñB©4ë XÐúÖSTi›ÖC{¶é¡CÜ(ÕêaÛhy»´Õdo�ÃZ`Ç1½£÷èzóƒÜzãÕoøÞs á”ï>°JÌâ»/2ðë&®j•¢‘¿cq”ì(¨Õ-D¡UTcŠôÀ©˜'ò½¹97ÜÊó‡cƒ€ùfÆ6£ý7:?R„ ŽËrF< ÚŒnDE¶ä}V…õå1˜cŸóÞIÄà|¢g0Zî-áíÅ>ãy~Vj+Ú°@QˆÚâÈnG®µsD½¦\êF™È´ùB>å·ìUúè©´±z&�¹t•ûW`ª ¢f­lÑ~TÁýY£i¦Ç4´GfŽvhcß-ùÆCó+�[>cô»xVŽsNI4kŽ)ŸsüµLŸ°ñê nÜc•åY°(“ïv¿%,ŸSγ¸¸â>&£€¹Ls"H“~×úÎx”™é&Z•&æ‘]4�]„ š£Œ_4‚2Ü�m%]KÖϤÅÉ•Œ[Ô£6½n�®Ó4ÙåùdøÛ0öš÷·¨«­I?˜�öb …�ȾíàL˜öÓ[Úe¾ÀÅXÚËà~ŽqׇU‡0)<�B5¤ �g‰‹äÅgÝhЦä墯4õd�éìÒà³gwˆn«€Yž räû‹ÍÜ ÿ¸?¹Ì�ó庣>.Åæ¥k‡¡®UK†Üð†M,$:˜x·¤ø.j j|&ÊÅ;-ê8Ì#èź“Î<6ÁÙ@�÷ÑV^(ó .Žs=¸ܶ`ü{±hŸx¡@ˆr\ßû–zïSn û“�›èÊxáʵ[[b€E„º]F©÷—L¿s�"6±Ì¿l À*ºË•p°‰ý÷ZP¥JlµPñ˜Å>¬_ÄiSq>É¿�îDÅå\Ö¢9FM~*^*Ý(ýâ«ß䆫Î_GøvЏ÷ò÷¿—òÚþ.”×36º*M»…Ъ¿–VŽÏÒ'?ùîô-ï],èâËÌw Ȫ™�Vê'ÀQ5a,M¹WO²2ÙZÔÎOÙrÙÚÞµ(L®gÎßâ`¦ÄvÇ ¿q#öÊ!¬ÑrÑkïck`msî™sÏ]¿týk³f¯Qo>õ™Ï|?†*Uxc P Þ8W­TxEüø}÷—ÿÉ“¿ÿ¿­í\ýžÉsêÞ]i¼KuÜŒî<Ãà …m·Ñ:2¡ŒYïVÿ·<]1­1™I…–ÂÌc—êËd¦çLB^�IÏòLPzáïÌäd4Ú˜ ¸®NSMc{aÆß(»,ÛÖ€쯦÷�:’º�-¤?ø³³éÏ/ ¤h� �z°ÃkÍuÒÆæ&¦ÝãtòØ ÂÑÓcy9ÚÑ�1D¬ý6 ´þÙ‡1eF0?‡dº±z@|3Ë$?Eƒï§ð‡Kµhluµu£LDÈœfÂ!¨ C9àä2zB' �(ËË+¡æîøÆË¼fB[âÔ‰�[ÈCÍŽÛ»L¾¤¼y 6´ø0÷‹]ó0-†�n‡™Ö×…yŸÃTÿHkÈ~->ÑøÑB÷Ð~ÏY–�‹i5�˜�#Ž>KBÒL˜`fX�äMm¾x—5ú¢jÞÔ:Ša>>˜qèS -_Š'd—ù #ŽHÄqU!—Ïáó‰£"”G�£/ܲF•¬#.Á—ëæH‹ž7ßO�”�ØûÃ$•“÷Y5ôh\m+ؽnâtôÓrÞc‰2EÏr¶Y´qã$¿WÏkP‡5„}5–š5ˆ`m¿y'2|²a8‡b’MD‚¶¹�Èmº<0b�Å÷ŒZ‹ ˆU:”+´h=Ú¯ôÉ×?„Aü†% þËuÆ“ßlñ­ÆØmó Y©m €ÛD8ç˜ÂREü�9/$±úöOÅQ…fàt¬æAY±Öñ5ä»1Âk ÿ»p$m4N§KÛGÓÅm¢¥óͪƒ{F(|‹šÁË@qµ¦b/V4”˜0žâ›¶÷x˜¸ž3â²â>oþÉ;¿|¹G^x©´¯¢}—£Îâ<3Z{Õ’ëÕhißùðFîþ¾¡X•ñ†A€7ÂÜ�ß^|ƒ}‡ùÛÊ·™qÑét0åßå{7IG—ÁåZÚÞêíÓóó‡ïÿÑ¥„éÿ}é8šXÜÆôŸo防u+7b¾a,0û‡3ŒÀ8÷‘3æ˜W~ïËÜŒ©9×¼œb¾Ç:̹>»r1²xž¼Š ßyk޹�4[‹>LXñ{c;}å«_KçÏžü—æ—Ï—uVû o$¤ƒªTA ‚À[?ñÄ÷}ï?úâïï g»s»[W`öç!âð½ÌTS “ŒšN»F0ÿ2XnÌAÎ`\� ÌÉ�-²È³Œ 9¹É89ùeâ-3UNs2N>³‰Ef[îÅé¹:Ó:Äg‡Àd�œ @û£ÇÓÅÍítn%áô*mooQ'B ¢ñní ý-z ›FçÙözý#çm‘òS•ðÎ{óZ˜ú´¨áÕÇ„~óú’É7ú~G! w`æWÚ˜Ácb.ó¯¶?/16“}ÿÌ÷çÐB»,�ÑüÛš,í× H] õB€.æþ›t pÍçÔOÞç×âH\râ)gßM�7yå�à¦ÞR¹xyiß^ÖY€’ øå“ò—qàX(O‹}ù¶‚|ñ5¤››¤ï{fÿ7_É ÓB�ç{7—•GãÞSà ¦×.Ghù`Ôø0¾Ûju‚PmAÙÚŒ/„#…à¤Îûò]‹K…%šª~Ô~‹�Ù ¸;# _ÆáÌ27ù–fK}bo0¦Z0ç=Üoz¸×„€�Ž�lÅ#þË>9ÖÄ2Åc‡=‹-Г\ Œø~ô±àb¤§�Ú"çhHC �`j� €ÌñëœÐÐU†ó\W½eí'Yß$•(ûo(óÒ¹ßPìe2^<¿Éà™ªKo œ7ýF¾èej Öï3? ¦7×JƒA?øµ`¨ç°B›®1~ÖÒ{ÞuoúèG樓Aÿ¶ôÓ¡w»�ò$ðJ$ ίyÎÉî-¶›ŸÞ¦K\Ý;ŽKŽ'¿×%®æ«ù žÇÛ^Ç)âÕüëÑ ¿þ¤Š�>ÂtVPšô'éÊ —Ó•óWFóÀª~Þ$T€7 ðU³¾~ê‰ï�ÿ�'ÿpº½cäZâ Ù4âù ÿë1„žÚ'µFSƆ¯œµ¨P9A>/÷NxNly2Šã(�ó£<÷å|H;Î�á|¬f×½ŒªÇÁœÀŠ,¯,¦G¿åX:»s9ý_O¯¥ËëhuG±ÈFPÐìD��Ý´Wö1Z·}·åi4HG²r¿¸t“Ehú‹¾g/3½¥KDZdx}ã.A4åG’w2­ÖN¤õÙfÚ=PÀ¸2g¸Zðއ�I¹J‡ Á´óÑÁV0%j‡14üVCïGA­&þÆl¯ApÍ6�5› Þ¼ß1ç7†±›ß‹<(9w„Ýe»4‘ë—f‚5Ë-¦N9,¦~gÊz8*SâüòŸÅÎAy —eª}�[ƒ€ø#ÞŠ].í¡ίàõæ¹ÕíÆœ2l„⣋åÚh¸ ƒ¿•yèxúèGîOÝkˆTŒûX (‹À®1i2qB'eA•“¨Ç”dosNŒ=…Žƒ¨;*s€ø<ù‰´< ä +0V__¼t!�}ælÚZßüã·]ÝXAà6@ Ü VUT¸�€‘"(àŸ›4¶¯MúT�±e3Q´ðÌ40Ž2NN!4ãW8úÈþÐ& mµo‚WÂÂwÂæžLß1µH0hì�«ÇÀU¦Þ嵌cŸ`Êkh~­#ïA¬4М/bäýCÐëÍ!Óïf›ºNô€±ù;0ïshó{DàŸgë5eø·ÒJfïÞÚzƒòµ1ëoÃØëSÞô˜µæ›øèÇr#ØK´&2— kâ‡Þk»|å1C†Œ�ˆ1è˜(jùéý4×ËÚñˆ¾ÅVv>™|f7ñȇ(óßæûxÎüÜŽßP@Ác ¡�±Õo ê‡(&m¨p5Ý•.MO±O«õc�)Á‹ïAÆÐñZ¥Ã �øûíˆïãá›otŠ^œ€Ûa¯‹Î”8˜@+i-Óë¹êNÚݽ�b¹¿ïü®w¥w¼Í?ŸÄ:ËÏv»ÔÉ÷±©õHâvîËõ;O»Ì±Bwép=ü–;½�XFeß‹6â4zï<�@b×X8Ïí¤Íëéy˜ÿõ«kÅmÿú­·ZÝQAàöA Ü>XV5U¸mxâ‰Ç¯?ùÏþèG¯¯­ÿŽ¿m›ÝæKµ5N]N^�}ä{–™.‰,Z½nš 5–†´„iÉB K”’ ŒîØ¥C˜Bû�’á'¡á©]À4[˜qA‚:´yñ¼Â@¢¢â^ãÚ«>Dô{Ê«•×o±­–žÍ y·yÿ€·ÜKCrù^dÔ{mM‚ ®Çý9?Ë„é§OÔ}MøWZSÿíðç× À -˜Møë0þúÅG�1QMÏC!“ ƒ‰û;¸‘” fhG9†ŒKh7 à´F)ñGÉ„ï5˜®˜Ÿ“^ãb$Σîâôm»óy÷=³ÏL–Ø"³x¼óhp¥‚Å´^?™®¤Ó™á©tnx<]Ÿ0Æð×fòxG¾`}£n+®Òa‚€#‚á$›Ãxà8 €`YB³ï÷Ã2jÿ�0–�¶vYR@ºÎØDxçx¤†7 à7>§Œ'â™É;<2&Ž<lY0,ʱ̗ù§\Þò=œ�¸¼ æ‰ß²…|­ú­ p+{À5qʹ'¾gŽòœ<�[”×Dñ1ju–ÒöñÓ#�$Þ)]ß6(æ6VlŒ‡°¸sLe θ/îÚóiþÛ·ƒ$jˆ¹Ñ'`L8.h¤€ßq[Cyb ¤ù6â÷µíôÌW¾–®ž¿ÌüÞL¿ü³¿ôd.]ýVxs P Þ¸W­VxE<ñßùÅßøÂ?ýÛÓéÎßœ!ÑÆ7‰  ï¦,Y˜Z3ã„þlj.æ2…™Ù—¨ "°8á@LT–Íd !—�¤‚ðG5/î¡4¿ 'TMÓÑú¶‰?cr䯮ŸÝújzÿÃ+°†ôö¹ôµK—¹i… zÜ3GZ´è¤ÎlH „™vÒ¤.iMþmèt??Añ›³„~jÀˆG†¿fÐF7a×yoä­‹Yo‡áÒ^½Öb��õß5Ñ7èžå B„.mà(á�÷.ü€Ñ쇢¦Á2xj÷[Dáo³u¶Ù`ú½­‡+~·!Zô+V“?Ec¢ÀÂD·I>C~ÏÃ%�ƒÐªiä}MxæI0ò¸'@Èì1´s/“_ r­¹>kÏ)jÞw\æ¿ö/zÖ Ô=kùüŽ Q]zˆç0!Øç@æ?�H—Ò½é…é½éÙÑÑt~¸˜Ö9ta&2ë<àß@»cŸÁÏb ï2¬†‹±Ò˜£”O§D묤e–i=ÁšæKõ br¬±t&Â;,¬µ„•ÖMŒ0ò¼~oý׊K÷" Àø+èo¢ÖÓB ®`N2Ü FÆFGͳ&¿n‘kF•*"ciÈFb[Æ8ñkón�\žŸï¦AiWׯ¥c'›éñO¾'}øÃ‹ø›ÒÊ|ÿÿõ`í»Ð}Z*–xŸëµ· >Øh•*¼i¨o諆+¼2~úoýG?ð[¿ûÏV£íåé³PLBõ±oàûÝD àêYC›ç' ¬ÌVÙ: $ØØ;A±9K…n:4Š1E’¯à€û¡'³€99ëLÏY!À N¶iKSö-‚N‡‚«/¤G„qÙ<‘Fÿßzzæò&e±ÀU ±Ä”¤,"6î…ÀÕ² Žitä+ƒâ-WBÚºnH& ×€¤Dt>P¼ ñµÑº÷`Äš0øÀá¾¼Çê˜â£ßÖÿ _¯5F0†ñ‡é'ò¾>ø�è0ÿìÑv0ÖD@‹üšÀ:¦üHjزoc‰,µÄ¾3¨-.št˜0ñŽC¨Ãû®A¥„/zFŠ@µ‰ñì§ÔëûÆ “$ãÀ3fT£]V‰@"$\‘Yjø³F2ÃÄûnN/>¿ùêá?@ñˆþÀÚ{¨ýϮń nM–ªšCó4]Àìÿ¹ÑétfzO:»»œ.ŽºiØ憎&Ø:Gø–j©x¶Wwup¨ š0†dà}�1æ_2þȨûå”_é·ã(€ã��´LÀΔ•7°ìiäÌAyƒé/!�k³Vë)ǠؘÈØ÷ ¼ëëDl‰>V#\¸&|»Ôžæò–Îøškã4úg¯²5—9Uª p þ+¼rrŸÑÇÄ=°Ïq�Ón¡Áum4\O+ËÍô�÷ߟ{ì®´i²¾¹ÁÔ§»b›9”ð·Ìµ”u¬Jå0ãY“ÕYaÞç“2w_Þ­f¡£#ž…æAÇt!¿Ö~-è´Ñö �á’Kþ¥Ù`ò'Ÿûì羓çÊxkÍU¥+ÜVT€Û Ϊ² ·û‡~`å7¿øOgÓ!Ñp#â:‚€f0å1[I¦ÉÈË(p�¹/ Š=S¢Ec‹É*3„%Ãnå´É5RŠÞœ§.–Ž bM]™<Ãþ£ÇX&pkãzZêÕÓ‡ß,­îÒêöZmÍ!�_d>Ä ÀÆ`\BÓ¬HÜúaxì­Óña� ![àïÕÀ9éû„1ij9Œ¿–Ó>z<}ꉠ?�yâ±Æv:Þì§cøæG“wo{�|Á¶Âü_³óažßÁd_-¾‘÷�ü­K@è�y·šç£³#`Ÿ�ùú´L³¼—è}‰D¹öD�ùn¾3.HT^x"ŽpÍ>gì[¬…sîßÐb fÂwÆõ w2.˜‰:3ó異�|)ŸßȰ.g÷öI%&ûŒåqùtÅsïeË´ E¡]‹õ××jËøûß“ÎMïOgÝFw¥Ë#–h¨�wŽð§̬b qëèªt8!àûóOÅeû‚‹l Ëoˆc’¡¬KÎc} �à q=‰þïŠ5,{bÈ}ƒ,c™eSr �vîxU†kBpÙ>Qÿû,é‡}bE—à”$§ ò[R|;(S¥ ƒ@Æ©Œd—¸l6LºA7ÇBóíí+`Ü•ôÎw�JþÐCéäqýþûéè".,“­´1ØLó´íhýCé¬já$µ÷�t^´b¿™!¶fÿÚR¶(GFQ;M6Œ³ŸCYséÚùôÌ_?�6¯­}}wuû»*æÿµÁ¼ºûöA Ü>XV5UxÝ ðàÉ#­§.¬!L¦#'îÆWœI¯¿Åé—¾:ù¬Ù%‹‰Ïàb9ðœ6…L°7€yÐ[‘!H~3âuµŠ{åÈ_ZœÇÄnó²¥H�àZòJ¹‡[ø¦öÒ°¹“V˜¤?ò�#ik0Nöç»i“ r«;ã´È"½C½þ.‘«YõÌirL°¹–‘ ƒÂõ_’AÖ×ß?'ûì1Т!àȯf‘÷ñ³_�á?U¿ Ó¿™î›¤Óݵtwý< paÎ+³ÍûªaÂ�?æC“�Nͽ�ù\»Þv4 .Þï¸×ä®o8רвg'ab€¢š÷“@m¿\wÍy×¼o¢¥°ïûS>å7þ aB�cQ9 ”·d×ï¦ÒH6^²³½œAæõ²PyŸy‡1½\ÿ}^Ÿ)3a!‘ #3 d$§±ÌßV} ÒÍÿô¾ôÕÁ=é¯7WÒ™]Ö‹Æ|4AÐööáÚAˆªCpb@@Ç2u½\#Dï´>ç7Èèf`ºÂÃLëþ\ñÃï¶1?æ.ôo…m« .ŒQ³P€‘$~åZÄ…¼åñxFžWÅE]G´æ1ؤB¤q÷L«ƒiðíJu"“ØÚÔ Àx3Ön ô'·âoÜÇwÚ[«ž÷v@`nŽÕNÖÖ IX†¸ ó[¼kkúaÈRÂm§8´ÿ-â_ÜwßñôíŸzzÏÃ,C܇¶àó8ÑŽïc«Á{à¥N3.ˆÕ=7ÊâˆÃœÄ&–Rõ"cÍ�×"¹g‹Ì|ìøúæ‰ù˜‘2dUoëÐçƒk:RPK@äÎ|ü{î©gÒö+"µÒ'>ÿùÏ—ê7¯¶ºRAà ‚@%xƒ]5SAàµ@໿û»Ç¿ýå/ß¿=F1ˆ†]MàÂüBÃQ&³Ç™j¦Bƒö…©¦Ìž×É-5ý¿È$ûòºµ1î]§Ê˜#�|Nn›,EÈÒšú�‰JÝÀü+éÃï]IãôÿüõUôJ'qГkÑ€Êè[«�”ßÓ±!ò™�mf±Þ½°ƒ‘vE€ ܱŒ€ Û°Z]`w¤>L§:»é!˜ÿû;Ó©Úåt´>o]‹5½Ãªƒ²jöaÏ!ˆ4±…ñçÌhÿ2놤© :ÂtX­!Dyl^@ “áé{²|f@uñ²ð—ùçpo+W1Ø{Qβ/N\ðÆü“/‚ ËØòâòž�EeÞìATâÅ·q*Ÿ1C1�ÝóœçÞ74„éR»Ñ8‰öÿtž›œNÓ±´Q7Þ‡B2íJ²ë�/x q©öV¸›/3V¥ÃFcñî2.ønµ$R{è—@Lq ëö3�»ÐßX·¹é1DünO7åü¿1¾¸ÛóÝ8ˆRà’­zJfÌeÔè§Ïò|hë–ñí¿»7NõvÓ�ë騸LšëŸC«—#ýÇê €S‹ ýò�”9À‹Úƒl`¾—Ló Å“é·#–‰—Zœ˜é�ÅÅòj•àq0Ôe�Æ¢àž�À»|IÑ^>)ªÙW·/ÑgÖªÀ7Ååò$gE!ó#{ßýÂì%Ë—÷½=öyœððÅ£gí?§œ»ûö˜¥¡ZÇÒµÆi‚þÝ—ž!êÿ³ýcéÊd)õë]HIñHmk¨þJf%3s•o'Š·Ç;ÕOá·#~Ž4–,ì˃ůA>ÆùÄYlm¦ÅÚjêM¯Ë/®Ö`àó¸ÚÇÄì�+zcÎ6¾ ŽhKj ëÈ´FÐI"ŒìÀüï"ˆ"PT#ŸïŠAfí“÷æoD! ϯQQ3תTAà  ð© t Úz@½…Ëòe¤ã›Gp\Ìàа_N‹Kƒô¾<”¾õ[;ii!¥],V 8èož%Å×RP“_Ñ)ÇõI9 ¾óÝ"¸ÛA’–2šúÓãeóïRÍ�z3m®­¦k/\N—ž¿�Æ»Ãtï‰{?v�ª{*¼žØ?J^Ïvªº+T¸ ø±¿ù7~óÏ?™õ7Ó.¾÷¡1fbSŠžµüNrj‡ àØ‚¡Ô 8/÷^w‹ëqÍû™Ù €ƒ¬¹ÌÓ¤gÉ„F>DdL«2€D–ëà{çZõãMˆT|Tßû@7}LJO¦{–· 1/`j¾Žžq áŸ72`ÝÛâëœà€ó&é¤5°b�øðÓ'xבî,ëŽÓ±Öv:Z»Nœ÷ËéD˜{`”·´ôÄ Ú]Þ‹þÐX5ò^ (¿>ÅÕbJÀÀ B…qg˜F]b3¸o³gõ€ Û”6g.ïG¤­A iE–TCŒ$ú,±�Ù%¾¿±šeÙ×!Ÿrî±e²4B¢É—Æ^éD0œE¥"ÉK&/ì¿HYïÙŸõ’÷½Õ3Ëç*÷ߨ_ÇÊÍ bk·1Œ×öl)­ÖîJWk§#øßó£céÒh)mpf€7pÀ÷—]:À.à.±›ß£øV¥Ã L�Ñî»&9èÀ�Эª‰i?EÆg !`“ؽΠ-uðýo®â °JL×Cç›C€±œ‚­Wò·_vh�©aÌ›j!Md¶ ¡‰^Æ÷Ìe™vhÓ “#™§" µ{×Þ&ιåñï÷._%£Jèæ4H‚ˆ)41O!mc!Øî4S§[Có1µ»[é±�ÜŸ>úÑÓ”O ÷~ƸHøÿÀSñ96'Jç(7Fè›—Ö¤œÁ‡‹y0pwoÎ>`×m�1Ðu•–ú÷ Î[Çç¿›fÃIº~ñJ:óô3©ïÒ„©ñ¾'žx¢’ÔÔÕ�¯1Uª PAàAà3?úéïøÂ“¿7Û¸v ?3& Ìç$ðdà%ü2“©Æ¼(“/·ÇøGžç’r�t\÷¶|¦“J(¹S+%·‡f™\ Ks#hœW™TÇÍR|LTLÚÜ7ÚÚBË=g倾{!­ouÓÿñï.¦3WW¡9OsWOVb¦&xH8¤I-#Sîì!dx#î O6µ¶3‚u5aÈ{Ý)q©1fíîñ*ŒÿVZâë;Æß¶ª@ R¦GòZÅÀŸzÔ^ä_ýƒ-“a¦oÿ ‰„Žˆ½µ‡ã˜÷EßÔPXÀ?JåÍȧǴ#àR~ù ¿þÀ8DŸDóÜö^U>W¨�5˜^°ÎýéEç2"/ÊÚ_úís¼¤â‘8ÞÆ»åmò Ý÷°lÔ�¥«éît~rWºóm²ŒPÿ~1Bzs9˜œköoèGëkáúã;™r-^çÛ€wΓøîêXD1gDàWº§…ŽßßyÍU?Zý´Ðéí|‹o,Ìÿô‚Ömäo|<±¾"L+Hâ7�´õb¨‰zdïò <$n‰™pR3îb°ƒÀa“åa´›©KS3uˆi&ñ8S,å÷ Â½Lõs ˆYòÅÌ”cð#ùKwŒFÛà¦ó��ôž÷Þ“>ù©GÒݧñ&„¡3ÇÎ7{Ù&*pZ†ß͹.ª£Ê<—æyÔ68çZÐ6´r3^sp€TŽÍþ[8øËü�w†˜ý_HÙôûo׿öwîïþ媯n© ðºCÀñP¥ þÖŸFe³›vñ3v! a<¡Èdàƒ¹gdëW^2þyO³––û–)·l �¯ÅÉ…lûh!&ÌüS)ÅÇæê*»i„‰*®{LÁói±½ÌÕè�GÓJ÷bú¶�­¤÷¾«•ºÛLÞ×pÍÀfX L¹_Æö°¦`ºCcׂhW+ H h lûÀy—Œ]ˆu‚ú5Œ�€Ë+9Ô†-ÂeB ºE+Œ,ˆÉ¤¶/)ë� Ì%� Ú1Õ�Ѧ¤-ÿxC2ì±yL†T¾{ï¥D©Á“ÙÈf¾qWÇŒcS`‘Ã~¡bA¸ã&#åd6ó&ãIlQ=-Üœâ Èr_ß\"ŸE_êÂ!Ê{ùgÜ øÇ» æß Q¼·!Lßfíhº8^IÏï̧KbLºÙè�Š÷¡0iˆȆm„À÷ÙžŽˆ^IØVéPB,`üèå–ߣK‡i�Ódà7 úØÁ º‡`qn—%B7nð�á{ϸšÁt8‚ò@÷~·òróØ’m÷Šþ¦júÁ.ï�•h³¯“k7–•¯©"×ï·"CÜS(æ�—Ç|n©R�—�€b¥ ß0Ý”�60ŸoÂDQñïîýôÈ;îJÿä{ÒéÓ~é°†™g©Ü9f)å6Ã4NÜÌ̶P)ç0×9,Ä'Æ Â".âëÄí¼—±›Ì§!«µéÇ|§§4?]:1=óÔ×Óê•ë/lm~îç?÷w\yuc�וÀë àªú ¯–º­ÅkÛ››MTýBåÖ�ž»@hi`‚Ù/¨45úÁdrn–Ö2ŠQ†ó¸^î£l¾îU„ O˜Ù¬Y-Õ8 NUo·�EtScÔN‹Dâ�¡¡Ú_%jïj:±2I�}p™(ÓÝôÿ>5K› œ¡½Â³�ù’åñ˜<ƒa}½€ô:Ö+QÝ€‰³ÿê3B%‚˜Í=G�àjù¦,Ù…ƒpç´¹µ /€hÁ©½°ÈbûB]ØC¨KÇHx³MåºÙÇÚÞ¶cÔpê ‹ÉøÇ šŠ¢ÜOŽ„}°ìeÚÍ“jMw£ïœ’ö‹c$ÏHÑ ŽrwÈ+¼¶—ö.’S^/÷{…^t`í¯TæE·ÂS·Å®`þÑ{Áp ÑÂnÖ—ÓåÁb:¿ÓNW†¸ÇÀàK·`þjÄ˨!$ÓcÌ™›§F†¼¿ &ܸo‡þ{|ÆHÚÄ^Í?èð7,[À]q°ÄVç¶œãxÚ/ð\ÌÖ’1"hęŋ!âå[J1ç2˜Z-hÆÏõ+×Òùs/¤µë¬jÀùú…µå[ª°*\Aà †@%xƒ^5WAàvA¿²­ÿî·~çû›�öÿR›´cjÌšž ÿ$cr“¨”Ù“to¾s¯{Kd!€×-ét˜§D-J” EâZ1ÉJxÎ`D:ó˜±�XË|—5ë»$óhÁ‘êw©xuýlzï}ïIƒ�•´~íBzêüzÚ…ÑÃOiO¢Sb³.ólŸ˜ØÃ7@m· ´¾²Lèñ¡�b"6÷µìÝ»·m ÷öSxe¨š+,køq�1㢭×KpÖ¢ÖKü¿›D;nµ|.ÉŸ;5Ý[àIæ=Þ0ÑÕcF].uä²�.Ľíî Š»è�{áh}ñî$Þa¼ŸÍzÊ$Ž˜ì‘‡7C·¸˜+)®•ý¤dÜPÞQî£:®½è¼¨£¸ú¦ì|Æ q�Pö3_³LYÎ+9×N{O®PÎ÷Ï)ÔeÏdì„­Âõù-ü.[æ¿“.7îMçïHçføÿ÷Y ra‹�Öݾ~‰a]dðóûÏïÄ·’qÍTé°B ´ðá”1¤†¿¿éB­q´èáB´Œ�u©¶•zl®QCðêhVN Mp=;uòÏ37íŽ8:JÕ¡Ö,ñícú?¬Íã†Òc,Óª9véÞ¥`@ÜËøì5û”qÙ~þ[ÔZ~ÿ8¬Ò±ÌT|K=&?>–ûñãæ²Î•�æ|à±B©©–-¸êÄÈ9v´‘}÷Éô­ïk¤Ý>±m˜çŒö‚éÕk-c=P´aµ´å˜ÈƒB\µÝœòˆˆÎ�‘ÇFy-öÞO²ÄÞVT]Îne�\Ô:â‹fÿìrv7¶Òµ WÒæ5\üx®¹¹æ]¿Zò/ÀVý¼u! h­J*Rü‹ÿéwŸþþø�oïî<Ü#@{ò9ö˜Ÿá°Ã2: h�õE'Ìœ…«Ô8Vò×&Â\“N¦//C'Ð&É”³�5!Ï3w¤f›‰µÜ(ãú»F¿uæDIɺÒLÖ˜´B;Bl6X«„þ,­Ì-°B@�57ÒæDl{sfüýº28hÂ'»DÏei&÷Ú€é{Ð�p=µuBÈ6û·Có… À>4'„Ü1ˆ€ÉYûMHY0¡†Ÿþ‡¹<ôGøi³4"O2“¸GcÛ¦óÀd¡Îû¨±Œ[SS^L›Úuú&ý¬ë˜1ñ†á“hñÅŒ5�„©¬é2¬5ÓsÏÔàChµ †¦Øç—©Ç¬·†UÅT ïmÚ ÀAÆ 4f $(ÄLmü~›kü+ˆ‰u¾á:¿awx—›­¸I•ÇƱ{Rd—ø²oÏÝ7Ryo¹¿qå�=ò™$inŸ­8Â�B—‘"ßwB� Þ¥.´öÈx§ *¿7ß”�1ϧlÞ€�Ë8¨u:hð±²ØeÅ‹-¬EÖðù¿Ö¸'�O÷¦§fïI´öHzjô`Z›.¡ågÉ+/„a¸;™0ß³+5Èèe³pß¡VŒ5Þ±¸ žTéðA€ÑËx[b–@Ãܹ�¹‹!M�µ šç[zÐi_JïîœM÷6ˆù2[µøÞ°DdÇåTq‰·Oy0’‚à)ß>Žà¦ý|FàH ׫„Ùtmº‰h!±ŽÀñt©þ@zj|ozat4m!”uÀÎŒù�À¯° àû†m µcÁä¸È³µø½ˆÁrø€_õø6@Àï;ïß™!¾•~KýV9©i÷ÏÏ“3‡ßCqÅ ›–‰fnŸ-¤Ñ 'ûf“8óëiqq5½ïÑùô=ßy_ZšOÄÀh LÈ·µˆ5TÇêIWg>Ãìí´ ›Ç9Ú9[)T·_R<ñ•§Lþf:ý•³’3šdŽq|Ü—›ôRË øY¢�ïrÚJ íW…#Ä4ª±6óåsÒs_{6m^]Os­Î¿ôŸþü¿¡Ê*UxKC ²xK¿žªs^¿ðã?ú}ÿøK_^¿|©u÷=÷À\·˜¬i¾KPÌÕ'b®  Éé$™§C'6�c:uÏ–§Å<±gÓ»²’>òؽé(ô2(®¦ãìæYyoà;g™°�\à(%ãÔ{¢ì-?¹¬¥#E~y’÷刱ü+½ ”:š’N§Ãb>uŒðׯ…«9®§Ë篤ž=—ú;® ð[¿ü™¿ó¥›k¬Î*¼5!P Þšï¥êU�[‚ÀOþÐu~í·~kº¶ºŠ¹(Seˈº�‹0ˆN�¡á‡rT›¯‰yL†ÌÑybÍÓ¡4¤3¥û’hÜëD1Áf&)O¢f?&eê æ…;eÙe„j2UD+×A-è‰å¥ôØ£§Ò…µ�´ñ—S¿ßIÝÙ }ÄJ Ø&¬Ú¬j0k±¬‚�iØC£õDÐPƒXÕUÀèöö<÷:ÿîõó <­‡1ì�ý HH@»ü¤ÔHlC]Ö ŽØI½ñÑÔéÁªcÝ�ZWÓîä¹Ô­­s ¨9>Ú½fºáL?èóŠW‰y# ‰|2üC4ùîÕaû.3‘o_dDaP�šÁ¬Ñ8Ü蟽óïŽM¼ ]!2®±Àq„Q]ÔlM@è`„’B3—·Ý„ÜDí@v´À×Vp jÕ§Ð(m�Æi›ˆÕí•t­…æúPzv|:=»s<=·s4­‡†v¤Œ.ê‚ÕñŒyû^�‡¾×rǾ··ÉƒÇ÷ ¾ßK|…å  ŽBŒù¾Ç»l­†6Rk´jo…ïŒß¿/±BD`CÈ~AÞ�ñ¶ˆÚ%ÌÀ-ƒêC=gGpù¾'ñ°%¾ÅXð¾Ìr•·-±+¿å 7—¨Îî øýÌØUb˜¸,Öˆw³™$*›,ïÆF™¦V/Ì—õD,,Ùî>u4}øC�¦w¿sA۫иGÍ�fEݹ..çv<8hÏ#NKq¿¤…M•O%QwðZë™fXÓx½ƒ0ìÚå«é…sçÒå‹—œ>þÍßÿ¥_ù‰(TýT8¨‡à%U]¬ ðJ€a˜ýæïýÞÊõ«WV'˜øßsïi”š0�rå} mý!1§rLqy…§d“¿™ñ�Óâ¸Èœæi±ØçÞËàIÐN6%—`,Y*ÛCûïböF?'NÀ]G:é;;ͪ;é_ÿåÙÔ#êï¨v$5Ú˜?ÃøŽa€g¿RÍ5‚Øu­jkk �‘Us�ýuèÅ$@IDATT™¸íG~€Üí7ú—ç®ÁÔÇò{èÑÔ’aÊ@ßÑå²1AØë”k 1½—pŸOƒñ±t½}4‚&vÒ*:8\4Ðwps 2Ç;XN°Zk~w �:Ô×@˜Òàý ™™Ã1uÅâÈ´£†xËéµóœK”Ñ×2¿Àå+$Íh+¿Ó8½#JÔ |âDͧæ£ÂfêûƒËײÈ?p˜÷¨ÐGè Fñ}ŠIM„¸šWkŒ°ÈÀ\íV¿~KýOðóaøP:3~ �éŸJç†+éâh.õŽE qa—LœuK”ú~_ŒàfÙïro‰*N8^u‘IŠ€|Ïøþu ,` p¬¹‘Nµ7ÓÑÉZêŒ1ý¯Á$aÐà{®`qŠ Ào³¦ü[buÆ?ÿ�H�LœÀ´ØªbÅ!VC#¶ .H–¼§Å=sŠªDkÝG+qàùJÐ@¹òïƒA.1iŽÑö?vô�uŸžµÍÕ5{ýÒšm¡ÅNêø�"(ØÂOÕä2€Uª‚ç…Æ 4íòùwDÁ¦©Âîù;*~eëPÉo_[Á‰ú¸­v˜ßŽ ¾‡Ò¸93 ph‹�·°ÊXîô­^Ü´ÆÔ1ˆ|¡užBð1‹Fd&iÛÚ¾II« ,ðuÁÝ/X‚‰LÄ°Ææ A¨âpËÔoï&‰EÂZ"˜01õ  ëX.-`›ã™Ú;\ÄDSÄ‚ü­aþ‹#–woeb­×'ØßêhÚ6ë�Âü·×;ÇíÔà°�éîÇüÖVÆ k=:4þôCµH$æ+LLuLS0�<Ý“�à©$·Ú¹ÇØ&—  }{r¼i ã%;”\³…Ñ5‚bÀj".ØsÆVM��»Á£�ˆ = ·wá¸Î\PA(I@5Æ£.cïö'Á5½éOB�y‘¯ßÕ™žÒ8¢”•gùKR`�pBø§óL�ᇞ6j<Ó±IûË>vÎϘ}ä©ûíé“UCG`„ ‚FéX©Âsh•©o¼+î\Ç™€�³[JiÕ”›r�í�~a2vÔ²ZjÛ‡ŸzÂ>ùÜ‚MþÙ8VÜb+Óçw•••éH®ë·ž¶ß¦þ^û]ň¶é›H�+„5ú^³m+®ØÅ7Îâ¦PÄJ ùÁ—X‘éÖk‘¿™CàÎ@ Ü¸ç¥æøžAàÅ~âÅßþæïÿB€C…Â~–�jDĘ ©Ed/W�ĵIéí³¡&fUM{M‰š„cý±ž‘ÞÈIR~ÅœG>Ê[4g¸ÀäÀèŒax“b­÷ßÿ%üZkö̇m噢ý«?[³ÓËDø‡1RÀmi`ûhU¥›R|ºsßw/U%‹¥nª¥ß‰äô „°H‡´GeôíªWZ+_«Xšz|ö»âù—kC‹­‚Ÿx¹µ‰yÙ¶Ðào!XŠξ–LCª+ Á€Y“t�C ×ÜXlf¼bU¯Ù¾Ñ2m…昕hS1µÞ†+"bT›D~€ ‚JüƒðÃèÞ)øÝ‰6Û]fD‹–Û†à!,OÇU‡?€‹è ²î�– 8yÌÁQ ©ø EÚAKa²Ð…µJØh$ [-í·Ë…vѱ3›�Ø•Á‡0ÿ?lK}VÁ@øÓ&6À8ÑrnÂX@ÚIýGš`7¿yúª´ÿ„ j?Õ.°Šâw�GßôOÈî:¨sÒ¾4¼Öe)cöT‡Ñ˜Ýäû¿¿ŒYôøªMÙ ×{h"ù@ðE>ûžÀ“¬ýwp#ð6àjÊüƒ4ü3’òþ@(�:z÷qUÑH.FGcš,"¨<Ò<•—_Ñ^x©ûyÚÛÈp@8‚!�TB'] ¼Ôø¥ã˜pGI«àLO�íñ²O|ôˆ>€%ŒŒ¨è•2sY{!ÏL9€í1±éuRäÇ·þ«úzí}<Žz{nd¯%4ÄqÁwÅŠ ·ÚvõìE»zú‚µW±à+Ôþà¥Ï~î_Ýzéù›9îDÉä)‡@�{ ?ùü�þ¿þ«ãÉ© ¢Íc¢Vg ƒ©àßÀ“¬Ö~FÍÈ¿&RM�L©:Q)ª�kîCêwÞ>ÝêY÷%÷½fël‚fBåXÁ¦:LžUüû»Í¦�Z,…75�bœûÝ®M±,à'?|À./-Ùʆ¢4£3 ê'0쵈u'¢A~ïZþLÚk˜%×®GýD`¨öw&Að@˜kI"�’íõRM n.#||5#}__Ú;(yÑðcØøðé±ÜAx5Q6hÑ7º;F`У‰´ìP™w*hLªÖ„tgÃBà0Šçˆ >É3œýKl"˜'à£ürM0Š:¹öÐ!üÒ6¦¨=š`t?˜z¢Oz-õÄØßÓ‚ÎüÓD,Jè£k†~ ÕwWYj%9dWˆôÞDð�}kqÖÖYrms<‹ K»I@äkB˜ìB3ò•VWÚÿ–;¨?žÇžGv�ó¼.äé.„@Œa �÷[ÙèLáã?WêÛ| €Í?æÿuc¥€Â 1ð©?KvË+Ñ�u˜Ž¿Â’HšŒ™–h|–¶ÿ¥Â¯þö?Ÿ`½ç‰ Ö¤‡ÐÀXWªhÚÑ6á}êác§*iÔ ›3Îø!é“åö©34Wh«õŠØ�NDòŽX$�ÁÙ%ð]RA3?Ä�Ntë3}oÈš¿½û÷è0ëN¯Ú¿ü·W­\›…­ØF»gS5„ýMg¾ŠøÈKæì"<)A„³çÆéH~Œ±jPòþN` �@Ï4Ç\ûoøöŠ2’ÎYðr.7péÓ—h¡-­¶-è±è³wŸu�Zÿ¢ûF–1Ùµ6KƒU‹6?1ie¶R_¦þØD@XIsŒ!19‰9eËÓw€€C:½¯†�àEAË0þr;á´Uêq)§mTrS!Ú‚˜sÖ†î•ðõ/²ÅÒ1{£Ÿ½Ñ;b§»‡ìêà€]ViÓ„ÖhÑ>X ÐFZ’‘¥�6`ý¡>ã üaœ`OuõýW½MX{¿˜ÿÜõ�%Sœª L*:ôñ¶™ØAÜ‚êÝ%zò øØ À‚� ‰V‘Õ€ÐSÂ~Ø„±é²’Îäoå®$ÂW�ÃJÕJõv&mc«`Æ“î}Æ�yI €±ö‡$TÙˆôÎþÿ%)_f�Eæ¿{1Dñåà›Æ8á¢R)ÕH�oõ‡ÅT¡~’ ­Ñ¨ØDudÿá�~¿;L¿¬ãÄ6á}á¬b‚Ç8) ôb|uj#N½´›ü!+Í›tIÒG˜«­B¤r()º¸!*èßLµfí•u{ãÕ×ðû_ü •™¿ûâ‹/Æä“Åæ�çø @ |PZ"¯G�ïê³¥«—® HìÛýß�¹yŶ0;/ÂÄÔÜÑNL†ˆHÍ}1�k†uâѧÖë�³I^Ó»&zb¥û{ñ”(DåÅÛ¢ ÙûÒV~¤«2œf,�ª¢ÜWXïÐLÑ>ö8¯«‰ýÙ…uÖ†8�€g@÷�Æ·ZÁíÄàJS«Zzî ^e?¿?Ôg„9·×EŸ®?Ç0³n1’¡¨œ•øUšMF´#Lε’Xv­sÀbr­B�ZºQ2É}¬5$,èkU¬(ªC›¯+€eÂʾ|’àóOžWÝ©TA\íQ¼�`÷¶¹çjšxÆܳ?ÂvÁKÄ&-ᜢ¡÷°L�`%ò"·ÙC”¶aÖºÀtP¬ã”1‡;ÇQ÷÷??~ÀN O Øo§ÛÓ¶Ôk ÀÑÚÑ2 •ØGpW;@p:ÓÞà°.¨;-¡ç”²}v'm·¸™ÿÞ퇤ÅWœ“:x¥ÀóøDïÖd¾¸f3å-+ ·À |‚AÂ#Ä|5d› ‘4ŽÄo`–^�8ċ阌@–…Y.b•…-QÅy0BÆk�”بñD¸Iq¾WIËä9CøÍS�ÀCpÂñb7F0Ö5„Ný®–ùXc:±­Íe®5ìS?ð¸Øg¸`Á’)ÆÍ¿BýhŒÔ»%EÜ×I`!û 3µW9ï-E_ahGp^ 3J`ä‹KW ½¹Ú´uÖÖíÌkoÚæµ�/þâ^ùê{+5;‡À¹àƒÑy-r|O ðüóÏ¿úµ¯_º²x~vnÚö:à\¿‡†}¢�™}ʘnOÜÙĪÉUÇ‘çq-›xÅëXÚxMÒzž½‹XÔ5i´cªVNz\EÉ꽓Ո„_f)À“÷´fkÂ6›«ö&kë*@^ŸÉxc+i$‚—c�PMžbœ‚m"Ó;”D(£æs!#ЄEp81‘:Öž?¾Sp ‚]ß ¶?¾çLqç9—Öbf¾ä‘ä•3f¹h¢Kè‰VE@s2Iì„ÃåËv¼¾l'ªv‚á³v ≸²€1õ�”-˜;ìÕúóà\öy�´_üܱÌA( pÈGIY €gÂïXP«hÃ:í?:Wgé 1–¹p6(E9gþu“A5’«Ü<åwöÂF]ÆRJANÅÝ ·`î5—-Ìš=ñØ>{îãu[€ù¯#ÓÒó#©*°e¨ âý¸ˆ¨y,Î5ké¹÷†ƒþ6H®|eyUvkr¥¿–¬š™1�±+ç.Øù7ÏX¹3þ眧÷‚ö¸'>%ÿˆ9n�/|æ ðþùì›gm}eÍ&j "ï²¾-“œ&QM�Ú²ã˜Xw®eç×߇g^fªt‚ÓïÁì:³Ãä,?t_²Ï³Uî°¹vš¢ jŰÖ�FÍeÖ½^µgB+ðÔ¼Ý7Ó²Z絛…]– oÊTV. #–ãQ¹EMÖlw2©^±‰ N¡“êÎL:s)Ú'@‘ÚŠÐÚàT# AoãŠ./ÿs-í{̹>`ÐÏR]uÚjé0K�=TëØ‡v¼°„Öp«V@ oÞ°8� &uQ ¥XÓ_uÜ(¢Åþ!…W~Oþ€H´Qà¦Z’$!“„%1^XxÖxÍ-í ë\.&l¹¼Ï–*GìRõ!;UzÆþrxÒ¾Õǽ»ïÞ¯ºûÀFf1>]7�#ú+1 ˆìWÒ¼=hr¼lO?yÔ>ýÃ÷¹æ_1‰„iØ÷9óï.là¹ÿà�ÆÂ|S™)~ú^eßz’Ö_Ë®j‰d¹ÓŒ±:w™£ñ»K^Tè3Þ8mç¾} k°�ý�/}éÌ­—–¿™Càƒõ®<åÈ!p�Cà'_øÉ_鶺ß:æœõ;,371Ãd,æ:�^!ƒtŒÉ|÷q6Áト¡€&�TF˜rF> ~uZ¢®Ä„ê‚&w·$q “* Çj/¯‚ª ceÍ+¾Z²ç-Ù÷=V¶CõUKº—‘ÂkÍ{ˆWY°é-gœ \} vÎïT�“P�-š–*�,K€`êD'K· xŠ` pÔUuó‘�¦úh÷û›À×¼“_ü <‚Ë {”2$ˆ#�g«¶¯^µƒÕ˃i€u–[#K)‹€§aÄ-ÈlR¾å(JÖ#-¨e—\»Ç.p1ª´'�-Ħkœ`3@C…‘?&Ò-˜ô.#kÄ•aÝVЇlµú„-V>f§G·?k>eÚyÂþm÷!{ Ÿÿ‹ý,ˆÝ ‘ãTÓ5¬% R 5Ä]´‰VÐR‚—€}Öó•oÜ;}/m¨PñªÒé…|w÷A€Ñ¿ÿ2«�`Ù¿•5{ ´d‡F— ®ZÒ_ƒ bÜ`üPgŠŒ ‰üúaXª$°'Fí©wpö ôp«)Æb¥°@ÀøÐe|é�Ûð9Áü‹tŠ� ŒÕzw[x¥qÅof{adŽ{eO'Ÿá4Ï¥s]°ãšc>¬àÊ7"ŽJ¯½‰0 c'ŽÏØÇ>|Ÿ=x”y �ñ½G¸/ÔR bá•Sç"£�Ó)Bj>Í„ïúQêBETÅ}©a�UcÌ®Ò7šK+vö¯^·Íå5;P™�D7O9îä.÷LSæ’Cà;CàsŸùüS_ýÝԻܨ—~äaò±¼�+Ñw“�o=Vž‹÷‚ìãX Œ¦"!6aúCë/ÍTÔEæªéa�‹>q3ìù ªØÁô¿Ý¶Nû¬™Ùs'ë¶Ñ¬ÚÿóÚ:EÔqÀg꙼çåK³‰áÖŸ4^Yaßùóß÷»aë2é�EÆAópS‚O5nÒr𖾬ÀjóÀ‚F6Ú NÂ’zylû&Šv°�O"Ö³ÃK.ÛD"í?¦•üÉwQ{×j™‡Å„Ûi(Sþ¡²œùT½¹à푵�j¸‡’7‹p˜Vw=ºYŽsA˜;è# &ÅFaÓÿûlµø°]´S›5;Óœ·‹Ý"üOáKM@5ͦhôµŠƒ[_hy7ñKô ¥èEÁÈ%h_Up¦mÍZ z‹zFvEoFÚ}Uw…ÿ7z.}<ß}À! ¶.�3Xæ,”Zv¬²iG1ýŸ,ZW€R²C$¡"›#RXµÒ‡Vñ±ÅAHFv�ÔÂÇ' Pᙄ†>Ú0f÷Jû¯£BE-ÙêC9hÜÑ»Áðkï#­HŽÐ^ŽJ <Œ;ùï„€ÆKÇ‚·|;ã¡æÇ\c‡ö¿gÇŽ-Ø|ßC° `Œ­–ÛøÜ7¸É³÷‹ÌdÂPl^ˆÄ,÷béo'�È<u]Mq_‡7™T¯�–Í% Mƒ"#*DuVÝ1‚¶ZvîõSÖ\Ý`ùÝÒGó 7 àüñ<rÀ¾‰ò æxÿ pñÍ+µj­:¬Õj6·0Íä›Î|šý|"ÏöY™ÁÎÆYv¬g”4³‹áÔd&ÿÒú䛪|ÉO¿®±÷iœëÛ(O4PãAÝMý&˰ø¾Üλÿà{ö©[ïíÿ»ˆo{ažUúm†+¨X-/(Í»Ó"\ïTR=ÜdŸ:@èh“ö_ZwQr[pËß«’òÁef!Ì`Y@é;ÀOÂùŸ‹ê„AǨm5̃gë «,Ùôà”ÍŒ¾móh YXÁS‚%Eí²Ú"r’»ŒðVðDå[TÅh:÷:§îJz:kM¿°—~Ôl‰8#o/,hýiU k Ú…Y4ûGm©ý�]l?ngû'ìÔÖ¼�ëUl™åÙz4}‚Ψ@ÐF‚Ð^x¨BX°¸?@ÖÊ_V «$ÊUÁ{Á½_ÂÊ€Ài3rMG;癉÷¶ëÌ^jŸ{þ[GÄa©Ú4ˆ°€�b,àÒ3; æ?IB Ô—î§4tÊ ˜Ÿ¢ ó2Ü p©G9ùø(LK)Î5~´‘gŸ±zä¦ÿ¼ã)ÿH®ê¨KV/t@ÒŸ7â4ÿÝ«¼ ¼HqCx&z€ÙÌ]F@'¡Ë¡Cûíã=a'Ÿ0k GW‰ý#LոɘÉó²tAÇq„bĹ“å,A¿Ÿi>súBpÏêpkm ÙOEV¾Ðš»êcš³7W×méÜE»zþ’Vàyùç¿ôÅ?½µò·r|p!� >¸m“×,‡Àû�¯|å+£ßüÍxøÜ©ó—÷/<ƒÆ^Ì Óh6˪D'ßZt:ù2aÆítâåEì—=î€� 4akjßa3õg*S¦ý›[[63U°9ˆáÕ –¬OØÉ£Çm³µÏÞ< ² Á*BXš‘ Ô!éy¾ô.­Q� ñ!Ûµu8î¨\ù¶M@ˆ°Ý©oöïzÞO‰eˆ‡`­Sæ¢%`›•¬»²^�0RÆ<‚ΩDîIˆÀ^¼ºý2šÿßÉ*Á&Ð6ÐÖð®c"újñ ,ò§Ñ¡y"Tp!$ƒ ü¿ã½«Aý}}S|_ ^öýÊŸ[eˆ™íu-Ow„CJnîÞgÇñDüî´·îÊb-Fw%¬Æ¿ˆ°S�ãÁ&²¢köÐCØÓ†ùGá¯)y¢Ô°fo‹%÷vòNÅIì˜Bàb©BOÉñ›*GI}îú½ÎT§ÝýL×®OêYâˆ-›«ùs8@èÎ6ÀeaíêÚÿ7mÐlÿáñÊÏÿJöF¾Ï!p/A ÜK­™K�w�_|ùÊ7þé7^þãÿû�ÿá3}ئgjV©Š¥zúL€¥ >ýL®–@KÄÈø”™˜š>3b– i}°¾ÒÌcºÇYm½Ó ^2âÍÕ®iÕô, 8³·ùq3׉‚u1÷+áï>I<ìa»oóø¶ÿàÃG¬ß|ØþùŸ¬Ø©õ¶UëÓ¶Ò'&@öy²këkÖ(,$O„ °5ù{ )P–nŠ­2Už‘î]„‰öQ' �ÁꉛIÊs é‡'qÁügtJ"*%˜d=×Tê+¦â]ÌzBfZÐ z·IÔ1úd̃­>Z£–úh Öh“/æé…2 ä* .TmWÖÿ^;ÅPfþ Ï!tl³1.ZŸù�R´Ù;ÝE£�†\ÌÏ&x¨@Oü•¨_yÀ÷¨PUâºîó©$®+f‚LšA)P_û,18Á4늰L)`¦³Œù.r ÅHG㪠yWmî{}< >ø«µ¥ÝBR¬Úm¨÷ÐÒ—€…öò“–´VÜOØÖhÞÖG‡¬“˜Ãk¯ûÀ¯ ^Õ*[]=c?øC'ì‡þ�9[ØO?+´•³TÃê,˜–ê¥(ÿ"¸.”TRÐßÀ¸8W]¼hJËj¥œ%§C7uU9ûÙm?‹½iDü:¸?¶z"Ë,³«çÎÙ%"þW†…µ_øÙŸû¿ôÊÏg�çû÷rÀ=ÕœùÇäxwxá?}áW¾ñÍßùò¹SçN>úøøãÕ cŠIº¤ïÃ!‚4P±,Ïîé–ÉrÃâ®àì(XDS/�;ÿ©½_�:inŽsžÓLΖš¸=ú=D,‹¦|ZLá«öä}èÅ–»Ö~½kWk6a¼I ¼­Ö&Ë Q?d7 ô:‰`’ÂM½4U€ü¼b.ußK¤ø tïVSd‘åäHäº;Ç믨6Ú¨²~ýØ­(Ž‚‹Y¨ `£¹Y€‰†KqK·P„ñ`Ù$ˆv--§ïö|ÉTD¼ò&“ØG œê Ï‘½‡S„Ñ� ¥¸vW9=¾¾æ×? “vÔ‰žïˆ²$FpxPv™T3¢kòØ�€@¸›†Š`’H`AeU7µK–¢žÙ™îxfÛtîŸê° ·ô}ˆW•o¨ÅuÎó”¡åž´—Ë…p¤ßX�o€}‚ÙŸ°vuÞ6Šli¨í¨½qm†ý~[ìïc›¶U„-"ü�ø¸¢¾G…8ÍΉæí*ú×8Ž¥÷·ïЮÁPÅï|õöéÁ�ïÄÕëáñÖ7óóïoºtP’]ø A€0CýR÷%2ýQá�ðÍ7‰x¿„ÎÂ-ÉKu«@'T~C$ê_%Ú¼ÌÍ2}¶Š¨F>„fôD‘e=“ ¶€¿ÿdq ÁÝåHˆD™^'™øk<Ц<qÕǽÏJØ GÅÔ×KDµñzË5‰+„.÷¬„o²Âécn=(ˆ’ûc:e|Y|»ŽýSÙGJá�âµîëIÁG{åén‡@´¥ã ø³“2ÌØÝÆ:Ξ×|b.Öx^*c-Å8Úï ¬V¯€ëCÛX»`ŸxöA{ìQ–Þ7ï[Ì]Ç=-@vzv uš¶ÒsÍ 7*_·…Ûìx9«U\ˆW5þ{nÙëä‡éoz²R'Ðn×ÐõrbË—.Ú%%w6°¸>Ä\‘åç¿9î!ä€{¨1óOÉ!p3xáùÏ>ù»¿ÿ[/\­9JÔÛ:÷ÐR 0‡>ï‰aª=ó O…;“t07»ÎU8ÏèŠ^Ïöºœ=•]×5fwWt×Rãçïz0�–b;v¨lfÁÖ0yož¾„¦mßÕº�º5+×p&Tµ< V¿Ò¦{¹ÜS­’U¦Èp]W¨!ùQN†èÁ;�¨‘*%jEÉ�ƒ¼ös®;3‚¦nTÄ}\·&ß¿I@ºõ"ê¾Ed¾˜}…¾Q±bªõ‘Ei¸=¤_=¡¤b%�ÕÁ­$µ›DŽ%d&Sdå.ë嫺XÊi£ÜcR7Á]ÚriKHŠœöÏWcÑväáUò\ iNñnÜÔuå/KüîÅ`Ãà¸ÎH~÷n�ÀWR˜/óD9Baio4ò²¶Hñk¡×Aþ`ì× ûl ¦ ÍÿÅÁ~»2Øg¾Þ'`ÃZ”Ñ·ø77°š#°Â…l2S…<Ý5¤ÀCÐßzÆ!bï/º@íå…gœÑÒÂ9�Ãø{¼�‘õ–ŠdiN‰$T*ñªžºÖžñ,™æ¼Örƒ-Þì+ ì@� hhHW›6SܲéRk¦æÿ<dz2å�­Rù£NÁe-õé1P¸âÊûŠúÏ�’žQ}eõ#Ë+ê.K´(¡�úQžö*bÌžÅ(¾^hŸáÇŸgt]ó ¸È¯Xµ×jàk„Nµùý#ûÄ'OØñãfÓ Ó²ps÷~Æâs�÷¨¬˜ÝEßÄqÔbç…8�úê7«y<‘ž¥ej.*kìF¡\ÏŸ>c×®âb7*þÝ—^úòµ�œó£÷n�ò»÷à�Q�= �¿ýã/7~ëwÿ;øà²=òØÃ˜ð·ƒož&r–Å s*ö I묯‚yŸsÜæ>}C v³b-ÙW$ªy�e>gñû?VîØƒ•�Ýר²…Â5›IÖXÎSÌÿ& I f„€¨h‘—VQ¥„ã>®‘§¬¤é¸n'ªµ°P[|ƒú€:‚Æ=õ%�­ ü'œu(�·Ç7òlžö(2Ü’é8MB á�'ü–.ÿµ—@Š¥NÑœË寳©•j›œÄ…jãŠÕ'úöC?ô˜ÊÇ&§âuÉ\‡ý²[ÉÒFY~dv“IåG½v^ÌöÙ—dŸ¡yÆŸ÷Gã®æ"-QX§tÖ7í§mñâe V~á¥/ÿ·;¹æG9îMä€{³]ó¯Ê!ð®!ÐmU'¯®6'§mß�Y¤øÝ¶˜Ø•…³oì·§TŽ™Ja†”\0À­lrÝfÔÒk»Ï�žÝõ¬¢Ò—`þå«Ì¿ÌÙ¥ÍUiÒ¨umÔ»l�ê&® ëu'ÙVíÛWð“-γ±žu…gä_®? ð‰^„±—£I¢Ø aÕ6%6 „õ§2¶­tû$ªù–D�ùŽ" B.ŠÌvµÝ5¬.*,)tw€` Á¤`ó+íc‚ª;c°EöÇxÛ¨�U%Á(ö¼sàÍìWÞþ#Æã�’´‘bRô~h>#o•�3‚±ù$ñ%ž`Ÿ¨_I ´l@I°]<#RP5T{©@µŸîg…k¿CÀ©mõ¦·_Ò&{ij¥å”@6Òæ °:,u) �\Nd™0Âg»‡ÆJ 'n&3XTœÀšâÑü÷ٹÎÒ~gº3vÅfm­4‰Kî¢È§›X¹"…MPü‹´ºªPžî:€sÇèJÂ2Åæ�Ë1\u&!ÅÌôª÷½1iÜ‘+ˆŽÂÇ92a?Wd~ŸÐ�±«r-ÿ!‚xžÀÌÿ�êº=ˆÆÿPFitÑ&†W ØE�'?~¾j„*c¬Êu ð7´Q%’ú„z�ðP�LÙè;Þ[øYå¨?x,�ß«ÕT$T”%€Kx"O{>˜¦xã б°Ÿ¾í$§›_�{ÂÐ~s±0«ÝZ±‰‰¶=õÌAûøsV'…ºC¦[ q=a8eô–•‹ð4Æë�rnî(j¡w2ÜKµ½Œ˜;v}™?¯žQ-ÐíÙÅ3çÝï¿Èº˜VyN9æ)‡À½�\p¯·pþ}9¾ ^zé¥Ö×¾ñ[ÿÁkõæÿÒ˜xÂfç'l£IäùÌOWˆÂΜmOþL½>çÆäLYJ"èº{MкçuvžÞs“l×þã‹Íl¬`pCVŽbïŠpYu–ÇjµÖmÿÔ‚}ßcûls³@ð¿u»¸¶A0@4³ì"}#K‘¡S]Ãl–;<£(稚ŽãÙô#üýÛý“�R¼nÔ+àä¬4”�U¬5¬Ùb»ƒ±aÃÒ¼u±Yìˆy¯ÐËð†+±frø)ȡޒO0NÈ|i&ÄÑ~w¢‚ôÝjJÄøˆÁ&uh<ñôª{¼Å‰Y‘ÖG tGËóŠ^  ÉNŠ“x´S^ôÚòžÄñNÝÓ#´¤cL©¥â× {γr)Q, |®Õìhx$A@à=Lù“Y4þÓ¶6nàÏÐÎmÀôÿ¸­æír{ÆÎµg1ýŸ²Õò´kþÛÀçÈh‰K¾ŽªÈlœB�ÿ�u!Ù�V~tóÐø�H fÉEx+á”g�ÉÂý±§½CÙ&2`Ñ×Jœ�`ŠY’@hÄ&£BÂÌw­ÜoÙ>wo´í¾Êº�H–ì0Ñþ÷šÿ€ò’ÕÇV£?”aüý_e‹ER½T›èQªj÷µ�'ôT\Ó^x§ Ý=|³Ï×qž2ÿôB¹è™<íUd¸t£ï+^©H٤šúϨGØÓVÇæ¦Y†–@”Íöe{ò©£ö?xܦXeX¹øjz²V©Ã䤌×îB5yfÚ(?öóx"îí:Nïù„›N¼»�áÑ‹DÀãqEÝbN(‚W -i˜Ë0`“b»ËøüWí�Ì\¨lÿæÕ>ÁÙ¶ðßf½u(Š˜øE G­â7�¨QÆüм‡4p‚>¥gâ�;÷«ÊÆx¢î1Š©Å-ƒØ ×:¨Sz ëVð°¬Tmƒ`tƒêðÙ„´/ÀtH™Ï†HøÁLÅ\‚­k,Œ˜„H°Ä0Ëm¶[HÓŸˆ‘'ç®3:¢|7®K›*Æ©‡®EU�š¾sçõÅ_Ÿ«úô`lb¿£ý�;ºš¥`†]Ó÷*P ¾Ì²E J°T–`üay‰ÈƧY˜´+ÉA»ã™ Kã£vv´`«]bL´Ë¶Ù'Æ]Z€­,JñW€?Õµ‡Ÿ¸˜¨n‚ �:È2€‚²êåû»ª®4ž‰ñ÷öwÝnEíͦ¸]D8–¡!ÇÁx(޹Qw©ÀHá|•>7‰[ÎæþûJËv¤¼j÷××íxuÕ¯ØÌøšMŒYÎs´jS¥,Pí¿ôò°ãn�@Ÿ ?I[«˜0FRWa¹š”{€6ï ˜ ø‚åÉŸ¸¯JkÌ“~VyÊ@Bõ~õ™ì£î¢†Ë«ú>A@ã«¶, Þº¥÷v?æï„@jL�ËsÔxØ´r¥i�<>gÏ>wŸ9¨EjÀ0u2ðX‚l¦O"+œ¶à<½”rs»¨i`°p^}RB€H×Uxû’SÜÒcZˆeùÂe»zúœõÖ‰Ï�J3Èw9îyä€{¾‰óÌ!ðî ð¹ŸúÒ³¿öOþ>$lÏ}âA”§-”œ">5™jvU>1ízŽ>‘ê<%#ý~:©û=Êâ©8×±ÒNNz˜5x¹ !€\¤7P@¸A«o ³°¸íu붯Ø 칓0o×®YëÊ5Û$ˆ[ŸeÙB“%‚V„n'2£—ó·ÌÎõ 8çÄ1×em êS¬ÚÜ©¤ZD]²_g.nY‘A€éaê?IÉ þaŠ“¬>e+ëhq•(cƒ_¡©Ü@¤>Á l5Eù *;Œ‚ÊL`vø/‹x§B ß³SöPÿÔO¾ÔPx*G‘Î+0ùb1<ŽPV°µ„6žÄǹ‹ÀÂÆø=óê.ñ€>Ö…|s.»KN±,}RÒ·I¿$Ö\IOè[uOL9û„Õ-Xm•à‰Wîwzp¦ÿ¨�Àçÿˆ­'ÇìÚ „€%0aîË5–±ª"¬@àRdIÌɪ&êO9Ú‹‰ê«L¾Wß/Mo”­òót7A@ýÌ­eØ—è#ê´®·rÆD»°3ã\Ô!}·KÂÕ¦œÁdäC[,ÓI`Àùâ:Ëü-Ùƒ�U;œ\¶ÃDû_]űdÙ&’uúB0úC�J”|�œ…µ™Ù¿÷X ÕØï£FGŒR¡žð?ð<í;^7eB¢Î¶ ²R!gYªH¨àÁyOãd®ýPíé_u¥Îy×¹cdœg¸•=¯ñ•w$�šž´õõSVotì“ßÿ{ôñŠu;+»â31Ÿ#$Ã@-M!ŒWì€m©@vëföÂož÷ù‚õ�èŸq”뾬Ñ$X–¢ÅaÄ ø!õàs.¾X¨Y±2gÖï¾F|†Í­& H™ïÛç�„Òüû“à:>¾¹Š Ä=ibd‚9™:£¥ŸB¦ ÖVќծ٪Y»eûAÅY `,FbXÄ”¶S¹UÌòë,g–ˆ±×·p}ÄVÆ$z¶°iûaŽ:?[]±©Á|¤�D :‘¨áõqÁ�ÎÅt/ž`TàûKã)og1ýÒ�*päíׄÚ©!æþ›É>|ü�ÙE;n¯î³ooí·Ó‚þõç Mc¡†;Iƒúöùëò>kUSFM–%=­k�5±2Ÿ†h•ʼn´Áj#dq•Ëï"4î€3¾$$�òÝѨ.ìA9Ô²y4¶âGÄ8¥çyO1!x»Œ`.ÁͤˆÐKx<[êÚüû�TÖìPrÅ_h§ãx~–0ùÇ]§Vl;sTaœ*È4V@þ”ƒWª•VÐæ2àº3ú”;BH¡Í-ODe¬În°;^ê¯ÉE§TÆÂ�qP~VbÈz¼?`>•wžr솀p"6�ÿÕjÅšÍ-ëá899Á=–ÿ# eƒ%ôÄLo®^µù}f?üé“öÔSD¤u‰Õ³a³Sû¬K@Ë‚ð\rZ’°<ðk6?Wס;sް[Øüö¤eË”\yLë2}�eÞ|•€̤´t£€ »ÿ@Ýž{rή4ÍN­¬a@€&¢>K½z¶Õ•‰,¦‰."FDU‹Y…StÛMÆ)[WýBZ¯Û½ Ø2ÚH‚Yüp’^ó# "æS—¨òÆ·¯åï8é¹õÚh¾MŒI„SD,¥Ý,Óbp\àD-ƒ£M&ôîëÝLÄ·H"¬vˆ±¸vý¯j«öCKN¤|é1åÃ,óþºm  `I³2ë�C*šy ÁÀ< P³´jÃ2 h@kÉ*fØXš�ËHuñö'ßìóÙ NbŒtIµ–©žô;Òl¢mB�º©>)­uÞÁ‡«2‹™ÿ¼-ŽØ%´þDøïâÐ#ÀßpŠe§ P§`쩹Îú"´pM0Ð\Á:Q0Œ¸˜ð úâ18+fQöi�T«<Ýeи3Dä#Sõ_6Ò‘˜›Ê3~ ØÉâüŽeYØ"빿»kXµôm®2Ä׿˲~-;NHpJòpoÃ&tÕÇ‹àÿ:/MúœV7Q>Y÷°‡À…~”á# ýTË¡FÜá=X§z©ßRODTFçêŸq¸ôê/YòþìÏêŠz�^‹þ¿Í8ùÕü'‡€0çú9QóB«Õ² ³™c%KTq‹’P©ˆûU§Å2–ScûèGNØã�Ï3ÏHàÔ³‰ q„:X§Up§ÒXêó»Fo!¬„üW9Ý�¬7ÝêJ;¿q%~•µ ÎûÌI=„æ3õ†õ7›¶x朵VÖeð¿½üÅ—ræßá˜ÿì5䀽Öâù÷æø.ø‰¾ø�¯ÿ÷¿ñ‹Î-~|‚In©>Üg›É¾‚¿Ÿ´IýŒµGõ�,f¦Ý¦1w«ÍšóÙ‹XUÊŽEpˆ¤-&ʵk<è ªl½:�­>Zo1�Z«€¿„ïÿþÉ‘=ýÀ‚­´ŽXëß\° -u´¾Ï,ñV®Oð K´õˆ@�¡/ ”©²²z9Áã'ªÙmN‚KJ¼¨dg.ÙguuÀùU=%¦@Dl «VcÚe {i�!ág0'b%¤ÕD¨fòÈË|»‚`‚Ꭰ"Ðv¶ÝPøNÁÑM’aeƸ&ÈÏSþ*˜Ü×È�ÚѺ 0Jû¹>„YªÖñ‘.OÁ(Õù´ <%�¬3ÔÚSwGž÷Æò="†_[*ðÀq~ W˜ü7“9[+µÅ2Ú~þ ˜úŸïí³Å΄­wË„ŽC]Ãÿ;pK–†;˜:z`I1fª7ð5¾GÆþá+Þ终;À·y]ý9 #òt·A@ãºJ:}†ãf4 Áüã^4vA›´ô\Es^B)Œ.s\CÀ5U^±ýåM–ôëÙ‰ZËŽãïïþ†Køø *�îO•b…ãš åJ™4OÌ¿r¤ïhÄóm{¬Œ>XuGŒ�ú¿ú„pN.0éháƒ°Ž£¿ð9<©¤_Þòþc­ÆÜ1Ææ)‡@@ ðFø/ìˆ YŒ•µ2P¸å 5²[«àÕ\¿fuâÑ<ñø}öì³ûíØùýk\Åz 1p�¹§ˆÒ Æváž\¢´póK�ouG^�ãŒÄ:NÏuÍËänYÖg”[$F‡|ü1´üþ—Ï_²þúæ_üÂç¿üïÝjñù{9îv䀻½óúçø@àÇþ“Ï=ûÛ_ÿjïÍ7ΗŸzêQ›�ÝGät Ú¸@ÈVˆ"�æÕ2 ü{ŠÙ”3MÈéÞgj=£s%ŽÅ>º€‡�¨….²¹8 ¬¡5��/Õ%fŒÀle®uû˜h�Ú6ÁþÉG?d+K6úËu[n_Å'}Á&ëS6ªÀ#,ó/ÆÔ Ô/å‹8 ¹SïPR]v'?S•ý¢Øþ ú³ú+(˜®Ê4X @Ä�îÁ…&z9Ü2&A¤—ò ¡É4ûcICÎÞ’Ïp–BX5É®]¿—àFQò´Œ¸ Õ)a -v¾ƒ¦T.ÃahS Øà4B= &û[øHWìh™å&åEïvå§WV?bZ¸¦¤:»û×S1W‰a§òàFa–Íàe}Ð.NØùÑýöíCvq|È®ôñSíR̵Kh±&°F(+vÚX£µR¾` $ÆP¹hÏ]VŠGì™,+_AB‰?Ô;0S]ótw@À™1rÖŽEÌá›ú ß�©|QOúVÍÿB£Iü÷'˰pe98�K ‘ý�U¶ì–-G ?˜ÿFaÌ�›Nàtÿ–÷‘ÆH±@zòw„§z9ã”¶¯´‹¾¯þx§Ê°¥Ì¿ú²DlÑÇÕ#T_½Ï¿õ+¼Ë9�“{êå| µØ"_ÏÓŸÎö$¼èË…(Ù–�gš+0™g)T��ÍÖ�`µ…»Ô˜ñ¯×_±§O>hÏ~b¿>$!,"S,dvߣÏLONûÒží6pSäÜ>¿õï>fSOªîçž]”¡¯©1†¯­/ÛlµnSl—ß<ÍvÆÆÍîùö¹Å§yäý«Ð­”š)ð@IDATJþf�;�\pGÀžšCàƒ�ϾðùêWûWGΣͪÖlfzž%ø­‡ö¿Æ�bÈ2úA³¨žšuýdg/z×iÛÝŸÌ5)÷‡ŠÄ£ûb²ã‹ÍR>ŠbÏfp<³û (¨„¶¶ˆF9ÁG{Ð!êpqÕÕW쇟œ±AoÅþõkKÖD³V®¥=Õ¬©:Ê=4ebûSbÙ™6•vçR0ÿ|,µ9¯#ÕU›®h‹{ªs–t,Ö3ÕSÂÄŠùÏž“@¾k ¤›s×�4OKø¢¯—ÖSeë}%1 ¾÷TN\÷‹oûIµ:\WŒ|åá �rD� ·ùP÷¥EÇB@&ÓÍþ¦mbvЦ]{˜ØÐÊ h«‚ûÑ6¹Ù3Õñ’aZÄ›¹Ë{ÕYæÏòÇ–ˆCLP—b¸ô*ÓDù?`Kú;ß;lotˆðß?b§Ñü/äëÏšøw'Ä&(kbÜ´Þz AÒ"Çe9P Á1 ´¤à˜º�XÈ�BQâØÐ2!µg9NótWA@B�‹·<‘_½pXÌ2¸U@ë©UH´ D—§šŽ0ô hû÷•ÙcÁ2[Z±ûf7‰êOdÿÁ’Í�؆Wmz¼Ž .R¬C9�0)—`DŠ·“>yró茙�ÞèýW}Lt|sì§W¨_qÅÎ"fà¢ð16ýîà§zN…ÿ`9�Tn]'rì�&Ø›¿Â%í…�éÞ¯Å�ܪÊD–í ÚÈîÊPÞl!Ü*�í¾ûçíû?õ€=Ïöº j ¾KˆÌ\ŽÛ½c¡ ±\/ 6žÕýmbaWa·p¨ìTmßûû1céKT„´ÿ5,µÌçÆÒ5»‚ésiº£þøW¾òu€<åسÈ{¶éóÏ!ð�!ã3þæ7¿¹péÂÒr æì‘Çî³É ÈàæŠûÖÉbV“{0ªk"fÒ•‰iLô»öú5í•ô,3´„ÒÐ'˜ù'´bøÄlÉ?|L¡b‚›Â6« êÖ(Õaüë Ï”¿¶þ¦=~èAk=¹ß·6­uµeËøåöÉ·RŸs×á&¼^( ¯S™yTçNýŠÐwJ…�>È {'È ]tÙ8¼"i/f½ ÑêƒAHõ¬³ÊÉÝÑèÇ]BSš½4ž™™¿ï©�^'ÚØ9•û–�îʬS;™Ë@ß FZ†ò. *ãsÉRi#¢ð‹�n š¶1DSOTèíØƒù—é~¨‹p R~�kþ¹$JMÁÙ� CRØ"Ü Ðü·GZºoÎÖ ¬ �þõâè>;Ý?h§:ûðõŸ³Õá„uм ®%ÏR¢õª1U•pBe¨8D}Çîj"mWÄ-�«…`ì$);6ÄÀoŒ@! ® çén„€˜ç2m8ŽE–`ø€ 7óo&ˆê?[Ú²}Éš®`_R[·ýµM›KVì`‘x0ÿU–ô« ˆðo0ÿ<_KÀP´¡ZMB1œ·¢_wÔ?Ôǯ`þeEãnIà`ˆ@Ó¾ ~Ê€YõQ'ó¾ëÌWe5ÃÝèÈÜ'¿8fGüê á6{òòïb€Å*;V Á*A²‡<íedx£}6–éX œÓ˜ËR¼ˆêmb¢ žvlumÅÙo?ð©§íñ“ôææÑ°l($HÒ×X’¦ÍÊ*bÀ/e–|BUòuÄS9ï� ìVM½¶¾�3.�Z/<>¹ß6W ú÷­ú7.üõ/ö³DÊS�½ �÷Öûö6ìò¯Ï!pÏCàùçŸ_ù�ßûÍç¯^½ö͉‰’80æÿøÂŠyišÎº¾êü”ævÍÊìÅpéГ®+é7†h¢äË^„€�¿u‚¤B.u`{�ãh¸«ø—kh#`+hiK0�ebôYN®4ºl^°O>sŸm½ºaÍ‹=4Ã=Š–‡¸„·Ö‡÷cUMEh›¥W¾sÉ ô]ð‰º¤@óÉ… â3FUŒ€_D[­å÷¤q‰a\‚×rßsà{³eÀFúvž÷hæ~WšÌš,âNŒ¶çr€ˆlË®ÝBz?0@�É”B;Y”O?šÕ!~Ïýd‚1EK/%¿•æqXµU–dåeëâ"€«¨[¸¶¿¤V©l• †[Ì¿¬@7ðá¶0².Ò‚nñ ­ ÚÙÁ‚�Âø³¼ßÅZÿÑù“W±‰óA[nÞd‰Å>؃"+pU�©*…göäëþÞÀ b›q‘¸¢FbÒôG™Z}@ÁÛÔ6C¨–yºû PÔ¸ÓÅÀû Ì7ý£(™Q§B{k5‹éd€»JÓUÖíXõš)_Àäÿ’ͯ¸¦¦¹ÁABIIEÑøY^SËŽÉGMӘΠ–c\P®%ã\ˆÎ ïe• Ü—P*�ùãî€k$.�Ë (�c.àîÆ¯žÓu�iüÖfæÿˆ¶`úË ·„Â%ôwóŸ½áÍ�6�iŒï ã+<¬xL+dÇåÀœ=õôcvòÉ¢gׯý ð|«„RšÇS8:Þ+o2q�iv]yIØ&$M…Xé­›Ùémå�Çq¦|4ƒHè»ÕY·Ë.صËW­Ôé­ýÜK?û‡ºŸ§{¹`¯c@þý9¾ >û/þÓ¯}ý7þ¯³g.|¥|Ìö`éµ>S¯4["0ŨfylÏÊd³³M¯»o-Ï:í*¦TÇ>yë1㑟ΔÚ|n§&<s9Py}&}– CœÏMÖlmëšÍóÌÇ"ÐnŠËøü�[D(&º¼‚y‰Õ ÖT±Øµ T¢ ¸mŠ%Ê|+I‘]Íö»¾v绳›7½ß$7`’Õ!²S‰D¢ôì¬�„vÛµö‚7¶i^ñ¦´üb¢ƒ©Ö51ãÒ7úèf¶ñgä¡{lºþŽ â fßs�çÌeðžLçµõظ 2÷9´.ϯ&ìZñ�-¡!]�£¬“>£�À0`ž$’XAU�ˆ¢‹¦¶ëë Ô|ß…™j¢õoWOڹѼ}»Wµ7Û“ÏØjqºI5'qÖ‰¶^`Y@y˾€ëA¯¨U`Î&QuSE%9® R2‘óäÔR hè9®‚•˜«<Ý:v '˜ ¢‘²ýîœãÙ躮7vÞßy/»–íãŽ? >kðcSËâiLÓ_…¯�Yò´€�?¾þcÌýµ¬_eÓŽÖ×íhí…%ýÆç­:¸h5Eøï£í”F\+jŒRäOLjQ_†Ó¿ fH}N8¦Mn&b®„aº¢#gÜ£ªéW‰“âž>c78ô ÂG £ø“%€þtÍêv^àåH1URÍ+ï½5Y­‰è­Ã÷Ñ£”vˆÜ®•E†ÎÀE-ädãu¢3Ä$hŒºgý# »»biåóÝ]�uË2ô¾©�³6Eà’FÌ“ÿå>µe�<ñ°}ìÃ5–ù‹ùyv¢�[ Ç-3âð íY9 k“�IÆÅXÉò÷¢¶s�³ýfåsÏÓó뻳¿¨;;O«/ñ\Pœ y6j {ÍÿòÙ Pô•Á8�øï�ËrÄÔ’Ã!‡@�ßßøæo´ê�bý¡‡OØüü”][Ñú¿Ó¶¼º„F)±z ³î–äÔ¨Á`1 zÒ€i ±Á¶íc¦î„wœC@;Áš‘õAüºÖæLZWmzFù8C/¢VÌ&Le“e[å»ÔŸ³?ú‹eû¯®Ùåº_–É«ê…ÉÀ*&áh�×!Ü+u\ ÆM'püãU½]ä„®©Ê¾��ŸÁ7‚NoÞÒn‡|Ɇã,ÿ(aç~Z•í:Š0—�·¼ó¬îegbvÎuæÌp¼µ$FDÒå$A€Ú†�3Ë0Î+‹8#îÃ!¹)BÖaðçê#{(¹`Ÿ®ý¹=T:ks5–w$|_¹žíj,™VÒšç°"XôJ¬[:l[Å£¶Ö'Ð_»f—Ñú¿Ö>ÈR ´gb«½Ä6iï.ÖðS¹|›ðKÌ’ÈC™_kÕ7Ãö_¬0÷ÒQ‚¡]±þ-�‹#Á’gRÂ9c&ã^þ{s e¶á(ÄœcsLudJsÑŽÑ>±CªÀ ZÓ~„�GVŠZ.c �|­{Ü?\³Ïe±æ2ëOÐØ+–ƒFž&n( Ð7 ã?5Ú°y,ŠŽTšvÿDÇŽÕÛhÿ¯Ùäè*Áÿ® `)?–÷«$,çW²Ngˤ2ã‰j/A(¿¾^èØ¿#ÅA� wô a¾¯#™WëY=©ûŽ­ì9ò÷”§RÜ‹38 ¿Áj*n²TÑ*à3O—5b¥Ð¨›´­–&\Cå¿Z?Š«Ì“öæÊGíÕõìÏ:Œ™£Y\rê,Í9áñ FÀ§ˆðT12 Xh �gA™âc¨BÃk²Š80Y½¢ùÏ]õ½ æÆ�}X7)Ãðc¾ïs.í¬ ®=í8éW—ñøš?^¶ùk¶“� `kÀ²zš‹5hަ? M=�ÛLüÙ¹[N s7°X�éÈé§ø‚d.¤ýIOmcØ®1A¸'¡g]د‚fÀás̨ÝaŽiØ©W_µkç/ØÆ•EúÄpô‹/½’[ž§{¹ÀG€üós¼[¼ðüç¿ÿ¿6>súöQ˜ÿC¶¾±Ä’@,úêcbç÷˜õûhÀ,ÁWvÿkJð\ÄmFh‘à„½ÈùüC6sî"&Ð^‰8pÂBÄÚÿ̧Ýõe¦îžPä Atî£�iûè‰i»ºÖµ­×WÐX(ä>š`Þ?W`£Šêŵë’îS­mbcûf\ñªn_Ó�¾á½¦·çWÞ©*/žÐ¯Çø®Ux{^ßõ•wõ5p¿ÕHLŒ€›½¨vƒÝ�(“KGQZF™�ÂPôaÌ70Å_„ù93Ú„SKl¶ÏÍÉ$ŒVÙê¥ ô×pñè©e­7ž$¸#~œ,ç·^8†É?&þý [-ØëÃiÜ &±b �Oòš†xe“¥GèzaÐÐd Ë”¹«/ïà.#<ñþ-ìQJq>;�‹»~¹ÁœH–^ÞÆµì% FÖBXÕ ¶K‚djkk K²+u”míÒ[¿´h�Õ d`8Þô Çw�æØóÈ{räx÷8| R?sþZ» Á0‹@ô2�~†hàÆ¨*qÜEs ÿŽk ×]•¾×\Ÿ>�Mï:�kqÓ œ²—V€ x,®ù#<ñ³ZìØ#Gçmµ=€Ø´W¯¬Ù:®£Ò4˹cøŠ�ØÂþº–„ÓËÒ íN®oàÒN=ôLœí\ËŽ®ww>ù±h¸ N€ZL8çÚXclB¨½9À¿pÈfú]›«ì³ùòQ–WÛ²:§DKíÁÔ´‰±>œ´5˜ý•!�ý÷ê¶1Æf ;¶L™â á~‚è„uIËÉ0H�™µT°0ª—��úåíu{! ¶ú:Ýb0Õ×hÔÐ>6µOt½ ã –T+ÂøªÍik1þêײí�ù¯¢——Øä"¦÷\CH$·1 k â˜ÁìÿcƾZÛöào¡xÑ ç}/ícx�¶¬Ê8Sb°* p)"ˆeÁ£úS.ï*pà�I�Ã�×;¸¬ñ,X f$`+xú ú–3”«Ãd© €}±ç¥Þ$<ÓX—HË«aÛ # ¼äî™Jñv×)ÉÓ]e°*ów ¾!¸¡@«rM) # 8Ñf%Ì&Âþ¢}ø#Ú3ψ3ÿf³gÕÚõ3|&ÀËö·a´�È�Ôž…h„�q:¯ãI¯/w5ˆî�ë˜â\´7¶ì©3¶ºx͆­–?ö3¯¼òÊ%Ï0ÿÉ!�CÀ!� rDÈ!�Cà]CàÓŸ~±ó�öO>¶ººþÿžzó¬=ððÖümaØÆ  ÈR�“DvÇ�‰¸&7´ JΘe“ºæn?fÚNçsçÁ9Þ¾åoíLû:õI^ò�?/UþŒbe4CÜ º[W­>9¶…JbÉ¢ÓöúÚ&Áâ¦,iL`îÓ³9�FZá¸ÐŠ4NK‹ÝõfõªQz=;ðZ¦Ÿð¶o?”�Œá0DfB Œ¶ pº_¶kÄNŸìÖYZÍì&¥340ÿbJ  šj¬aÞ¿ÜeëIP±&A ;X(( cXP­"ÍL!e©ìÀ3aŸž ÌÐPˆ´s¬æé¶Bà£À÷-Êuö’6IÿdD‰P7Wk©½tMÿÞ¦² ⚘1¸1ù02aFŒÀ 0«<—à_Á¬½FDÈ Î&ÿ'ëM;Htÿ¹J¼[±©Â›�gÓ~Å&‹m(›’¢´�à\QjvbRxtâXèôN¥Àë ¿ I‚ŽÐIF8S·3_byà ãõa0gÊÄ:€É#,&n Œ�.È�Koè5AÚ�•¿6 ²6б ™ÐMÏçén‚€Ú¶T‰à—˜*͉5@‚+€pi`Í�E›b>}æ™Çì#a9=¦Ê.2¯:ÑÿF2åLÈ>Æ¿'8ÞEŽÍ¿,÷Y€�Ô»‘Ô­Û#¨aÞÔ´ Äü¿qÊ–.^¦²X!Zñ—ñK?ûkY6ù>‡@�€@.È1!‡@�›‚À ó§ÿä÷ÿà«¿|ñ╟Ÿžƒy›ÆÏ¾6�F²/ Á×JMÝ™3r×¼.ÒSœÄ1×\ãžÞáB�ìÑLó.jEÿÜtâ4¥ o øz­ï^ìoY™ÈÜGêó–oØêæk}kÍ–×6¬_žö ]ÔÅÅ1>�°èÃ(_Z¯´:i=‚øÐ¯nd$H¶ß}-{/ßßoÕé\ŒùÍ#^¥ë#ˆ#Z§: ]!.Ã5ܦð[.ÁÈIx” Áíà»± ^m`ɱÁåTj_UQ«Z ’pj4B-7�å]šµÛõ5æåéNB@ ¤xÚ.m 1´j—ÿwõUõ{µ¶®G�ÔãÎæ‚KÞu¯�í�W²QÀIÅ ða&à]F~®„–¦w¡‚µI¹oYâ~;‡ß?š~¹ ·<­À¯±_³ cDÜL|p��P›F44þܓ呬 ¨ÊI§Œ)WðL¯�`©#Áf¸0„º*¦‚bV‡M›b¹ÂùÊ–Í`Ñ `©GßQ¤ö1q< ºQ”m£vÑ·§íÃÈý‡Œ9ÊÓÝ �Ž^Âúc¬Lþµ2„=C„D£áº5&ÚöÄÉcö‘�ÎÚü¦ÿú+#<« øêjõúZÖú»Çúwo&êØA ¨?íÌÇœdxv×÷6É·äSä'aÉàÁ—aü—/\¶>‚€ÉJåï½ò…—~éfj’?›C`¯@ 앖ο3‡Àû�ÿ[_ø;Äøß~íÍûŸ8ùˆ-,Ìa°a�vÁªU1·ï¡*P�>Oì˜ßcb×®“4I§L?ù=nøíôσãô^‚ü,BÀ ‰5Ðíbæ8�Ùû!ùŸ³YûÔ“Çìj;± ßÚ²K­kÄ…›!X! &4üÐןKë”™ÖIÄïîtý™˜Ž¸rýõÝoäÇ‚€ˆÂŒéÏÄì|$­=x2£´Ë¾Ù)c® Kˆ�F«>ÈÅDZb-:Aˆ3Ìý‰! -U AÓWWÁ’—Z%ØANQG;m´}qWãÜèÚ®Ûùá÷ êÇŠ¾£ˆáAw¤Ë‘C†–ÇS{êÝ€#à˜žÂÈè˜ãëÜWL‚›hõ7m!Ù´#Uü˜+DôïØ�2¾þµ�?G ¾‚ ‰%F:ùòXT€VÁj.ˆœ•;¥jLÎb�‚½±_Ú…\Ä&ë¹+@W•BÈõ£ÍéÛÒ}&ïí$"žSNüÇ�?«C1ºá¯¤„�ÞBÜ–aG0óŠ2_'’qŸÖ>‡ Äú�©žýÀc‡mm°aÿúÛ«D‹ßÀŒ±�¬àr¼çdí®ª\‹šymU°JO3â#­§ßÉÞ 2ùWrsüô!‹ÚFjlAZÇ0ú=-?Ÿ€7ZÂLGhþ äQ ]G ?ÃËóañáí¤Ô’D»E+)pÆó�"¼œ´üíÏD;o_Én#Ôr%´ÏbbSvžf¼¾Ugö…&å£Ì �õаüÐ=y¯K+Ír~D-Ÿ¨ m ÷Y¢õÏVíÁýŽÀðc;ÌùÂpƒ@x,Z>‹f¼¾ÉÈŸ@bZÔO+p,¼’;A‘q§€PÀ5ÿhÌa9Àç6…R#‚Y¦£ûÛ�¨—»8òÏ6ë7wõ/Å<ÈŠØ“�£Šv7¯b±a3°EŒÆl(ÁVËn�whýÕÛÔ'£×Å7ç½çv·øû]ž›þc5SbüÕX=`•ÕÌÔdbÎÛÇ?þ°>Œpäö6Ù#a§¯€$ô �» ŠLaÒ” ¹ÙùwÛgýX˜ä›ÆdMòšëýÊõ9¨¤¬4w BH,�ñ�ù~•HÿWΜ³æ2®;…Òýs¯¼œ3ÿ׃/?Ë!prÀuàÈOrä¸üÔ�ÿ\ñ×÷ï�zÝ¡�<ù(KîMZ«¹‰â â�‚G&CMîÁÙëÄÏvfòL"°›zðGDhºOI]“4ÀI]CÑïÛÌÔÁ;Ök6ˆH…¬à±LãêÊ%;yä)üÅ붺tÍ^½t ò}濌÷+D�S©€²”{¤ô˜kb@TæÎ/§;¦Ïç»A Ó ‰¨Ó–1ÿzV ´&×"j¿–Šrf^朘þ#ÊqëŽVÔ—bü‹C®¸JÂHUÚ_lÞó¶IñÇËT»Q†7Ý�*–_»ã³™8C/³}±™2æU?ÓF?öÌzWyÞÝt—÷ôŽÖ‰ù-³¦}…Àv5ÚYzøŒú<ëÝß?GL‰Ñfþ‹67dÙR¶éÞ’M×`x׬1+{6­* •ù˜m œÒ’£E|‚‹j¹Kɲ"⿞ÓóŠ; zÝIPªð`ÒU)­œ"æ\P ˜ Nô*ê®z–°’¨ t).QB¦ „°ê°-'øF¾UY06FHD¾SæáZ�EùzÆju®´Ïé�<Ý]æ$. �˜š«ÅüKˆv`ß$Kýí³=\Å翉gÈȦ‰µ›DÔ'(k�»Á€B‘w•”�?+œÒܾûE;F «…�ŽËx"ø<0SŸ°•K—íÌkß¶!ËÿÕ™;^~ñÅÿêg?ÿÓïªèü¡{¹`¯¶|þÝ9ÞÀl�¿ö?}mfeeuýü¹+öàƒ÷1;—¬ÕÞ²ûç º·é·ELö`Ö4ïU"ö+õÓsŸÍ9ÏÖö›N=0Õ‹¶Í ÑœŠ1«ãÑ‹;MÖ¬FS×  ®KÈrøm¶�ðæe{|zÚþ£§÷›µOÛ_^[±~í0tr�FâõPže–ãÑë‡YdBB̤»@ɨ¼�øIþó] °[ó¯G3A@¼Æ ãé€+ÜŠà« ÅÉ<1| ¨ØTÄ.ó»X¼ ÚY%1ÈœÙæCü]ý¨E#OVX£ÌÅåé'é±òb®Sœ§ob4a¾+´D™Æ-Ý'ŽCVÑÇyKæ"H*÷›+µì`iË—Öê·jû‹Ë6‹†ÿ šÁ ´Ý“¸4|W+4qj2B yRÙƒZôo1´”-Óyî§ûŽ0•j*Ñ„DÒ€Ë`žÐbªÈÆ'a¹Äë§CáwÚ)¨÷f?aéM:’ž´*cZR¥OÁè5»xÃ`>™!.BͶ°¶içNc^o̸âÛ% ñ<\:Àw«Õ48çén†À€åzëØõK�ÞÇÁ¿\ÆŸ¾V±ãÇìÏÎÑWÀ™É MVnÁU„y5A˜.Ó¥¶??ƒ³½nÄñÛÇÜŒÁWÿVÚêš_ßõ¸êWguwˆ«Šz_�yZùŽ{]›­5¬‰`ùÂ%×üwYò¯:�]âç?9r¼#rÀ;‚&¿‘C ‡À»�Àg~ô3ßüg¿õׯ-­þ ù‰Gm†{ue‘`€’¨Ÿ´ù4΄ßÑò{JòÙ•j*#¢™Ô·ijMß"üBzì8s—>+Ïõ…b¹,ÿ×!kVcè yJ0B(•æ¾eúg@äžÂ‚-T'maÁ:0W¼ YÕ(P§¯xà}FÓ—k¯k¯Ì´åénƒ€0E1Úm‚ý±bO‘ˆªc–ü{àþƒöÔ“ó¸ÒxkÓ;pƒ¡“†ð dp{?¾vwüÈñìú|…ÙŠaQ‚ã—€^XW�PŠ¢‚bÔlÛ*AÿÏ�¥;6]«ÿÒ+ŸûÜ«×ç’ŸåÈ!p#ä€A%¿–C ‡ÀMAàù¿ùSøµ¯ÿúÿ|áü噟Ÿ·ƒ‡æ�ˆT`.MÖòãNp$²ÜÔ€åúD4J{ï¤#¿l?vbÖiŒ¸àDAzSÇzh¡àF©â ¸!­¤‚ ‚!bµd�â hk"„[Ö˜ÜoÅÇÚRsd—Y`¥»êë09‡+@[F@2*’$e˜ å¤töK!×¥¬:×]ÌOÞ5¼Õ\�$²Ž3`/segêµOá/‚Ó.4¶bÀb Ü›6†ˆ ”ÐY¤L ½Ê¹þêvμ·s7{*ßߌ¶õè§²ó/¦?Z] «4Ï0úàD‘ { æýe¢ù×Ñö7ÐR6Ê›M¶ìàø<šÿ;\íÛá2VÅ›,Y½°ˆ¶›þMÀ+„¨?»‰qhL_— �pº0>Œ2í#$(ÈÊç Bž9R+Ç­xA¦ ­ô.w2 ”Û±ëKqË$g‰‡]Õ_|HDˆ1&nF�!°H¿™Ç |oiL”t+M[F‹hx¯¡UíÐ C�‡â U+y?}¯6![ˆè;Qöõ5ËÏî €e–ûë²loÀ’�õ¢9õ t…"ÄeþÏ^Œ"®®aéXQä{º­%»oá¸ý»'gYÓxÍþôB˶PãáöO>˜Ç:B>hdz¨8‘T¥lgùï{�LÌ–˜Š`øÕl)ó¯V—–Óƒ³yÃÓŽŽP¦”¤Õt³lÞòVIqF5Ú!NÓöò]ÊÎùMψ<³ôJžn3œ�Ð*2M§9\„GÛ‹ñ¯¢‡®¢¡žc½Î)E«/®ÃüorÎ’_µ¡-`p ÿ}ãoÛäà<.®<ý6ì~EVcq4ÂÛe¾,pG"BmH%Á­(!œSùÂá{Ìä•´²‰Þóí:<ášã¨î)om·?i”£®ºKø¥³ø ú ß"�†D™8Ö°/³am�=”®�‹àÜ#ঠ< ùÞ.E¬-ŠÄÞ�w–‚ €Ÿé²�çû§¾ý°ËK˜ƒœ¶…ý%{êé#ö!˜ÿ:�þ[›C›¨!ÞB  þ‰ý¸ ¹•V^°yϾØï¸L =¬Üü_Â6æã s4F ¶º¶a—ßxÃÖ‰ü?](þðöòÏþy›æÈ!psȨۛ{+:‡@�ï�zy¡Új¯uÏâ—wÿýÇÜô_~¨ "$;_-9$¦¼O,€2ºˆÿÝôµŠLEˆÔE¶”ÚpBW79<€@ &7Ç"„ñfI«BÅ è÷Xûº>eÕZÕ¶Ú,ùÕ¹jOìCgðìq»²yÎÎnŒ VQ,{ÝÜ‚æ2̆ɟÂÓb£×WEµÈÓ­@@ŒË6#Eãzûi™Y»¿±. òºÅÉÞϽ1ô°61iºOrâox^Û':P^l ›žÔæÙø�üçN@@ÚÅÄ7ZC{p¡ SZE{_´o´fÇ0÷ß_ÙÂÇ¿iûJì×­Z� £Ó¶bóÅkœoÀ°Â�ÖÄœ¨�Œ´”Œ¬–üTÛ;HÃOŠ+W°@7CVøƒÞßSÒÈ_Œ·ý¦«q4&í`�gq›Tc}‰DŸà3â³ã¸6B0®ÈÅB«>d �oÜ›Àª¢ƒ@ÃÖm²Ô°I´Á[QFÄLq— Ž”åÿÏÞ›ë–�…y뛿ïÌçŽ}ûöíIRK�„h!À6ƒ+åÄ.‰lb'RbP#°d9&)ÿtПT~ä�S›23±ËddSNRq¥BÊNc¢%õt»ï<�yøæ<Ï»öþÎ9·Ç{{¼b¯sö·×^óz×Z{¿Óz—edF]^o†Z9ø+wïAÀïdbœ»ÝQú–oyúè·­Äq;»ƒ4ß›bð�ï4œqÉÿB}†y€×y¯z@Ì çÛï¢&YŸ}ý vÔ„_ØFòõâÅt‰#ÿæ'µù‰ÏþÄo¿ù-¨J¬ ð��Šð�?ÆU+¼­øøÇ?>øç¿õ+öÒå+ÿwo¾“VWÓÜçj#µ@ô{n°Hz8‘u>ô>À`Ÿ�,ü‘.‡7‚ã'£¡žw=‚‘0–™@P }€–’÷Ë€á°ã½ÙN­Hñp‰â­ôÁÓ¦�>þp<�f@¿ÏQ‚0¡†Î_«‰õ«x÷*Q¯�£ > Ǫ$ô‹':2ù9f#QÜ�+¤¸Ï&ÈiÄÏáâ³ßà2­“ŒË‹ýÓÄy¯´^ ¶·#D5ÿît™´–¾‘M³_½×¦…úÖéQ÷G2y¦³•îïl¤s\'!ö†—Rgt%µ†ìï—Híð^‘8à�Òf¿ÛÔI0YøhñÀ ef”ï* ­e ynÅ\´Ó<æm'ø%šƒ9 ‘í¼ñ.“Ñ»DzGµ}b´iòö;§¶[Ÿøå�¾Ù„̕Эô�颽ô› y» Ú3´»£m…1 ག=Ä`¹¾ï‰-}ú&ÀÜQ0õ@²ïÿ2"*j«~î9°Væç›¨ü?”žxâtZ]á�œÝ>4»0ËÑ�aŸ™@Ìù`´2½œnäseÅšxS»^Î)ïqb�ÇÀ0¯|ß·×7Ò…çŸOWÙû?Žþäï|ö'éM­¼*¬‚ÀŸ"T €?Eƒ]uµ‚ÀÛ�ïû�èw~þ‹ÿŸ]ºxýãÝnDcd¢B®�­’¤sR×~ÜyI )SxDhy.~D1t¢¸‰ ˆ(‘rϾ“°t] óH¶T)'”#­@�[�´ÛÇȰ§hk¼y#59Ïø»ûæ´½{#íݘ¦5šÖ«A;8¤g�ÄÁÈ”“‘þŒR—­q°­‰q¯Ü�C  ZÌXHøc¿#}Hâ/ÝžÇ�t1)Üù£$I&ÓŒ� ‹-¯2 ÒäÀ¿Ãª'ÿés%,Ë»Pá fI†F–òš]†²OŽS9†¤‹õhJiÑÒ•edƒb�HQÛ__O‹üs¤]FÚ¿Š1¿�>GÓ¡î__Kóý‹édZO§dÚ!ýﯥî˜<ȇ.íÃÔgJ„W‰@Ü"ÁPH½�/,5ˆY }F«eúHÜra”4œ (˜’‘:Ã#ÈéLøK{I S½.¿|ç•ïPÛ”ûkgâ�ãûÂÑȧaEµ l7!¼ßZ0aæëëhZì¤Ó0cnAøm�›qŒj=T ,,–šŒVjD‹Àw¯ü–¼f£–êçm†@ž޶ãÌ Ç¢;4#ã}éüÈWÌ-rì¦cKÓôÑ'Jç8—mõHÙÇiq~&9¦ 1ÖÛiͱbòZÏŒû¬ Íìÿ�¹²ýe.«:\ârk1írŠÄ>¸Ã(m߸‘®>û|êol¤ÉåË.óU÷ îw¿rï¼®*G� Ê ð‹_ü‡›‹Ë½Å÷?þž´²:ŸnÜDz×®AˆÏ§Í�u¤~XëŸÁÄOFN äD^3¤MqÉånžÀm$ö#¥ªˆÆe2½GXQZ§PX™�øPýØÔ¯�Mö–Óoüîóé_åjÚêÝŸ Û;»œ7Ì–€h�»†‘4¢[0V=Ýz@F”ƒÅ±a�²Øâʽ1ä™ã#œKs|KŸ^gIéʘá/A*ËÄd.óf €R~-ú»î¢)iÜdMJÐûž°Ñêr”Ë'G8ûñ¼Š+{|xFàç}Ã?îörL_à¯Rì[•[› üR AÆY~;º"ø^qwBŠë�œn}°?0A¯ì´ÒÕú™tmá#éOÒGÒï¬�L¸³’nÔçӤ騳/|ÐJ­‘Ç&öÒ�*w9zqBÙ]·`ȱro?bFËìbÙXǸú�‹•ÆÝyÁJqrÆáÓ}4Û¶Y‹CÜû±5îøê4}êo|kšŸ›Â —)olÖ°[iܪ—5õ�oL7×—sˆ4¬ýC±p›+×"9˜wºòîz­ó>[6•ùî�4¾SÔ?ísÌgëýAºúÌséů<•¶¯±ígÚzøsŸûôù(°ú© PAà® Kþ®rV™*T¨ ðø‘OþäÒ?þg¿0½ðÂ,ŸMËKÇÓîÞfÚØà|î6Ö†B½¤@ªï&‘ÑÖ@4%Èʈ¡zj�bäü‹þä4 â"C"Ä�Qvßk6hRö2²¤Ÿpò6ÐFè�®¦çêéϼïXººÝO¿e›c‘© 6äq…MÎ!·Y‘_(ÛJûnor´¥ú¹{ˆúå¡uL_É9¯æ^9g&™Ì[¼¯VÎ7z\ 'ï¢Ý®±:¢ë†ž�±¥?¯83Ô¡EäÃâ<ø@æYgu¬íË!Il#qîAxÌcÑ©ÕO«HúW:5 úAèCì{Ý\m7-c�niÿ êý«0!ü[<{ü_“2êr JÆìëwoP ź–+` ZY4½¸ôåhøKŸ—€Ÿjí}éû˰wâžû“m”-Œ}ú‡! Ë2Ö´\e`ØÓ6êÜ l·èOn¦•é ì,´ØÐ%Y"Æjh8žd„Ø÷�[‡@‹í†Uî„€k4��_Ì£³ßp¾ƒ|cGcìí°dÚ¬½��M¶å-¥ïùîoâè¿”æ:0å`¤ñÉ„9À¬’Qä·s6Q(&ªÈo;«AÀ»ù£ë+¯kÚÉ·UÛ@~³µ]a ¶«ãpëæ­tíÅ iɯÝ|ôsOVÄ¿ãP¹ oà�@¯Ê[A ‚ÀkB`ûÑa{ôµ›ƒv§•~ä,j†˜ùÚÇwËÔ(ñº‘Ñ�xžá�çN¡œOÔ5‡ÕûFbÖÀI}.]ë¢+IS$’h™ Ul6÷Ò‡9•¶@twÒSW×Ò~ã’®ÑQÀ“j1Y6KHCðYÖSÝ+ÜS(QøëëÏ5¤ü0KÓK"À»4ºRÝ8ö’7•øÃ€*tKÏÑÝåmˆíÍ·!Ú°8¿ZßD­ÿV:Õ¸‰”'�ìöaì¥Õy4 Péo ·‘0o„zÿÖÿ•ø7¦Xõokǃ: F\žO?ÁX§þlu›÷‡VÁ+wà=Xƒøïp2KÏa)e†Ë*’ÿ•ÚBÚ˜vÒÎÈ#RÝ.ë€-uÞÛ¾I@hT°¿ À¿9YÊuhiñ5dl8 ƒ –€D<ãÖ„7B}¾‰m×Ëp€­‡åFúæo>›>üD›2Z0ç‰Ä±ÄŠ;e”¯‡Äs(ïEð]ßlóT»2öh]<«¹Oj Mi_+m^»ž.!ý¿qåJªõû¿ûSŸýìsw]i•±‚@�*À •§‚@�·Ÿù¶Ï ¿øOþ‰«WoüAk_§OO ó+H&Üëç¾�ÜãË%‰vžÅ9T#ÔƒS‹îHžoCâ'?”á&@PQš 3Il¸ñ#˜WQ�¬§oôDÚÙeìÞ¥ôìÄGg1í ÁŒ(Û#ˆê Ë56ÂZ׸îyÚh@ðT{`�eåîIHDHÚç%áoLwˆoumdÆe)±Ä„’_×^Na,ûÀÇ»…¬ ©Lƒ‹«B?ÏéKÍq:±0‚ \OÇk7Ò‰ÚÕtbz9ü«ìë�`l Û5¬þ×QKnNö�öïÁ4@Ef[ƒµÙ‚8µF�øiä3Œ}Òï¡-ÕÏs³m\åî™ÉÓFÛi±_ãdì,œjΧӭ¥´ÙŸÃ &�µN;+ Urç„ädfäYqGÕV‰ß$¸rEáYqš…Ä¡¢� ¶41d;².¡ðGlH{üàIßþ§Cå_Âßo¬ ž|åÅdXncõ¾ç§;ý=´Pã#lk-¸XãŶ½L�6y§Œ·wÓ¥çžO1ü×ÓR§ó£wZk•¾‚@�—‡@Á÷{ùÈ*´‚@� o¾ôë_¾ú×þú÷ÛÜÚú3\Y^ÍÄ={¥È%' ²@ „#“&Ï/m‹á‘ýñ\`,%ÊQÆÌ’áñ¨°DÊ£†dd …ÕùÅ4èOÒµµaÚé#ùªwIÈ>WdÏ O&æ±Ir¢¢Zl¨ÆFÁÕO�{ ¬ŠX'åêÈë(kµdùbî�:—ÌÓÇ¿¶õaˆqÚF›£ûæëHô»qTß™öVû¯¥s­‹é±…kéÑö‹é}ÝK鑿Åô`íb:3¹˜Ž /§Åá•°èß]ç8¯õ´q2�q¿^ÝãA‘4+qf N° BãX¿š{þUvíaPó-÷ìßù¶J>Ö´í“T©îf ²â4¨a4u2—ö½† ¨cs<ƒ> Û }¼’mj`ˆ>–oØw¾?êZàŽ©§:¸ ù6±nâŠñql�DtÓ±î0fÛé}�Kßõ]�¥Îñ%ëï`ñŸ1$]Ɉ¢øi¸…Gæ¹EséÊ{é�´†ð÷ró¢+ˆ¿ùòïd¨E4VS�ãþÚð•êìû¿øô³éú /¤½µõ4ר÷?ÿ䓟IUU@� w�ŠpW`«2U¨ p§ø�_ÿÍÿùû¾ï¯|z8-µÛ�4×ëaÄ%”V`!Í1à*шÃÈÇA½E‚@"ÊüŠÉ�pSy5NìéðŽéОáæVÚºz==÷•¯ ö?à]3Ýú©Oz!}á 9Cõ[A ‚À†€_ÖÊU¨ PAàm�ÀýÀ“ç~õŸþâôâ‹WQïmrÞ0;ý‚ *)¨å éÈHC 2„iH�„“ò¡Ÿ JÍg¸Îœ‘ôMD¹>ûXÜ-ƒ£ÜVkšúHDFûWÒCÇNßùMÇÒØð•v@€´1Ë$‘@FÔÿµ¸m•« pOCÀ• ®$²a½¼ž²”Nâ_…q•üñ?Ùàè¸]®ít_o?Ýß݂ȿœN¤+“»Š¿µÔæø¾¹ûÌY€˜óŠõŠØãó‹s Cý­©�8±Ã5Y,丱eø'S"/7� pZ­‰úÊÝ5ЂàcL!Ø`˜‡p²},�mo¦µá^zC©» Ä>áCíhs¡!Gc©‰cãò÷®›Pe|C(¾›~“`�1JùbŒ² ñhé<øÀbú¶ïx4=ô áŽDu³“*ð'�Ÿ‰ï¹A®G¿Ÿ/Gü¿ò˜¿Êz¼ýcI�¦ö’é牞 4Ýï§�ËWÓågŸK£�­ÿsi2üËŸùÌgvÓ§?�VýV¨ ð¦@ b¼)`¬ © PAàõB ]Ÿo®ßÚÝZÚLgή€ˆiH„pb=Ђ’$¡d�b³´½@$üsx!…(òž‘2v¡¿H[Ü¢©·°&¾³µ‘–Ø–07×IëÛ0%ÖÓãçîÇÖbzú…§a:Cê?ÊÔI#,dKÕ&(+fd«*WAà…@pÃ$ "Ành�›pW¤Œ§yÁ Lp�ºö‹�¯§sáw •ÿî €ÍtýjZ_J‹£+ÕµNQHëYÇcÏ�oÁDcK û’k­Ä;êËH #Ž4“àÀÐ )¤õÒ,€S=íÉûÕ  1®9/ X¢4«ÛðÊÝ |Ï$¥Õ`;@¦Îrm=�lxm¦ÅÉVÚÀ&öÒ~à ë…Äjˆdc�ñ¾“J«´o"\ó˜d5¾MÁ”f,ëaEÍšî4ííÞL�=öDúÖ'�¬£$ÐßÛO'N,¥ííM˜0âʵÏ<8Lük�_#‚Žúb5z×w8.‚nûÉér`é÷^ú-#·Þ³vÚTÞf^�hßÖõ›éêó/üë¿÷ùŸü‹G2ÜVCõXA ‚ÀÝC àõÝ}UÎ *Ü >þñ��»­…ž{öÅtåò�Ô‚P>¸·‹Eo¤ÛÙÞGúB�^^u�þÒjª÷5ï\Z¬éAø¥VDh! ЃàÊVðR½•_ˆ‡Ò¡Hêbìoò´ mÑìAàOÖRgübúð#)ýçé±t¼s¤éjj´±"Lì,"©PRúZHÐ�@¦J[Aà타ÈwlÏÎmC ¾‹Us'ªç²¾èçב·ÆÛédg˜>tzš¾åøåô¡…¯§‡kœNîÿQZÞz*-n½�VöÖÓü`Ÿ#þ8fŒòz¬Õ@;s� ½Q¶wP3ß�©æºä4�:*åÍ9®yül ‚Ù6f3G…ÀhC.ˆÑÍØ Àú "$與ZâíÜ7HMBÞ¥ÔÿëØZX\ð½Ñ׿‘ºhB�ln¦sK“tjŽc[2b˜ ¼_'¼‡ÕQ=„ß ¹çº1I½¹&ë» |‡ê|—†{0¦±ÝÐmÏ£ö¿ÏÞÿµô�ßù�ô-ß²Fÿzðßæºí4ê×8þo…1u=e'/PœW|F!þ “à·ÂŒÕ@IDATBç1ŸÙÉ ö‘¡‡®"úÐmŒ�Ÿáhȃpp æMlóÁ/£Q ¶ŸÌqäßxw7}õßÿazîOþ$M»ÿ IrÅf¬\� o*Vÿ›ZlUX� ^¿ök¿¶õ?ø—¶w¶>VÇ ^§ÓA±äs¯°Õá×e9C)m(ŸrxFP :¼ Åg4¹Ä@^ˆ0îp¼AÔÕˆ3®µ*R2<1PuXίsD æÉXöÒå�ýtcs�æ–Nbùœã×�ŽÍa%[‰dQn4·ú© p�@€Õ’u÷ÿ�!ê&uN74Ùã/+À0-î� ÀëØÀèp<ßrÚ ñGÚWÒ£�§Ò™ôl:ÎÞþc¨ü/³¿!ö÷kÛCJ"4 �ÒÀ6¦¨›O±î�ÕMÖvHb=¦­ÅÚÃ�›:[[J Mg¼wn2ú$RfiÌY¹× á¯?Æ¿>ÛÎ4Æ ŒÎI¦èbÚœ,§-˜10 vx—Žþml/ ÁAž8 2Â^o­Uº7 À}ãµ­LrÆl<ÐàGú1ž£ÁKe;}ëGJïì8Fÿ8–“=ÿR÷Ú𨳦cá�–ÿpÞËËõU†™ýym–ÇšÍoo‘=ÊÈ?9�~‰�ùý®{— ?†©8F»§Í7wÊÿE¾÷Óݽtþ©¯¦Í«WÓ\­þßýÝþ¡™«Ÿ ÞT[Þ°V…V¨ ðZøÄöý?û‹_üG?|áü•ï¬slÑÉÓ'ÒpÜOc¤MŒN B¦Øaå8$P\ #3@Z_#ðQ±’à&à)𑸙fÖ0ˆô‡§P&CÐõÄ !þ‡ ¸Û”³ŸZ9ž:ß|*]Úš¤[p‹c±¶Àd�þÓ®†’Q«™•Wy*ÜKPÖ¯ ±sXb_uzÈÿ ì\DÄ‚b–³¨jÌù.„ûJ«Ï1qìûo¬¥û¦7Òé´–æ ì;X!çÐ1¤õ÷âä jJ%Ô¹4¢Ùbû@ Iàt„š2AM¥üù³%ùÊ’eùÔZ ,·2˜}¬Yå�.¾zE|¿»u¾½€; uÜeÀ8Æm¶,@ö/¥ëéL÷Fº1œOû+©3ì1hh©‘Áh9žÕÛïnaÿÆóÅ0VM˜s#¿G0ñz­NÚß]ÃßOgÏ.§�|äLºïLJ ‹•=`j«qãÍ¥R]v>9^ÃÝÑzã�ÃA£‚AüS´„¿a^5.¾'$þ¯>>]|öÙ4åè¿•vï_¾FKªè Þ üW®‚@� ï~ä“?þ]{;Ã�+—n¤½ˆƒF"»ƒa°P÷1 êÁWW¦$ð‹¬À�»ˆÆíw ›02ârØÛSâïb%aqÇ/b[‡ ОúNº¯»Ÿ¾çñÓé;Þ{,µv/³=`-�\é¦þ>L‚Pƒ$Oå*ÜcpîÊðÒÉ^+�ØË¬¶¼ž\Z CÎ#ú޵ahø�=âÇa”C[f eþy$û-ŒÂÕ0¨9Æ8ù�Ó5l›°u`ì^bÖ§ôF uß6Ò¿&çz#þ#„í>jÜp54 XãÏÄÁ0˜rÄÙ„59†É0òj¦£Ì!åÉ´¨ÜÝC@#ª2SJŒïXtARoº…¦ÇµtšNµ.§Õúzb£TêòNnrÕ!x¢ž¾÷‰3郧 ^ö/‚Q!eiJ8‘·rîA(A”� *ø¥ÀŒ bëJÆZ0 0á‡dqµ…±ÆFZ™¬£î?âH¿’ŽðbY6\K0ÆÍa6ÜG\î®;' .sò�Ú]‹y»€kIæ[n“§ Ô`ÈŒ‹#ΈóN™vjë„��{îï–& v�ùÉÈ €ï=KˆÈ¥ú Æù˜=Ó}í­t‚±œç½Ûøu7Y1@ßÉÑtì3$éMÖÝd¼™öö8…ãd=}ä£çÒã�§;éÐva°­»Ávn¬¹ÜöbŸ ½t‡ÃsÈëýõ ¬c?Ò}÷û‡Ú?L?‰ÿö@šØœ�o"m_¹–.?ólÚ¹q3Nè6êÿàï~ö³W¢ˆê§‚@�· 3 ·¬†ªà *¼&£zïÊ¥k{-~øÑsX/n¤½þyÞ7(2‘÷ J$( ‹)âðŠÔÑ‘r.mn5}míRê4mõ%Z j*WAà^ƒ€’8 »ZO±€5çjpU•ëKÂ[fA·1L‹�>ÿÍ47¾¾ ’¿�T„†Ú3”HF˜k”>�9,5ÊÌg~#ùgJˆ¨‡Ç ëVð/À•H›\²®Ë çƒ×¬?¶ž ÖLÃØÊÊÝ ¾€ÏwdÞf!dQÉŽ±ÞC2»†ÇÓ±f/�êœK7Ö­Q+�ÐК J¼œ  ŠñnQå¹k8Z{;},ù7R»UK»;ëØÎÙOxü¡ô¡£ö¿ CÎñ…©æ uû&ë•õãg˱bö�ŒÖkÌ sø¹|´˜––C1 ISÇ÷“uûðY—²æÂ¾FyŽnщþ£„¿~L¹üv¾¦3íQßXæW¶€öë×°~? wöÒå§¾žÖ¯\e:aw§%`ø×�–P=U¨ ðVA ]½U�­Ê­ PAàŽ ð¥_ÿÒÕ�ý•�õ¶67¾{aq1ÍÏÏîØG þdL$мA´H¸DT?󋺘’€³ÁÆ‹¤P6&ýU¢? æ¡+ ëäX,¢BÙêõÒʉãioØOÏ<{¢f�œaF=’&ù*Ö1z,WT�_š$äƒ)ú ?_GÂÈSæÍ9|*ê(ââVýT¸”ó5[úÇ 7kÄ£ÞT½o@ ;×|š"9ÔõØ—¢¹‡4¸ŸVêÛXð¿•æÑŒisœ_ƒÅëGf]ï”Å¢T»À™š·xÚ@âT�¬Â¯¡À:‡j”,oñÉö>¤ÿ.È} ./aÖe¥F{)Ý",ÒEj×›«,ßõ»¶Ë² µ cÜyÎ+ÊÊŒ5¾X¯³Òã|×äõ�¤º{g^ßq·<Ù8üPésÛËŒj]HÐYˆ9Ëþ:f·_¹_D„³ßå{%r:å8 !Žö (nÂ{n�àì-Oû£¹´¹×JÛ}TÊ�÷ˆcZÇtþ”0гQz>›^¦ªÐ7.·ÞOÀІØê{×ÍF‹.ÜiOòÜËsÙÜÊÉð ¶W¬É²\à' Y•Jõ]«sˆfNÝn¥Ï-¥?÷çÆâNÕd Ý’3áÛ%>Û6'ðÉë(æŒóŽÚ ŽGcË*£>SÎ4¥?â|:ºrœŠe2ë4P(#±éi?e+Àpk‡]téë¿ûÿ¦…Fó_¡]ôÓ�þðÉÏVªÿ3èVž o5|ÓT®‚@� ï üó/ýæÿöŸþÕ¿úƒÛ[ÛÇWWO¤¹¹ù´Ï1A5Ì×ÐgÜÅHbŽæÃÚña!,QY �ÐÜÔDiú4↧�É>vwXv{œyN}ÄOÑBM$ÖMì‰Ä)ÔãK!H+êö(´ö êj$Ðw]&Ç2ñå;!Ö*õçµ&Ñ• ílƒÀõ*3ñÜáO~ÿ¸ž3!^¾)ʵ}4¼lGÉìð™=Õeœ"�·õñn‹BªÅcÛ¢ú9iÁwŠm¤bÇ7¬þá¨]ëþh3Õ¸×w¥Ån¹h¡iç¶SŠ'ŸŒx§�ذS;–0‘š&Jmy?†yG‡”qgty_ AN / YůÁPƒƒñ¢½ùÈUágº{ÕÙòÅân?ÊÞ”qåݸ£Î÷y˜Ê|Îù˜{ñ®ŒÙÎÎ>ßÀŽÉm#5߃�ß蟒tÖÇ[4:¬(4qx`!ýÙ?ûþô¾÷1ò(·ŽÍ†L÷à7`Ö4åÉØ2 ‹‹êT¦Éß[áÉ¿L�°àÏ=3òXô#ŸÁ r=1 ¼´ÛÃú›p¹ÆG,»¾¶øf7œçûûižý&ƒË×Ò×ç÷Rg0üßÿÖ�ýØ_úW_þ—ô[¿õ[ûG!T=U¨ ðVB@¬´r*Tx×@à“ŸüÑÇþñ?ùåýçž9ßyìñ÷�x6@~<°žzsØ¢í§mŽ jaáhR¡ ¤ //"øŠÄË�ØŽ4âÔ ˜!Ÿ¦16ÿs!3™ecq\ôLdDÊNšg¿å{WÆiÿ±•ti¿•þýÅ[éÖæVê-,§. ‹$d}Ôd[JÆÊzƒà·Xk²v~£¾Üf{UFŒ¾—S˜K¬¼Žv�¨òU¸C(a”üpF5&2ÙPë–PgbJ4Ê|ò|q×�G^Ö!¨Çh»l‚Ü_žÌ¥ðS�™ç¬E“öx'u‘Fv)§�ä±nFïë@ ƒüd§Fæ; KëäSâTåw~+MŽ�¤3 $n¤·k>GÞÈÌÚ&v ¢? wB„z¶¹FÇ$X%6‚Á&ó�YÆAèð@Å2>Š6gqÂ"ìPª+Q&›vâ@ßÙExsºn wç| u‡Êò]�üXíaá¹}ösÖž2ØÁüÎÈez¥Åeb.W`߬Ë2%LE 9Õ¦ËÜ„¦—Òqt@N6WÒÕæ|º:\f>tÒˆ¬ÁÑšª}¡Í‚WØ)õO±¥Ê­\ÿ<;ÆÅÌ¿!\Àœž8^1`/7XeÜ¡|òøË q ¯(ƒ1ðïø‰Õ´½½Á# ×‚�î@øï0—'iei.íl\N=x<}øÃ§sP EÀŽ‘=V*ßËØ6cÉJ ŒµøÌ�w.ë¹Ý¹N#¸Hw4>欌\š)ËLyö-1_úœ¨3EÍ¡ÑJ;—®¦K¨þ7v9ý£ßÿÄѲ«§ Þ.T €· ÒU=*¼nüà÷ª÷ ¿òs“¹ —ÒÉÓ'@hÚa4¨É±bî 9ªªÛ µü(ô%8L‰„UúHšŒìdä×,â`Gœi †�Œ"EœEXU™!­C,ÍÏwÓû^N©J¯y-ý»§·Ò&Dÿ Z¿ÙUŽš† ÅM*µ‚€¢ö¬ é¢t5ÊÆ(Òšì@A¼2høŽ4PÙ m‘³]Ù½¤ãeDu¯ ðªÈóL"ÌU!‘.5ǬcÚÉSŠžçŸ’cµYÚÈûÚi—m1kÓy¹ßNºgb..bpËñcˆÅ1Èþ-‚.°þ�p+ϬiÌ/R®i0¤ƒˆ2ʨQ™¶“«Žž¯Vê£Z &‚Ïc�¶S�Œ€ {ú ¥ÍX¦ÇZ‹5Úñ¨ºñnê�`ÈM6±S€†Rr¡Tåwкi§ýšç�O-èо±Ï´$A_n¯½çUÀ£P‘!âÚ-Ö/Dòaˆ‡×í¢¿”'aõºä —dž*#¬hW¼L�Ún�TlaL�L¨Ø3JÙlÍ¢Çø–—°¶ÆHiB"³[Ô ˆLÃ<‘!k†ÌqúÃJc/cŒW7ÒÖ`˜¶Ç]Æ- Û€««-ãGƬš Þù�ÆhQÉøá=väÝV†ßKwG àÅäxµv à"í‘dÀ*æ4±Ò¯äñŠÌeóŒ¦û©ÝA†é¦*¿0k7´›Á>ú½m,þ/¥Ç?ø`úð·,ľ†„õË7Çý8Q'3IÂæ÷û‘QÞó“ùrDy/Ã_énjt "Úïšÿ`¶ãwü£Þ)ì¸U„µ¶µv#½øÌÓéÚUŽÓ�N·~êóŸ¿þJåWá*¼µÈ_±·¶Žªô *Ü)¦'WOÏ¿øÂ…�¹ù^:~òͧ÷T'l¤n»1’Bô F`Óeu©‰ ¼âj‡£E³#B¦žå‰«J ²¯eìfKI†Ì†û 3¨DÓŽ'ÎÁœ@¶UÛN¿w~;½°{=�;§S«» Q#‚N�J+3²O…cõ.q-Ô¦��'ÚV64Rg$ÝÜ%c @&6¿$DYnQ@u« pˆ¹Å\ -óIÆW&˜­®­L×1ƒÕ€ Ÿ`÷AÍS¯Ó?�6{Ëé¾¥v:Öæ˜8ˆîîx+u&h  PcÛ@0ÁLï3,æ,÷!‹q�=̉F׊u@\�P_—Ù ¶òýØg>âTŽÐJ  %#`ÄBé?´t{aÅøÀ@ð¥ÑX“p´'�áÏ}3KV-7-í&_Õç>hlÑíy>ÈðT÷‚w jy,4vÓ±ÆVºo¼žn¡g¾Ã‘�ãÉ1¨@Æ ÕíX^¶ÏíYúl¬Ò6 _Ÿ2,󃽻—Ýkµ?:LËûA_Ó°Ÿ SXÇÜ Éð½>ƲÿVZÀN§×IC´Yû®=êV'Œæ}×÷<žy¸ž—ò�Êk²E �{¾�hͱ¶bîÆ/ÅÒ ¯œú í%Ñ_ÞMñzœeëì‹§|€§°øÏ¼ôû6îï¦ÕN�S}†é+_y*];¦9 »4ý¥È\ýT¨ ðŽ@ b¼#`¯*­ PAൠð±�}l÷—ÿÇŸÿ΋.ÿ[ñŒ¥•ÅÀu`0J8v÷wØ ôPôýÀe´&“1Ù¨h ŽrÄ×K¿)ÿÙIüø`|„#÷lRX•Ò÷C6[*H2†A Ô—WÚýôø HŒ,b#Å%£ëœ�Þâ æ¥¬" íž×¬I Ò—å %š¯ºñ¬ ¹e4ÂSdÂ(ˆ#üa ¸[Jh*€(V®‚À�BÀU’ç’ÈÌLÊ3QšÒ5[lŒ6¶±Î>q™_£¡Ä÷1TðÒeæö©ýf:¹Àé�Ñ[vRâ» áÍÁqä†ažª Sw-&`—½ÉjL¨Ä�¡wˆÔ!Œ†1u !üÇ5TͽÃ� �Î 3ßµ@8¦£†–À”5äÙô˜«i-=€]Žû‘ò×Zô‹r»žT€¥tj…ù¦�òñq]ù¦Èœ‰Tü¬cYþ4xdI'k­™APSÿD¢—¿»qÖ+á-¡WÔ%øó² ³�áÁŸ5Üß%Epfää2•ÏÞþn$ÀJùáò„&er—Uâoß½ÌÒdžº5ön§ lŸÜLÛh8m·0ŠÚf/ÿ°�nMçPñn£ýo¤x¿ù¢ž2Öµ°±€_æp•@´½q~}0T¬ÇöÜ«îè·@êˆ~ûv8ìPtë<>HbZÆÍo’ûÛÜövwàÛôS;X¿ ú§OžCíÿ1$ÿ0‘9ˆÅ4?S©Ñô;•Û$1ÒÆ%ü¶¤˜Û±='š’zÿN³×rÿ ÆÐ9éŒñ›éZp¦bN’¸iêa3¢¶·Ÿú[7Óõóϧµ Ót¿ŸZ‹ó©1ÿÜkÕQÅW¨ ðÖA b¼u°­J® PAà BàS?ðcÿ×ÏüÂÏüýþpð·ßÿ�ÇÒ†Ç4%6VáRƒÍ½�ƒtr[}³8Â3š"fs€”qðq¦Èø ¤þàèi„¤pˆÆAH^Ø[©„¥Ý„蘬Á覜åØÂÞ™Ô˜ÛNÿæ©[éâ&Z]·.ÌS›Ä“ª¾êØLJéË{wm¿Ÿuæ0ïeõ�™�LC„„ª°-“è¹�XST®‚À�C€©$ºîºñ¯¼£Š˜  bqL÷ÈOÙƒ<±G¹#pÝ´�ýÆ –^X¦Þeh¼ôHÛ«÷@þ!áYŸaiSƒFÏB âPRsß-Ä@³ Ñ­3Cˆì¡†ì]rÉ€ÉF˜LˆÌ c=@$u`0¸:N*`»A›SN´æÓZ{>m6!LÙ¢sš<«lÍé@ÀN0kcƒM ‹µè»Ä.5I´Ñý>®ÙLزê‰+•žÖ¨%Ü�+K¶¬ƒ2ô!÷\zÔK>§�÷c"<2o)tv”¸¦?% røþˆw ï|EÑ*ÑÈ,ÉLýùÏä¼Qá¤9Œ=.ޝ§“À`A:�çD€í%Æn9­‡=€¬žÛžû†¾EÔ{þ©ÏЈWêMßîm#ò2](ûe¼þò~4©óPÆHNcœie0å­&5æbF244ߺ½´Õß`«Ë8=òȉô­9•¾ù›SÂ6­Ã0n!ùÍ ÆÑïE‹msÂ8ÿÞM—Ó¸õ#šåw¤HCl¸HW>¼ÊÝâ4¢ëxŽé‹³Í¦P"EÊ�“qÄ:å»ùüS_K/>ý4Ûr8Md®—úû»7>ÿ™Ïý!I+WA ‚À;�Šð¾ª¶‚@�×�ŸøÑŸø/~î‹?ÿ½—/]yß}gN'·xªQ#öÑ‹À”åè9t‰I<r+Z"Š%ÒêB”)uà08 Œ{NÈ ¡Ô(;ˆXêè7ŽØ`993?û\¥éE¨š¨ÂGàC÷ϱ-`SYÃô{Ïl§7®q|Ö©Ô¯qŒ–{ Á¦ Ù‘ÒÑ>%šJÅ”óK ™"P*ˆ›Ò…”Ÿ4àXç±…³Æ—‰ª{�»€@H{EÒ™Pγ¸ÇâP%™ùÆœõØw GåÊ~SQNº)Vö×Ñh wÙ�ééc  ñßÄÚ7z0Ѫ B¨Çù‹7$ßÔ óÀeªÕpË' eÑø¹¦@ž’¡ª´a®Iu’¡^§™¢æ?iÀÐÆ„™óÛ#!�¯1–.ÚÌïªLˆÛGÙŒOâÖÁ_Q¦ñRt¤ÝÅy£±½"Ý`|¨¿ÉæŒöbºº¿Ìñ€ÇÒ>ubÒ Á53((@FƒzÕÐY¦=š�jBùîgÏRçYK#í½õ#\£ƒE³Ë¾¨ó9wÃJDÃ<šÌC´_ò�ò›ÆÄÞL¯ã ­Oaxà�¥ôßñžôÞ÷rf7 ¡º› ÆM5¿ Á®2‹Ç,¦Fl(ë³%~¿b$Оa¬l¡9xÈ{�é•|t-ô†Šï¬:3þÙg{켬o¤]ŒþÝ:á×k›;ÿm§Û¸D”Ä¿ûU*WA ‚À;�Šð¿ªº‚@�×�OòÇûG¿ò³»�z³÷À¹ûAlšÞ Ë�Áe€�d:#!ú3ú%Y£¯tø ü,‡ú›‰sÕ(E‚”^ˆ´îìî¢Êߊ­Z,Ÿ€O ˆFX4ž ‘œ"Q¬C|ÔÙû2a�Ïú¬£.å)³žh8޽ÆáW]œtn ~§|)a4�žm.c.ŽÒlÀv£¬&Ð756Æ�5TÓ×8­`­½’öÚ'Ò^ýR:5z1­Œ¯¤æp�ü¨"sŒš„q0>ì� V¢Z9ŒÊ€ �W!i§o2ð•LÈütG¿Ñ'Ê.«Í+Ý10„ú¸g-!Ÿt9eŽ÷ æc¼° kî|͘3 k/˜+ ¨a>ëõݦ§i>‹Eµø ±ÇZ›²)Ñ^ÝÉzZâÝØªÃžiK'y¯­³ébƒwÛ¶[#¨ß²¢íµ’@ˆõFÙ²|çå*¹}ƒ¹€Äo�œ ”UVç²5NÄíÍŠ˜œç¢r^ós±\cžÇÂbõ8Gx�ìܸ™.|õk¿úäßøÄ‘ôÕŠ‹2«Ÿ Þ>(ê\� Þõøòo|ù¿ù?~û·ÿë9ŽÚ[]YÅÀ~ ´ zñ7x68{Œ‘lÈ È(tî–˜G Ÿ <Åu äÛûÁ^Ñšü�%û�ÑO#m´\Ózƒ€ÜÛ]÷DS6ÈN“=Åmâ½V0ÜôÈÙûÓ�«WÒuãGŠ £L³¦ÊóÔýÏ0U‘1ªUCÚ’VâÆ”çU'ÎÆØfó—­WíYyhy†9Q•« pGˆu“ªÔ>) ôA¸®‘èîô8÷žtwñ;ë¸ÇldÎKDc|¯ÅþûÒÊú‚|*ñ)àžþ„á îøQï`0nÁ£Á¿ñrcTþI;"L©¿e—Œ28>+Ñ�J49 H½ÓnÖ�Ûl¹ÛÆXùÖ»lOà¸Âq'Ýìs–:»×G�Ò!‡é Jr›µÕR:ÝÜc yf5ÓîØLM|�ÎrF@0ù´O§È� ]ŠS$¼=2 ñöò ÷]qXÂÇÊ\äŽnÂä“N¶Ÿõ¨É ”�fPD¼ï©ò"hT¼” 'ö泩šbÚïö�°/ïJ�CÌË=ÞÁÄ ›ï1BòæqËšÔ �ò]Ce0T|òüx˜¯h]Á¤¤Ž:õ Æ´½u" šËiFË6Äÿ.íQl ¦§ïÁÜkãŸÈÌ�Z4¤ÉȧõHE÷²s½œ£¿|7Êñ—a5žÁ¸*¾!2É΀o3týaÑ@Ø7a¼ÍõjicýB:s_7=ñ‘ÓG?z:=ô°Gá2¤µ]~v`” œ,í¯{ LÆ©�æš-sÈ™¸„Å �wÖ'sÐ1u<ŒóºÝ9ã‹\E”ÏÙYn�~llmñíÂÎFhá Ò"Ì Eê_¿t1ýñ¿ý�ÔÞžü¥ñ/þ§í2_u¯ PAàݱËÊU¨ PAà]©é¯ü/¿²péÂå톄xø�´Ýßb?¡ÖŽ%Ê;¢3™xÎH�Ï"7þft&w4#á�  dœD‹˜�I%B2Ö¹xViT Òü=â˜#Õ—E¦’Ú(ÂjáøÔ<3Ô2ÿÚw¿'ýþÓ×ÓÿóÕkéêîzõNaÑùxÚƒøÙ‡™_˜Oô8‡0 ýLjŽ'_~òÉO^½Ãb«ä*¼ (¿xoCUU*TxcøÒ¯~iø½ûÞßÚÝÞýñå•åTçRñ¬&D³ˆ–ˆ•RQ¯LøgÚgŸ�.Šá¨R„g”ÈT §3ü(J1£…ù89NRCi›ˆ<ÖË•KJ� Éiaül±SK÷¯vÒñî$­t<ج³b/íìíqœ~Ó£�Ð Pª ÎŒ0‡*h;Dÿ#‡#®ý)qµŒ:‹>g‰­õû4“–Ú¤ÊUx½`«®‰»%Û$èÃ1×�ã3Ém¤%&æ=k†t+‹#ñ ú´Œ{˜%ôÃ/áh¸jͨùC6¡=¬ãÅv×ΰ‘¯ c5 ¤ƒPŒµ¡d§r Ê b‚ƒ~5.O ØÇ(á-׆Šúù¤™f6”ÂÐ ’ÞpBó8w�ícJß'u44ˆ³À¾ØN¥ÿ¿ª¿‡VT±ôqNSk .ì¤Åƒ0¼ÇƒM¾ý* @ Œ8²„ó½T‡‘àÎùÚmê&|/OI¨Ÿ�äKµKK=-A.ñÎ�žNÐhØÏÑ—%ÆjŽ6²)‰lh)PfÂ(c�òSø)S-&ÊiàZ�¤´‰wˆïA®™Z¸m¥Z»Œ7Âsœu�a‹‡ðé²½«'k£¥´6î¥-ÆÅ‘UKÃ9¥•x€§ „-™X-´D>ód@å^ü (ÑpgCéüùûC?ÑÀn2CÆŒñfñHŸqh!…okÌvº›†ƒ›06ÓéÓõôÈ#séÏÿù‡Óƒ6Òñìù‡9à>ÿ†LÞZgpÁÉ<ŸðǼR·#¯€r>FËœŸ67™85;îÖ¹æ¦|£æ`l„¦ÌðE4Ùúëé…?ùjºùü é¿úÔ?þ…/|án«¨òU¨ ðBÀwpå*T¨ pÏ@àË_úò¥O|âissó?XXYb>–’!ºÇèÕÝ›/Ò ’S"_2"®>áîÉ‹ŸCîðþx$�.�&ýùY¢[_‡{¤{!2Ñ•,Å%¢bÜG[x-�Xl¦N-§ãËó– ÏDž¢FÛ…òaž 9. Á˜½œ-Žš›ŸÇÈ“ËÈ?¢÷:Ö¢S:YJ@# ú© ðz!ÄW–`kÍÛ+$¿Ì°,±•@V=Ýy– 5^ò"Ò!Š] ÈX÷/«Fwf³j&Re(ÍÖ¾¿A2ß%†¨ }˜¡^,9צsÚ6Xf\î@÷’øÏõM$41¬9€x²�2Ž´#å˹™T¿€_Éð^ƒèG‡�úaXøÎr«tZA³8"vL[i[Ÿm Œ‰j‹i€¡Ñ!W¿yÛ¦~ë þcÀb1Œñí‘Âl£¥2GG0eŠªŽ_—±!áHÍA BLf¸ÇËŽ¶» ?§G¼ï ">B#ÊdFĶ…zgõÿnº9>žn�—Òv<ð1ÖȸÀèt,‡ŒÓˆqr €4h % ïå¸ã½�ƒZ^6¿äÙ�>úm`^º?_2Î'?%΋†ðpËïþêüÓÉ{ûwÒg»é#O<�¾ýÛÏbô�iÈ´WÓLB†·ÇÊTëï�0¶ Ó‡údÐXn�2ýØÅ31T?k¢ñesÕ‰vðͺ[gq®•Úk ˜z‹|‡'Û;éâ×¾ž®?>µ‡“GþÜG>Âù›•« PAàÝ¿•« PA ‚À=�ïÿÄ÷ágégÿÃÖ•«ßsâô‰´¸È_`ù�`  Òx D [Ç-Ð3ÑY‘QјŒͰ£"F$7GŠTe¯¹2c�;åŽÃ’8Xx”È–DýÄ~„”'“/îUÞMǺóéC.¥åÕÒ÷÷Óï?·‘ž¹´–v@ôÇ ùc¤˜=�¹¶1Œ ¤`pÞó^FÎÅУ™hx£-ü¨æá¹mÕo�;…@&dÉ¥d™ÕàüÖeY¥¬,}Åä'Nã˜u‰IîJ£‡HÎUW�ýù2¾Ðfq�¸å–+, ä'“ã”ïÔ-ê(KŽ´P$ù4b)S=‰ó|ÉD0œçX¬gæ¿;éc¨QQ§kX³{Þ±°îš6ÌÁ&Gua\W»®ÃzZHëSÍi/íN—ÓÊ”ã<±p?­]£ÆMÖ,„¹’s›Ä•Œ­`¯»­Šum)Þô§®F�”hÎm.üßQˆ%ÃÀDA-¢¾Œ TÃûÓ.­ ÝVq¼¡�|¼[€ ïˆþt>mÕŽág+Òãæt Ëël#Z'åš›iØ$Gh˜É;cæ¶GÚ†É ŽŠcæ]'̃Bt^0.ynÙÛ HÀZ‡AÅÅéBZ¨o¦ù Mà±ÇHゲ~ÈyóüÒŸç“Z'Ù€‰îaçø á6˃ù`�k¢â7‰:¶bÂožñ6�°_œNœè¦G½/½÷='ÓýgZ‰OZÚÛÙ @·Ã†±ì«Ió€#þæ»0Ù(>·€ñ³~ç½CÇl‰J|ÀY_éÊSò³ã}(²LôºîE�06æÙ»Pc[Þ¥¯?›nÕ·÷þ‡¿óä“Ï¿®bªD*¼#¨ïØ«J+Tx£xò‡Ÿüóÿð‹?{QÊ}q*ªˆ- iP¤K”6ö«rI_–`e´'Hò@Þr‹P¢ŒZ*žg’Ð"°4D¸ö=j)¤h ^`Ö-ößjŒËýœ¨" E¬= tqdRÅ÷œZLÇ–Ž¥3Ëíôìé¹ôGÏ^O×¶vÒÍ­}¤{Ÿ¶p"Mš‹iƒ­;» Ô ËT%â=àWâJ¾rÞÊ)ûì�QmY½ÜY– C ìLÄH°1ï˜÷Lw$~ƒH«=Æ Uö 8"-,ƒ²àÙlÍs×uEaq±äbM5 &÷ÄÀH•ëÌ^JÑÃ%1šÅZàÖT­�8íÈPS SEe;9Ž�½5ªLK(o�Q›ginóŠè0ó·Q㔎z:ËI�Ö<ûصv¯ þÇr´a ÊvOlCPåšrêam_”ðÉ=¸ý—W@8ß9±-éð�rû´G›ªï�ÙC?Œ­ si¿¾€òþ|ÚºI`&Å\ÚCÒ¾ƒVÀ>jã}¶5ì¶1AýÆac€ó�Ý´ÜÚI+Íí´ÒÚLKíMÞ?;œ½¾…Æ5ÔØ”Hä’Xbì9ŠñÓ–€p–¹‘am¬ÐWJŒŸqUDI´ïA7=5‡×)%ÍÕwÑdâÈTàŠ>†)Å÷_Àη•—e9ZÖ#`¼;–^÷ª;Ôþ²;ÑtÿÀCcŽ®˜ÒlÖÃ:bsíýtêä\zø¡3\§ÓÙûëiuhQì ¯AMŽø¢M>Jõc+�k†âCØO Ñ‚ ðs„ߥLäZ9mŒð`ø8†ŽÉsΉù¶Ð8¹ŒÔÿÂS_Kã­­çþËŸøñϽ±’«Ü*¼Õ¨o5„«ò+TxË ð“Ÿ|òÌ/ÿæ? jÙ:~üû$Ù<@]dKÄ+¬`S{ � M¢B:Xý†—a?™äÐ+^UÐ$ñ ô%r �Œ½· Ðèc#NXo®q)–œ‚-‹¨7´Æ¬toÄ~ÿÁõt¢>—Vïk¤÷[Nï;{<}õÒNúÿž~!�¿¶™6·¯§QDš3ÌW–!0*þ´] 쳿¿,n¶¤rî™øw’K ˆH¨H¤I¢ÉPõXÕe¦4�uæ´ä,Eö(ï}RIH*¯‡¨ˆœÎÕPÊ'SyÏÌ8 ŸHñ©6Á¼†ì£t×"—MñnI¥¿Lp$ÜãaMÞ¶›K :}°¡:Ö`ƒMïî}ŸBxM ~Ý2£Ö€§hß4÷¦¨Ó#I�ïBf¡=T¿E_®SÜiºû烽@éW䩇ý4´s@¿'5T·5 ø N;¥+�¶Õ÷ʸÞK7!à÷kK”¤æD¾„>jþ»Ó¥´Cø-´¶1··5™O›Ã.W3maÌpŸ÷ÊLˆ}â}—©+°Ô¤“í>×^º¯ƒÖQc�“ÖÒÂôFšãš¯¡b^ÛDCmÚú页!Qˆß=æ6N£�ºx÷ðLl¼|M fEt¬Øâ´íy ©Ëq„nej±Õ"ÀÏ{ËãR[ÀÌ?1¦ú‹ñÌs¥x°²{ÎÙöò*ïÇåpÞÝÅÇÃïŒ[ÔS`n­‰…Q:{f˜yh9=òð© üQˆï�ŸôVRwn8ŽÒ®•ömºì_�e74Ä44 t­Î¹«ÚÏ¢àÉËׂ L罈óûÄ“s1ÇÇÃÿD‘¬•+/^Hç¿úuˆÿíáÇVÞwÇU*TxÛ!P1Þv�WV¨ ðfB ×oôÖo®�æº=$ð­´Çñ€"BKËKaL/#>Gk!ó¿A�ý=ÍÈ�H’ˆQÄÌ22öˆSRÖ帿ɠÏÉgJ…$ $Ë´�‚q´ŸGy¹=aŒ•ä&ÒÅN£�Ñ?Ôd›ÝÔ¹ÿlºïÄéôþs‹é™‹kék\çoì¤{».48 ‰c>‰;£Ò¶4 pQ‡D;D©OäN— §¸ç€C¿ÑƒÙsÎQJ�xšE—eÍ’ž"AD ›œ®¼M=+ìhðKž^+Ý+µ¥(¨$öÊr_RÜ«å§E_ÊìwrÙ¬·Uw´9GŸ£WWƒ¾=}Ù:©'hµb ʘW»ß^ZÙÔƒ6DCQˆdŸó«ì§[Єy—ðEÍ¥%ûLüK˜#L¼Aü‡ô8Öó¬,ˆ´þ¹ò<=@f‚msF9±/<ž‹°hOW¤3(!ÌÌ5ë”8õî寮E5âhÂG„Êx¨©Š�úôˆ6mqáÕA‡u¸�}+wãÖ:ÇÚm§mjÖ툽Ù�ç–m  ÐÃvÜÜóC-4X›�G�Íí±%)*”%3$.÷ ¿Ó<‘.MϤ­Æ©8qæ‚ûé·‡½´�zÿ6Û61ò·Ã}{‚�½Q⿞v‡õ´‡­‚šõzâ´­‰t¿ƒñ}½‘yÿ14‰Va",‘ûK�[i «ý M¶  0�‘À.§ ¨¶ïÚ¦L¦Ó5;äC›©´Ë@´/Â3)3¥ù?DsI³ž±uŠ�ATÕ¹ÜrÕÊÞ™ 2|(•ºjna °å‡F�uÝîb®Ü˜ÇtjYþqýî  ç‰ÿÅÏ¡"Ò |©7êÍ}Ê0ɳÏ÷±ýu Êh¼Ïø¿ 0‰æ¨úK=tºiÿ¹³)ñ °Ã0c‹JÛìb£i2°¹3oB+¿ömJ»�b+ÁцÑ!ÛÅXøÝ;èÉ�OÉ¿OvÞ\™ª¼Ïb (K+ïÚñ€ý�&›[éÊ3Ϥ�+WÒñ…ù÷~üã?àz]ù*Tx—AàðÚ—5­jN� ^~ñK¿¸Rµ×zôá4·8Ÿöœí ²ï~K‘3 / /�!åKÄ$+pZÂDl$x2!oˆÓ› ±¥ŒoJÚ€¢AØg£c™H˜BEÂ)1j ‚!Uˆ) pk�ç­xsT™êÉC€[;Óôü•�ôÔùé…k»éÒú í åÛ…0è£90l¸'ØÃ¸ &� ñJ Ääº „ ‹ŽÓ„èsFâòÑe†‰‚iZV<‰ö‹8úa2.fð*áæ]8˜B"Ï:^℣ȪeEÊ€ÿíÉbßê¡ìà”E¹9¥°Î{á�r‹Ð<¾³ÒØÜ™ƒ ‰ús@)�ó)—Gû¢ëeɆøsºƒçÛIñ |2BLÍPÂÅ:âù ÿÁss>@1àcÖŸ2¯÷Òo¡8&�„�óW²ívW¦¾½Íyî–©é¿ ÆEÎË"*ò[G@Ä€u­<ç¯ €1Dúò9—áFÇo¬¦bnè7ƾêË­³¬|•!&)à˜Kä™|ÑŽÆe’ø�ÒéÊÄyÞzÊ�ùÖp.ôÍq+u½ÔãȵåÚÅtnþZzßêåôèâåt¦y>-�^Hsƒ+Ê;HÐ!Ì \»0åê¬G�Úøqkî úo—¸ÂˆŸÄ/[ƒF¬udâ±¶§¬Û ×5ÿãOƒ‰ë­ÒŸL¿)]�žJÛXîÛØ³õ'q±-�¶Épÿ¿ C÷þˤ¯jWiÃd¤ã�¾^‡ñYÛ ã£ªúw&2vÒ‰V?Ý7·ŸîŸßN§ç°uÐæ9˜Ëã›iaíbZïb‹#°jsuèW“{CØñþ´k¶Px\#J¼§<¼p‚õÿE,ÜŸ. K_ß{"}½ÿ�ôõÁCéÒh�TÝ™u`S¶U#Žš;�wL” S€2}g–n¶þœ`‡\9ÿŸ7f €ÿèâ')5ï¦Y¹Qo.ÅvC¦˜`³41…ò€*u/SïåV޼�ƒ÷�í ¼DbZS`>�À¼eKF�1iÀìm·Çi C°'N,¦ûî;–Ξ=™N�ê$øÓÌÓ;>3ÔŸ'*,ï6¿ôGsmr´/ßõÆe¸‹)âìwnu�q;êr¿6x›®Gî¢Üj–ý†OösY-7�Ú v9~Û´¼kW¯¦«_ûúäò‹êãþà§ÿÖg>ó…£õUO*¼[!P¼&Þ­Í«ÚUA ‚@�×�ò›¿þmÃÑèwï;{_:ŽaÀ�ý�Œ‰�Έlj±?#G¢9<ƒP‹"‰‰êf‰gIÔq'BÄ*þDˆI¬ßÌ;k† mOP& ¢,( ý)Ä@„›…癟{®'¨ñNP'NìN’ô»ƒfº¹=Ië{õôôÅ�tm§–.¬ Ò•ÍQZGˆY(Ô‡=ò‹|š )¥SÊ['‚wÃjôo8û}Ì�ñ;ÀR¸¡™è'm£fÈ—G+fÀ ¢¼²_½"ÍáéqNeàÆy2ðãIï¤P/7 çÐg+³k¢ÑQº²e\Îa{Ê Ä;CäsCÉ æ^¦+K,¡a|Ž;țӄôïÑvçò¬¶ ñ•ŸŠü–C€OyžäpK»ýYÂÚTâ¢9gÆå3÷\Q9ÌX ‘C9[‘­‡v% ‹ùí/L¹e_ʻNJ9¿ø/ÚBFì ëaêÚ˜ÁßR åRrÈa¿!®J±ùE­únw‡áþ’8êp�•îh;l#å‚i„n+ü[‰£D‡ýÔ›Þ„P¾™˜»‘œ¿™îo^N'¦—Ò±t-­ÔÖÓ Ç.@ÐzÆy)­Vû5â7ÑÖÃçqjõSŒyŽXψó0àÇž~vzϘx»ãFò0à3a½~*�¯½7ÝJÇÓÇn÷'ìñG3J»O~Î�èç‚ɣ½ìšW¯Äo�£÷„ߤ‰†Äæ´¡Ä^i;s“¹Ña Â"%oî¥S�­t¢s#ë ÐZ£Öé¡É­´‚!ºÆzäíÕ¨ícû€«ŽVÁd²Gù¼€y Õ§®‡×�ò·j”Ð~<]¼'=¿ùhzzëlz®6]Æ(àå 0@XÇ.€s¸�¡ÓL�)L 5ƨ©;ê\sÜsz9R1Zñ|à/ÂhKœjÀúÉ €’H/’GÞœvÆŒir´Ü¼º\{Åú+³ÊŸ×ùÈïO~œ“q‘o8”ùÅ€’Ÿ¯F�9Ò™¢âï±}Žó›O«{öÌj:s- ˆ~y ý>L˜Ô ½0ˆÆ)ß2s=¹QE’"Mn‹1æŒ8æu™þö´¹„—þJÌkCÃ2„EÉ8ÎwˆPã Hë×®C®À„-5ÍíítóþàŸï]¹öù›7oþâç>÷¹ÿ襵T!*¼[!�ß<ïÖÖUíª PA ‚À@àüòÏ}zieégxøû'‘š£ž¯€LOÄÈK©¾Œ†Äµ~‘Piï¥sP" ”@ÜAõ¢,ï%%²m´S$‹$øƒ²<ý¦9¸G1„7Ab§HX<ž¬Q_ozž7G”!i܇X5ÓÚnJW7‡éò­Ýtec?][ßMkÛûi½_O7±3Y29s¿®„zÁ¶$H8 bEä.jç&¹} `HÀ@4€ÒŸ‰™vÆÞI`F�‰ön„‰a®‹²†ÜrˆùpÔ3{ÜÚ<úÏ.<öÛºg©g>�³2Tb ŒœeZ‘]ýYêW¤(Ë6Î4Z�ÏisX™?ž 'h`x¾|Ì‘2ÉA�Eù¹,£Ëö—eNQñÎÕFkIQ´7`T†™ÿ †>aD¡N^ÄiaH}[Y„Œ™xûmÞu‡™†ÜŽHSþDõ§ØËî=§ÏõÙÔ\¦Ä‰i´F/₸†ÈãBªœ¥¨9מ۔ýG[dzÃË«lÙë¿çR3I|¨ò( š Æã`&•u@ØÀàªAÌ´†{ib÷ê4>F@IDAT’ÛSËÓ;ÑØH.»·þfZFj¾ÐƲ~c�•±ÆºØH]Þ-ÇaÒu!è5Ä7iô8ŠoMŒöÕ—ÙÿŒJ>†ü8eàÖd1Ý@µÿÖ°“Ö`ðíŒ�ðÃü³ÎGòÖÿ>ÚB}æ"$xHýCâSÁí>Í2øt,ÉpΟ6éíûÂSfÄ„}ø‘Œqõ>ø©Ã� ±PÛJË͵´ #`±½E_×Ò{º;lØJs­L�}Œù­szÀLŽ Ĉ Ì�Øâa�Ô'³ÒÓ &0/7'ÓõÅ¥óýsé¹�3éÙÍé…ÁIóiþä„ý5�Be¾¨mᑉÎ7�DŽi«ó'Œ´k9÷ÊßÙD:ä/ÃÊ»é|Ÿª]•ábH¸bÜË5zP^Î[†ûäŽÃ.3B#fœ%þØ{€[uXËÀfwP×wO·×B•¿�T.�DÒüx©JÇŽÁˆ�‡ê©’-º¯¿ÊûŠC‰Ôd› áÏ϶û¥áÆMãî·«ì_™¶Œ÷^ú‹Gn¾á=¾Ï"ƒ¾˜gøK°hOgž>fqîE�ln®§õó/¤Ëÿîžüܧ>õsG ®*T¸' Àë¨r*TøÆ€ÀßüÔ§îg~õç?òÜ3ÏýÍ÷?þþŒÉ€Í”H¢‰´’qµóE‚B²A÷E¦¤¥DÿDxHU PÇf".¤Oª€2‰&&g"NE2ï–¤Axó£E$2†ýº¡Ðk>‰a�¬ñd›;¤ú¨‰$i¢£R9Ÿ>pr5Ž \çÄ€›ÛØ ¨§¶Zi›½Á{{ý´½»ŸvûC˜CT�QM†6Fý´¿ÜlkÃâ↤º…^HD�üÑ/‘⸀N]F±%™e:¢‰‡±A‡Û¬”`ŠþšG€jø*ÒÇ3¹3#.Êv^:â2á/ÜrPélKÃ2R¬/§1ÿáðƒ¼"ÄY‚W¦-îÔgœO§PHª²FaeÙÜ‹ºJÃ,žðì·Zú‡07ÕVæ–Æ¶†€XbEÜá»Ý��•çæÑ8˲Ü¿Œ'°€—gÓ�=e¢x6}&¸ñà|–ÉUºÜNž(*ûùUûÀÂùkQq7ÿ1¶Œug.‡Ÿˆp´?öPäE 7ž‹2s{Œ×¾ç4™+ÃsªWþ}iº²%‡óDã齄G¬ÂÛ²{üÝÂ~jÚ0c Ì»Ã9,š÷X«Åw2í°/;¡.?AZ¾ÏÕj^¥Ïî|žK�ûáïxŒ'Äü©ý>*û»-ûöaܱ�FÀ €5 ù­iÈ¢B˜É*úÕ«�M †]­ž1vC<t\Jÿ%þƒ�{éòÕɨl£êÏ,⬠Öc°&IS§¼:T§†ýZà0†j u2ÅØ G ÎA¸nÕ¶ñÁáÁ94!zè técA£‚-ö®7xi£Š~N!ä'0-úÍ“éZ5Ýc¤†ë‚8t A½Åêð‚iÐ$oƒ—­Œ€ØOüm…˜¿aKÁ·mÑ)|±¹ëÊñ+ãÇ9))i¶só;й¼™ßçbüËõkÐáù9 '"Š ½aùBÛ€wa J¾ÝnÇÕ‚ð_ZâŽ>˜_襅ùFìçÇ(>Òç”ë�¦Ía¸Ó€ù†3ã:ªu¦–ýòžë³7Öíݰƒ+ž–u�¶L¯ñ“Õþ3´B‹ŒzÊO…¡Í[?` MÐäR£„!M#ާ½ùâ…ôâW¿šŽM&¿úUTÑ*¼K!P¼^Þ¥­«šUA ‚@�»€ÀÏüã_ø_Oœ:õ�ap©’¥¤OuÐqè‹pI¼p)ÝóE(N%CÀ+‡ k#äUÄÈß,o7¯é³3:ˆ%ï‰8ó7 'ÈxcÃ’:–lQ�g$} �YF( ñ ò…:ð”=À®Œ€Ôä¸0�f÷eî#yÕ±"ÎÑ`»0vvûÜi¯�Õhx ʉ;Ę[ùµÊ=ÁÈœ’¼¡[@æ%Äb Ø_¾ÛËt^I�È¢R0�ô¤}�ËH�<Ñ1ï�˜ç0õÄ^CZ,€ñ ûœ^dÓx`dÆEšðòcØÑ+Ût Œrc ÃÎùKÄÙ²Jº7Ê-ÒF¸q³xÆNà‡†GF sÊ ÊÛ¾ïü ]ùm”ÏmkùÉtùÊó!ç=˜_qe: ‡Án$¤Ü³;œÆÚQ”™óÉŠ0 èµ!êêñ¶Ab&ÚsŽöQܘ-â"«~]¤ ‚,«0—ÏÞó>ýœ&4F•'C$§a!îZ¤ ãne©Q~¤ˆZ¢Šˆó‡ð#ñÌ/©�ÜšYªƒgãnwaY¨DZkyrú  ç¼¥ü˜³zrÌÛªºKÔ¡EÓ‚�çü½Ôb=aNuxˆ8ötÃbK-$ã-¬ê7¹ê�MÞ;TDÉÙ›LØÛ.¬é˘ôÑŠ„$ŸµŠ!>µö° Åþ]•òiw¿7Ú„°B‹ƒ 6†`WåÜp¿?’r˜C×#qöAvãÌQalA‚8C…(KÿQ«w-†�4KvC¦Ì �ÂûþñÙξn÷üÓ~æ}³;GFù[ôw3ÍÕ8--‡9‰ÿúVêÖÜ£ƒw‡ã\ã}¡Æ ¤!Æ �¥ó�ûÓµÚé´>>†¦ÃÌN.¡ýcÖUÝ‹ù§†P›|±]ƒ†LÙf0n°½øNÐzÊv„e—|Ï}ͺþÛã a2O©£„ÊA~’—=öòùsó¹¨×gýõ3³�xç0ˆyü-Ž”Ä÷Jôu¦�aJ÷m <Ïxß:÷ùôÄ¥Ú¿—¯Ã'Œ›ûê{XûËkü î²9Þ�ø}7â‡[ß‘4·åÉ9^þWhg¦ŒsÆyæ�‹ðbÕsÚ-/-¾ð4Òtg7ݼt)]xö¹tëâÅþÞOþäC/_zZA ‚À»¾*WA ‚@�o8ü÷¿ð3üÈ{ßûMmŽì ’i€±! HÈhCP�_É¥3"dÙÌ–{T‹ñæ)ü%"F¸Ä›¨yù"ï4Ú{\¥Ÿ{¶/`¸©e €l‚¿‹˜KAˆ¤kï™SŸùÕ§�3öó#µs«¾ �8“DÜÓÅF`û-¶ „Z.ωâDÎQ8¥ Ô‰Ù[<�HŒôX£�RË]¬ŸO�HŠ”JÀ¸¥5˜pIºFúJƈ‹£d¦Ù®šÄAÖh`LÉÀîÿïl· Ú6æýœ¿1–›™³öîÏím·r��ÃÝž§|α/ÿk æŽ…CœY*®.Úsj­”yçÉîvºþüùtáëO§�›kiçÅ?ýÓ?³âåk¨B+Tx7C |�¼›ÛXµ­‚@� w�/~é×.öî_X\Ju3ÁŒ”dû'1X÷\/71q÷¹¸ Rb–F)#X H��›'rÈM¤*dv>—aæ1¼x6y`Âþ‹“ º§ “u‰701Õ�=z‚¤_Q™l�:DDŠU©éÊ â¤x–hψ&ä„{t•ìÓ€aÚƒS:åÑdcÊ•q0`Oò‰ž„Z0 (KÆ‚Ì-ŽkØLÅŠéIÏ…T•ŽèÐ>ú8\3!';Í¢L‹)á�ô œ2�T·È5y•l–’}‰ûØ]AœIhj^„TÞly€b ô—|Iü—ÌÇ(.óâ7ÜzÊtÖ\ƒ2©Á…±ìŒ´›§hñÐxö:¢ɶ«(×Ç\çñ!3y„–„µÇäQwøee(æýõ dñè4çD.È´E�Å])aYvYY™F^Mö®{Ž»”‰óËò®‘:ï-:ëÝ:hzŽÃ¯“¹4EZ­šv~¶9mä1 ùŠòfõDç±%¹£$sÆEgþV>sw~17sË…ÏÊ!I�–õÒx»YE±úr}R3>¹Æ-W­ïBv–ŸNÆE †&p�øbE>KtFæ ‘’:¸[²{¶mT�Ž �^o°ßˆ%xÇÔ±�ËtŽ9Ǫà˜3ÚE{¸{Ù¦˜!Œ¿Ò×U6°—Ÿóìqæ¸IŽ‹í(Ñ×Ld†—ñ‰¶ÂpKO0H›×,ãËÉ2óÞnú„´RcÛ —õ6;«Ô ³‘þ5Põç�À…Ôžò–é1vji*TêîÚž2¯Fh6lé?ÄÿŠv E;‚ �·¤ ´š˜-ú†i‚X7®w Ž›»1m8[!Ú÷rį}U,8¡èZç*àA0�¤çécX–C-‘îåŸ-™ ¯עШʰ¢Ouˆ2¨£|?”ïó6Qoà�Ä}&ò­—~Ã9Ѐ©F8Õ]n³žÜ޲-ÞË+úãô޾f¸NkÌKr5‘—\Q„<<†(f}”‡OÓ“5ŽÏ\†AÖìÒ­.¤ËÿW®¦æhüÐßþÌg^xiùUH� ÷ ÊWÁ½ÒÞª�*T¸#|ñK¿±¶¼ºº2·°Á â["i€"Ð�ò6œ1DæAv\™Ñ#Œše2\énœq-êDx�[Biþ#�ZÄ•÷œVÄ|ñ­´¾ å„ 'z¨í‚•u¡KèO�īΠj ~Q U@µ2 Ô(°6ã'tc xîS÷éF>ÃaÄ¥DмÄgJø5þç³ €aÿ ÷`ùcÏÔš÷ K¼d$QM ¥oÃá€AèsBÁ;š‚+Éñqy‚8‹ô”e7„¥„yš�ô€Pv’J¹2s”Uµÿ)#�Uý\A/ʉ0ò:F1NÆN“óæüy†eF:Û ÑãXïåiÁp°½;‡b<°°4zL³©‘^óœ¥?—$Þùàˆ‘OõèPBá9ÚB˜ÎxÝDŽ�风œÆð\Ÿå»œ4Œi¸ ®ò®x×¹gÞ#N¿e8� j~&>Â�£o¦ ðŸðÛnœuáœsj�xgP#¬(”Hû Îþ¸Gº2­sV‹µîH¼]*ó_ä‹ê³_b=»2]†nN äg €èYQFÎÛ¢ï ¨ý×Y_#Dÿ#þ4N7q/=Ÿ²ÝòR޳Z92ë&2ßЦé3©G½U$éL¥»Áð.Ìó]Uï<”¹}«÷ësa… ÖDh�,x~Ü�ÝèÏ�ß`ÂQ޽/Áá~ø©Æé‡aY­›uOÁ\ OUŽdzÒ7÷ë8z0¶I òç8;�JÃw­[,‘|Có3‘T»çÕ€Cs¢¡=Þ<;•F¨÷‡uÚV‡ÁØà½cuQ®}a¸£Œfÿÿoïíbu;Îû¾µ?Þýq>(‘Š$«ÎR8vë F¤MÓÂEÛ‹ÂAQ 0•Ê‘ ÙLUH­Ð F.Ò"¦Qô²½*‚ªˆãD²\‹Ž�ÑE‚¢q ij¤7-Â(nj›’H‹<ä!y¾÷ÞïÞo~¿ÿ3³ÞµÏ‘(³VCqÖ>ë�™ç{ž™µÎ<³fÍÊýaíŠøµ‚Þº—A켇×¥ð¢S7ú\õ`êñ(àKy¡‰,û4ן�œúmyQYIpm)(ºu�÷Ë:½¾÷™ÙÈÿÜ4:Ü@ßžN ¨¡Tb^}¹›ãÓP+;¤SoÕ9H¤ôrì‘6ºGÙØñB:�ùíaCX*‹R oô>¦¥þõûØ>ÂwÏNÙbgºÿÊ�é_ýÍé�oü.«9.þôgŸyæ7¶rGnx`xàÝè�ºó¼-6  ¼Mü÷_üÅ[Oò!æ}ß÷M¼°™�òÎùP×5žÞ1~7–ôiÓ…�Éy¶b¢à€²ƒ¡„8†¬µ;f¥ ¸P‡¦d8¶b(:˜æ{ð6§p8 vÀ�ÃLÛ84éüjÚ.AFm¾åh—“´+¸5ø£*Á˜�¾�½©ÁÕ9ìsÖä®ù€÷9t…¯œúþ1AÊ9>õ÷i`ü}ÿ8êÁ Lbw »ëá‚|Ó'6L \à$'L�`–#xœ’j裉“œ¨L ±G°_Ÿ›3`‡ e�w�ë·©¡LðoPnð.\ZÛeýY=à€š|Ÿ$¨2þ%S\xäí2šW„"Óœi,äQN~ÛY}~xK�™ß£/™÷iZyÑ´è-ó–7eû@Q9)(‡lôE¶AGõEh[ÊØsL뀊Ö(·‰k§¹)7|§ò¨�>¹”�Á¿ò¶ýPZe49íÛÐï2©$�öÁF™>j¾vUgc—”-�lKcËüå4Ÿ×›åê" %Ëëb‡×Wjvɾ+oón#aÒ S×e¼0+®yý y†ÍöWûêºõg§Õ©Ü(H‰iQVå˜jVµ/eà~�#ïä›§¾š ižæ™G¨< êN¼åÅ×u��àP¶‡6? ×  œþˆí™ 0pÎéd€õr²í‰ RûŸ›ÖNðÖÁ‹†žj»˜r18�ç" |{p;‰ƒ}ÛÅ+¦›}V °±ßi®7îi{ÜÛ&¾d’Wž´e�ó^Àš™(`E“¡p?¼¦r`ŸÇ\LÝìO…¯•·£ã°&×±àþÔ]Xà] 8DéÛ_Þ~^¢ÃŽY< öðé1�™Wób«Píàÿª§vykƒDê–Ó…àÊV½¼_y,Зò¹ý…¢~¦ë}%DÔÖ_jW¯“¿ç®láÏê'}âÊ6¨ý#Lpýö×þŸé…ô�§³×ßœÖë�ú'ê*Gvx`xà]ênçãøÞöÀüñ¿ðÄ_û¥/ßâ�ÍëüЇ§c¾¿Ìhu:}À@”A¤ß»÷sN{¼tn ïhÿ”Àxß'ÓŽ¢ “úç˜Ì'à7–3"£ì¼Žs”^Ó„‘‡k,‡læúËnÕÅPŒrñ˜¯¡CÄÒ¹�¥pÒA½%,››9À$B(XÙê S…ÎOÔÓk¬1paÀçò]mÊ&Z†>ÙãOíFX%4cë pQ¥|áÝöz2[:ü5 ñ ju•¨Ks�™�©•>5 ŒbÒ�ÎÑ�ÒHQY¯h ù)iÍÖ­ Š,É£ ÿ¤µüÚ°Ô!”G9Jîò4+¤ÁZ„¨÷v²dÜuå+Ð0Tô”Mo|¸IŸí¯”J�(²O±õ²<žq*X)ì›q5yé•3ˇTþz­¤Ú³O H·•Ûõ*�8 mfI¾ªÝ«oš 8òÕ'ÀìA¾;8Ú)ÆMͪ䣽Qw^S6hä˜�o–4Eág �Ž­¿öx=VÿL^þXFÖRõ_m(Úê�Àéûö û»×•AºS6JÓû}ƒÄGa–zVÓ ¯>c{(«O:غ|`iê¥Á­IãªøC¾ª±Æ^é[µ£»¹GÞ~�„¸�½èôÝȱ䕫�ªu ²S{ù�8 OÕ=«ôÀØ�C½dÒŽÓÀ?Á?©0ÏÙ6´dÒͽ,xú?ùÙ?üÿÒv¹Ç(^çüJA&¹÷ª¥îsÖDûK¿¶¥Q ÈoUZz �4혿BB¹ä‘‰Èê’\Ã{žûöæ»Fu×!£G™—{§mŸC<ê*šp*7V~ñ˜zÊâD¤)àß­�=_r ^ùRl}K¥¿ËüúírÈ‹Œ.wKopÆÒ/=ïçþ¬ÂÉ Eâ›÷_MðƒÏýÝý�iïþÉÿüégþ£üoÝ7rÃïjŒ €wuó ㇆ޮžùØGŸøü/þÒ˫ݽMO>9­ŽyBå�qåÚwu¡:à0É�¿Aƒ#®=NËó@piFvÔµ��0ƒkSà»ÌÁ¸–Â�NÇc¾w»Ïûµ>Ä2ˆ Þ{FË•úîFϤ,Tæ¬ÀÄѦœÏTÎìHÎF€®à¼` íóç5rÝmÛ/ää­^ qUU·úy-An+àsn諺áŒÓ§™-k°ÁM–þ’ÖqÊbš|«°ª9‰Gh[*i€íÇBQÃ7ãе<ê]oë\ACßÒLÜè{(Ц|bêàûÈ)½A �µâÞ}ê,НØP B© �žÆÂÖæ Z3€Iñ'´�9à·6œF¶~ᵌP .B#­J�û‘=ëhÃSWõƒëýÈ ß%ÿž¾J’|™µ[:«D0hmõæm;ì$퓪ˆ‹4‡¼‡>æ¹oRm. ëb{9ëÉå[£ÌtÊÖÂÀ»xIMÑ?Xî¯Dvä#’ ëOÐiƒˆ«þ ^ÄÄCM형3Ên´PógÛp¨_¸Ï†t©;ü¹lÕ·<• ­Añ—§×@hÒ¤!®ë¤Bluž©æ9�tÊÁ¦� PÈá�ˆrMÖ)ຄ“}\Â/MÚLNéY¯UKÞ‰6,­é±k"÷6õi~ú¤³…îiÂéë™<ÃW¥Y)ƒ7&õëªI]¬ ÷Bñk»ðA^íN»fÑ’e‚ÿzuÀºa‹§i×”:Êâ’Ço ó ±gaœúÏ–GQK[P“ù6b¾ÁÅÖ5&›ýkHóm^@2ŽfÙ’·é�ü"‚«Ž95ké/™™ŒnÏó·t–üžïv(mio +¡¡ifI÷øCÄvâžÇ KP®dšw:{ð€Uo;Ó¯òÊÙ½éÍ_Ì“ƒÿó;wþáÏ|ê3ÿÞãõ ÌðÀðÀ»ÍcàÝÖbÃÞá�á�ß³>õ>öá_øå/õ|}úCï{êÉéè‰k ZkPå†a'¼à Ë§Z¾#›'wm U‹ÅJyl0 7Úp@–UŽŒL:PwäÅ(5ÁP‡½² «»KÅC ÔT¬#rÿ9¼Æ.ÌyÂÏ(:!8#J"u:lvY©¶W`PÃYe9ÔöÏw—¥äÍfêÅF‚Þ‘ï“:_?pø+@7ü@�<(ßeÐ w¨mð(IžŒBߟpæðÐ!DÝÊ鵴Sx ºe_É6fÐöÈ"_4=xèéŽnß)@i,H�á6m�ýN ZTêòei³¿€‘`Ò�ñ´G¼ígY?.û70ïOþMÅkYö"°¯t««"bT�Ó63ï‘M߬°é#äçz7ÿcö&á]™:«`ûäŸvËD€xÊâlØÐø»á¤ù þ«�làšˆ-/Ëà�­Èµ_d² @Õ`+Î’™^c‰²rùK•(^§�� ~þIQ-ê²PºåÓ®y²DœþˆÀX•rõ4¯Úz5…9aiòœ€pRŒ*…Fm Ä)ÙêU4µ”-‡iD’ÚênèQö©]ž²3ymÖÚ»&±CSr�ð�}Wõt•…G)]Ÿ%þäãÏ_:iº¡�w T�=¥¹B'>l†§ C¥ÕròvPúûï»äZÐ]ìƒ`¾ûÁI ¯ïUN;¦á5°OòKùñžè~&Sô}æ3Ýk%7PLz™Õø¾Ä�RŽ ~©Eó‡À‚…<ù^ö~e]RcÚ!k?¼�÷£Ã“6šô,ïeéIšt­hØÂ;.&6ýÂ$ ¬ëoe[K�vk³4ZRo2૎!Ôñ–;N†.Y®¢Qæ¥#ÅŽ»„�xîGü¿Â ðÆ'ÿ¬ð-«7÷åé…òÕ,ûß½ÿàoüÿû—¹Gix`xàÝî�1ðnoÁaÿðÀðÀwä�Oþù�þK_øò—ÿÛ×_»øÏ¯1Â[ñ:ÀÑña£kÞ{\³ô?!³ î7;ŽÌówÇL”=3H#“÷œ30v`ç Ÿ ¸NØ;@3àPNŽ™&¸0È4 È ÌÊ ïa†²%@rJ·o>3váS|¢¸ VE¯&oÀ}4I­òÔ÷ó‘�'°ÐžºÑ—Á¼;xד~XP­™ n äÒçLŒ`aå,K k‡zúÑp$Ö+F j$&3u£é°YQY9†¾Ñ‚X³$`�»K“ÌvÅ:QAµOžà+d§Ž$é ’Oo@¦ŽÀÏʱÚEùDšâÑipäsÛ=²¤ �0q÷à÷€¾¼„Ë�GžZ—ð¡—|2ÉC¡Vƒwàˆ~Éå)µ)7“!Qh~”–UôìX ̉�L~øÜ?ý"±\Ê5:P6§P9e[B poËü�—?Oï×d‰Æjû!ž ¿\1,’’Î,0g¹¥ø³oò]!S« ´ ®ÓôyRýo?/kËF¥©Çòï± ½ý>‡mÀš†šð9ÁV®ŠÁUu}œk¹VGÙ+ú„»Ü—Ë«uóI?màZõ©{µ:×öÖTô1I¼×()ôÊ�ÍIM¶¨ Î{Y@áž>]?ænþ¹¶Ó°M|çï)°Î(ù¬Þ¡û°]Hn+ €¹çíd³ ¬Vl¬³Ãã�êÛꨉC?ùgŸÈÞýÌæ€›�cêMÝ)fŸMtÃÔ¼ Œux�ì««ª)´ÐZp€TÒn� —mI“kxpË €YÜ‚&r(Ï2CÔø[>‰&µ£óÄDêg›&M;{¹Ój{ý’ð"÷Ó.XöVè©~èõN~F4ÿ„w™ïšQ÷Xšiºv°šîܹËf¤ÓŸxbÚÜ¿7½ðü?žn¼ðÂtqïÞKûëÍ�ü'Ï|êµ.u¤ÃÃß;ðŸq   ¼§<ð‰�~ôsýË_ú»'76çø‰ë âž˜Ž¯óÎ?O­2È" öñ?‡fù5€”À™:®Ê`Ø2ù“¼� [ó‰ûá ß1^Is ˜Eüáñ ™ãì(‡ ¿À¿�a& A®yBœ‘e-„5Ћ-ð%è‘e>i {ãu`ì†\= Kâ*‚f™Ká•¥¥1Ê\/«Çò<2ÕU/’àüí0S�òQå"VXd +~Ëý4àê2*W¸¥¹•]¸¢§ÞÊ¥�À‚|HÈ«B~ۛѡ×Gàˆ©v¬§Ë­L}Sê_zl[y8ÔAbP(.p¿k,ŒŸ¤à*•—Æ©úÚ0‘ƒFº¤[8ü™€ÖP±ž€ ++L3y gl‹•J£¬=U®¾-E¹!Ë�øô; <þ ¿,ÕyR–8¾·~J�þ¦'zBfRë•iÙb^;•NAÒ†~‘ ;�üÒÎ|Êæ2}‚/®û$Þk²•©ž3-˜@'»jw|§ØÄØÕšLK¤¾òV_w¢Â¾ÿž õÈïYW‚Y—ÄׄZÇ9­q-mxeÁŸ€MNä€ô«²SžÏ/¶G—6ÄܬF²#[®I¦P˜<Ì}؃JfÑ›WFë@dÌêÇå]~Ü—à¡S¿½EŸÚ®Ú¡µ_¥©ôu,à%"7웢žÚu3[NR^­2øW&�¶Ï$“ûà/_'Ø•·]à™$U£rå¬t’¬ÛÐh‹ADrI»]�Ùe=”IR:¶~  ¦]vȃ0§ßÁu9ægÊ ²¢k¥mücp�Êö=cRÇOÒP§wïL7¿ñ�éåßyaºÿêkßüƒ×¯ÿá§òc}z+{䆆¾'<0&¾'šqTbx`xà;õÀO}ô'þî—¾ò•§îݹwÓ�ðOùæq&Xé@|½æ-[Fno>évè ¼W9À"­!\ä7ì9 �€ †0ËИ’3á}üv1g°†ˆ–¤‘ “L™N†XwÉâ{m‰a�II^˜Ahâ–!I;!ÔºÔf~¶›|¦M~òE#Ì~Rõ"“èÉ•ž #WYæãðÀà°CiTä>ÜÞe»r ¯ž´+IêX¬J‰ÜÙ6þ¡_¶„ÔQßY{M˜ËÀDSŽyäÝo"{VDr¼P|¡ÑWöm­Ó#äå� h¬’ò-çŒÞ¦;|•¯§ü¥w¦¥A~œêõÖe”Ž˜Lpé2›€‚s¾sï.5)TõØ¡=²IžO¸±E™üJÎ'çpf]ùüßÚ'ø<5�nLµ>á�£lƒÑ*pxÍÔM˃8Ãn'"¬jè¥�Þ:¥¹­ya‘ÝR›F*>Ôi&ôÒÔ÷ û\½À7ÛÐ惘zU¤ú]ÕU}~Ïú+ɧú®Ú\°ª‚‰ÉLŒ O¹©CòõjÖ´>àNx]¸ÇÈä§M.<':ü³I Çcâ„ïÊC“ú :—€*Ô³H—ùàÔ³8ƒo~0ïQA²5ë´ E[¬?Ôºñ É¡�>I¼<@É3­¸þØÈsÑj§Â`È$¤¥&×ë¿%¶Û[ˆÀòSpi·:­Cç~çéɃûÓÕÕjºëÖôÒ?ýùÌß‹ÓêÁÉÙ­¯ýûŸ~öÙVùw®gHøçÏcàŸ¿6  |—<ðöϾΨ|÷øåçþÑúÁýy:rºÆ¾ÂvÅÛYy‹d FÄè€Õå½î¢Ÿ�-ƒ:p9s¨&ÞÁ��ƒ0C÷ eJÁ‘ѹ}ñ> S #sç¾>.��S‚=ïÞ»ËrÛ¼r,,Ã3©*@G¨J#;›ÏaÌFbG¹Lp8a°ã2v¬óumÍxäºz>Q¥8䉋±G;}ª)²N«aØÐÏ8DÉá/²>¦”CŸhc=ñë² wùW©üFQZ~íà¤�QÙÛS»,Uº…Mê>å+»�s¡ä_·Ï�»ë0­ö©úR„ÎÕðÜ�µÔç°9õ[|gjK'Œkôa�…擪ê›Êók>�¬áé\â ¦¬’¡”Ÿj¨‡²ù¾ D.Ñ·,/=!º¤— ¤<ãk‘¡ä>ÐWˆØ¾A5Í dÌ+Ñ|ÜØóÊë8úü3¹ÐËC.5 ¾×ªÓÊ'm—c0ì!>.U2*®�"íÓÐuzåT» £ÀõìæÆŒsñ†‘8u­¡‘|^× Ð n‹Níg3•¦ÒaBµN‰-S¡W�æiw8jbÁàwž`£¼œÐ ·¡�1Ké¥W�UäÏžå!�ÁV(Ê*{oœ^ÛNè•¥rr/ÀPȹ5øëi}½/ù[ò•é­Ã:õ3€ÈƒÐNä 0ôöp›Ã 2äÑ<ï¥õe€6ÑÕäe޼լƒöh…K°ØX8áWiYÛùT^p��VÌQÿ¤[eh—'Ÿ<$¿óÌ´Í%æ•,|Y©jägr¥˜š<•bKœ Ê1$ºÄ)²¬í¶U©CÕµ=Ä¿°Hìâ YEÕt7ŽÜ'̃ã²ÿ§ŽŽ¦›/½4½ôÛ¿3½Fzqçî/î™gþCE�cx`xà{ÛÛ;É÷v=G톆†¾¥ž{î¹§ØSü^9ú£ïÿÀSÓµ÷]Ÿî�<`+·IÎÝ=°yG–a£6ƒ¿}ì=RqYBîè*Aá2´­¤oƒDࡃ¶Æˆ`¿:ŒCF…,È"Ÿw¶Á%@ë)QHžP22¯¥åØÃK¸>±4ø‚ͱ=ygûÄ18çEßMÖüódšsvÿ:ãî'🱠øšÝ …Kwï|kàçœ>åõ+g¼"à[�3@ÏÐ y k*X9§’œî.~á~øÎ€)ê�gÕ��§~M8žˆ¯Áá_½Øa‰q‚ód=³*Czþv ›a6üUÖÇ�Ç”ÓÉš´ü¾ë½Ï ÜËÕ‘í|Œ<È�¼ªYÚ.mˆÙXž¶ßåÝfRŸþí™Òþx±RWu4\µq˜áQ6)Çvó ¬Î¬¸ µ؇ä“ÎF.ÚÊìïã<ûˆQ¡2…Õfö«¨ÒvšßÒòÜ–¾b0˜%ï‘€åyªUzt¼u"8ø<ý·¿åhtáV2Z7YWn«}£ëô¤3¿}OÁ4²jîªñÛß�pE–l”coôêI¯/t9©zÑG?2[Z¶ZV>29íçÕ×áサšN‚)Q²®¯êR0¯‹ð�¦.0—¤ŒòË ]ÉD®v+?¼ÚX2¨"®+½òËXtƒ´LjE2´ºÌë§&¤qÚ‹½ñ,ùɧc¬`Æ>yY„™Ò�"Ù©‡þOé¹j+¤FŽ×bM.²üž¬gâ¾TtÖOº8¦lÃF -¯ò^« Öƒt1U•²Ç²Gß%Ož=î¿Or)¯Ô’QÁÿe;:ýÃò;Ü”ú`»2ú±Ì Ëý¤#ã㪋 isBŽ/'ÂÒ LÁŸ¢³M<ÜÀsßá}ØÎJ�ÕgO¸ÁŸžžLOð)?çhâþ3ØáÓ.{ô™C6|¼ŠÿäüýéìÍ7¦Ûo¾þ—_9ºòß<ûôÓ|ËqÃÃï´[É{¡ª£ŽÃÃÃßÚ ÌwþÇ¿õ·~}utô£ûGÓ“ü¿ÓÚ�Þ>ËWùL K~×þTW P úÌõW2(œƒÆ6Hd€\ƒ½í Ïßr¼ '\aàoj�¶=˜…hôTÞÀ [îý”&TðàÐ@Éà߈{Ípncß'.xÂÉhñœïúøÏk‘n*ï~p�ì�“L8à ãL(A�ÐÅðÒ@Ɖ�1æ= ¶�ð3zˆÄxH­Âv&&j±¼æAd™^�þE\� ¦ "pdËMVü÷-À‡¿‚ç5@ÏSHè·4Ê @`=5à•Ugµ›ÖÒ`¼}aØn›º[º) Pæ�jgÃ)c9`/D}ä·ñÒ’‡6ýŸ-'hØÒ[ô>à=À©ùÕ‡ ¬ú¾°0Ø�ÚO¸o镎Õôi´$ÖÀSykIûƒßÿö‡Ž'McÚ»vh¡�œFWkdäÞèº ­>[¿�3Û»z_²c®f¨n�-®äJ€×›üVu«¸8-Úô“m!².´µÒ¯Ó×ÏÓœÇn9´?ÉWõú�%^ù;/ù¥.ù´)6KC®ô;AœXü%G^ÝÔSõÑ‘ã®ÀpIÜÝg �ÅKš~Ë[ÙݾÇÁPª_±;¯Ÿ gÁL¶lÖ '?š5Ñ1çµ�ŽqX¢2pÂlò‰3¾ÜsØÜÏ—Ëò™Î³S¾ìx>]_N×ø?ìôöýée–ú¿Áûþ;¯¿z¶:?û>ö±�½ãgx`xà=ã�Zçöž©î¨èðÀðÀðÀã=ÀàË1Ö¿õ…ç~ù¹õÝ;?î€ÿ€Í�¯]e`F |ÊWÚ] °b0uAÔì­�“2h«ÉFÈ€ @Ôà��=™¼š�«ƒ½yX7&¤N~äYj]1îóÎ96%˜¡,}hÕZìr)q"Ÿf§¼ýtPo ØË¤>)70Là¡Hq . ”•)X”ªøñ‡œ[îÇÓ= SƒáÇ+y;øy#ªž eQO¥{ ³²ÚÀIÅÃJ>õÕ % \\ oË?¶U—Ñó=î0�¥´Ÿ½)‡ô�£eO õS=yþ‘¯rÁª%“7Ò” ”¥ôj[s­º�ÙáB|ã‰l ;®‰ÔeJê1ó[(úBÅ‹ÁwžàüŸôÊèŸÅi §íW�üRnÉÔ«Ô}" ò^ƒåq/‹ Œ•Sô¦¢kB|øËŠNߨ—£&bRxñ™ƒ;r±52•[ŽLÙUßÒÓwüïA¿¶U^ûà�ܦ³éè¼øØµ€§³Úq€%/NöêÄ•�·Pëdɦ^jÐð=UÏ’F‘u=%WåYž:`ZÊšécQÑÏ42|» tv ž%YØ¢�ˆH…¿jÛQ¸^2­I„±¸$À÷Ýfñ[¹’µë(²»ž­¢.fæ`)¯É€µ×'U錚¢=âM=Ș�6~lƒ“ æj©c‚|¿`qÆ’®}:ì¯~ò鯓ÓéÍ—o°Ôÿ›L¼4Ý{íµÿûÞ‹¿õ¯<;Þõ�ÏÆÏðÀ{Ícà½Ö⣾ÃÃßÖŸxúÏ?ýÅ_ù•ûõ›7íðÁñtÆàéèê•iux0ñ¥_ð¹!ÏUÀ9 3¨ Ü÷œúô®=áw8ëP?�hû¯x3ȆW™I¡ß ���§¡‰AŠ#BˆsRö1¼#Äœ ±ìÀ¹Ø¢tæ# Nqyš¸Ó@”@KÑâ|¢»ìÖ 7ˆYª„u>,ÿuDØýaªÏ<´µëk®ÙL¾·�4%õ U%áï2*5(és_¥©g™×ûÂó\8xir¶>�&i°xféœ9OÆÕ#Èòpc¿ô)ñö##ò¤i¹4sM´v £Ðûªù@9˜ðh_I.[±¸ôÒ©B|ú�&d«+ì¬�5øŒçÉû6o­=¶²–¸ ü ÑRGånò;m/šÎ²"âQüÀ¬“úa0ïõãa€d�·ðÂEn¹!4Ò&(§Íåué¼Õ�,~ÓÊ⤓/8~ÀÕɯºPä5ißij%eñÑY4rzw|IGßœõÈõÚίFò‘é�Åë”Ä“êV¾ÑûÔ^÷„G>N»v—‘§ú‚ÌT/i”)¬_ƒ�ÎëÃ^”{D¨ŠòКv]yµš¥Ñí2”lË“¼F§6ŸõK)m�æKFÁ½¶÷‡PbŸéö�·ò¦^M—ðÂK„¬n`,ÜÊ.ºT÷!�7¹&Ç|ã󆀜²¯ê¦Ún¯y}YGñ4ª€’om4«ÿ]ê華¼}0ï¾/ÞáÊSÿã¬8çS¯ôÿ.;ü¿ñÊ«¼:vúgþÒ_üä?h G2<0<ðô@¿g¼«>ª<<0<0<ðx|üÇüåéÈêýÐ{ñÞí;ºríÚô^ ¸þ¾'ÊMg¼c¹ë{—Œ¢}âogÀoÀ‘@‚4OßÁ׿~<ôÁ³Ã½ 8¡ËÐÏ��#;‹¦5¬·ì`¯‚~ Åùþ.Q|žò£ÐÁ|bFp¼º4ÜI#Š(#mckõJŸe¨Ø®ý1Z:àn"Ê™$@FÙêà”¼"cl ¦T°dÚOƼKÀ;Ì÷Ás4›V¨U¶•½²U¤]žà¨ÛWùâ¹DF‚šKi…rjª³ömÞ2-‚/heNéôe`¡ÃŒ‚‘–Ie—tÁÙÞÐÆŸ}—«`“…ODeý 6mæxlûÐð9ÒSçÁÙÕcàÚ‰Wï j-EiÕšåùF™ó^wä�¶N$!/Ú²ÅU i¼@‘j9yœå„ôé[ÂRîøeÚà!1 ±¦Ðç3€–í“]GpUîa“µë&ÝzL~q¤�µÁÿf¢ÿŽ:r…§ÿažkÁ{¥öÙˆ‘޼ôõ¦àW ¯— pÝ çsY)Ó•åÑ'c´[x_Ÿ'û”7DÐáCKäÈÓOðgTL¾ÀHéx%Ÿ|\FgKIÓOùÍóç²oó9LÜNªÌlÊßàÒ„v¦ož#iƒ›ïpé{w&ßË…C‹×KF–‚ª– W4’uÒžz=å˜qòÖÑiJÎ[y½Å¢¾oÓÎ7ËÕôtœÅ—€^‡Ž¯:”ÌšÙê/è¶ÜyzÚñeÜRþC¾Â‰íŠ Ë–¿è2ALõÓ劃ô]njkî!lØ2]qc?V§­Ø¬åìÖíéìöíéÕ¯cºuã†çoOwoýñÏ}îs÷gÛFfx`xà=í�±à=Ýü£òÃÃoÇ?ñçþܯA·ûó_üâ_yãþýg7ìpÁ2Kâg>µ½šŽŽA2s0—à‚1Ÿ)áY‚Ÿê8„ËkRLJ”Ãá¨Lˆdø.O£A9Ø3ÌÊû¾ÑbÀáIXá(˜(!;¹+ÆÑªpìI€Â(7½¹+ASá`aè#×}èKð›=dm`¯HÊý4Èñ°¾«PÊbåyøx -sõ&^”{±¡»ëUû% f²Ø¡-—N}_°Î7ügΪ«N5üÚžø‡2.‹NZ0A¿meëöIË9õç oÂáE}ޤ­,]Ÿ_?E––?åš"#,ò«M þ÷ ÙòÈOÏ>óšï0€R*®Mˆ«¶h©¼ÐfŸI?&fDªžvž‡x…Ï<¥·dõÊæ ¦à‹52™{«2WìheiRÒðÏrоlÀ+LhõÈ£YêÔ¦Èó¢å_/{k¯Æ7TRóÒy˜ot‚*O ¼_/ŠŽnôuÞíµí5±UáM—×öÛµÊR3³œm¾êݦ-3NT ,]K»Šª,xÈ–-¤‹¼6ÌðRVLù-» ðèü¶ÞÈm6n¨Éãa^ïÛÚ«¶j²¥³ŸÚ3Ò¶b‹%uÏQÕ†Mþ&þ?Úc2sog=ÝãÖtã…¯M7_|izðÆ›gÓΟúܧžù¿´`ÃÃÃÝýÎÔË#ø6øÂ/}áß½}÷þÿòýô³IàÑtåÊ1«xž[=yÞ7²fÄÖÆBú@³v•¯½ôä�_Bš¤û޲¤eÌgìÜÛ¶O~k€iž9>LÔ‚žæïßÙð„ÔÏrú(Þ/Ì+|pþ”Ô<ñwÀšO®‰Lü €_ 8GÎr€OEý¼µ„Ÿ�€¨ø,™2)+$È$H¹ jNê“y#hp®ð‹9u °‡¿à QóS~hòôXwñw0ŒéòÄ?exH÷XaÐ'5¶Oÿ› ôï0)²ãd Ì%Gœú€¢¹À§ÿ>ͯšº*£å¶Ó¾¼Nä ’n?ÿ'Œ¶fÛZå‡á~z¡OYc2íVòÃÃÎÞy½ ð’E5¸û©ÈÚÙ´òéÒÒGê©å�"kAÇ•%ê’µJÅ"qé_6eø\�Æ! ¾Ñv|çÝò7^èkq25ŒÜGGj©Ìx@HÙ°L¥‰\í Ÿ ¸Ùï$-°å§ 3�ž²ZT/<ýU€*w¸}Ø©µªrç ^ddµ‹r�­:¿6I_üH}¬å:¢Má-YÊ(9ð’÷óm�Á›WyH�iËDƒ d>4ÈU>0é=’‚Ϥ : †—š-v&7+Íu"2v$‰,AÞ^ê�OmF3©Ë²2ü– 7ô¥Cªe|ç‹„&¯éˆ ü6ÓÙRÓ&;<]¶8õÊ\°™O—{À5]rli,ÕÑa%¯CMíy%Ë<Ù™?e(⃙¥Û¦wŠv+»ˆ¬ã–Ëêâ rK«¨ø©0�7ʰ)Hë¥(ï Û:në �ýïôtº~|Ì×v§;¯Þœ¾ù[/L7¾öõi}ûδÚlþ«ÿô§ò¯”ôñ;<0<0H0Î#*þT$ér +\“fu8©Xè­Ø[‚wÿçr°�Ïøá3ü©okÉ¿>Æg8L¾¤úÝ,àKOÀ޾ÂS†'¯P3¿½èÀ¾°L¨Ó~úY’¯M”÷ÕXÇéÕ[•6!aIDATiHCoÛqBŸIL®Ôv¤~lÖÕø´µUJ;ãàTÎàSVx�Ïá+{<²® àþÙ7€÷¼eßýŸ_‡±Aœß‘—Úc»L¿쵈Ó`;j©I©Œ5èÛ2r2Y�þ¹å+ùàì—¡!ÉA™5êU=Ôe�´ QF¦z3 ]˜Ð¡~‚y»œü ËÕ>ÜBšù±f¿fö€:Á< tÏ’ßO€&P t+ohäymºxp2=uteº}ãµé>ëwó›/óÎÿíiçtýêG®~ÿÓO?ÍÒ€q   <Ú‹[ç£ tx`x`x`xàñø¿úå“AÚÿæXòððpzâ}×Ù#à}™¸wïn>¸ZígŸiœ8cÙæ9éñ!O¸[ØÑCËž† +hÞ¨:vLÉ2OyJïD€"„¯0p¤LïÓþ‰@¾&”Ú*€>pA”} í>¢YÀéSÿ3`ìpÎyJ9LœlžѬ‰¤êÉ(+Ú@® xæí 7:;'JÝô #[Lt"à�O08æi½�û|f5>DO}<ãæÂ;h7ÁO8toß�>Aˆü�;øF&Ki3δ?Ù_õú+yè£�t/ùü “Ÿz¶Ô^dLfd'\§+'“ âÀùæi½æQŪhaO^<ßu³G¡”=ðG>PƒÿÖ?ì#Ñ MŸ„È€Q¦¨¤ÊÙûH_”É£Ç>V‡=Ô€¤ø g¾Ó¡ß—Ðgž×NŽòLƒE²ƒSFôx!yí'OäQn×�Ðöż{¼úiÁ]Þ¯éÁ›r–kªBþ†&ü¶:Á¼<ÊìôtœâW&6pÖ*Ê¡Ñ.õ˧Œ¦§•q8 ü“Æ é…fž*G¶ò™P]<ÔV¥É&€¢ä§›€)ò‘-9…ÛÒŠ¤Ë‡^¤[šÆkG“ºL0$/-'mÐ'”² ž/Ë)\á;M¥´`—?ó—íÝr'Ôm¹ÛVòÐOÆXÞXèÞå÷´ó`´ÙYÒçck›‚‹ö­éÌ2í²êëòÑy„ö|Oe“-ôpw•IÓ5´î³áÓ}ÖiŸz·¹P&�Ï+gkþßÐï+öœ¹Âûþ_ý�ÿs:¿soºwëÖtv÷Âÿúö©Ÿú?𦑠  <Ö¹=;ÃÃÃÃoËlø/ž¬<ÏàíðøÊÑt||4}ä#ßGà’PùôÔ;¨óîËÓC„¼`”G@`ÞСÒD2&uÀ]#SèüìÀût7ÑìÉSÎò'˜ØÍF�J®  ¿`yÿOü ü]⿆nãÓÿLcÀ ö5péÿÉ©�õôßIXë‰?ÁßÚDQ žb=µaðŠØÚ�à €¾À€¿¢\Lî&€À Š·À�:o<Ðù@+4ó´~ü»º�>D~БŸŸþãi#3pèL�Õ€ma�]“ÖŒÚØ;0ç4ÀO�_iæ4 ±mB¼´…Opbʶç:¬Ë¯9`ÿ°mm?0»Ð»]ƒOöíu®Ó™ß§=æM�(¥¡=j%@¤%O•ßÔņ˜Fn¶+Áٗ蘚Äd- âXijX‚CÕ l¦3oŸï€ú̇&ùF/]{z/…üÔ®ẹ̀φV2ÄméŠW¤ñ*’Ÿ™òI\\‚ûFc½+H‡‡Zÿâ¯ßú2þ’%]áì«ÑÃoM,‚~å`fÑØ‹ª,oê’#8¤;§a¶.AîܸÊD .ˆ{I‹˜2šn?GªË´'A9¸ UxÙµÁÉË‘›}‡b’M‹®tš÷Þ•ë¬Ó¡Î#thíi‡UÚttºVœåGwÌÃÄæõ${d&ƒüL¤ ®¥\l/}j/Ÿx=Ñò‹e v ¯åöØá–»¾âmoIâÿ*íÃô­l»>tq…IüB¡¯¨ÀŸ+‹¾´âfæ'ývøâ� ßÕ@o¾ñÆôuÞñ•wüwoß›öÎÎ/¸üŸ}æ“û!£8<0<0<ðXx¯ÇðÀðÀðÀðÀ;ôþ"޾ð…/\}óääï½qóõíäþ^ 8š®_¿6]ãë‡GÑrΓŸøìæ±Z´; 7€uPì`ÖWÌòcf;¾�Œ `(2 Î’hi!Êg¤ñ9“ÉGÿo`ÿ�3˜+”\ðªÀë¿ûÍéå_œ^ås~'îûöÓtxëÎõÏ|æ3wÔ4Žá�á�á�ïÄcà;ñÖ ø6øÄ'>q’?-ÙÏÿÍŸÿ3{«Õ߿û™×®]›®^»2]½ÊD¯ ìf€Ç;2nxÊL¼è{‚˜3ÎóéèÐÏœdüh�µp:¤,¸ˆÅ@–§ 5à†¿O 1ú´û‚èÄà8O•à'OêSsƒ(’ès|œ1r gøí¸¶åµ%ö4X xË‹¶ü�GÛ`ã[s�APÙ\¨€:­káŠæ²K\x­kµJÒ- Äs+¾î>í7”m'y¥{zÈ«¯zYßöRÑQĉ‰¤dlr’à•G9ó�WP–À?8™ ÐDÛgÒ røÑÔŠJ‘+ž²äÝŽD¤àïA»e�éöõ€-Ý%¸äÑoŠ ej:¬zníÄIãœß*7OÐá ý±¡ñ„_\NPE ¼��³h«[e&?RíVŽKà¨Ô°°³‚&¼ÄY&Í&}èî ´×ö‹Žð S¦¶Ã«.ÎþÎVPýÒ¡¸œüðÏ#­Úht›øêÐx­—^zñÕo%ä q%K—gpíü¤¹vûµ ½–4ñ*3oóÈ^Ŧ”Ú S/)GœgtCž{Ä,««Í•/=üXi]‹�NŠnGƒiC*Ðá=9/¤äou„»é“¾tK'fÁïÅſҺ¥[òT^%ò.�’S{Ä’ á”é°|&É!†e¥7~ï!úsŸ6óË<ïçS~w¦—xÒÿâ ¿3Ýyãõ‰ýÿ§«ûÿ%Ÿgý�Ÿ©ÿg.i…á�á�á�·ë�1ðv=5膆†¾CüôOþôÿËÎ_ýÒ_}’¿Î—þÄO<1=ùä“L\�®²2 …n ´Ý;h‡ƒA �CS ŽŠhš]Œ!“–`?( ‹ÂËh>¡�#_i Má7QF—ye5 °¬ËbaSiøàŸ6±¤e¯`m«`ƒ’¦ÈÜà•á7FÏ¥ßsFý±…LòQ¨¸Ò™`ÆRŠÍÞF» Ä�¼uX$ó§ÁuVkØ"ý„_d“>aúeÆÁã¿§M„Xhf…æ==Z*>�}€Ø‘€^[¤©T«„Ë�MD•ËêÂÃ#¿ô’'zUNÙ‘Ú¥®–U°M»¦ùId\Æ'ȇ_ �’Q0±Ò,ù« »ÄUµ0±èÃc0ßê˜y„N�Ķ€>i·§y0Úë£#O^]àSyÛ “\q%׃¸à©‘$yz�®òÒ7<îËaYSzªjpéL3)€Ëá5…Õ|R�”•gÕÓj\?í–P´Ö'�%XpÊð�™8M<¶i|o­iÁg:ï %¢øµ7rJg]�œüJhláñ§Ëíù*˧muÎߺ_”%4&õ[ÊI-ƒÍ2JNJDLÃ/ù„Kÿ> Mf¡ÚoÙh¡óþ¢o„-é0 z¾¡šÎËð‡h µExg?ËüÝÜO_®<˜îݾ==`ÂøüÞýéŸ>ÿütÌ>þÓõiïéO}â¿Ò´Œdx`x`xày`L¼#÷ æá�á�á�oï�Oÿħ_‡êG8w¾øK_üñï¾ôeäßÿ‡þ Ñíæk|Mà�Mýœà«|}ÃŽ}š0˜…ÙÁ~#¯@Å1m†—ü$,0jðé~àÉ;º4«ó‰Z,+·Ê5@wP^�K „KNdÐÊDVÒÏG ˜KȈ%[À;ÌuÛT¹T[5ïS‰†hW·»Õ1|—ëÙ' äÒ§‹Ú$o ú9ë‰|àF–ñ�Üòª·Á“vXБW“h i5€¿6Il×�¼[¦á+؇ø’¾Û­I¶eÚVzÙš�¾“ï_!¬eJôIÍ9ë—ÖB4—b¤–œªañí>‹´ÃzØz¤;”-=xq {ÒÀ�Ï༶FM'ÆVÀ­ Ð]9ƒ,䩪ûªRM +}®0k9A:¨J9¦ÿÊéÁI#,tð–sYyâ„G¶yiqap n¾Ò÷~Øó¦sUãþÆ@Þ\®»~ÀŸ‚‹ [8¬¨k3•¾þ>}Ñ\ˆíüE,MŽ–†‡C¼=—X‹tfR–†—ÌJµ“³À䃞Ó-­t…+oVa ë“Z <Õ_ðTÝlýP0AF~æÙê›éä�' JV§ª´1o kà´ù¥ðm;,e8ÑwÈr«Ý³5KúÙÈ�Àÿök7§7oܘn½úÚtvçÎôþ'®ÿ0›g>ùɯ.yG~x`x`xà�z`L¼Sþá�á�á�·ï�ÍÇ?öñç îÙgŸÝ¿ïä¿[®>u�W®_¿:=ñ«®MGÇ,ýÏËý vr{‚WCp�-çà’Ó„#X_Zî�›Ô øVÐÓñ³×t Ì â|e:?ÍÎØ×g˜Ê�<_Spwzß©6ÔªAs=�‹¨2Äß:2FYFëÖÃÃ`Šß˜W¸ ¶ZB¥Ía±8´ º˜àˆ(শý“¥B=ÊîfU).¿)â“D-¸qσ¬·ÇRòt_¤¬oÂiª_Ô¡ü<ç-Yò*72IëQiùWߡßÄËÒèR—ÕW p’_¨Z*CÚ€3û€÷I=»4 ÎS±p»ô=r…•Ä ×´’W©¿�I‡œÂ7yM®°™®¬ Ì&M–¸è1•'eÓ&'ü]6`ñD„51`Iþ'o�ê0_ö•+ŸÀ]~œWÕ"i D™zåÐë ÊÁ!û¼Ñ*:OøáO+ˆ—=]²ÑxU«^(yš™~I¿Q‡GÙº1rÁ/Ëή¥ŠÐÛwóU·p ¨êË+Ny¹¶,+Æ~­Ù¯•ˆ…®hä/.Sh%§Þ…k©MVx×|ÓÅ¥]!ðÖµWyˆ0ªËSR·¡¤J¯ êiÑ)bÁkiË_2S‰ÀÅß®SK^M|p¶ú+¿,¿¯¬êÔ¢àÕ Úa>ž äQ?ÁÚíðú�?(ÛÊ…"5/ èÞú–÷él÷_¹9=xóÍéÕ—_™nøŸÜ½ë& ¯^9<øì½¿øÌ—?ãM{ÃÃÿèwØßÑCäðÀðÀðÀðÀÛñÀç?ÿyö{Úû!ýÉ+×ÿø•+ÇÿÆÑñá�~øCÈ �Õj�•5(uó@¿ÍÏtýà � ÑƼáÑË;üûEÖéÀG”âNÿl+�/„ž�þ/°)!éÚÏ‚?ã k?Ï_xpÂFh|`ÍòÅhBË`×ÝÿÏ(à þ";ZçsVü¯²ÁÖ ö8Aá¹û 8ØÎ–ùØÂĬàá#’5u„ì†g»Ðøå8¿`h�¶»ò‡‘3g¾(GÑ's 0ˆö š¼œõ%RåHÇØy~Óú ª‘ßé²'Â>ûFëž{¦8ÇÏþñ…z6ã:¥ìîÿ‹OêìP½f’á”H=a,ƒ\ƒ¹_Œ† ø�0@ëù�+ü(�æó€ä~"Ð'Ÿá#M Ï€O@×m€Eü(<“ÊáŸýÕ�>u!âßCŸ¯S˜fÀIp;l•o¹O$ÉøÊÏýÄ@­†„5hwàÎnÜùâç´B;' öÙ¬1˜h à‘x�Á?*q©Q¾1Ÿ`Ï¢øÀ•¿å“wyº3¸dÊßOéüWçûÓíÓUmy*Hþœv Œö�…ô Mi*ñŸ‡L¡á�<ôEWyù Þh•o]f“Ïò[&„+§x¥QÕŸæIvdleé=Ÿ¾ÛϬ�:<©~ŽäiGûWv÷EM�Â[ðËÁ¼_�ÎÃåÿç;+J´nƒgb»ÂKª�ÑOªér†;8'Ük `öáà-÷¼iha´ÓQžSµìпÛCÞm� MÈéÏ\ã=ÿ0>+ ØFþ‚αĩ¦ö{�3í§p7í1çRFñl=Ž¿y÷’þ%¯2«ü@\ðŠS®¿®Xç)¾¥ ]V‡Ñr^ß½(ÃâèõY€.e3YGƒ¥g!¤Ó+¯ËtÞ®}r §Õ3ü’‹½ÑÞí¤ yúì.ŒæOîÞ™°”ÿöÍ×§ÛþîÞ›ÎNLkn¬»gç}uûÞ§?ûÙÏžt#ønyà1·Îï–ú¡gx`x`x`xàíxà~áÞ|mó«ý?¶:`¯‚‰=õT=e":Þ'˜[í­€îÔyÆ@ÓI�]²Í0ÔM¸{Að~ŸcMÈË@÷Œ ©Ø]:ç-è¿ÿ€ç«®pU@& þ º8×çÀ®0�@ðß& ü ú]x` 4O�Ï$©#læx„OÞT|>5POüHÞ ß¼)Õ .y`l“=�îÜEƒidVðß&š¬ósêï� i; à`Y^‡ÒâeÏ€=+ ß3ØçÜ—�4«„A› žÁ¾!¦µ2¤‘/¼ÀiÏ]&e²¤¿*yú¯ œ¦ªƒƒCR4´r©¯öWã…öI.OY’¾�tÊ%#lÊ%§èŠ~ cÕ8µ@PK›¬¹!/•¥)RÂÿbQ¿}ºå¹C· ]é3e †N”§ø©€-Y“vuƒx?o)ߥɀªlàmý”Å—`Ý:ÁŸÉû,yÍ[¦±Ÿƒï¼ ^ }›CýÖlj®>œug°¹Þ[O÷N˜D0.¾„F?=Ø|>¯ø‘›ŠcÉÛéýÜhÏ/SóN\í€Û·—ü�®ÃN;>L€QÛK::^¾íüGØG§?È �xNòYN ‹Ÿ¥ÌN‡'¡·7´Î¢û«³>Ì×á¦^_Ìÿ1�öx½~­E™ýôz1_×ÍfZa¿+²Ö''Óƒû÷¦6î;¹wo:åIÿæìtzóæÍéâô4ø 7Pïû»»_;>¾ö#Ÿzúé7—öŒüðÀðÀðÀwÓõ¿ÎwSãÐ5<0<0<0<ð{öÀ¯ýÚ³û¿ù›¹ºZ�`šî~p³ÙŠoEßÜÛY�쯮¬V?°¿¿ú(ÏÆÿÔ•£+׉@޳€¡r&Œ²üî<ì^ቃXÁÆ‚•Zö©èÞtrÊNƒ¬ÐøD¶Ó9&ð__Ï«Šj eð“¥×þïB@ä õASHž-rÉ?f (“eva«žÐŠ3PçÌgÊ•¼\A#”_4ÖÏ ú§éøøá(á)Yiµµ·�„�$ÁD&ŽðÁQýéÿ-hOàáà*+&A‰rZ·ÄaŽ£p€�Æ•V?§<œ­êÉ»tز|Iá35±My{Š’àêŽèK¹‚÷s&u¤èpŸþ7m‘a€¸-‹CvhÊÁ±6™!èú(8é£yu4ºÐ i2f~ñÂêHµì5‚ù1PW�©sšNÎÎâ²î¥˜vëd9›=öA³é‹ö/è|âoªk*m謶Ø4ˆÀ!.ôüšÚWMÓ§-7ºà(„{äW\Ó[&Ùg�2*ýâ:\žõ.KÂΙÐ2YKxO…€ztØå”ÚÅv.ãÂF€ê Aã]årˆJ.«ùx˜¦úÖB¿×n;œ4Û°B'­õÛ»¬NßË=Õk¼bÓ¼²-®tÚÏp dõDkƒF»ä©þýh N°Õ*×�÷2îsí”Gž·nÝ ³ùeðßuÜøzýÆz}öúùéÙMÒ›ý7™xíøèà&ó”¯íîìýÍkÇÇ«£õúµ§Ÿ~ºüÑf èðÀðÀðÀwÅÛ»ùwEÝP2<0<0<0<ð=â�oñÿG”WMîç~®ÑþìôÃ?ü+;Ï?ÿÁ��|äúΓOï<÷•Ý�œÞÙ}cÿɽƒÝ³½ëWwïÝyc�ÁóîÅ9çáÙî)/ \œïïœïžm.öV<›gV‚ìîŠsç€ H×ÓéÞ>_ßì¹î`à j§6{›Ý ævw-3Þ߃‘è;;g¼¤KpGŽÿVd7›36 †¡ºé>ç†e!Î!œ@ h) K™GîÒÍeèØ<±êoÄš­èàì°/Cd%O%:v®ç,Hß¶$;?G×¼=Y"KFÈ֢겋ª¹Q:úXµqÆÒ ƒœ”±Ï76 l‡ì.�‡@ý�‡¯À“°.r™4¢žÅCÈØfØžox =ÔÈXF·¡CÆEÓe½CBusXæ „œð¢fEœu$˜&÷Ð}ǃ#ó&Ø eLtð+ Í ¬# BÜcÏÓ6lÕÓÊÉfÿœ#!±îÀ.¦S¦ºœâ :SjÄ¡�"¶à,¨D•ÛKæÈ“†*—ŽÐ2›43krUÅÊÑA÷Ѥ¹{´0íˆýŠÿTvŸ§ýð¢öÚ×öö*õ“ÐÐ�à×ÌÞ{¢5?¨‹¨Pl­Ö#¨`V¾€ã_ºP«xh‘K/ÔÁØÅ4s)X»·s¦�°ŸâE€PEýåEsJ±&%Ëb\zÃe{á×9ÖŸ!伌Eò, BÍùÅúÁŸÙ>^iç\ŽçkÞûX9·xN]wÎ –y“…^ã§Ý³‹½ýý‹“S.ðý3NÖ0ðNÒÞÉÉÅ™)å½ÕêâêÙµÍéµ³ H›''›ëlî?ùäæîýû›'ïÞÝÜþð‡7ßwçuœ¦×_}óƒ?øƒ›_'ÿÃ7nöüóÏ'ÿ³?û³ÉS/LÌïŒ4Žá�á�á�á�á�á�á�á�á�á�á�á�á�á�á�á�á�á�á�á�á�á�á�á�á�á�á�á�á�á�á�á�á�á�á�ÿ<À Âq    ¼—=ÀòÞ�ø�øÈ�ýØ��|å+_©åÍïe‡Œº                                                                                                                                                                                                     |W<ðÏv9Gk<Ï6�IEND®B`‚kubernetes-sigs-kind-49aeee6/site/tools.go000066400000000000000000000015001524365506300207130ustar00rootroot00000000000000//go:build tools // +build tools /* Copyright The Kubernetes Authors. 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 site is used to track binary dependencies with go modules // https://github.com/golang/go/wiki/Modules#how-can-i-track-tool-dependencies-for-a-module // Namely: hugo package site import ( _ "github.com/gohugoio/hugo" )