From bcfbc5365da5b7fe32213accb1242e882c489cf1 Mon Sep 17 00:00:00 2001 From: Jhony Avella Date: Tue, 2 May 2023 10:33:51 -0500 Subject: [PATCH] feat: only the readme is present in gh-pages branch --- .../add-depr-ticket-to-depr-board.yml | 19 - .../workflows/add-remove-label-on-comment.yml | 20 - .github/workflows/commitlint.yml | 10 - .github/workflows/self-assign-issue.yml | 12 - .gitignore | 8 - LICENSE | 661 ------------------ catalog-info.yaml | 13 - harmony-chart/.helmignore | 25 - harmony-chart/Chart.lock | 18 - harmony-chart/Chart.yaml | 44 -- harmony-chart/charts/cert-manager-v1.11.0.tgz | Bin 66038 -> 0 bytes harmony-chart/charts/elasticsearch-7.17.3.tgz | Bin 27893 -> 0 bytes harmony-chart/charts/ingress-nginx-4.4.2.tgz | Bin 45268 -> 0 bytes harmony-chart/charts/metrics-server-3.8.4.tgz | Bin 6853 -> 0 bytes .../charts/vertical-pod-autoscaler-6.0.3.tgz | Bin 34080 -> 0 bytes harmony-chart/templates/NOTES.txt | 42 -- harmony-chart/templates/_helpers.tpl | 62 -- harmony-chart/templates/echo.yaml | 58 -- .../templates/elasticsearch/secrets.yaml | 20 - harmony-chart/templates/issuer.yaml | 19 - .../tests/example-test-not-used.yamlX | 15 - harmony-chart/values.yaml | 79 --- infra-example/k8s-cluster/main.tf | 55 -- infra-example/main.tf | 94 --- tutor-contrib-harmony-plugin/.gitignore | 7 - tutor-contrib-harmony-plugin/MANIFEST.in | 2 - tutor-contrib-harmony-plugin/README.rst | 5 - tutor-contrib-harmony-plugin/setup.py | 59 -- .../tutor_k8s_harmony_plugin/__about__.py | 1 - .../tutor_k8s_harmony_plugin/__init__.py | 0 .../tutor_k8s_harmony_plugin/commands.py | 44 -- .../tutor_k8s_harmony_plugin/elasticsearch.py | 70 -- .../patches/k8s-services | 34 - .../patches/openedx-common-settings | 10 - ...penedx-dockerfile-post-python-requirements | 7 - .../tutor_k8s_harmony_plugin/plugin.py | 57 -- values-example.yaml | 15 - values-minikube.yaml | 3 - 38 files changed, 1588 deletions(-) delete mode 100644 .github/workflows/add-depr-ticket-to-depr-board.yml delete mode 100644 .github/workflows/add-remove-label-on-comment.yml delete mode 100644 .github/workflows/commitlint.yml delete mode 100644 .github/workflows/self-assign-issue.yml delete mode 100644 .gitignore delete mode 100644 LICENSE delete mode 100644 catalog-info.yaml delete mode 100644 harmony-chart/.helmignore delete mode 100644 harmony-chart/Chart.lock delete mode 100644 harmony-chart/Chart.yaml delete mode 100644 harmony-chart/charts/cert-manager-v1.11.0.tgz delete mode 100644 harmony-chart/charts/elasticsearch-7.17.3.tgz delete mode 100644 harmony-chart/charts/ingress-nginx-4.4.2.tgz delete mode 100644 harmony-chart/charts/metrics-server-3.8.4.tgz delete mode 100644 harmony-chart/charts/vertical-pod-autoscaler-6.0.3.tgz delete mode 100644 harmony-chart/templates/NOTES.txt delete mode 100644 harmony-chart/templates/_helpers.tpl delete mode 100644 harmony-chart/templates/echo.yaml delete mode 100644 harmony-chart/templates/elasticsearch/secrets.yaml delete mode 100644 harmony-chart/templates/issuer.yaml delete mode 100644 harmony-chart/templates/tests/example-test-not-used.yamlX delete mode 100644 harmony-chart/values.yaml delete mode 100644 infra-example/k8s-cluster/main.tf delete mode 100644 infra-example/main.tf delete mode 100644 tutor-contrib-harmony-plugin/.gitignore delete mode 100644 tutor-contrib-harmony-plugin/MANIFEST.in delete mode 100644 tutor-contrib-harmony-plugin/README.rst delete mode 100644 tutor-contrib-harmony-plugin/setup.py delete mode 100644 tutor-contrib-harmony-plugin/tutor_k8s_harmony_plugin/__about__.py delete mode 100644 tutor-contrib-harmony-plugin/tutor_k8s_harmony_plugin/__init__.py delete mode 100644 tutor-contrib-harmony-plugin/tutor_k8s_harmony_plugin/commands.py delete mode 100644 tutor-contrib-harmony-plugin/tutor_k8s_harmony_plugin/elasticsearch.py delete mode 100644 tutor-contrib-harmony-plugin/tutor_k8s_harmony_plugin/patches/k8s-services delete mode 100644 tutor-contrib-harmony-plugin/tutor_k8s_harmony_plugin/patches/openedx-common-settings delete mode 100644 tutor-contrib-harmony-plugin/tutor_k8s_harmony_plugin/patches/openedx-dockerfile-post-python-requirements delete mode 100644 tutor-contrib-harmony-plugin/tutor_k8s_harmony_plugin/plugin.py delete mode 100644 values-example.yaml delete mode 100644 values-minikube.yaml diff --git a/.github/workflows/add-depr-ticket-to-depr-board.yml b/.github/workflows/add-depr-ticket-to-depr-board.yml deleted file mode 100644 index 250e394..0000000 --- a/.github/workflows/add-depr-ticket-to-depr-board.yml +++ /dev/null @@ -1,19 +0,0 @@ -# Run the workflow that adds new tickets that are either: -# - labelled "DEPR" -# - title starts with "[DEPR]" -# - body starts with "Proposal Date" (this is the first template field) -# to the org-wide DEPR project board - -name: Add newly created DEPR issues to the DEPR project board - -on: - issues: - types: [opened] - -jobs: - routeissue: - uses: openedx/.github/.github/workflows/add-depr-ticket-to-depr-board.yml@master - secrets: - GITHUB_APP_ID: ${{ secrets.GRAPHQL_AUTH_APP_ID }} - GITHUB_APP_PRIVATE_KEY: ${{ secrets.GRAPHQL_AUTH_APP_PEM }} - SLACK_BOT_TOKEN: ${{ secrets.SLACK_ISSUE_BOT_TOKEN }} diff --git a/.github/workflows/add-remove-label-on-comment.yml b/.github/workflows/add-remove-label-on-comment.yml deleted file mode 100644 index 0f369db..0000000 --- a/.github/workflows/add-remove-label-on-comment.yml +++ /dev/null @@ -1,20 +0,0 @@ -# This workflow runs when a comment is made on the ticket -# If the comment starts with "label: " it tries to apply -# the label indicated in rest of comment. -# If the comment starts with "remove label: ", it tries -# to remove the indicated label. -# Note: Labels are allowed to have spaces and this script does -# not parse spaces (as often a space is legitimate), so the command -# "label: really long lots of words label" will apply the -# label "really long lots of words label" - -name: Allows for the adding and removing of labels via comment - -on: - issue_comment: - types: [created] - -jobs: - add_remove_labels: - uses: openedx/.github/.github/workflows/add-remove-label-on-comment.yml@master - diff --git a/.github/workflows/commitlint.yml b/.github/workflows/commitlint.yml deleted file mode 100644 index fec11d6..0000000 --- a/.github/workflows/commitlint.yml +++ /dev/null @@ -1,10 +0,0 @@ -# Run commitlint on the commit messages in a pull request. - -name: Lint Commit Messages - -on: - - pull_request - -jobs: - commitlint: - uses: openedx/.github/.github/workflows/commitlint.yml@master diff --git a/.github/workflows/self-assign-issue.yml b/.github/workflows/self-assign-issue.yml deleted file mode 100644 index 37522fd..0000000 --- a/.github/workflows/self-assign-issue.yml +++ /dev/null @@ -1,12 +0,0 @@ -# This workflow runs when a comment is made on the ticket -# If the comment starts with "assign me" it assigns the author to the -# ticket (case insensitive) - -name: Assign comment author to ticket if they say "assign me" -on: - issue_comment: - types: [created] - -jobs: - self_assign_by_comment: - uses: openedx/.github/.github/workflows/self-assign-issue.yml@master diff --git a/.gitignore b/.gitignore deleted file mode 100644 index 261a82e..0000000 --- a/.gitignore +++ /dev/null @@ -1,8 +0,0 @@ -.DS_Store -infra-*/kubeconfig -infra-*/terraform.tfstate -infra-*/terraform.tfstate* -infra-*/.terraform* -infra-*/secrets.auto.tfvars -my-notes -values.yaml diff --git a/LICENSE b/LICENSE deleted file mode 100644 index bae94e1..0000000 --- a/LICENSE +++ /dev/null @@ -1,661 +0,0 @@ - GNU AFFERO GENERAL PUBLIC LICENSE - Version 3, 19 November 2007 - - Copyright (C) 2007 Free Software Foundation, Inc. - Everyone is permitted to copy and distribute verbatim copies - of this license document, but changing it is not allowed. - - Preamble - - The GNU Affero General Public License is a free, copyleft license for -software and other kinds of works, specifically designed to ensure -cooperation with the community in the case of network server software. - - The licenses for most software and other practical works are designed -to take away your freedom to share and change the works. By contrast, -our General Public Licenses are intended to guarantee your freedom to -share and change all versions of a program--to make sure it remains free -software for all its users. - - When we speak of free software, we are referring to freedom, not -price. Our General Public Licenses are designed to make sure that you -have the freedom to distribute copies of free software (and charge for -them if you wish), that you receive source code or can get it if you -want it, that you can change the software or use pieces of it in new -free programs, and that you know you can do these things. - - Developers that use our General Public Licenses protect your rights -with two steps: (1) assert copyright on the software, and (2) offer -you this License which gives you legal permission to copy, distribute -and/or modify the software. - - A secondary benefit of defending all users' freedom is that -improvements made in alternate versions of the program, if they -receive widespread use, become available for other developers to -incorporate. Many developers of free software are heartened and -encouraged by the resulting cooperation. However, in the case of -software used on network servers, this result may fail to come about. -The GNU General Public License permits making a modified version and -letting the public access it on a server without ever releasing its -source code to the public. - - The GNU Affero General Public License is designed specifically to -ensure that, in such cases, the modified source code becomes available -to the community. It requires the operator of a network server to -provide the source code of the modified version running there to the -users of that server. Therefore, public use of a modified version, on -a publicly accessible server, gives the public access to the source -code of the modified version. - - An older license, called the Affero General Public License and -published by Affero, was designed to accomplish similar goals. This is -a different license, not a version of the Affero GPL, but Affero has -released a new version of the Affero GPL which permits relicensing under -this license. - - The precise terms and conditions for copying, distribution and -modification follow. - - TERMS AND CONDITIONS - - 0. Definitions. - - "This License" refers to version 3 of the GNU Affero General Public License. - - "Copyright" also means copyright-like laws that apply to other kinds of -works, such as semiconductor masks. - - "The Program" refers to any copyrightable work licensed under this -License. Each licensee is addressed as "you". "Licensees" and -"recipients" may be individuals or organizations. - - To "modify" a work means to copy from or adapt all or part of the work -in a fashion requiring copyright permission, other than the making of an -exact copy. The resulting work is called a "modified version" of the -earlier work or a work "based on" the earlier work. - - A "covered work" means either the unmodified Program or a work based -on the Program. - - To "propagate" a work means to do anything with it that, without -permission, would make you directly or secondarily liable for -infringement under applicable copyright law, except executing it on a -computer or modifying a private copy. Propagation includes copying, -distribution (with or without modification), making available to the -public, and in some countries other activities as well. - - To "convey" a work means any kind of propagation that enables other -parties to make or receive copies. Mere interaction with a user through -a computer network, with no transfer of a copy, is not conveying. - - An interactive user interface displays "Appropriate Legal Notices" -to the extent that it includes a convenient and prominently visible -feature that (1) displays an appropriate copyright notice, and (2) -tells the user that there is no warranty for the work (except to the -extent that warranties are provided), that licensees may convey the -work under this License, and how to view a copy of this License. If -the interface presents a list of user commands or options, such as a -menu, a prominent item in the list meets this criterion. - - 1. Source Code. - - The "source code" for a work means the preferred form of the work -for making modifications to it. "Object code" means any non-source -form of a work. - - A "Standard Interface" means an interface that either is an official -standard defined by a recognized standards body, or, in the case of -interfaces specified for a particular programming language, one that -is widely used among developers working in that language. - - The "System Libraries" of an executable work include anything, other -than the work as a whole, that (a) is included in the normal form of -packaging a Major Component, but which is not part of that Major -Component, and (b) serves only to enable use of the work with that -Major Component, or to implement a Standard Interface for which an -implementation is available to the public in source code form. A -"Major Component", in this context, means a major essential component -(kernel, window system, and so on) of the specific operating system -(if any) on which the executable work runs, or a compiler used to -produce the work, or an object code interpreter used to run it. - - The "Corresponding Source" for a work in object code form means all -the source code needed to generate, install, and (for an executable -work) run the object code and to modify the work, including scripts to -control those activities. However, it does not include the work's -System Libraries, or general-purpose tools or generally available free -programs which are used unmodified in performing those activities but -which are not part of the work. For example, Corresponding Source -includes interface definition files associated with source files for -the work, and the source code for shared libraries and dynamically -linked subprograms that the work is specifically designed to require, -such as by intimate data communication or control flow between those -subprograms and other parts of the work. - - The Corresponding Source need not include anything that users -can regenerate automatically from other parts of the Corresponding -Source. - - The Corresponding Source for a work in source code form is that -same work. - - 2. Basic Permissions. - - All rights granted under this License are granted for the term of -copyright on the Program, and are irrevocable provided the stated -conditions are met. This License explicitly affirms your unlimited -permission to run the unmodified Program. The output from running a -covered work is covered by this License only if the output, given its -content, constitutes a covered work. This License acknowledges your -rights of fair use or other equivalent, as provided by copyright law. - - You may make, run and propagate covered works that you do not -convey, without conditions so long as your license otherwise remains -in force. You may convey covered works to others for the sole purpose -of having them make modifications exclusively for you, or provide you -with facilities for running those works, provided that you comply with -the terms of this License in conveying all material for which you do -not control copyright. Those thus making or running the covered works -for you must do so exclusively on your behalf, under your direction -and control, on terms that prohibit them from making any copies of -your copyrighted material outside their relationship with you. - - Conveying under any other circumstances is permitted solely under -the conditions stated below. Sublicensing is not allowed; section 10 -makes it unnecessary. - - 3. Protecting Users' Legal Rights From Anti-Circumvention Law. - - No covered work shall be deemed part of an effective technological -measure under any applicable law fulfilling obligations under article -11 of the WIPO copyright treaty adopted on 20 December 1996, or -similar laws prohibiting or restricting circumvention of such -measures. - - When you convey a covered work, you waive any legal power to forbid -circumvention of technological measures to the extent such circumvention -is effected by exercising rights under this License with respect to -the covered work, and you disclaim any intention to limit operation or -modification of the work as a means of enforcing, against the work's -users, your or third parties' legal rights to forbid circumvention of -technological measures. - - 4. Conveying Verbatim Copies. - - You may convey verbatim copies of the Program's source code as you -receive it, in any medium, provided that you conspicuously and -appropriately publish on each copy an appropriate copyright notice; -keep intact all notices stating that this License and any -non-permissive terms added in accord with section 7 apply to the code; -keep intact all notices of the absence of any warranty; and give all -recipients a copy of this License along with the Program. - - You may charge any price or no price for each copy that you convey, -and you may offer support or warranty protection for a fee. - - 5. Conveying Modified Source Versions. - - You may convey a work based on the Program, or the modifications to -produce it from the Program, in the form of source code under the -terms of section 4, provided that you also meet all of these conditions: - - a) The work must carry prominent notices stating that you modified - it, and giving a relevant date. - - b) The work must carry prominent notices stating that it is - released under this License and any conditions added under section - 7. This requirement modifies the requirement in section 4 to - "keep intact all notices". - - c) You must license the entire work, as a whole, under this - License to anyone who comes into possession of a copy. This - License will therefore apply, along with any applicable section 7 - additional terms, to the whole of the work, and all its parts, - regardless of how they are packaged. This License gives no - permission to license the work in any other way, but it does not - invalidate such permission if you have separately received it. - - d) If the work has interactive user interfaces, each must display - Appropriate Legal Notices; however, if the Program has interactive - interfaces that do not display Appropriate Legal Notices, your - work need not make them do so. - - A compilation of a covered work with other separate and independent -works, which are not by their nature extensions of the covered work, -and which are not combined with it such as to form a larger program, -in or on a volume of a storage or distribution medium, is called an -"aggregate" if the compilation and its resulting copyright are not -used to limit the access or legal rights of the compilation's users -beyond what the individual works permit. Inclusion of a covered work -in an aggregate does not cause this License to apply to the other -parts of the aggregate. - - 6. Conveying Non-Source Forms. - - You may convey a covered work in object code form under the terms -of sections 4 and 5, provided that you also convey the -machine-readable Corresponding Source under the terms of this License, -in one of these ways: - - a) Convey the object code in, or embodied in, a physical product - (including a physical distribution medium), accompanied by the - Corresponding Source fixed on a durable physical medium - customarily used for software interchange. - - b) Convey the object code in, or embodied in, a physical product - (including a physical distribution medium), accompanied by a - written offer, valid for at least three years and valid for as - long as you offer spare parts or customer support for that product - model, to give anyone who possesses the object code either (1) a - copy of the Corresponding Source for all the software in the - product that is covered by this License, on a durable physical - medium customarily used for software interchange, for a price no - more than your reasonable cost of physically performing this - conveying of source, or (2) access to copy the - Corresponding Source from a network server at no charge. - - c) Convey individual copies of the object code with a copy of the - written offer to provide the Corresponding Source. This - alternative is allowed only occasionally and noncommercially, and - only if you received the object code with such an offer, in accord - with subsection 6b. - - d) Convey the object code by offering access from a designated - place (gratis or for a charge), and offer equivalent access to the - Corresponding Source in the same way through the same place at no - further charge. You need not require recipients to copy the - Corresponding Source along with the object code. If the place to - copy the object code is a network server, the Corresponding Source - may be on a different server (operated by you or a third party) - that supports equivalent copying facilities, provided you maintain - clear directions next to the object code saying where to find the - Corresponding Source. Regardless of what server hosts the - Corresponding Source, you remain obligated to ensure that it is - available for as long as needed to satisfy these requirements. - - e) Convey the object code using peer-to-peer transmission, provided - you inform other peers where the object code and Corresponding - Source of the work are being offered to the general public at no - charge under subsection 6d. - - A separable portion of the object code, whose source code is excluded -from the Corresponding Source as a System Library, need not be -included in conveying the object code work. - - A "User Product" is either (1) a "consumer product", which means any -tangible personal property which is normally used for personal, family, -or household purposes, or (2) anything designed or sold for incorporation -into a dwelling. In determining whether a product is a consumer product, -doubtful cases shall be resolved in favor of coverage. For a particular -product received by a particular user, "normally used" refers to a -typical or common use of that class of product, regardless of the status -of the particular user or of the way in which the particular user -actually uses, or expects or is expected to use, the product. A product -is a consumer product regardless of whether the product has substantial -commercial, industrial or non-consumer uses, unless such uses represent -the only significant mode of use of the product. - - "Installation Information" for a User Product means any methods, -procedures, authorization keys, or other information required to install -and execute modified versions of a covered work in that User Product from -a modified version of its Corresponding Source. The information must -suffice to ensure that the continued functioning of the modified object -code is in no case prevented or interfered with solely because -modification has been made. - - If you convey an object code work under this section in, or with, or -specifically for use in, a User Product, and the conveying occurs as -part of a transaction in which the right of possession and use of the -User Product is transferred to the recipient in perpetuity or for a -fixed term (regardless of how the transaction is characterized), the -Corresponding Source conveyed under this section must be accompanied -by the Installation Information. But this requirement does not apply -if neither you nor any third party retains the ability to install -modified object code on the User Product (for example, the work has -been installed in ROM). - - The requirement to provide Installation Information does not include a -requirement to continue to provide support service, warranty, or updates -for a work that has been modified or installed by the recipient, or for -the User Product in which it has been modified or installed. Access to a -network may be denied when the modification itself materially and -adversely affects the operation of the network or violates the rules and -protocols for communication across the network. - - Corresponding Source conveyed, and Installation Information provided, -in accord with this section must be in a format that is publicly -documented (and with an implementation available to the public in -source code form), and must require no special password or key for -unpacking, reading or copying. - - 7. Additional Terms. - - "Additional permissions" are terms that supplement the terms of this -License by making exceptions from one or more of its conditions. -Additional permissions that are applicable to the entire Program shall -be treated as though they were included in this License, to the extent -that they are valid under applicable law. If additional permissions -apply only to part of the Program, that part may be used separately -under those permissions, but the entire Program remains governed by -this License without regard to the additional permissions. - - When you convey a copy of a covered work, you may at your option -remove any additional permissions from that copy, or from any part of -it. (Additional permissions may be written to require their own -removal in certain cases when you modify the work.) You may place -additional permissions on material, added by you to a covered work, -for which you have or can give appropriate copyright permission. - - Notwithstanding any other provision of this License, for material you -add to a covered work, you may (if authorized by the copyright holders of -that material) supplement the terms of this License with terms: - - a) Disclaiming warranty or limiting liability differently from the - terms of sections 15 and 16 of this License; or - - b) Requiring preservation of specified reasonable legal notices or - author attributions in that material or in the Appropriate Legal - Notices displayed by works containing it; or - - c) Prohibiting misrepresentation of the origin of that material, or - requiring that modified versions of such material be marked in - reasonable ways as different from the original version; or - - d) Limiting the use for publicity purposes of names of licensors or - authors of the material; or - - e) Declining to grant rights under trademark law for use of some - trade names, trademarks, or service marks; or - - f) Requiring indemnification of licensors and authors of that - material by anyone who conveys the material (or modified versions of - it) with contractual assumptions of liability to the recipient, for - any liability that these contractual assumptions directly impose on - those licensors and authors. - - All other non-permissive additional terms are considered "further -restrictions" within the meaning of section 10. If the Program as you -received it, or any part of it, contains a notice stating that it is -governed by this License along with a term that is a further -restriction, you may remove that term. If a license document contains -a further restriction but permits relicensing or conveying under this -License, you may add to a covered work material governed by the terms -of that license document, provided that the further restriction does -not survive such relicensing or conveying. - - If you add terms to a covered work in accord with this section, you -must place, in the relevant source files, a statement of the -additional terms that apply to those files, or a notice indicating -where to find the applicable terms. - - Additional terms, permissive or non-permissive, may be stated in the -form of a separately written license, or stated as exceptions; -the above requirements apply either way. - - 8. Termination. - - You may not propagate or modify a covered work except as expressly -provided under this License. Any attempt otherwise to propagate or -modify it is void, and will automatically terminate your rights under -this License (including any patent licenses granted under the third -paragraph of section 11). - - However, if you cease all violation of this License, then your -license from a particular copyright holder is reinstated (a) -provisionally, unless and until the copyright holder explicitly and -finally terminates your license, and (b) permanently, if the copyright -holder fails to notify you of the violation by some reasonable means -prior to 60 days after the cessation. - - Moreover, your license from a particular copyright holder is -reinstated permanently if the copyright holder notifies you of the -violation by some reasonable means, this is the first time you have -received notice of violation of this License (for any work) from that -copyright holder, and you cure the violation prior to 30 days after -your receipt of the notice. - - Termination of your rights under this section does not terminate the -licenses of parties who have received copies or rights from you under -this License. If your rights have been terminated and not permanently -reinstated, you do not qualify to receive new licenses for the same -material under section 10. - - 9. Acceptance Not Required for Having Copies. - - You are not required to accept this License in order to receive or -run a copy of the Program. Ancillary propagation of a covered work -occurring solely as a consequence of using peer-to-peer transmission -to receive a copy likewise does not require acceptance. However, -nothing other than this License grants you permission to propagate or -modify any covered work. These actions infringe copyright if you do -not accept this License. Therefore, by modifying or propagating a -covered work, you indicate your acceptance of this License to do so. - - 10. Automatic Licensing of Downstream Recipients. - - Each time you convey a covered work, the recipient automatically -receives a license from the original licensors, to run, modify and -propagate that work, subject to this License. You are not responsible -for enforcing compliance by third parties with this License. - - An "entity transaction" is a transaction transferring control of an -organization, or substantially all assets of one, or subdividing an -organization, or merging organizations. If propagation of a covered -work results from an entity transaction, each party to that -transaction who receives a copy of the work also receives whatever -licenses to the work the party's predecessor in interest had or could -give under the previous paragraph, plus a right to possession of the -Corresponding Source of the work from the predecessor in interest, if -the predecessor has it or can get it with reasonable efforts. - - You may not impose any further restrictions on the exercise of the -rights granted or affirmed under this License. For example, you may -not impose a license fee, royalty, or other charge for exercise of -rights granted under this License, and you may not initiate litigation -(including a cross-claim or counterclaim in a lawsuit) alleging that -any patent claim is infringed by making, using, selling, offering for -sale, or importing the Program or any portion of it. - - 11. Patents. - - A "contributor" is a copyright holder who authorizes use under this -License of the Program or a work on which the Program is based. The -work thus licensed is called the contributor's "contributor version". - - A contributor's "essential patent claims" are all patent claims -owned or controlled by the contributor, whether already acquired or -hereafter acquired, that would be infringed by some manner, permitted -by this License, of making, using, or selling its contributor version, -but do not include claims that would be infringed only as a -consequence of further modification of the contributor version. For -purposes of this definition, "control" includes the right to grant -patent sublicenses in a manner consistent with the requirements of -this License. - - Each contributor grants you a non-exclusive, worldwide, royalty-free -patent license under the contributor's essential patent claims, to -make, use, sell, offer for sale, import and otherwise run, modify and -propagate the contents of its contributor version. - - In the following three paragraphs, a "patent license" is any express -agreement or commitment, however denominated, not to enforce a patent -(such as an express permission to practice a patent or covenant not to -sue for patent infringement). To "grant" such a patent license to a -party means to make such an agreement or commitment not to enforce a -patent against the party. - - If you convey a covered work, knowingly relying on a patent license, -and the Corresponding Source of the work is not available for anyone -to copy, free of charge and under the terms of this License, through a -publicly available network server or other readily accessible means, -then you must either (1) cause the Corresponding Source to be so -available, or (2) arrange to deprive yourself of the benefit of the -patent license for this particular work, or (3) arrange, in a manner -consistent with the requirements of this License, to extend the patent -license to downstream recipients. "Knowingly relying" means you have -actual knowledge that, but for the patent license, your conveying the -covered work in a country, or your recipient's use of the covered work -in a country, would infringe one or more identifiable patents in that -country that you have reason to believe are valid. - - If, pursuant to or in connection with a single transaction or -arrangement, you convey, or propagate by procuring conveyance of, a -covered work, and grant a patent license to some of the parties -receiving the covered work authorizing them to use, propagate, modify -or convey a specific copy of the covered work, then the patent license -you grant is automatically extended to all recipients of the covered -work and works based on it. - - A patent license is "discriminatory" if it does not include within -the scope of its coverage, prohibits the exercise of, or is -conditioned on the non-exercise of one or more of the rights that are -specifically granted under this License. You may not convey a covered -work if you are a party to an arrangement with a third party that is -in the business of distributing software, under which you make payment -to the third party based on the extent of your activity of conveying -the work, and under which the third party grants, to any of the -parties who would receive the covered work from you, a discriminatory -patent license (a) in connection with copies of the covered work -conveyed by you (or copies made from those copies), or (b) primarily -for and in connection with specific products or compilations that -contain the covered work, unless you entered into that arrangement, -or that patent license was granted, prior to 28 March 2007. - - Nothing in this License shall be construed as excluding or limiting -any implied license or other defenses to infringement that may -otherwise be available to you under applicable patent law. - - 12. No Surrender of Others' Freedom. - - If conditions are imposed on you (whether by court order, agreement or -otherwise) that contradict the conditions of this License, they do not -excuse you from the conditions of this License. If you cannot convey a -covered work so as to satisfy simultaneously your obligations under this -License and any other pertinent obligations, then as a consequence you may -not convey it at all. For example, if you agree to terms that obligate you -to collect a royalty for further conveying from those to whom you convey -the Program, the only way you could satisfy both those terms and this -License would be to refrain entirely from conveying the Program. - - 13. Remote Network Interaction; Use with the GNU General Public License. - - Notwithstanding any other provision of this License, if you modify the -Program, your modified version must prominently offer all users -interacting with it remotely through a computer network (if your version -supports such interaction) an opportunity to receive the Corresponding -Source of your version by providing access to the Corresponding Source -from a network server at no charge, through some standard or customary -means of facilitating copying of software. This Corresponding Source -shall include the Corresponding Source for any work covered by version 3 -of the GNU General Public License that is incorporated pursuant to the -following paragraph. - - Notwithstanding any other provision of this License, you have -permission to link or combine any covered work with a work licensed -under version 3 of the GNU General Public License into a single -combined work, and to convey the resulting work. The terms of this -License will continue to apply to the part which is the covered work, -but the work with which it is combined will remain governed by version -3 of the GNU General Public License. - - 14. Revised Versions of this License. - - The Free Software Foundation may publish revised and/or new versions of -the GNU Affero General Public License from time to time. Such new versions -will be similar in spirit to the present version, but may differ in detail to -address new problems or concerns. - - Each version is given a distinguishing version number. If the -Program specifies that a certain numbered version of the GNU Affero General -Public License "or any later version" applies to it, you have the -option of following the terms and conditions either of that numbered -version or of any later version published by the Free Software -Foundation. If the Program does not specify a version number of the -GNU Affero General Public License, you may choose any version ever published -by the Free Software Foundation. - - If the Program specifies that a proxy can decide which future -versions of the GNU Affero General Public License can be used, that proxy's -public statement of acceptance of a version permanently authorizes you -to choose that version for the Program. - - Later license versions may give you additional or different -permissions. However, no additional obligations are imposed on any -author or copyright holder as a result of your choosing to follow a -later version. - - 15. Disclaimer of Warranty. - - THERE IS NO WARRANTY FOR THE PROGRAM, TO THE EXTENT PERMITTED BY -APPLICABLE LAW. EXCEPT WHEN OTHERWISE STATED IN WRITING THE COPYRIGHT -HOLDERS AND/OR OTHER PARTIES PROVIDE THE PROGRAM "AS IS" WITHOUT WARRANTY -OF ANY KIND, EITHER EXPRESSED OR IMPLIED, INCLUDING, BUT NOT LIMITED TO, -THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR -PURPOSE. THE ENTIRE RISK AS TO THE QUALITY AND PERFORMANCE OF THE PROGRAM -IS WITH YOU. SHOULD THE PROGRAM PROVE DEFECTIVE, YOU ASSUME THE COST OF -ALL NECESSARY SERVICING, REPAIR OR CORRECTION. - - 16. Limitation of Liability. - - IN NO EVENT UNLESS REQUIRED BY APPLICABLE LAW OR AGREED TO IN WRITING -WILL ANY COPYRIGHT HOLDER, OR ANY OTHER PARTY WHO MODIFIES AND/OR CONVEYS -THE PROGRAM AS PERMITTED ABOVE, BE LIABLE TO YOU FOR DAMAGES, INCLUDING ANY -GENERAL, SPECIAL, INCIDENTAL OR CONSEQUENTIAL DAMAGES ARISING OUT OF THE -USE OR INABILITY TO USE THE PROGRAM (INCLUDING BUT NOT LIMITED TO LOSS OF -DATA OR DATA BEING RENDERED INACCURATE OR LOSSES SUSTAINED BY YOU OR THIRD -PARTIES OR A FAILURE OF THE PROGRAM TO OPERATE WITH ANY OTHER PROGRAMS), -EVEN IF SUCH HOLDER OR OTHER PARTY HAS BEEN ADVISED OF THE POSSIBILITY OF -SUCH DAMAGES. - - 17. Interpretation of Sections 15 and 16. - - If the disclaimer of warranty and limitation of liability provided -above cannot be given local legal effect according to their terms, -reviewing courts shall apply local law that most closely approximates -an absolute waiver of all civil liability in connection with the -Program, unless a warranty or assumption of liability accompanies a -copy of the Program in return for a fee. - - END OF TERMS AND CONDITIONS - - How to Apply These Terms to Your New Programs - - If you develop a new program, and you want it to be of the greatest -possible use to the public, the best way to achieve this is to make it -free software which everyone can redistribute and change under these terms. - - To do so, attach the following notices to the program. It is safest -to attach them to the start of each source file to most effectively -state the exclusion of warranty; and each file should have at least -the "copyright" line and a pointer to where the full notice is found. - - - Copyright (C) - - This program is free software: you can redistribute it and/or modify - it under the terms of the GNU Affero General Public License as published by - the Free Software Foundation, either version 3 of the License, or - (at your option) any later version. - - This program is distributed in the hope that it will be useful, - but WITHOUT ANY WARRANTY; without even the implied warranty of - MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the - GNU Affero General Public License for more details. - - You should have received a copy of the GNU Affero General Public License - along with this program. If not, see . - -Also add information on how to contact you by electronic and paper mail. - - If your software can interact with users remotely through a computer -network, you should also make sure that it provides a way for users to -get its source. For example, if your program is a web application, its -interface could display a "Source" link that leads users to an archive -of the code. There are many ways you could offer source, and different -solutions will be better for different programs; see section 13 for the -specific requirements. - - You should also get your employer (if you work as a programmer) or school, -if any, to sign a "copyright disclaimer" for the program, if necessary. -For more information on this, and how to apply and follow the GNU AGPL, see -. \ No newline at end of file diff --git a/catalog-info.yaml b/catalog-info.yaml deleted file mode 100644 index a34dc85..0000000 --- a/catalog-info.yaml +++ /dev/null @@ -1,13 +0,0 @@ -apiVersion: backstage.io/v1alpha1 -kind: Component -metadata: - name: 'openedx-k8s-harmony' - description: "A Prototype Helm Chart for deploying multiple Open edX instances (via Tutor) onto a cluster." - links: - - url: "https://github.com/openedx/openedx-k8s-harmony" - title: "Source Code" - icon: "Code" -spec: - owner: group:openedx-k8s-harmony-maintainers - type: 'source-code' - lifecycle: 'experimental' diff --git a/harmony-chart/.helmignore b/harmony-chart/.helmignore deleted file mode 100644 index daea33f..0000000 --- a/harmony-chart/.helmignore +++ /dev/null @@ -1,25 +0,0 @@ -# Patterns to ignore when building packages. -# This supports shell glob matching, relative path matching, and -# negation (prefixed with !). Only one pattern per line. -.DS_Store -# Common VCS dirs -.git/ -.gitignore -.bzr/ -.bzrignore -.hg/ -.hgignore -.svn/ -# Common backup files -*.swp -*.bak -*.tmp -*.orig -*~ -# Various IDEs -.project -.idea/ -*.tmproj -.vscode/ -# Example files -*.yamlX \ No newline at end of file diff --git a/harmony-chart/Chart.lock b/harmony-chart/Chart.lock deleted file mode 100644 index 6614621..0000000 --- a/harmony-chart/Chart.lock +++ /dev/null @@ -1,18 +0,0 @@ -dependencies: -- name: ingress-nginx - repository: https://kubernetes.github.io/ingress-nginx - version: 4.4.2 -- name: cert-manager - repository: https://charts.jetstack.io - version: v1.11.0 -- name: elasticsearch - repository: https://helm.elastic.co - version: 7.17.3 -- name: metrics-server - repository: https://kubernetes-sigs.github.io/metrics-server/ - version: 3.8.4 -- name: vertical-pod-autoscaler - repository: https://cowboysysop.github.io/charts/ - version: 6.0.3 -digest: sha256:4915c21724a8c4693f749aab2c311336990b48e16e90884d7b9ceca42eef69f8 -generated: "2023-04-13T23:07:43.616994532-05:00" diff --git a/harmony-chart/Chart.yaml b/harmony-chart/Chart.yaml deleted file mode 100644 index 165f759..0000000 --- a/harmony-chart/Chart.yaml +++ /dev/null @@ -1,44 +0,0 @@ -apiVersion: v2 -name: harmony-chart -description: A Helm chart for deploying multiple Open edX instances onto Kubernetes using Tutor -type: application -# This is the chart version. This version number should be incremented each time you make changes to the chart and its -# templates, including the app version. -# Versions are expected to follow Semantic Versioning (https://semver.org/) -version: 0.1.0 -# This is the version number of the application being deployed. This version number should be incremented each time you -# make changes to the application. Versions are not expected to follow Semantic Versioning. They should reflect the -# version the application is using. It is recommended to use it with quotes. -# -# In our case, this represents the version of Tutor that this chart is compatible with. -appVersion: "14.1.1" - -dependencies: -# This is just info for the "helm dependency update" command, which will update the ./charts/ directory when run, using -# this information. -- name: ingress-nginx - version: "4.4.2" - repository: https://kubernetes.github.io/ingress-nginx - condition: ingress-nginx.enabled - -- name: cert-manager - version: "1.11.0" - repository: https://charts.jetstack.io - condition: cert-manager.enabled - -- name: elasticsearch - version: "7.17.3" - condition: elasticsearch.enabled - repository: https://helm.elastic.co - -- name: metrics-server - version: "~3.8.3" - repository: https://kubernetes-sigs.github.io/metrics-server/ - alias: metricsserver - condition: metricsserver.enabled - -- name: vertical-pod-autoscaler - version: "~6.0.3" - repository: https://cowboysysop.github.io/charts/ - alias: vpa - condition: vpa.enabled diff --git a/harmony-chart/charts/cert-manager-v1.11.0.tgz b/harmony-chart/charts/cert-manager-v1.11.0.tgz deleted file mode 100644 index be629685808a10491417a640f3dd80b381aeff93..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 66038 zcmV)IK)k;niwG0|00000|0w_~VMtOiV@ORlOnEsqVl!4SWK%V1T2nbTPgYhoO;>Dc zVQyr3R8em|NM&qo0PMZ%b{jXcFuH&9DRAWd9ojh}b+ep=duG0^NKQr*ThWr_%* zBd{AJG3o|709rDW$-A6qIZt*Ls(@~E^VXy&$4(kqD;7yy3x&F&P!%y{dMOoj%+%iL zgeudY(lq&xZI=E0{ry)jU&6op`}_5O4_>}H{Evf|N5`KZzdZW+6O0Er6|FQq*vFeNaL<$u`8fv%{de9++D#J%KGLwAR=W;JoOtFMf%?4y=L=(++ zW-Dnv7T>bzfc(2d2q7ab#!O|33o{@G`-l6dUmu%nvjpAb5JKR4!=m zJKXOz9koBs#vPjR@0rqEiUGMl=+G<+KK2g|`um-j=}7U+z?UcFk1R<^WX}p2Nkzih zbS5%o ze*ESB7cXD!$FIIT-amZxQqh+ol2Gdz$k#oc_Q3{OI7gM*m;#AAH`@{|`}~kux@;d144|{tQLycb<`(3D<;cLdpM} zynWLfNtIG#SWHGdVYb256DCNOCkYp0!c#hC8v0OdR1ySB zo0MR7ATIY}8RL1b8XaguS0O0 z%REW0aY6&~w|~H>Jx8f_TwB`>PI{*U72ePxOJD&s%aSSlkt9ShN06Y>CGc1xq+!HN zs3FEeJeEw`?+A@!k`(=z2`ihENHJ=+BAyDG@`xtMlnkd($*xYxBwJ)NAs zeSJEiNy5aKUCZR2sXyM_T<#y7V_oQokm|nHr2^Pl<*{dvX1oVqJ)=>|`t{oP2mMB) z+Uesah7&$zR_@^uHS9WL(c|VfXKJ(kM>0*NKnxm?pMHiR4WsEl5$R%fk4W|%$R;!) znc`A$GbK?%b>-NMaPO;|m&w?!*ta^hjV=(Mt)QodG#Y?thFCTrM&%5?ct%dfW5vc6 zHm6Ch4O3Ur9sF;L!$)FAT&yh98_~#~S!L_>?U`SCUIVB_5!1Ryb2Aa}{~!14%=VrI zz4oA2m>TsH3+LsgZWk-#YZm2py_YiK(G*w6ge6?@fPk2b@~CDfS$3jQsmkWh$Tc$n z$$O@TQd?llQI%wpD=Nm!e!Wk6(-tw(+FUYQj47y6tF~Cx(9{p&Mr2XpPjLWT3n1B5Yk-RDkNd{yicgG zyp#Qq)5P(LaLxr>{7PWtGe+Zt3pOAxt1Ahh$VilMCX6O}BJ(6h6sWBbu)uDs=Fp6a zI2?y2euw=s%V`)jy=02Zct8%0b*ICHHZ)02uggJGcQJ zokgAw?O7XHwG(-l8`9%)G+}XWN2Ho`GbJs>zt|1 zvr=&EldquF4u#poRUhGCVgEE(q71X9!%RWo2W4q5$GYXl`UmjgxJ? zyz6LbX^ZK1BFFFD6fXjf=T1~*44NeJL4*7YxHIB{S?xk0%z&*$p5qNIT?dln^qI~x z!bdPgjq(7T^eNWPbsg?<saCv^ zcT9K*HJGpkfOT9;7@y%>L`}VdvAR3YLrvf3Yv%{E@60Vo{=8u^|1e5P`xJ~1XDf5M!zpk)H|RT zep*JlX<1P&<{JK_YRHYEY8tBbyRe_^Jx#NO?G|_hn#5xyiHl&R7@}E z>-V4ShSOB8O|NK!@O&-q0i31jIE^DfCpFUlm?17@ zY$cma#xuQUG7juHl|h>H?8tNHnP<8Ur@eyr%=Wurl2%}JvbEl|T;7T@}Z0GZe9;i7_&5qE2cyH)j|JY z-*$6*3TDnr8J}HT-&SLVIC-=Ryj$Q+$022X+7i6a+b@ z?&0bT42+~lb`JXR-%k0>7k&6|r_&KKX4hcxk;)#vDqWCzV3~CO-s;onmQ%6W&;o$J|{(gVIf3Ta#h$a)Mff2Fy8HdF2?6$A&akHzh_a7_EOgjd-F%*hN)Bszx7B;O*DD^KC_1c z9UzJy?ay~?Iv^t{`$MYWl32-vg;fZVnFWAU19C2^zu;}!p!#Lc+59@isvUj(@Oxuq z!qB+4Y?WTw@xHEC8b1 z*M@g~FlE2-{?%#F8Q4dr{VM%u3g zW3j)Sieob3iapRI@plxtW$BHg8CYZ+u(MsqIxxHD(lqciD_>?FXks9kXCerV1f`jvfuUfLsbGC8um@yd z2|%@Gp)FwZF)q==V!kn8^KQMqj;D6MC1CU3-{$srF`mmbY`5u>3R|4V_cY=0@|oN( ztul8mn_02_oV*De==YY4*j^x-v0xK2Ys0>zW&-d6;liI$yn~!e>gDiXEHcH-UsXSK zLx%?85g-5lcUGhB8R`;H`fWTHY<<^b4Gv?fR23?I* zbe3a{6<0Y5MV1q0M(qAIhz7EoF->1q0>S@eT6J71Mh`UYz2OhgHbBz3B|G*DHlNNV6f>- zj^|C}c+Giqs#-HnW1&eYP~hG9no;AHDM+ru8aB&6SLtfaoVrn0B`uv}`*g0Kj_Eh{ zjwp{+Bj<=k?h(x#B>Z6W{KVGvk9eeq#2g=qwY(&r!cPKE#X?t!V%vku^2c14&vlk; zer5h7m*%x=^KD<8&%Zif>o7VTUetTdNW0Oke6#!WO6QGl&;bGsdw+zwy;Ws<8>;rU z745C6*Lls1;tEm$f3A@JPPcB|{cbJBB-py)2=k9BDX( z{vtSsAlT*tF7lyA7{N+KU2=X&PS4M-U|VUNa*c!>0f1;?d$6l@dyF9C@H}I}3N!MuduD(6K zfFBXnOz(!ImEd;b{`rgZXoB}xmTY=|w0_C4ZosbKUGy%|VMx;WE1FOd*{=pwmr0FI z(oTCTCTvlmRHVwoAkn1_CsNlIJhV#AbDOK=mW(({V(?^RG)9MCSGDh-?G;qq?v0z` zYk@at9=jZdkjye|?j9z2EVVtk3M+j0-JPd*N*F1bmbM3;eU-@Q&VK>Co5yNE_Td6; ze-DLtR_Vf`o-X^yfVOu)+6g!Gy(~v~3d2=EF&f#f zkjPtNHR9mq46jX#PU>EhMZMp9>3K`$r;pjfae6||YgjR3<=Dt3QGxRZFiQmEwU&w2 zGVzgFCN?r4tm9l+V1GlK#xHN2pi#;+Jc%A`N@L0{J`9Zs#%pQJd>Z533=CB!&uGS@ z35)J9oCCa`%A__u_wtCK0z07w9(c|;*L0o{CgMz5-i9)0WYyV1i0HeAi^Ui`%@XE( z8jupu(7*Oia@g})HC2q@nSs}_Oiwz`h}EJai^od72YZdEi#VB#T@-^%$srvk(^5Yd z8t=K#&Nl5lE6f`>kdI9Pi0~&l>}v2HBHvl6`oP^QE(aUDO-tz%ZcVI;-+4yjocR;~ zCpjd7-81DLdRs9Z9)lE?8=$Yjf~IAN2lk#D3%qN_){0L9fh+c2zC3t|vJ}eS{Z4JW zXBE0NG^#r4{HD~Z4|shDsMobik4)muKFxU7YbvE%-+&yX*wmhuA&u_j zX!M4s+%m=RYwDWL&(46@T3~&jF1US(!QST!Nq%p2G0E4dtiJ#F$1!5 zurvE3zWC~8PK3kP`aSpw#3L@nE_{MJSQfK*8w=Z>zF6=1N%TaMtX2>|UiEGbv2VdX zZApVO$p=#1Ow!6z8|rLj(430uQAkn_LqK#t1swU89FnWAPEJ9ky1c%u1c$1=NO9zQ z1@T%$zIw+y^M2oqf<38j`VlIp8)>H~Q_fNUKGIEn;;Z$?kkSTf^e-Ju?-MK)U80E2 zw|DW~&FkyFd2hBc#;W+g2Zsl>_>aejFJHFtA3sE?sM0_EMEV#5`lMvaKmSZ7RFffN zq72~T{0S}5oc>>(&bc5`#rWcN$i@)bMdv<@iHj)Uv~&#Z!dw^{W=Nh9T8lFy6~VvC z*b2`pkq(9~5Dba|-5@w^Pa8Uh$VVJ{c+u~4-a`B=fpIIrB^H&tn2+FLm;q%`TP}l* z&?y!C0%{JkX~#ue8p&LMcZkfD6@>GY2_)!)PG@O2z$o<2-RpF|ma0CvnUO2oWXWVD zIt4skvYXWjVhAF+c3};}fRBdWS&1=$n}2jbx^>s&Jw4&+ZD+0J-sC`Dn!7lbv4K851%5jgve@p}%}H2Q11ezzM$6q*(^j?|1&p zuy?3$>=Eo;&li(agPjn_QN zCGk-K4*z2T5?^Owg+?$-blKB?!omi>Z@w+TJe{dhyI%TN7~l*W7jvzAyY>Vjm%xbZ z{4d@6UwWt38;-jUqAdEmfs_Jhw2(1~Q4QNzLZjm9vH)w|#SGVt9Y+F1wZoK5eLT0N2;2i>oq6!|$H`M87F zNpWWJAu(D-OvUx$?V8997Z$=~<_P3Bu)Nkvanpo6L+FPa=weA;?jasdicGSW4ixZHU z9r|UdNF6>+)taTv8qt%*I}>U;%g5PJ^I4Q%1%I>o^UocB zmkMx)TIDe>x1v7}2ZAGjIj;I)9v`SgjQk&(Cd=xDJ@iM*T-x&2@3UA zfd6K~QlA|F`iZ%Ya!4XJVTyI;xJKG)_&>P2(R;^7$6qusM>@4Fpa!9>3+Mdr(k2!f zo$$xnuKd!L+|9}Y`+q4|^-9rW)5L%)?tedjb@Zxg|35rv^Z$LIvRM50VU2-;mca*U zmg&9wgARrj3|_~j%+Qz`Iw-PtR*2?Y&49q+3vyRfnk+c6u9frqK<|?*TR2>0sCh9g zmrizN>oRC&$Vo1od@#RF5H&MY;vF68l@sx7vrqm_1Q)TD|6gLiwjSsRbGB~oBSmaB z<97tcEys=KkK#CxmB53Loq7Wnv7l>+aEjldq(jB*ax=h<@TO_bre1#6RN*u(>bdmJIg%!c7jzdb^M!8B9^sT z2#7hG;Kb&c^p$0kIhif(ltP_igB`CuPAMDBeYLXDwg-cDzhb_>}j4{@IRLe1@xzLh{9*yh}N;UqJikee}J4VJngUw$+@!HdgV< z_#jZk|8rLT>l->IKmSaE5qD~9tiY{U$z|ZAJs%IDTEBGWu69DzSPyC=&FXeOb!WA0 zkMw%?zYj)TT6^vq7GZleIq2-L_dWlfDw!=;_YKv1K20PHu%w5D z%S2=gGEuG`8LIbUSO52jgA03DF>;Z7vdOqcO?wz)(T%#G^};b%?{p}I`zJE9P3F*( zgZ&1>F>ybrtP*L;<#%WQyf}IL`ug(Z^mXvN3*i5C5IM&eFyUUYQT==O%Ozyx@RCf4 zdJUJp=oMUbH491ZGB6!Ja#u=AOQlKqd}%AQST=+3iBs8P_Tkf#@s}~5WkdT1Q-KUn zBS^_tb#wEUjJWh|H*XLbMecROxOlSpq2jr zpC8ukKcBy9?LQx+G_wE9mwaXtsfSI_JQQSLuNaZkkVaMum`KHc#Dvs$U*J{1!F)r~ zTpg$8T9fJQw{91L=$V5~kI;-mW-dJ-f9v8SuUP8jN&Uqu$B!xh7HJsIlas?f+gF~A!L?aZvb?iL#7GG9I(qdPj;90yVP#E$xTtq zeU_C*^ncTfUsqPp|HD@=YxMu%^OuLM{Qp79hoJu`e(v2L44I*x;$PNVZ%pui>%@M} zO_Pg=Ra{i`A{Lcbj+TS_It<$o%e_qEoKfNtT_cv@~(i zETi^wITedjjTWXb5?FOAjryCvvbp`uxi8Orq^=+?`RWi}ZVjhl953>>e~>c$GDayI zRg)n=481h7x|~U-z89;~xqRxtn!EV0{4LG8_?e}dnVxawK4wZ{bUgQ2vq&-HKE(1t zJWv&%T%LF5hu6n1&o57_UtFG_m0v(av3Hs&AK5Ko1JZq)Yjb6PL1-!}#;gduo^mlD zF0TW@DB;Ct&E9a4zpr!#9i51&?MvsGi$h2grx$N!+>u7%Y73qHGIGjl{tsf~qXd9e z{$GbLU)K5m@ymmj|9^<`2>uU<;k>vXrSY|#|8dqnOIJdB-%c$~$Id@G)!Qjo#Rm#; zzdNhn-*(2#?Cg@AglqWsftqLnb!x-R>lazYR=Z^POf2jX@z4I1Lt+X0SGK74BHfMi zWC$^H-pFN66!#jj61qj(v3xF-`4yT#p`7}>8E3rVTwSIo9yQ$0Rl~CPh6zZEzhqF% zS>(S0S8Kl6%6q-uFK9FR%@dLjZ7-_XiaxMO$hMnno&q#{M$qYlc&87{NwzL}K8mvq za0-3~GfvV=eS+#vKEG|$_B`?#d8b{bw)+117g$BCXQ;j)nMK_t$iIy7y#yh+zM>i) z+7x+tD*Y3PtsA9rAZ_o#yR-gSK6`U;aJ0@edJzOUtIp*bxbfqrarF5d0Ygd^bFqpi z!4B)%FHRq?N-0Yg23&p(7%X5t4a9>@R#gn+1d)Fr4e2~1V?~9jg{o)D=i7sazYx3E z?o;)&ySQ&D%?O7#S#wBI=}ff&Sz5|2S3lWkiPJC4cQ;_T^*w9vYTEK2jqE>eliefn zO)NpH?*CuCI*O z`2&*bDz^7Z?>Ej+S2+^b0H4%ehXpV57xf&lr+Ke4ikBxSdPCp!?*^TP8+y2y3qB1) zTtxp>tRH#nUzTO`|KRA=@zFuu{(t=PxQ+k)K}wCZyO0s5S7*9T#pl@s17jRm0Y}7&-8sYzTRkJ+6j>!4S!qVH z{5|m)rTGu1CYxC{wZ*RCpF+NLjMUy({@ot}sah_0B`w@PNs9|HN zf*ex4%KSQn=tu@R$kBILmwd~c_U;c{2Ra|lc_pI_HF=rzhXlDHE)`@zKb1+Iipo>S ze`zW3iBTWh_aiB=nf}}Ve*WKmh-CcxohwG;>CTIPxLU!B8=M>b9(;?5!?aPD{(j@( zQl>Q>vzhU(>(lU$R0rf>t!Wf5t9(L_8=f+4XqpAx#7swuXXssUTCa#{08Q~xu?#cW z__QdNVKRjo?;bEj4A(@0@<<-2_9rMVLLygV)|Jr9Ph#w{VUg)Qb1ecSlW81hHqWZ zrauFAM5*9w#eT@SVsZ5?T@N0_R}PQGm@vgs(fGDs;=En_tF?c1>r;;8Dp_S z0*sj!Vw+3WFtVV=$@f9QVM_Y|S&mW!YV4BFHuMN*4Fm@v{a=18V#F1VTQfw`9tb0d}Bi`hL(_B0>&sEQ`su*l?! z?a_?)V6p;FUK&3ucD-8z-(0#xJabwKYs;dL;$U-^6>Ns+T)n=&DKmeB6sJ5%C9o}^ zxENU~WowRtG23ZnSq>~*XrK46c#2+Ju+_nG^XA&t67G^?!DcKx&Sk+oKm#(I z8aB5|%rzY*-h}Zjn>xK?4yT)o1FylZr-@X)t0EyDW>XUE0k_b{1-)Za04k=@v#YHq zXM)&%p9yI`^OV)~?*KQkopK%4EJN{|~CRnMi%-u5ZlKB!k zGE7x41SEKFIM5OFhhoa72wk*GOHLV@wtbM2uNk$Rd9B0aupAG}g*4;@CJp33iV8qb zYKEw1PPX*%Qi@2@Wo-u+A5=5XGN~M8rAZP}R!tIq$H*IIx|+Pk+-Gn=KuMBtSiQzp zA<1RVao0Vdio*kEz_({lDXDy-wC}8{w%v2`9wlB!#@vl`vptyG6y?f7a{(QQoSqZ| zmH0ZEWl{*XU6N-~kkH|-N@D;-)EJg#0OR6>LXTs9&&2F_VFJzK9G6I3JnS{$+Ej!jRJvDIfMGa+NbQdJJltY~k~Ks>1Q;D`k90?cVQ z;o3;WBTQ`_#7tL=YAG;zpHsoSV6UxIe`9G%(Jvgb2Qr~5MsdhU^2h7L<5!mKjb%c` zc<=ol94xtKWz~LNIuA<&)=q%*F?;V7V*n`E zB%`2{6?DUPjk6PhgV!8{w;B_0^f^t9X31!mK-$Teg>@E9*KI!?%6o=WM~MtNwTBT+ zZ^4W{`z+11`Rp?|e4>{@pzvKX1O#&hj1wU>D=pK8Q1qxa-JQ}>)b z>^(?z$Hlm3@w$hYqv0M%?>&QmmJ#wsYtQ^VPpt~vNNnj|R@(Suk2*A_ULbr%HX$-M zS#C5*^ThBhVSO^&kC3I!-P2;L5D11L)?=3Ndk{844c*(v`sC{{wXWr`R;nz;O8e*8 z^$h__z2;+qd3=G~hfK!0P=Ig-xCC zi$=kWM|TLJ5m(yGSI`5UC;`f4_`L(Ele;IhZgY3Ut{8~g!{JRzc2=hsi_oLNkx1$L zH%yGpWI$fc=g)I&LXGg}vS{Z~$LI2x$Dso2DV^2vfMlbJRY@dVCdRMm%x=nP2=Mva zlj$y@j)ghWqFwTTm)hC#Rzm%^kt2F8y1!pQT%R#W;{|5~J;iss8)T!ABXVmJ-G_?d z`kq*ZUcx^b%EpaFmrsjlG~ySlc*Q5gCswW(33xN!fOi@GU|aFXA5{v8*6VD+(y4AY z<_g5uX}7x`HFr7Ei$=RM6y3wo>ODTCdhdS!uun7I57Mpor5f)Q^VsQ=??f`incg23 z{cG}^_gSA@eSJ#4I6gjp0an<;ys=QRS`FjSwA&2S=NH$nPv2d=o^J{DPyR~lOvsGE z${Sj13ae;vp)}J9Gu}(fjP3(#@r)te8^R+*^ zdoABW7XlI(3hkc8GPPoirQfzQQhi!Vta@d8h1~x!>R;$lQQmY_%#d&|N=4Q1Wobp~ zsi#Vz?_Hu9D=F#Rr2m!40Fl^R4tc5+oi36e>vfj!nB>1)+0P4}r-l3vqe3R7Ge3P?Vil?-p5i$HB)xQz>+wGIa*h?Dkp33_MzPvAneGqGcB!E4!FWrrHC& zytD_pJUed!F0#{A)PRbA|ftD|kQV>Jg^7w>(l(%aI``wjK7QTKBMJlo zx@blLdPL{L0s>21JAGM?U?BBg?j%^2%3kmh8A|VGK}GDIa(Z_)#Yn?v7mp3?=B7h6h{h&Yc+`A3IPnY>H;n8U# z^Z3P65Su1$-eu{{OlrM`rxPyd2JOCKDy3qBhVQPwvFHMjZQ6VywPEpJrNI0NkK5nE zdJFgK&hhyPnFopu@j1NXFb#=ZW%jNI!d(~D+x%U4aTz>SAT)SH53v`hF4*zzd}cg#bP1sP4!fBO%e$&fk=ZZgAEo?m6|u0eYr!(YQhemV#5AhZ!lGO0*LmKDY%Li z@@icwH$`}t;z=n@v?PMDc>8oUvW#PMCGQ(4#|b0Aem)Tm&t=uwvXb^_#`?!f2e9j+ zcuVYsY5~g-*ueR>Q{iBA$HYua_l_IUtBi7yGBc4eKJUUr zc$$oX@f0Z#ELN5=`SsHG-5Y|Lv?Q-3dA|~pN01Oa{yMif%Ecq6Wt5;jl-1H6%8elP zD?XG8yF?0zvgC9Dupb~7_8fc&`GkTqyCmY-#_NhK$gc5qO@qTx zeXnwH^7gfF8wL-YI5`1DEcfO{c?Q9}!wqGKxlbO!YZ4 zBYa>lqdhmHy%!%jafLlu6wS6;);rN<#~Tn;d!WxRiwK)if#JM}pdyM8>=;7E@-g>% z-$f~~`0TgVZ6rjPhbK<90tN$^F!;uq(a$gMUln88GwojcG7%*blQI(hLrxVVL)dep z$#d2plfNDA?;i}};TMC!!9QO7fB)})5scJWM)|Bq|6Gqwtb6~Y`M6O?zXj0mTJYao zpMOKjuzrPDR)h`%pwB?Nk9j*mDg|Ne_SR0PcKdyM3m01W+qZ0LPnZ2pF&Ea|QsW|= zCdN>QU!O-*vmO_k3C-=^zZj6)+dsZNIemL}e0y7Xj=b1)Utj<6h{)R zRPoL6!Qt)gTGphscET-h!&3m;@GYC7N5$M-zz{qOz|6IW=x*({@X1l|@$P#!LD(cy zhOu*zC;a<#0FlozF`7ZD?Lwdxu3F)05u|>t!j;SoJ3iX<3Gbh;$rbkS3Fw-Njhi@y zZ1V8++f@-<%QDN2Ps%Qea62QZ>SmoFIfjP7r%bprTI)c&`0Rpld&+R9Fm@F%8>!%5 z=O_(^CzLKu_kp4?NVcZr@*i{D`Y3a$(d0*I1PA z(+AzBDg99jh|8hlyWU8u-dOJ4AMCl{Mojg_IgeQp)yAF(9pCjQCQY7|zB9dGCQriL zgKd4(RohKLNQ+Hcy2n2Jb(SYdal~BUu{+!}j2;A^3j4!M)WNyf(&9-|JZU9?RuWhQ zsb8riKq?+=oB3io;$;C-SoFbr%t-~HIRZkUcd00(2dgm_!TDlHnwCg;muHT|0IZ#? z@`h_uy2|OVKp7x3<0PU<@+2w`iVmAtkdp^G)h=BgbNy6qasrwRvHPmb;z<@G7w0Hi zvXm>Cpid(Hb#is#JPsjGnA^wdwo|S1lzA>uavAnMOL)Yq85sgd?A2MO4;Clf@v1Nw z%MZgBCihfv2qC#XKYAK(!^&Ddv^ddn_nED0xqHjq7eVS*%H1E>a3ba1y0`b)^&>Y0jMsbG4NGcNea&ax0N+i-iXtg<_4!);8D2)U^Xszc>^F{P z+{Z(a(Ik@69FFUg2x&e+~Ci-rvF+h z5;H@2qJ4s`T9R3yZMzl#I!{amjD@Vj(=36&b+89rO=214#ph;}?tQPM9zDq8sP0)W z7k5HFh#n>v9zcZa2HlMx@f-{+QkUoMH5gdv=e+Gi%(?vT`UYMyc?`Ow(?rrZOjNu8 z^&E1Qy%ulhTz=x>Nn0IK%5gvp z2lDNA37n{I=_=pdDwHe-{6*s!yI{_>K*m8P^h|2ahZvWAZcJ_oI!hc;6}y1nc+KsI z(d}n_7s=nst+y`%y>w>mltmLNxK2NKB;_$R?14`0j6fq>liyoB{RX=L8h{C+`M4*T zv2qJ35-g*+AJQqxm?heiW#Vc=8bA@+CCk{%I6#kPys!CK`{d0p`jzqB83}VC7Rw6K z_m#vUp+h?ncY@|8JumjilOG&}YsiMGIGnHqvwkDZC3|GZCiI@m9AlB&tsNH`Z$`Pv zn>a>4;e!xd_XbqyG}lI^9&VKY`P5~9H8KRcdn{;=U-g0D#A<;)4!dp83(rFXQEzP! z*+L5;=yGjUYTeg}R54+d_D$g2{WCoLb>N|57DBsKcp{v&uL{ubSF2b-37D&u51bvQ zoa9_)4ZVgm%k}$C=a@nW7>4hol$$IKaEH>$dVxZ}=p@sO_aKw{o~;RHyS-=B7z*hW zdPeqK%eA!jWqAv#WknW)C0n&~>DTXMMttr+;M=ix^%-VcQ_Vvzd^;@0?1-{=QQtj@9KJ0cEpObt<=2 z+(cXo7f7=pHG^wio}@BINo`!cOLQJhEFleW=kKDB7ad%@Ulk+^@gqiF+RCMh0JsItxPFZO&RR!)4f?Xa^=B>n&n6ZiC)zi!UdL|)zDsU|B7R}( zz;qdX0^}+eL9VaA@3;foFWI|0?0?_EoX}_)>605-7`r2>LRI3q#~;+?{=RdKBE#Qz z5ZC<#UhFy)DO~iNwK$pjjLLuC`TGuej!)H*hQ9z@bZ%uUqF&*g|NJ|!cwc$a_2NUKf}81P8~R z9Ybbnsvrm2sr{{2{uWB2%1K8~ynyLoinD-Az!P)SQ?yK(nK*5<3X!5En)N|4mX(}+ z#bL&PDOS+Io}E7AY=c&mDI~^k6ooXMV0W>iGbHll5wYDE>2teLF~z%)f&xa1R{cw( z{)eYY3;9!XY6QUA_#9n2ks8zFqUi$!WjG?R`@~Q+W{`cakombVOl68$9l1z9miSki z&c19nWR83dyZmR2`^091ejX@c?x4EyEwV$}JBw!8{bh04o3ji1h+6ZMoEe5(GV(Wy!Sm z$_|wiO=Oly|31A~>~sBsJWQl!P|bdF`VLxXVn^a2Ml5WobFZ*_j2R5n3REv70(E7pKhrvRje$)-!Jen6 zk+<)zZ%C9ds*-7O6+tHQVULf9N9_PtVYXj87mF-c7S@oZ(omD@U3iiM$~*MKb*S6w z99#-Ud1Ch|kz(vkZFLl;5nO~4ZXnGcw|Z|aL#n5?B|6)KrI@8&kx%vSZBfOn9Ir|( zxkr4m*t}a(`rYu25nMbS*ySD084o8JE*HE@0?rx1dl);+ZpjJ}Rk#}=Ov8;tz50$A-?v%81APz*drYnK zko&kZSTq~h{r=3O#DKiF%#mV{I(AZ^!QBt{87DXx6`l`Oe4D^f#3th+E|}xTJLVfv(Decd8dMW^_FjTLl)-Z253SgK=Ajf zfxMbEy9+~h?dEqaUGI9WtKf)F;(p^6e8bW#p-uc6X24dQe-At3`YJ-76%Vk{)KdXc z;VIx67arI3v~5Ek4NrRnsZB#iUgHmDhbW-7L<$LFz1Q)AVf~>2sKzEfrk0nyNOqt ztm}om*6rbD7kngK?>fz9(({*4t2yw|I4+$+y;BF^yW7DkvNs13*%VOZk?tJT!Pgd> z)^VZnr2_0Xfe%d!=b6&{ZfL37B(Jfw3cM$DhO-quHwtwZE;Lh^%fLv&O+`dmNW#FK z!fKF(qh;>m#Y9s4D;K2_U$SKkYMY=%_O6(DZ)~+9)TdI)!KYdiN)84GB&At~wo>!J zSm17deu?R=>Z@Oi(=_*VlJPc}Y$oH)7%Yf)zj5wrf!A`@rRCG%tn&!IMe<)SwfE&0 z=BmGbAX}AdL;7Ylx|-f|nU96s;CbPPAwLcb zk2n(Nqq^xmlW|wWtED(ktN;;7p^dWAh5j(uzZo!Wv3PQ_5l~1SFlX>#$TW0XfI0+B z>5k&ywjOmLkAV?+6r8ZNdwqHa@1d`Yb)6%|vnV%>V-?iPjQH)q=k0+w36M+N z56&JZ0qmYuQ^WNL2}H3G?0sg%SG>$FZcm2O$}_uRZv0!}BE=BwC-i&IWde@zV2e^D zm8#GUg6`3Yx@^WZNu@R=1pR%G?WTB0f(a?KAv#ZOrw@#eCr0lQ-e>*NmRNS1GVgxj z@4Et2L&xEi38TsLLSJzP(A~nZxW1Qj!L>`6iTW>g!ETuw3llrX;goO#6cc>vC@YRWt&33=hl+ zA5T0isgw7sd$9i5BOAN~sF$@~2GmPU2z05kN~{X@-!PRHPy`gghu%)QPF?s5+y=5w zo&%C`)760RJ(<1elM^EH;>;}@K**wh*OAK?SM;^viXTPpu&nPwUoSle0VblRj`j08 zL0E6t!Q)7`@58TR^FC(clf!Y<#dBw-(p^HemJtWBxHyp2Q;e|K6f4MfFoSFft_1Eq zt7PeMz0E*5;TpUes?e?w`Qa3P?P{m?JO;RA3zV)bkD_^HS&Dc8DBPpb0wv*1lys&p zZ%%;lb?7+@DGn_g^OY4tCU0EK5?g6qo5F;>V{k6b_ca{bJaKYzV%xTD+qP}nwv!Xv z#))~wwyh`k|Mz}>KkS}fyK1Vt_UxMK>0WD3;a`%b;XC(v)zn;_Gu5}-K5u8U4bCj} zZ$N@`z`vswV~sk$JMZF^&0OtcK}hAmLLXtubLcC1{H+BA8L!h!R00QdTN*K zn<t`@meR1co zjt}Szl^q6a=p>pXGvf~}f4p?p-1LYJQ`FZ|rO^S=AhFQ$~1gDG?)j2g~O*KIN}z(2eM0Gn7RpD{%bSc z>+(ptXZddRz2EMjn{RTBXC@0}nmyDVr|y5XsKkIHqmm;JI(GJ;jpQVS6iuO6(1p0< zG#utML&*tJ)r=St1~!XUWiIVlgTfUqKNmi!jV;9v2iy$}%lf#hwe>sLM*+!!2l0R_ z@EKJhPOdhIq+e}QvK!>y!M^{3`^SVXa>Yv33Ahb+A?OqcoJ8)S8txkkP3?}XYupg8 zCihJSGCZth?JVzNqYAp@b(mb4yC6gOfctwp*B{nntRq&qGkX`&8@VN@J@;h*)KEu& zcp`a9F_b#H+rqnpJvh*9Mn__%jImp0fPgo%GT1)YB^?3h+&q3^)Ou>G8#Szy*C?Zs zW~WehlWQ1@q?KFx4;ZwzxJ0Pg++{dy)ps+$R>w$IU8eX6GBe#zkhL^5%Ki)ePs2(> zaEUj`>NRED^(ZEo5uMhB?D$${OqYPnLQ5NIqbNc9+o%OLLi#o!bXbFatusEB(YIF5 zddG9Shrx3D*C)i*FPZWYpT}J!3?2@c*l&2HQ@f|(Irsx`(BOcV1QJEU3qv>9>AgwH zp@Gq+7k5sh$}n-#@$e{jgeLA_zS}e*6>;zRe_@qUYwI+c?iuR4k$C{4!poC?JcfW_ zy@iL3`^lC?9eJ_Ol)aWq`TVo5cqWz*D4-G;%;1d22rlBvH3$K8(@BgN(v2nx>v!Lz z#a$f&AR4VLjBqc8m0#?~GaX%3TLaXsReRP7{TWfUdD#i^)*JHTE!Nb3w3vS-USh+K zFT;l!XN?Fcip_ILkJ<6o<0V*c&x*9z%KdTCM;DXlNpV1)aTxA-VF>cdY7tR{Y+;&k zps)7%ojRg7dm)zF_aN3{^F_QdB7~%{WsTHo<(q--r!7vWzd{jm5X7fZ3#Wd=G)}Iz zZuxsg5%=rJ+RlKj1+q56B;=X7!4b%Ffb%@~vYXcVvLl-zm9}U)(CV+#Xen1GlX<5T zt*g9ly1=4fo4>U(*UiRESi(XJsjxM%<=Wo}TX3?xkns&Z@>=;32s46wp^c#va)mg_j$g)3K20%uB(=*F;Z0;yp>IvhXeDLsd3~rrfbzd zVDAUin6?X8uuQ5p0-An2N#>~=k2r{r+{XZrzZC_cVkL4O2?E$(>$SdEXR-Iqlk%WB zbM^03%Hx7-*%s~ElON5mBX;nUK~)zug?lk>;Z%cnm|Knv9#=k4x~nx9^U8i`q0bZ8 zA!@+vpenyfm1}!ow>t;ws)q2TJToe%0<17M@VzBeXuTD!k1s-+u*<7PozSWbcnP)A z>S4Q*$Z;7d0Zv8~+21ICoa+vGLeOswA9y|B)d^gu7z$b@)qC-TegAA(b1;t#t`{&^ z=F-|2N3$}H6#X{pi*s*l#s6I-zE($1=a@+rYE}~0DV39ypUUWnU#;TZS~O>_IO=tR z=)K1hk9tfZnKU%)d_xJ}F~B<0rA|i>7q*`vC8}tCz|Wtj#ff+-N%Lo3P~%ufw#(ZK+crdyc|)Ks-ya}(lk#!A;CkrYrMAUd?W1)+@;=OS z>nk-U!aMPv5GQ;7;sS_hl5@;TliQWJqI15!J?)zMG`{BKO-XCN{2b9dY`xKUt$N0~ z)EP-NsjQ*@E^8lrF(p4X49_PY+l!CZd%`zwrK8Tk*wOJp{;Rc)6%@G zUAn?fR_(NE?kp`?x@sxhw4np>J5P85!?)NdsMpG`(&|5=@yKu9G9zexUL&?ANxF@o z|F97J2tM6k>mr5o zXyaI$uhOJb(!%bFUnSm|u6Lq&hk?1*W3>XYla!%zQaY<|nVxd97* z%>d`I?$OCwTXXvF5_MLJYNNKg=JXwM$^Qrb=V$vbM=evcQdJwRi@rWteW=GrUj(aS z-d5gpY@0TJ23r{}jUf8a9p&)v&(wiZ93RPC%vRqf28sBvu- z{eizhDQ=Te{V_t~52R>)?D}uUuy>k9=n-Y4SD2Z6MkRX*X1@POT~ngkOow z%E|b-1dL<@nJCW?US+x+2dJx;0y25qa~Dut`<6~zS!`2l-IVYB20jO5wdhwefN;!+9ahj}FL!vlMnB&84W?L>UU>}37K$GYaL>&H2!r>?2@G{a zN#W*PWNi7_(x;kpJ->6l&k@fRpTwZn;}|%13t5p-DdYX%H<4%! z@zF!YgQ;WncM*2(xRFIT#14{*6*agB{sGb9^-?zziP9E39h!6=pcGQ1Zu=v75Y1J% z$xsFzDkQFkhIYb;_tH!|LuEx~)N<#bTlivGU#~VXSFsZlitluie0k=^s3v|p_SiAv zIR*q7toSk&xb>3!4vnLq3WIntst!Oe_iGKktec%V*7^id+CC?6%zPNf!kOb{0OEU2 zsbV&gao>^n*{}@i3VH}Lk9d#sEki~JC!un~B2G<=rW`EdE{I&cXHT_!>whj5p8HSv zYgde|a_ZGRYM#FH4g$t03Hin8v%{~pErN~MItV!$ejXyrE5 zcTZ4k31Nx2WSqw>=I4=HN`16gZ~O*Ar{6vLd6d=rdLOg1Hd2*l)f#rli*3{c=~5>s zssLJDAlm#epBf=g{=V0t$Ik zyt{_Fcb31w=7wsN=h% z9TXymBdYd`0von=dU#RY-*MI7K>6t=hRGL$OSOl)A^=_0?2qqeT{%DbDEsY*BTxn` zl^;eD%oHwe+Z7&hh9PoPMtHiP1QP7$N*@}f!(ddIBs&3J5qc+71Y%?W?nYgHNEH;( z5bWb%hG<(kK=EbR^Bk=Zci$fl0~QDp_pl0X|I$3VGPrR7337QYLs#u;j`L052+tmV z{iM~<$$B8iI#Pzs*DrG4#nk~mf*RnO)&{{kHEbSy+_JuIn-c0}CKgrDSRn$+v*h!X zTdFbemLP4`GT}n0zDjPrV`J4IO@Vo^yIY`l?nFZ^THmbRRkYir`dA)1Kg1ASe-vt1!5@ViPV9e)0S8ccvCouyE`a;D8(v>WUV_vRBpI$wj z!AArgy#Q9^J3$LHpWxch>p%db#^d7xaKXGD>S23htH66#9s01hh%Xo9<&OE@SV7Jg=i(yXf+ zjro^O2ATNa#%Vqs3-&Q^cx5(PziF5Owj#oKlQd`ZbB~R$qP?6)z?JkWf){nE1FT+&yQ+u)nTS; zm2*#jSdCCmjsXN_}z!w%njH)o){^Ac2|5sJY8K z^@R_fUZbV0SGnck2+9nkBhupRM|~6-^p-H)?0qXUW(6pmNp#bU+^6gnrt~(&25f$j z3!qr`BF!#cNZ4C(KNYfE5q)yy{rA0pxw5p!R22B?&B{#)Hp|tPq*#ZrDhpTVsxXx( zX)S215q%}`Q)NG$N{5A%xeykJbYQsB$i5^pJ>{_<26#byGvCHofrUA8#&B5nonSC7?Is&5V`e{g>>-FocQq#0 z=;!JlMwrQ#cHY_j){DP%Qj!AWB`g9Xb#13@?V{LGY7!%ET_D-j(jUOcY&RWK6BPYD zf{v{psDqYIH5L}A zvJH25hB4zNyw2C^Z3vFf9b5@_3k!)_Ya{Q=JE+U;&k|#{cUi!Ws|DwQ^e+?&h;>F8 z=T`f#8?}9!QCp6ux>O_3`z~8YO{-XKgT}*boX^gilL32z_~Tl3VHrgEpuzhHg6xs7 z((!=TA%w|^X0eAV?V+eOcav^Cg=yXH3kKxz^kHKtn#;HU5sGzVs^9Se3&EpX@;VHi zvgDXwXay!)4h`4Bds6`K12{RquJ-mWh^kh!0S}vfiKfWv`v9;jbE`Ma8)5&hX`hR& zXN5#7-|OJYA9Ase1AvO{Q4)L{G!?}WqflrO5PC*wASw8rx-<0fg;#0zikK30zbmj~ z_11BmkJs%UFo9ubl?bFlt&m;UgugwY3qk+Ssb~`c#ez?;j|U5)=7eA7O)k3kG3pUV z%*!;T?mhHvM#?!&?g(okdCKsBjp~{}o^~?gUymIqF2lt>k!U8}-vRD4a7r11aUN&* zEtb#3sL$FG0SwU550VKY<=PB)ta5PISfu6Qr9NgPm~Z-!0n%ZNY`gdNZXr;#8Rn`t zTsJp2vtcgAk^?c-+mNc#c6Ar#$i-@c9&4BV*;+vwMPZ-rsR*cXFXQ_p0a&3f4ti>uXP^4@nXx{5WNd@r(M6V01I&?1`*8H-}96 zWNYSJ_kK^@AlEw}$loX((loVpSdcMF0v8YVgTFf#ck1WKO<`J$R8bxjUD;dtu=GxM zbJtP)jnxKeZJKJbZ>NqG3l||vJFXFZXOP4!UNTp!<582?PrAE0i#f&JffUkbN; z^f2ycHXnHxKY!={Puh_h>Z!rumSi&hQBF$-isDh^XfsxlIKt2~8H`t6uc)GKw})V{iRtH)Fd?*{#F&_N;nHWw)iItgm60FH`nw`fs< zb;sU3@dx;}h*@ceTT%p$tsYS^<*RFV1dv=?vLm$1`TGbM&81taqo8@8 zuUR`lZRko$nS2M+tYL5oqeC(;`ww(J<$`EZ@<@pg$Wwwx?14n7p=*l*Kipg$Fn&@2 z%zkbG+CPArgcxjqKke(|p;~tnY@Lrip(|a`=H7?Zuj$$43xcj$z*sUi{@kAoXoLC# zZ#u4M=1f1Js)5hbjg>=K-tRp^r;#fl%c~_iFk{?3Sjt$bp=RXpe1*1+_RW%k82`xT zgtlpPnFnaV1Zw3pI*t>pCq}O ztnj3~v%(bl%+;hR15+{?Hs0y3e75!9P;nS<3O2WeV_r*_7wr}>IOjR9n-a0t5!0E$ zFy2?yF-QehASU6JkB$GdI+unQItQt}LnOV}4KS|nO}{$q_o&T`GV)WxFSd84h*Eh) zG$_ccQII_mbYcBkh^N>nYLl@qGP)I%&DGc8^+jTy@BWTs)?R%b<1^i760m!tU}7!}eHs;M zHOVi(ljfE;u2ap8l*p9`*m5bU9}>IgYJAV78V;5yJ=n2NgLAs*iW8rwgLvI|_j@qI zwBUMiY-Po(jhG7fH5>w(DQ%RpjW}DP`MR8WGC3 z6~Q$LWUI%Wh(MoEHrW)2zt&)MO>S&~dP+g1BZt<^Zw z1a$uMl*~}w@)1wel@fkOGWucsAD^4gr>_e5hyuY<2wD27%y%S7wB<4+&1S2oDDJCK z1ETfqf*j9)Nb&&#G1p5D-to4uy}_Z_UE;@w(zy~YaG#cGEsZ(4;Z(1O}oFlN7+H5@x7Ae|57#9E5oaRCzew1_HlZ<| z!ua!AHRyYwIYe2L#IgeF4dU;4MSnWaeg}UNu=3aqPn~zyE8r^Ew1)EQ-&a%4ZV(Rg z%jbw?Vbw;ZgH>-Uyt)hixYhWjwkbur)j|pg>T(oo=!$`CqaG>?69I_nf}3~xNS*@h zePuHadD)mm7b6@h%D+Y;^(R%k(TxQgqoFr({w63-RX8v!Dr#X77a<)Y5SJGWcxT!p zse4bjO>2uIWAY=1Q6ELiG1T_(@^Es#p`^2T<_ox|yRnrK$-w99LD4DTaWZK+Fy@LR zw+-P}J72qrh@qxJ6bKoQ42>VYK8vk16P&dy{MLuLiao^3hwgCEJgh9=i{_dc?)fR* zlyMea%cv)Gij0`JzJhU0<<71L3oZV|xFEYS0CJ8#M=+}hx!te|TrW=y1B7-xTyYb3 zI^G;N;Gdcz9_dvIr$GH91M;KxTqx-Q2@U=28VSo0>{?8r04L9lDS*g3Ifa{anvU~t z_IE~U`;KV`q^b|^RE)AGo#`|6+JZNrh%(cD@OKhbix|^Z&^V0n8?&#fF-n~l2IgO1 z!ec1|8|cnX3k1fasodwPl@&IF;EuccG#FuMYglqx(J3rE*d$>C6L1emS%$e+`a{vQ zWpU#7gJc-5`mpE&jf<1;|0%mn;(nA}^!yLhFPWfRXkw-~Qw@;rSAg<6#ztV?&a}vH zD6*Z+r7R8=)7QjraGQbqtNSA|k@I$c87E&L#9)u@e@P_An<%s_&C3|=^ZYJM0$ROX zYy2Q`1G1J3m{tZAJL<;D8r_Z!z?K0+mwnxiv9-BurO6|`B1+g24+IRfDZ~BsA7_PAteUrVc#JG1#3Kh4PcrRfO#&5;Lgjz$` z+COSo=nC!ThWB41%hvYKZ55Y3_?=l?$UB~LY;h)Oe^We|yP`IY@nN$oD*@jlO2df* z$+Z{g1NY7MCaZi<&fPkGWxs|PM*xtqe_r^tzdS`asmePs%H2+M2)lSLpWFR}33#4i9*2;cTms^g7O=Om~Ef%j0iGsG)?+#KA#BF?#Q zHERRh;Re?-=21i@?bchb%+#W9c1N7n{QPUP#n%PyJ1WN-* zY9L9=b4D8c>0(=q|49Lu?}ceT9jRoQMNur_q?nZY`y$y3c0CA{Fdn<6v<9&mB@YIb zMu8#~U0oeE0hlx0GLR5PWB`(XpdRjti2WqHdWy1twi~;j4GZ+x?G)S?cpK$~hfC<{ zTQA`EX&KbocizrWE7D@t7d=XO&(`JkseGk|KYjlr{eKw@X6xr1KMjTSly%bHMBRtN z5CB>cd-(9^^yYbAbO{ii$m;?Hie^smWKIRQqp;{bCp4}j}b4YNs?C|55XY(BEN?gLv^;m8)VQh!yURZCobhPV9fU$LZvRU9qmP68F`FEDq22nG|~> zw2w6L?^JizpsJ@3tYlh2`~0~yP}|7N<@2$UfpaoT=3tYesHM%w9H8rTPlT@%2RFKP zEyo2@SQFNG6`gPx(1uHjQ&4g!*lx*p35j2`Us6(9AO2*DS6~&u7Nv)j+`igp)uVT3CTqS+cwO?f zHgT#|Ir%{4z_yK$7gTz9ll^0pjVdLGHe&9nnt5rp?!ZzwT_0Ajb_3=)B1L=sUh{gs z9J3)d`0(QckL@~cIw-Q89^Oxq{=1g zqlfGrPZ^y*-p5GK*vfh@Z;lxni5%@Lw$kzv)U~3<{W3|alJa$1TP|F{m#|pk!I_c} z*NO5%Sctg+PD6E+|4nFyBFw6tymWr2dCJwoi!*UCp;#{dPlJq;+YE3KXW%4Nw+LAq zm-ME=8wmkv10~L)Ado&jIS9Y_Iao%0pfxT!(hV*uYW!l9*p&#d1g?CoO@Ga=)_>l9 zt{!h!G1p7f>{{R{$00pw735uq4g*Bse;%Ix!q#HkCrP0*w_z|&uYYRTv0XJz4o4L2 ztMx3)I;y`ZQjX5wNs|TEJ;cx^Kg=}TyVc$&H6g9G04Lf|SiawhRVzuJ*BEI=X^u9r z`U^2g>T>(NE{QsyeXf|*B64xF=TY#cK)>VLR^i0q{K5=e`KUGf;Y;-^xCo3EKo?V@ z4fDfrVV@XY067Rcad3Dlf+6m7SIc+WWgXP$=r9emwgoqfJ{|wHH@b8E}FEb zJfG;~zq>2b3>lPex16*P=?dA?1xs~ZVKTPsYH#|X_h4*TWdV7TiCVJ?e+b7F8Y4<^Bc`Kj9~7M?6jCs-d=zI6^)x`Y6O`yuBmtX zaXFiH9%ZL~(wo1?=I@TsBEOt?mmc`b$?KeS{)T^RD{uiM&xgwND!XmFQcxDu^-@Z2 zdES5o5ZaG98P5tND?;jI5K?W$*OY{PQ?CE}W6U=ma=zleA1Bbf4+d+lus+}I=SK96&r zBREfbKTc;J@9*HFHKCN{=5lPaneXf$l5PA~CoID}PQC;F!hAT_EyAa`Gw%T(s7VOe;qor+)vGM12ar;4c&jG7`4h&JU;qu$kM zVOs*ycrkUIx(N6OcX*G+EI55epdj0N03orxvG{nluH=O3SI0Eb1mTy{(_4H(HI^gp zrM#_ZE6stP>!_Bj=RL)gA+ANdHP<1RX&s&DC)6{{QF!gHjGN;74|Y5(V>M9hf)1vN z^*b-N!0m%&y*#$p_2UuspbpWHeeSKcn{OHCAK~eq*u<$+QT+YSvcZtFnXCjMZbLUc zxT4OZ;n76Gf729>`#?`GN1FCHw9pt=^6he`{f`w-{RgEU0g|a?*QqS|>J%z|gE4;eTM*}xTQ%tm zmhtb{*fr_2FDv<+C{mEFSjiW`b=&I(ot@NAO-vO5tUvlO#VhA%b+S$G3>7A z#91C2kA&s?uFZ|vAm7l&w_)CXk~n~>0Ux#H6>D(R(G=fO>v*SeNg_OB&b0duhQkWOSX2dv-RJm_5-g(U#YF=vx zd+h3&vW=t}=tg}=s*^C(#phy6&BUWCl@hSz#Id?h^$At1HL4i3_aNW6(?E$w3!JCs z@}GPLy!*5zUvV*vD+m0RfXlF{oN4`W$@N@@P(zC+Fk}9J@%@fb+7Tw&1sJQd0a=i6 z83-}#J}ahyk3}fMPj?nbY1JaYZ94UNYQvNr)*4daBND7K=aKs#dypoSi1n463tzD> z)gj4bw;bHhbRc|c25#}Zo$n>mUoOQxxh1<3B`fK%1sPw{*~i2I^(}G3#p0yo11FC3 z!rb63>NyC))N_s&jDN|?*b$u%&66Uh6gc#K508#Ra$ zpd7FV6&H*u9k$cT7K<2(HVFl#r=zaQ7Pl_|L@M0TH|r**F;QW60*ZD%*q=c=6b4G* zy-O~)ikvTQTUi_{=u*>U_$Y2gn8oy1D+}$tO#M>JVOlCp8Ve+vekTB~5wo*bWR%b9 zQEnNF?&+rnt-_B*gzS|t-=NLeLV!>&jj|2}aUlx1Z(SIrF3k7P z7Jxk$7G!0-Pk?|F_X!poYw<3Ggucerm_a9WySp<8%rz8MCLRz6^p6~EEW&ko0>npU zW2`0c2CQ?&ss-&&O=!kloLva^#<|dp5OcS_bblz_qoP*s~_Ko zR^Hd!z_;@QK^Or9RUU!QtsPBITcx_-&zz^!;5w?7`EZ5L!dD>rjxOYV4b?ZUxqx#ZscO7M6uzgesqKYbnuY+T!Gy6f8~ z9b~Xo8u4j2PQ}(MXk_O@OvC;}jh>q-=!Re=9&e zXuRAjC1Y7+s-^6Ri3}Cw>ayI(r%@h;pqci~02+NCsZ;M^5=Fyv2AxfBoP^tVVJIeE zMddc)ola|ia%BjEkTrvDIy<#nXGEZ8OQNw-nx>u{m(G%1+~ zt^l5y4ylF;`Joqc{4oBh%3}Xvy9LP4vPmDeKe;In8X`_3d!?Hb@31`c&Ew5VCZN0q z!UfhB9Qe97B)SKj?Ncrr{mvw(5|%=1-?BfF)|6CLda7S!UcN8 zG>V=DYw|-ZA929>75{gUyn8(D=L7VXt4p-)z(!!#gW|}pP-L>T)5!qS{X#daeQm(z9*so1Mf!8Ub6M|yAH6A7s zx!lt@(fL7L`e$Zky&S+-K{blwx?{jkV*EVlWF0C-Lg=YzDx7-6&x9rhv-wzDkqrX| z$zP1wt3Lj8=qu$Yo(;odH=$sZ6y80m7V-2_T3zY`xUjgxsn3O=z*F~Ow>e(xzQ3&g zJ)X0aEg7}Tj&F(v&_5?i7O>%2T~Q4rWLE}KlROcNJx|0p@p%18imux#P0<4H_7Sb_ zXtl(@DWEs$&ZZE6ceGrhQvGcXdBK%3?N4%oeBMvyWt-#`i}Kusfabos7079xz-E|f z=H0C4gCM>O=OwOzT|#M%Tex-M9inz!Q946p=vv!#j-OMX^}?6Bq@ah0nLf^Cz_IXL zNZyCb46{2o=Lp&|RfmN<@OV;?)d@MTiD-M9pS^UC;1h@E>=y>u>(HN@q)&-HK50&> z!j~uH^U8Fuk$MlGPu;4O$x))#)#*f-ChUjejLE0XEmcv^N5lvE zD9NcLw!_h{p9UUiLBJ{Zvj?3k)}arzW3lgvDP-^+jngn0hxVlgLM4 zJWM>}c6$1FbYea9h;0#iClp45@o@+l=FhCMlla^a9y@VnV@*4E=E8t9T&N4~&eeb48QZJoUCOb>Ru1pH#`b}_C3LXZ+Y9TcAYj?*YxXT zNcQyi339kDnIUAyx*!M7I{PiYG3-|*R^D@;;(fM^a*U&Uw?cU=kda3{~giNf~_#1vSQ)l1=-Xz zA&}a}4q_!?kmC)hV0Pf{OA3n;)NYfz49zv5vY0})wSoTI2H5{{2s#H1i>K%P`in%m z0^>Q5#I^+R#pDby+6Hy{J&KAbCHvRO2a%P-$hye; z2yEG;1Mu7qLIml3j9Mwt9GWPvATs%={>Nkp|C1HPcYs$#w`h0uWpwnaE0K`Od1uHa zdm!XG!r+B(Pkr;0ZA0aBM6kVSedN^83g`oSNb7wzcN?r|y$v+e88(SRC86Ap1s6KPuXfJ-GL}sOcL2I zxCMtS^f_`j74Z>1n6yi09ZUKx8>?bO18JuFlRF*ftiVwFm7M1nl)ntkehEm^d%L$kseE z$DU0;yU_dzWPXDCn$Pda8k1>}bVVW4=Kh?bho-TQFOVQa)`9+VrFf8}7HJBij3x_a zvaJRy=ujCcG|$h_2t& zP}5`8TT2u->+_|Jxv0=vK5miJ65e@FkS^N`YW#EOa~7A!>P(kD&WFC?S+(7_3gv2^d#5_h@lq;O2?8nJ0IY8%&*eu(5kSPl^!AIl!UK+Sha6nX5 ztch1T16y-*^Hpr1Kf3q{s!^YzZU>2xxf(68uaY_J8mi?q{-bWsUQVOa0l2E63FO=( zRDWt1@JoD{QAA<^cxx96$Qg?0dQ$C)Sv&snY(E(auf{ER^YLL@4K#BwYdUug!y5F= z9yIqsYQFNiWp4MNg>;ug!zSFIGKMsKW(=-wNgGQ9A{f-D-dM=PvU4>WIFgx9vXBIJKSyRL_pTAGWnBkB z+rmeTxj|4GP=4cD^uZOi(FG(};o%=5%Yl~h*6$#>dQ6}(V`7laEr;>%1xq7q&j0{5 zPd{3D<#FWBBubH(dnIZY$up{4)u*7cxK&~R>1OC^&mEQyiFpR(@q$YU5sHW|i?FlS zZzLt@rGL?BLZHdgj@Mwjy}LwR`|tjR66Vg-8UMX5Gtx%L-C*dikTFSia3xTwSF5rj zmEBV~1Z>3?j=^wnt|l}kSK`dlzXCVNUmzOeNR&1ZBC0(6OzAMSa9lSS+q%jSC;IY- zvrxqNUpM;-GBH+N;DY|t=ItpG=$klat^<1SOY?^C)(x>3=MGNTXZkUM7|Jc}xm7OBa$J%g zh`(?-q@IJV*?8e9B^mGxixpi@y641fnNnIF!zLztA4PBEgv`Y+k6fpRv47VJCd-8o z#M(y|vO-#rM==e7W0c&1OHe#OQqatb#*LHD4|wy}*5qRhSK70SYR{2K){tj{!yK}n z&G$zdzr6W(19!zjrm9aRQvzQ{R%#iIZ_ys`S$h-pBIC?$j_Pf9yuZkXIU?SUU40t* zk_Sqs43wFen&^rUDP@Ghxdb7LP%PiB`^1nXk@^n0BQ;z5i_8BZ{Kwc~bA=8K=VqIskpjvC1NrJB zeEK~b8rByGf?3h0b{j88p>3D;t7enhz$<+E4Qv0eZ#xHkZhFqQ#MpCQhfQy1DEoHq z8Ou-}!1ue!j@UPl^}Wm+r=fA7)w;J!D$wiiq#NsNw*(6p$a!c<^IW6ni zaYW3SbFr-0PgA2=M$DpBM!fWMRXG38X(?U4kidyI-l`WD+Z2bpsN+4ayPxD*633-5 zjK|<|>|RWZaau9*+a?67T~;n7t%mPGp@b zMNevf_2fOvN(Z+djb_@h)%`zLkDjxd$$Ru4G}(HE|H@j^DJJ`4Jv}bZW0*}>_#SR? zUH9EhHk&+msWtbb&d+07EwumCFeh7ze-iJ%bkivM|H;6~`^TpJlU1em{rSV!GsAOD zYlpPspGRWi(PQbL%cu9ZZn|vFNGwrsjb9!sj^c$`EW7Fp8b$QdY z?8mNc8{IJ8P0wu`=`3zoDW+5T-$1H#Be@+(C#Z&Q| z*n^EaF|nT!c-qBFX!q4HQy##Ies+H0*zRRy=$kLEbwr7oANV9Wg!iIpB!RKgy=Ng0 z#v7JI;Z`35bAjwUi&mK0SV}qMi6tT2AR&Fqhz^X3^%^6Z+dX_773WR^7Rf4Prz8qh zemlbYMIW?L^EdJCj*K;&9dm{Nc*(j`>DL1XFGv2dZoPKJcf`B8raBnWzA9Tce_|G$ zp@r_0CVx{kn8;~6H>A}tGqVM{6OYD=;=E34uX(2I>pqM-Pq zwBizU)%a)?p$D01N=5*jF5v>cn)+!wsV2OySb~fvXEF?5sL*>&(A+0PIocO&-YZ34 zXU<_2#QrsFy%YGfOG5}1qgD5-*?1!`7bdZ;DMr2s-<*_F=2Otrd@v@(7^b*T`dr(_ zFM@P?^m2vfvUHyK!>)Qp3MO58x8;$J^v^$B@+*?z(d+PEj%)hCOdITBs+Mo|4p4;0$LM!q?H5mQ*;!-T(1nnx|{ z#z9s^+kA-2#GQsJHdSO46_8;C(A+|J@@v|PfYIgKG&XpB%W8g+K^^(x$H(0pO0_8V z(mfN|MKu2jltD+b9{U9wKMDL@#=Zk;u8CmGsRnRWSdea-9ds_NY^B#aG5=%b^H|G{ zG5XkeBn*rWP<;8A5r)MXu9@z+J!9FW@QNPQe>$|yj>7oo0`q-;m9>VJNa?iN_=S! zYtsN}{S1v58h60smMs(93tL3!fId^}oT(|q9&z4L#;-q~oUK^QP_7vof#ipf^(BVmJQ*z6I1mIUD4ZHuZoz4$ zfwHuoR0F5axEgNW_OcBQA1*et%splk=y`S7UehJ&sa`;TG=%jgyR*=>#~OV3s0P9f zP_$KL-NMzGSuEmmp3H3T&~3d!D86+`aI0=GTYN7I)6**7YxkgJJb2l9x}Cjjxuiyd zDN=t!p0Ruk$CW;g0E2(WG-*EGpY6K$ftGzSmhn@&o$s?XvF8q@&pR2-D(baOLvIUc zDFR0vwNxL$Dh*gel2(#eYN^W?Q_7E;!jHh@o9q(>PY9I?01@cJ45_yKg;Sn-Ll5n( z-e*EJO#LdC93c4|=jdb}DaNAgZS17g5Ft0F!eRY;@&ZD_eS|sszMTRx;uD2P6Q)ed zu=`I?$UWlCK+`XRp0Ijnbk_X37uRrLN6giG&dW`wLUNV%X0h*&Bv`%0O zc(|2+J(2pT$a}=d2ZYLwy*m%U%Qgn2JXA5bwc1c`0MgC|R<5bMQjsTeo-&m5613P* zx`dGa)iJ0vmrNtlg_{c94|7xqQP;?aZ z6LNd7@9#TaVq2=-*FHfX%`e)ti2=-|Xv1C%fkLcoXW-mh-mCNBhP(d3m!5+RS^}n& z(YyPvcDigtM=@1(YxgmwyW@w16kzo?I2`CBcNX~YO2>86m<(X!q2CZZbC5v!Pm#4% zkW);=@Dg7a0XV7oBv^kK?igaEbnQ(-pc+I6I4KMV?zPDm2qKZu8mJT%=yTE5*-t5s zcR~eMAXA&TCjYd}dF$dLH2|K+^CI%#oJP#YpY`&(y84l5rXWQlfA6@SpV`;bqZniyb8`F08v@vblwr$(SwC!ozwr$(CwP)`A z-Q8q2``@WAImt=o{Z8Ig)l*NgDu%C*`=;9r(0%VINQ6dn(~fK=7KaLPbU1N3LPHr? z8sRiEH@-;^FNI6GaaY+|U;_%rv2gD76I{D<=ni_qt5k6j_$)%OZY(Eglid_yZ-JplucNLo;VqX;W3nTq?1l|tp7@@g}r!xCTAQ6^qud?CRE z{_7lgp;0yPW>+m}ATn;H`A8qpvEW1jhUT5ADJQ25N^?^(eCP4~b7y^-g?lS6i79b)2@T+)L5KFK+dQX1JPcGAL`BfJ_7&r^IQ(yG`7a4A z-r&71{qbN=@A1%Af;u|doLr}Z?T0I?x@ZB0W8HL(4H(OXJIOF_bfakSX@k)Qi*hSX z%2j=hG&*y)_`2-tWfDy}GSNPyrUGz3!pQI`N*f>=d{l6U{A*$PkzZ(I@`hrvq10e6 zG;r1$rEd|jO{wb#t&1J@w#q5`xhVVS@$#76P~?8I;Hr1r^jrJD?Q`yFw|0VB3yDBa zgdr%E*QqN0jzqD~R@SdfDQ|dd?>I}Z?kXN`Dj+yct-;!sGhYxoz5WY|Tgz z0?Qz{4`g=|P{QD*j@FDxS>8w@ub6)|hgEE--_2?k_!;1U-q5>U&j;Y&Tn4?$i5H2= z4LY0LTfBt%X~qXs@9t@G(sH5^h+q;78g=tw*#NUVl-h;nUIX#Zn$MmuK&Mhe4v+LP zFtALdL$o16oR6@cd;UW)K%a!wSvuM?ik$lm7?|T2ker*WGy=_1F()n;M*{$Lflos- zjavg9FQm1qB*h{3=)EQU2qUVReI|@B{WDkfV+s8qJPa8yp^@Q?Pz`&u0#*bDV%{n4 zFo-5({i>~wbJ!#^S2*4-kEiwEUyQ_Mg1rI06Z;RVlyS%&p0N8J2$#517u@K{4xKr- z?~(Tr86d}rrzi&blISs+xxs-`okyT(6cwOPFp#ATMN^US*Sk6*)KRIm z=fAz5Ki3_@1WASB#zs&J#HOmY0}pgz$-AWw)iknulO2nbHb5wBt_LQ55Z{MW{1s5o zRc~Y%>Xg8Cww!D>fXI!gdLu3u<-NEO^lCWK85)OL7EppoTjXR0rMxi9jl3NN%%&t5 zBzAb*W|-#S0Q+=)r37LG9tWmqKDd7cc*~)-5|CjJ_BgOr)663rvHa^PpZ50xddm!u zRv%bP1vHLp1r6|PFP@GFWxB5|i1}}$=Dx67a3FA>%_I5WugksilKo+=IW76WM=nMr zx$*kCV0%{mE%==)z3VrE8#~{8ODv4@(o;4lHQpq=YLdH9a~g~27h|^Pn)gsz{mSzbN~CvSJJeEem42r1NYCoq z)2M#737}p#x%Kfr&58q?(YPo|pKDw~ptmWf3)F3W3FT90QboKifH+hT9*{Gq^V5jQ z;mEG)dp++pG@#fG<1J#qVqAyzt#n~VJL#{+;h1kU6*+);)Kz{kPmUzkE6$WeQx^A9 zi!f4>#|`adk6Tfz+eIVd`Wv{aq4yk3G+gVjjiOQ|`r zv|@;8naDK5FWpcWjq*^#?vilswgs=FLT%rhe6EivpLZ&}hd93UXfV86f}(0_JUY4U zUgNRl%f9y2ztHa3V*>r?Bt+W^z(@}|hmFF>x1oj;YnPb2cjSh3gl(uxx9LbY>C&tj zK~tEI5W908g?zW7v&s8f@z&q%e`Jegvbg{>!Q;0UyY^xfelQ+!hO7tn^8Z$C0{39>(O1@GYFr!pO6-EBcdxdCZSz2jU z+)97+BzdHB{H`xC%nQGJ^YoWu@RG6pGu;&8>ji&x`Ld62f2m%pa)*IE67p(2a({PwNUcjxTOJO^54k)gq|&2Mq2SnKu^YzrM@GFXTezt;;6L|O@s!i=t_Dp; z-zjs=#=Oat)5lw6Q|(bbi+oSck90z*5fN3ws*&g;klBx(;uE4XVk~14cG6Mqj6%%P z$$4*}TDBtz?OpiME_x5r8qKU4PqTe`om#8GT{hTn*urosyHzjyT4B`uSU%-@%El~x z^kgEBNcn8-aU*m;9fZXW%nx>=1>OuEXYqcG%$}p!-C6%J!N{DAYa~1d_ZSRx%s}PZ z*9RhJERveWlYSCr>hewxDg0;$dTzifZp?r#(>nT9UAV?8+k>Iv_ni1@hG~m`6G4^^n@!tm9 zr-B0<;@`=GFl`W511|4CF``Tg`51qS&55Fj%zi~ygcb-(mTm$gx_ z4z0o&#hxma{7TL*r{0-0ht!g#$vB;ZZj;+niH$qRr#Qw(1I~Snlc9(?SCXIbNf-w) zvi3UrNvc*_I++zv8-6arHvUP@caW?Cf=4-^1}Iq^nj32jfU`IJE0PCU(SG@`*yh-@=srFmiD(lV`l9Hi*tS7HchN?4 z9$#HGe~}BWE^sFc*5fiUu0kWiw3gp2f+HGPiZG8EWcq-PHn2YKN^aR--0QHk!6g^HZ#^ebvFGvPJx009>0Za|?s>Wd8mt_m1jC5#O7;lOTq}{I(Zq zZhnEGt5+lP``Dan&X5%h9BfY3ofJ$e#!}wU`l#N8^gbD4^L>fc(Ib+3+wqnNNe9X} zQXTZ4XavjU+;5MbUv2(rp$hO*O`EE*w1$;(+mE)qP()!<+3&BI8D)CGn}@w zT!X;(LO!%<&ALW*3Qf|ot-;+~S`3y$?|z>`8*7v#C08XNI+%q9Ev*AmpJZvKQ{Sqm ztBNUG|BabkS;e5}{r=-E#NT{#q!wgz2Y5ui_Gb9o z!v|4`jucsjYaq(e%~W-^E2#lGuP~ez zpI9kcsne?Lx z69Vam$o26d6Hky#JidveY)=Bd-m9lqYyopj&Os@89qxvu295YbwdT!uCG>RF+nL_q zUy}xs6j;tA=TZ{@oydC2X0XcaNW!mW>O$HeuasU5Zd0*mh(o8=#f|mGXG?}q9>D@k zad-~!G$uRUQ(Tw;7-xFe$`XiIl$ttv2C>SaLS=MHiRR6_4h5SljnO9)7t{Kn*S65; z#D3+Z*0>s+`5+w8ZX#tTTEkLkW!XM&3(;mGu>3ox#fi8b#KSV17l#IewJ^BfCS+at z%TTB=4ZrBLQ>0Rs%QbU$Jf$73O=yBN`NZnnFYDvmT|@e6!hO^bjP3{|=4y#>L12zU zn6gKnLF~kNt8J)TZhM*eN#o6L&Vuj9Eu$QB_l0|N6Ma-L5*wOYqtE*=mrr^x7nYUM zOs7@LttJ=pw>~xMLph(6)CE5mK?#EH==&CSqYm@!P7d+jTOQ6@qL@BwH1Mpo!7IHF znL`@@1<&)yg+WaOC)K5>;RM0g7aG??iL-`LlJMWks}jxkW|__(n>6foGT)hb zIR_X2P<*J1+^U|Q&v3Dpjd-(co}<>|Ad(TH?Qdvg+Njo9R{?90zl;|@-mT^xBV`pH zYndwnbK!#=V)gH)XpT20D}!fCwUIH}+{!MsaZ=8Z9?s|RPOiB*PySb!POjPQ_aBn% z)3CvBpVV&ORFQa6j@JU51&VBlCmyo8&G%s-99;D4@_xL`hYWmr!e+&`8Ax!2TjhaZ zQr&mP?s?=cP10(sNVV&(=B^=^U(Xv*t`G0GV@y#>U(i3h zkOmXWX*qp-KcfXP{H)fmP^>G&zRQwYtfD_8pV`!GaY(-iBHiV(yI@;}^)-=O*Dk#O z{uUQp=zJZv+h=Mk>!HZRw;30#1G53);?&zqE?=TqTI}ms9&3!((O`Kq@Na&!B-JHt``Zu zP;^9VqI-#0m+saxoLcjHSyKw|-{{wA1d(UJuVXE7$a-K1ttvsZUyMw=`CD5WcYj4^ z^j+lKo(!`lM^>nR9Cp)UVRGbRD(X?T5m;|ox#gcLq(zait^x_@Cz^I}*^~cET`DMV z&|X1<4(Tga-WV7fEBa<*g>W%BN@cVjZdYx1W7Q)^0qt75aG-Ki!aQ9^(YzX0^kc%Z zn!j%}Qx~^=53-vZybC(Si@Mu#NIZJ0m7~7-V4bH;eBxQbFR>O0a)*@@4HfVN;PwTT zj=wK1RZt?X0+Wx0o*Q90%E^(XH7Hqok90$MV~{wY`~GScnkN(b#&i*-zfz6s@baC0 zR+G4w6FtI`y2C;DUR`b2CH9jRD<|f1B|a|Uja3pp!ty3kC&*L+LI2Gqj+5K?WHh;l zYXe$Ah=cWn=RJUkOnzZ*XWD#AK9|4+=t5kiBm3pMs~!G>2jP$-WX5Is5uyb54~3UvR&1f5R( z+I&L$M+Hf){~szSTl4>)3Sv++OggMj`*dXHtS$W>9kDM@^pVWncHHT1?Rp7OHvbGz zLstj|o;l9tu`8w$E=3KhUDssG3VD7{K6CD^w;i0wqI=dPqR4447$V9t(J~|36?rIP z0)c_tj4W8bczTk(mYLql>Tc`&5l)h7FdNorF}_sm2Qs?>(m{-ttQv@L9%?yGy^TtawDu5y4~6-y^R+4 z8!rvm#D(kr0)L$AWt7nR`Suj^PNG;L7!q@|<%Jb+y8I_ZFmC9(E%xO|d zw`87(vB3O(R`i2^gwSF$$}gG81e95$kxf-o^w>Jg&JK~;h@y^VtR(i3ZkcUeg#jW| zr~>Z_TP~G|XRZ7_rai;#QK2PjCZRZX^E#;<8kyPKGDgf{gnb;c=Z?5I0S8B)2lm;J z#>S6@J)z;v;DObx|0C=CC>wE516uuHoQ<+`vSVKAkV(NufG((deSwUxVWF(Ohk|``{RM9dKt} zLyXNkuz$kY`-D~>8jtvlv2RgTrPn0#wM0} zFpcmyCYi;wAU$W8X%@w?zP4lL7A2Mh@rL(w9wcd=wujSu8q+V!*W5zS_4MM~+H%+R z^zwA=no$^!&)Uy%T1F2TPa>w7Cg)3bZkQHG4$4G+xE{0rRYOo+OJ{Fz0mT;vEivoi z^}_QPNfyCvM@zscxP(D+BQ#uBmq~Ge3Im`*--Zz6Wvanr&rdL#9aG#TEWNh^F>X_2s^D^^ggiW~BO&-V+ft6~t>&7Od z2u|*`;G=MHbQ@pIa zHrVF0T>3%``mT%U7%^Jc*X&E&n5nE+$r#>{=!16JnsX&gi)ua2c2y+frc2+-7a3vFk#9$^DeioxHwFRBE8^CHj+bw=|aU?T|3EDn_|{B1^Z2f#vW&Hj!6Sm-vTr+<+< zDCYb|h#lvfiqBWhcMw{lM=Q&V&n4C34{RDs6!ts~_Oqv=0W^^wrcacFjl(ZL_@abI z;$WXu@uSuYLFh-6XR_2w8Q$Y12a4jE<~CU#wz)OcMcR^P7G*dUtHs_V-QS~8ZkxV8 z?b&c=3)-GTNdqcDrjYQ7%2qDHM26jk$JqHqNgVcmf9>-)LR4t0I@b+fU1?4JP;lg`DfK)@lrX>M& zDG03PniZ~)!1egx*S_lSWr=_T;6eZ^NK6d0us|5TdSrcCb;-wnaiQ`vvHn;f49bd$ z@RVS)NDM139F#tEEA8r4g&QjdHKppS!SWOwr-`fqt&-&n->*yG?_=AJ?`qS}?XS-p zTkp4X*zfsSUtAx|3NN3B!S2Sds`dIyfE1+bm;cxzV@+$)1;fnB%dD_8krk8i+3fe?dw;SlReh2hHurr;Q23IP|lfc(eGJ&0@nIg*4tk4 z4l}Bnar-^;mHA590~Icm#H7vKus0bniH|(+q-r-ShIJ#(-PI2YwCC;x)&&l6J)L!j|~E9A!V2o7Vo+h;tI!1DAr7%oNrFsY)%#Hh554 zfi^F24hzaQTY?-_Tef%#?vH|2%*+iWN#GS~;wK*i3%|_>5KNP)X=k6sf^i=UYSpiJ zYTRr|&$In0*JHF==4-R?eQG|Z@U@VQ4P4X2E2{ca!7xqhm$zRooG6$}j=D}1xY9N( zQ@4@|syk6;4DML0@mDh0YRYB^OTI=O2N#my#X>SmpSahHgR5i~KZ zg#KBRmP{@ff9$b4tK~+W;Nbv6*74f5EJ7sDFVPGA{Aj=Bjc>7SepqRVpYRR?eIW{N z!Rv-mn3Q1U@xKjtu6SM?!lYbt5zSwiWH84-_ih%;W>SDN)Kg^OJYCi)>#B{hXHO2(H5Bc&vXHryE?m?5UQl) z^*P-BBwV>IeOz;c&80*{1&04ILKc?)7$Kyw!eA!fxzo;Qn9}Sum6Hp26(Zb639nLL z+enytVjULe1N_@j{d;@i)7X73ksUXWtK?^c-eXlA6VYc7RytrSpiCrS{_9vw4#;l_<;kHDkXMrBD#M{5T97g>t>E# zP(#E3p1+K46W%9qAvV>UKEAv1dn}&kl&hq;;ShP;QAm3y=5v#JG7n(A7Q|7ENO(m3 z_uyZxy@tOuWk^&3pwMjm$_9fVq9X*Chf!5uDvo+s$hA9L1hr_CW-_!54Jykc6e$KQ zVB6}|$(5|Mt8YBErDd!4Zx?b0#x3?4t1EyJzv$uogY{t(&Zb@3-sjC#`NBM-86j^Tf;~ z)Cwp1=miUZ%{gyjb^)|LMXxzU7-}=5pqDV8^`HCJO}2;VeVDwlx|`!{-9(a>_MpFr zPzVP+S@?9S(>DWUpEi!3aka1AE2-@UM4`L$z_-K9vu|1Le>m#F9&h(g&8ZPRs<-$> z|INmZ6DS07hDTbS+`m_wx|;MB=7sSb=Uchfv$+mBl-iEW2Xa&?S;G$`+F9hLL3GxN z#Sg)H;FGxM-Tak!?ZG?Kw~w?bQBVV>U2|fbDlz2v5FoKgkj!+C6f{yAE*HpxY?hkC zBi*rNJWp{D-4VLZ@uJqTCEYfebX=Xg1hunot^pqWmJ8qGy4K5C*9?igjxJ|4Y!~x3 z%!Z!93Y~Xb331UZ4<`+I+`6>I*1%+?z^bP4V+)0McvWCR+P^JQNd#4GyvKsfT3Se5 zqK`1M&peK3rmoP7FH&!dzu&B93=Vd;Q z0HhyYbkAVnSLZS3C00vgVsaV^A#!CDZKjjH5B9}2JZ2RKH^(LnMFn)K$NCb61ZBY(a9GA@_dr z(d9uJ#m)n{$dRiAA8w#W? z(^J$2+a$!s4=gFSnX4&fZ3@VJhHTaE6Go;H)2CrRT=?-uc;IF*$(R7jSYj2vSfjYx zPv6l^Ex-bYn+;?9gA48r28%CNP|x0x9wXp96*>bhCZ^X$T>}z@ZFo0I92OPD;0;zg z#-5b80Acysl#BQrGYPvMRBOZkINydns;KYLKT-yhU{Dh(!4jNjcQnJorW-bk5V!w- zgwUN2fDroaX%(3PG}$ye>1SdI<*!6l-dAS!T}km5IKq$EZ8oFuoU*99$69ZCg@`b% zfd>?7d--+NFN;Yzgt_?)R3h}&oUjZ7V`$A`kSm_cDkF4;O*4m(P-%{}#%Gog>YNsG zCEDqo@q?;~z>w}Y2d*kg6<6f{5FzwXQ1#z~P?6TP0hf@>E7?0^J=f~wlI_u~kcU#( zVHPEV?IH)E%x-JUg-;hCT1}7=s*PD@I*TgAI$$tuzp&+yuY}B*oZTHk3ak4^)G6#w zR#JUi5l0Sa4{7Y_tt}MQmY#x|R$R!f0gO=5l`+7co&~wSygJY%f0eFmEh7|sAM!Xs z)&)^L%-b=1b}+wbA8Kt2t-kc3!vkWp1uI6pD~5vGl-(P6Sh6p4glb0ZSMj=2{##J4 zGY8dT8{;fh+v5Do{azlM95KgIpRO_Z8-9fiefoAi>qUI=3C=)kodoDbiO6}Vg|>xv zXIE_X7*stWM4O_x29c1&kP3d+wvDp#jZm2m7j*Y}DBM+V&~7~R4I)5wi|!I`3Uw+< zX`hAyb;}V+iuTb@u*&Nv#jBJZcZ=em|3X5W_MnEsg#Uwte6LY_pL*GAFT=eJ)^QvH zd+u3Gf?u(W@qTqV*U6BdTg`B)7h9hjWf@l{IHNbnES(xNPqeqF3ES$`@^ zwjJlji#=*2hC#%oWEpi1--mXTwHW`~$7Ev};=+N}JF8JdL7-Aqn`kcVgW6mgcxe&` zW#i@5mJ^)aRxM%7!)ULFh_8~EN=IAET4X?q+RW9ricMh(nf)s|e0-z9+COFHI=C*? zU2J1~Amp)^6x|#k*ollZfvj~@m9PKp+QfPv_}`ZXm8LB z+|0YLr7_Q{P;8W0GT-J@H~nwYo&J;g_3VmR;~bJB&dqnyJgs8tD=7I-%FSt~KH5WJ zdu@wBVJE7Xyf{jo89R1ZGEa%ql6gVL2H_KL*Wr?O!w2dX!(Y1)&x^%^YA%NqoL_AD zsb3bhxSM?141Aa)1nNZKeRQPs4Pw=2h>`U3dxxi5sNOh2Cd#-Y5R-S6jbc4qEG;(UlZz6}8xMp_a6L(+D#L!T}}0 zU=*c226Lg<3;7wg@l={Gh$|3?B+JA>KMW2*gH_RKK;S;p?EWQU%A zPHy_s=$#d{jt2*J75_(wRkw&>lWRZGdhu->OZ)>o?A?0KO3cWU?TLYBGkG0ZO&<~s z{&)-2af^wr*VxWhv2{F)zqAMkbV#G@z}yRS`sWHs>eouwq_5Ss8x--_I_;ectYrz zR9Whs+&=|KwGY;LOl0G@8feyh4Wy;gXs*@NqgJKy*POxrbI4&lwP$sS+dk-CS;GgB z2Ay#zZ^+Jwb>m#qmz?@)^%j&oI3k?Vc&ePEcj!tx;U~} zycNuofX0u7#eI&5MFxVnO6nEiS#ex=ELEpXHR=f6fPky$w&EIMtS(+XTcGoOe^T^? zzY&k`{0DfqCex*i_^dL~vtdrBOomQrj4oqQzzDZ?*F3@^6sx*=+6U%o>S?NsS4y1Z zg0#j$NEOaruDbi9h2hT(_yYqtgyg8CWA#xEoNh@Fg8G`OI#x}^D7$VlgJJ<9@L&%! zv+fjZdlXMF5dIOLoi_p#YFn_%_Thq#P6tJKoetHa0RKlU!2hxK&;PN*hxS7Cb#ET( zaD|`Lj9|IFm4EB=B-Wv;=n_wUO5pCGF-+f2KBqluz0Dg;-TFIWdw;$)?S1qOp#R8d z&GI!Yc(QC^Xjks z&eHRalosG3(aKHM*SiFEZ;&;IRGZ9H~2r;uDvx4f-5^{Bc&OSh|A9^^Z&w`BaO zIhQRXrIqq%JO3}(Xsht0)<}7*9)DXtG+D`WZpA`xpkwQQsvMu3DFZ}p8*q-zq`+d>$vwRTf%d7O8HAf`nyL$Y4`SAPv z?%VnGyY0jGa((_ek(=XlKV=v1lu4+;Ry!oDsB#=});R2h8*jaVPH-Tk^4`J;iUId&c+y!KbiLOW|{U3OF-iI0pa1l{Aw0&0@4}z-^?}vKBjzMrx0W;9e!)hw6Ql7 z)}m6JjJ+HktHPVLSxk<+6G31ZEhg zgR<=9*mc{@xMBymi@dR9sAXgn3ZL`kt)fH#zi%pFbI(B3m8|H(fX%QF~!b7hts#5RwOaJ=>o z$XE^$A;( zkS!2?Lxkx6V~PH`KYV(7@p=y3i6b0@4(cnO>hdtBq3FYPRo3G4Qql$72N~M~tRfca z359el;LbMV#`M<3k=N(!R6$RhlhWYz6`ALii|ffIs{<~xQk6~6m_P!+e6)6}k5|n| zU-1UJPEX~iJ}}`g*-%8DHS-l-=)I1LAztW~daxI|*L$8Y8tw;Gxf=?m(Np%!_qhzuUG5#(7xBjT1&*7H&pmM&^GVP(LBAVmiB=NM{fYy8VrNImG z?F1O%YTLs;_FGIeQl5_QW$ZfRtKtd$io`Cl(YC^X@5CfLx)pHbD@fLiTp)Ps3^RJR4j1%;ud@wn02k$h3GkYgK1*u}(x+!oBc{KfDQVKFxZ*s9>Vg zYcLIiSn!y`J|Igq{MPz^cn-lc>gdQ66DMs%Sh)njs}b0De;(QTdXuy@-7co!Jck}$ zMKSt9I9H1R+#goCB0C=*!L#g4$f6cCzUYA{3WP?OhgJ9j(Jdk`(uufk`teESDkDj zH5&~Gfe_hwHG{BYC$YVl2SmHtBi4#ihBKgIu0(Hk5G_0eb|O_)n+!K^^OGqj70jOcZqWcqG8r{ z@M$H8YZX1i=Hn}9-`U6gM=*_9JGB-l&XL2fK1a>#%ce2E?KCq+I95k9Jrff`-aGT` zaQ^&aM@`{CDkRqkF1K}!vSKZ&r<)rFv#3@ibdnWL8XYz>YMQMPo;J>#5sdj8H%*}2 zy_258J^N0~+YBwZ-4oOq^>X(3=qTLvH33x+mfgsZlHT)+M0ZVwOb_x;97TmmR1OtJ zH#kOjc-akI(_$IziB_ll9J(3#q18q)82!KjK49=!IylKwr60z^y8|`lw)BAA2*XL# zydu8o?`{O&x-=(Dist}0me4w(OMNjRu;B!WU(w6q@v5GueOUeitDIZ!G(PmBC z30Ko)Rl(*$c*+w3+0s$9tPHLh zq{8aga7v(*8i|s^gag;ipj)Zy+bvrM=S=0(J7)*L{c-pOpDmMXz`tj|a6`ij0j5mw z=?xs@__&ucu^DFNL_2K3SZYCK`)~#`w&@7k7v&iV#hw}q<9;o7AT!a2j55=cp1$o# z10-zZ0?V`^KL=QB%#|GzlbxmeVyA{PEFSm_k__!#G#y#=AC^in!#((w7u@dpMp&*RWGIGMCbGEbQr2H)JT* z%xrYc5b#C|?!$#)B!z(;d_{8nFr#$qL9>r-Iw8*u#5F8~p*o|J_y79X>)@5!{jl6@ z!|x%YuF*41Gc?H~CCqiMo`=+|W+v=0kwhbr_hSU#d+6QAGBP`!02v5I_qD|{IMih#p9A1s(+%_kO~H{)dvKLxqbt!~Lh8@*9%3c6Ygv zT%|+aq4nMaG>#y7spL8RzpV}SHG1>XWh`T`8QY4aoY@UI*!=5tmiu~B7hPlOz>iLq zvz@Mt{)~4=d-Xm|OXDHEKx2_I)Rs%P9!mSkp2UjS%#rS@>h-~=7a@(P8i?c%v0!V? z1I!=0Tao3fm!qHeD9hhQg^!nvX9z|7CO-(uI_>|Q)+#kqk8*lYo%?VQLqBW=G8hHd zL9+PvY`N*yigabJ2h97)^QIBpvB!S3@bnzxB1Tab8}!KBrsOG=nvcac?t}QjOv&TY zET>5wytV(0owzB`WZ1o#^4D8j`?{xR8}SrvQwvVm#vyFs;l-24qmhIGUSpb;q6hPJ zTXq|+<%;=?JY4DFu3pbv5+PLGux2?PdZFWPyJ^hEw9(m*MV9*WAjv~n zB#oo+Nbh1MCdY9ktn4o*M@Q!$Dz=rV!T|G!Qv}T*ABd}y?OXFs1dyld+eRlrLdCDU z?4YuGMJ;dkD;9(<-?2oxBVBMs`q$fI9u6=ZPE3~hT*H^(DW6clF#w8?tiP#jCw_lny( zPTV`fRt~htLPg;Pw-y9J`$x_|P=OSkE= zVbc}bwk_D}5%~+~uv--te!%S&bVlP8h%P@{z(wJ(=;Qf1cpH3(dS12@}w|Kh*ahK>ibf==g<5>fF>X)ZQz3jMfDv%%?o7C(MV_?aIsNG1Lels+douXx9R!bO_H<%SJ zFbw|Um4Ih?22s2`H6b1t25zL7t6om*1cp1^In{v-@5YeYWoN4@#t-4-5mGzJVJX28 zV|IK-bO34Ngng-)NT*gjTczu%Zd55d_I$nVvBh{G((^6)BVVH%A1f7N`Vh$c6Ub~H z@cJZ`>MTud9=W%(mz9@?32mVk)n1g%Bx7zX4^_@TXLDCZMa`FU3wk%_amCF#i@-lI zV{-Dnx8Lz+jML(GXE0mGp`6S*E2ch7MaaPZ(|-Iw(Xd@muf(})F~|}Jxf8{b=ewa$ zrF7FHaFQRqAHs1|3{Dn+1OG8_0ZMUpl=}Fg$AejU9I9F7Ur#>H#T7DZFgpHE`$5cd zsx6loprAZ@t|P=A!dqxBlpZ#DuZFlD^^{3I3*fN#)RIWod3KqHMOk;dW##;0{Ub&3x!^ zs$a1kka>M9uiE3Aen`exosKpn{?J80m!?3Hr=?Ta;-PtSFm=n%f{vyks$II=hk#Vr z+~}7$C;-}ri`eDsyNjVs^*YUDS0daiV5I8AMyyQr%Y6=a7aKl^bgJ zHgCNYXBMn_fNt~Fw_Xu6tt{KaC$S!=%3U_j0&Bw!x6&-}yTk%0m1yW-y9c#Ol-F; zZ91Bvs1HZbtbNPng%dn4&T$xl7EtV!8vY_Y?e*~r>rNQ$925rRGJ$+46i7LUhZ>N9 zw_F*@cRg<#l%GgKi{Zj}*SvC|)s)ezq?YY44!O@@l|)p=iGqN;T8>hvpmL<4ucl2( zIy$@8yU~>*Oq4ija`75z$Vy{>157+h=yhOA@Xed5TZpsMJRE&0*6##8K=C8q6&`JL z8;*Wo6c|ld&_J#J$NAl2!>B|c&Xz;yR{waId%r*gQpTMTaZ(9`+jikHesYISNt`pL0Llfj zT-V>c(kGOxBci(rbZL?X1C|fGVEEM*J{-XYAy0$pObQzot2B$aW5T#5XnX=8NH_Z~ zb886Y9s5ti8-QrWJsjMA`}{KHP5}TJz!W!HA>{!kcF#C7)Ymz_F67E@=~+obXQ!TX z@_8)`ey7Z`+8ZEzz*VpvjgprNz9P!H=AGQry7gNKzZt0i%8Vmj_{MTGv0M_nDf1fA5Up~Uh<|3CF+>aE`WR;w_kPt7CQ8i zy#M)p**A@OYi*2y)jq0T6DIjTka-O!ey$Pe*wGf}FuKID3unCrVLVUs;3xOXg*Eqi z=Gy}J?bBj*X)q&M_IY)VXyLto+%k;8>M>Tz>$)%QmoKO*&DZBP!p;sp?x!~c`NHnT z&a0{Al>Mh;s~7~VBh^lr8OOSp*e{q4i~@g+Ul*A=2PlG_Cev*1YSeb|HLTrjWSGra zB8W0OoUG7|gd-yTzbca-G2#VPLF^F!cC^k}9>{3<^dR5MC;@K*8Buh=WW%ori`}x( zx%Vca5&tYeUn*@z$vzfH`;v=tA`)9a6wixB8FYYG2V(5UT|=8f|ALYCg3RR8 z-6Zr)SWw0i!BhDp#B!nU2sZQv$KMHbdETujC+MX24W{lqD~;CwL~OE7ZCv_!%b6Jr z)uL;&(FY+T^hsl~N@sj=RbTb6S-$Cv3j>Y*dy^q%ULI(GVMnF4c|3N^qPNUT1Yu*Ezt~BEJA=Zba;K~R zOVK<|?+x1AisBtb5{=w&;;qB)@oGL7a;V7%~z!Sq0)KheieijEY+A0IB@FwM6qN8Q!lDI zX7YM&){@?z3$8ns2p4L6nb$Qv0{g;$i`pIO;5NX@DB~l;79o}n507$rVQJiZ>xjqbJ0@8^7el%0EMZlCV?_~VAfHtonjPD@I@+06j&qf#IlXS+5Kw|i0)HVW*X zrjS9{PBV;0*47A>QY-#e1(fp0Grgmcg0r3dNdes{CQ;U{b)Ot!gm*(xt*=fEorlIX ziSJEwx@MyWQ;piZzrDoA74Ij3m@*Arpq{ZRb}$5!ZdlSTw-Czi2}%u*kKXCb<4ed9 z&?Eup3yB6Q^ zewA`CCrsm!2`LjYFxoNX6Qf!_U+|H(hR!|5c?e@c{MH5{G6MXy3o>eS5EofWfVHz& zvdHn8G*nm<$J47qDd2})Fjyjm1~LN7$~n7H-Ua;bcv`o8VUE8=5O17@7BS;EyK!<_ z*kpODJKHD)0zqF;L3=cFA2Zg@oexBG@8*SUqvYPVZfY4YB0h4@RohEaQhxi%0n6x@ zaXc#wxQUV8NL+VdxSXzqYM2I0Ul&fSU(XLN{*i8Lf!Y0%bu2FA;L`5qc65m#_Zo|A z=crAx4JeyfwOh&*@8Gs1#*w%>grSMaw6!AnKejz zI12FNVZ$JfBN{77`;CIWr_{1e#Yu6n5XAkuQ`tUvy@9Wq{UkB_gXsfM_y0reCI9=` zRk`TTA3R#(KFrrnBM~3;t|`7$xbjcrMO>PPPN~vly?vaxsnJh-UOrYn!`3&9*!=>` zEhhoTJrXTob!3Yc8Df#=US#pw5d7^HHq8OlD&!8;@Wx0ha#(T@vc%zx;WEAPHExX| zH5=wwE=JJteUG{KN?+!#8r0JOpTfU)I&6QoM4F~qPrqH@Xy1pm+Xo82UoV|IXkbb~ zVGfRBQ>r#3^^^2@egxXAXNJ80UjhF<0Kto(=PSah`ysY@AJ>uaW19qLL-tm%nwUEH zyssq09Go?2d;zvuHjF&IA)abI4XT2s=)6GNpI%> zc02G_gmCIGqd=X}h#8kR8nDyatZh*m+nl!#!+Z3}Hv``tZ-rFw5j#6A?F3w3D|U7@ z?+;ki{C;a>xoY-Y7|h>Hlo+UCW0e6mKFpB-2oGaK{PaTfyX$SC{Tgp8Lj>b zUcLCuv*335a`1fcV(`@wCg23j`GQIme&P3{_8}%mY^F=5L@oXZ9l=H6-h;?2DB+F$ z-=AMHBmP+mh>JI6GGUzDN}ldPL?mz>07E?q`hZ;v5eHRF${}1ajN>8e{{c&!IeGcw z*~{atdVcxki!YlO`8YV(GjT7nntMH@C2f|H!eg0Hg=0#1Pn#c6`T$>Y-H$0u%e(Ep zvwhi>=*a87+!V0{bIBR~?PA)spqiU?xCdJ!I-oD9Dk!THvUi|1G8BL!iUHDlzZOoO={3HlouSz~dI46>on-+*r( zot*k%{Sya)-%kb7t9p3+ZAIO8rJDV`nsZw0WU~Y9JL{oecU5C!+ev;8y}POl^iyA9 z2%5g@=2n(~Qz{xyyXCeh5Ef`QY|3#mTY$AY#5@$}kXP_&IYF~Jew6wQL9cbK6 zb0biuMw)um-`|dO6D&scZf^+R;m>amY`74;0cF|E8)Bi+!tJ_uIH!QI<@>kQzA;QY zUFzuXZn+@6D*1WhjNSSiE>ypvw#SD+G0*t-VjLS zg}q6J1!&`*bKrCWaYG>^diCRo6C5rO`3QH$dHa(JC*7A$b)v7uAE#2Oei=mYCUM2L z!x1^GcGc8d%wwIh+Z^L#YH#wm#T4%K;MzmgI4!yzK96qkLKJ(PT~Z2XR~g4M%Baq7 zXVLkiP4s=h?ufG>NV&-9R?WaZjPpLw`xplwZZQwRD-BCJrV*93*Y|ILfB|>IcReJP z1=NstqT4IOiKW>{jH%3+`ihdQD2L2ZAjmFrgzK^yB|1h2Xmot|-KiF7-wwY!8fo9; zVt!9uy39oy@M`&0iTUJIA%6PpvBrCHG^|B?a=Ii|Bf$=`5jL`}kKQnIfw0pS!+)EJ zsV;=ladBx?z4h#{UVB4|{`ILeG#_8v*6%z@QX^`^`V z%{j0xTi~K_m5@Mxg;4gekKScH$z8nW>_#JEQK))5pq0VF)fc zw+Aj&8Fy%tDMw%0724!G%Pv&i#cLC5+Ht&WamNunHtL>$_L`7Vtz!o)p<1gcFF)&X zZ|+c6bzNA@Gu&lXaJ@>5FU|ttBq5mlg|jAVMKV-MKI3*3^^2vv4k+;x>Ro}-TYpVs zok>qkjuwZ3j$2_jgx_*1&8_i}|Hj zXy-VooK>SNm!jU*I2Bs%R`pixGHSe$zL1qf-|zoN=(^}=J^dk#BJ_VJhu>)iXwyn* zJ>gM}qM&!DfTC&dv@y8Tdy91ieEz?m+#$!?N-8s#L)!{I}+k0lt+Q8 z@L>DI*$s_@jy<}PSdzh|t@BVjB?zZDdILIqw|+qdyDeCwS51wQoDkXQuU~E#)UodQ z4|Bj%PTM_Te|q<_5Owg=yO$3%+(3Krw|7a0cbJWkQDheJbrNT5bC?c;2v{u1M{{`k zfh-{AowUZ@6%K)q`osRy73vI+(7$5zztEnnp{{LAwF_=9IYa;2HPIgb+C4!3+AR&X zehvMJB}7S5sYYABFU~>!7Ed`L`6~#^EtkyVN6b$iIlpXiFu)ryr1T2M<`0wA1gCOl zpy|W`&I=Z1!7T;_L}MjcvU3AzFsF0VbD9VeAQFd2EQBO;_pMChm_+WIR1mIzXX#fm zTr3cYk9|%9&IFrCB&LCW6%#1}oDlt{I^S0-Uu`mj_iPhtzn4g$wq%(qYKs;LrLkZ} zJN0cWl2d&fErr#WFho~dz@x+ZCXp_sa9sb*A>jJP<}}?fEjgLjcd9`7^{s-%Q2V*K zK3WRuCDT$!t)ki@?!u}q29;>ejV9#J8TEHDRuR;O{rTb^Tkr?9^?}8tH`dK zKNCzN623GpK<84DdD0=3*R^*Bt;95qQB#j(+v8iGlO@?q~Qf&1y9Op%6*fs}_v8z8F7)cS~g>D}l3X_jA zFPxo2;wUiZw%S!w@s~8xxjXwmvXrAI=m`CP=u!2cq8=JH9G28^GsQ7}z%)uZsZ$P0 zYJpSU)d>(5kRp+X`GK-~TJ88l8{(fc@UsXMo1SQ(+ILw=PDv`SV#qzCYEHt9uq$6= z95aQiXUt6q$J$TG1(U{-Mke_TOe2YK0{*r-8=>m0nvU9Gu3diZDvKhE%gopNs=M34 zb-~e~EySnfx9Yit19f`YNF}ijL?#}l!oj^FFG!YnC<{se=VQysd|_@KyFg0h?hHOe zCz+9kY4X+TB>51e;KH;CWf@1n-It!Vn91{rthSMtW&r%SjQT|L$?#ICc=-y9KZp)? zv)&!qq*Z2gy%VxyvZHg`b+*pcpqPta*6d@Ui-;Q2>78^Hyrgi{iO;>u%lbS{)^yzR zaacdbAIsdjZqmoZ45dlH=6X8-;DPjm841&<$wIwWpS3?#YlnBQ9i4gKR@<+lV{C5c z3L(YtKeTgor3amzXvbBJnx&mNHIE8u-vJGlxaFObRhCN;{^(4B=`Wy3T-@~ zadkA_cyV#?s3^`_HbGTNca_fadtUj%Ra{ z%Z@yoBh-h`$%+_1U8JT>%WeQSkXt*}o@IUtc%ueFP=vcH(5&5D<*s<137);{?tih= z-Ortr)L_ZAzcXtYlg1nZ=TP=_?$YLM0Ht%z&+Ki$Sw<%{*m~EPUBxBUvZ4~Rde>ud&po+IA`1ikn-4spXGCFKhH7$py%Hlf7H&+HV<%XL;eJL zfO*H%@fYQ!D8an@}E2Ow+4*__mJ1KwjPuXdtr_YMnY zIEqMIy6{Sk0w&MA`#JT0=(ahSeEW>@=xTpQrdNGNymRxTu(5E;yB30wP_`6>=%z0?`U_F-uD51dU~(M3mX0nH{8S4jtJ!0;OA zD%z06OSjl0Y^^f&Yd&RjSnn%nzadUiLH5xjn_l!4k^2I@&7c-^;+y2znB;xMyKJv4>H1fO42WFpkJatOf;K@%Nwf z&Ch?iTy1NqE*H9EDqYH0V6N;;vOL|FFJ5QH zL)UL9Q@P%jECS`^N!qHLnFhccbWBL>_zg!3Yie+B?seGUK{j?djNCgv&-!8*x8`A+ zG(sTbgWc7;*Y)f*S2AUuZzd>&3ey?u{9II8X*`J_k#sR@7udMt5HdaX*kp1i{%&?c zetP$+y|;N;&x~E}6C1}o zwb;yU=DJo9wT!mXojY?e(cqjEy%j8*&gZFw=qSyywKHShV9}HY&7+G}55wPo??H6) z=g&KT**;4@UKW4r-Y5nkNg}qGlUVi_cpj~XWGCY2I z^6cdJ>9gVCUk-<-r>D>Uf(|#;$)+b267#0r4(to1uhaG+~t-mE1DS}2p%DtYjB@xHaCEB$xZ0FZm{Rygn0)KRJii%Bfc&~DCX zwPSTRw_aTiblCp?YPYg{S-L44p=>D!q^d00Kk+=O18vx*^*!PwiD-a@?xn$KUP8h> zT~i+dFk?Fc&w*E7>czDuV6`b&ZW2mEDD>EF8WOOukY(B$eYl&YAG5~OTS>Ohy)5UR_i+K#dkA)SC)oT21wPUMWF zqHiy$c@#5Q^dXxACIhGHI*Y%177A|6dnBR0lS-@4~tL|6!a4VFIXcA!t_-zk%18DxS4DS*nvjr(Nl+N+gV}1z1 zt24A~sH)G&lnTigsQ3A^LX-Xe{CQy8n0-o^P)k{TH1!|#LpmiwK30X$f2(5pg(*TJ zLDZ+S-+#~U7Wl^Ww?WNP0-(a#1ts>Gp_HE8debd znS*UBY$)Ed4!D4z0Yc-1Lh$W#g2RZ$6$4wu48?n)DgV7*Vzm%jFiXC;B%HFa3tq_= zy#z`dtTnZ3akkGi4(3F#=!WnrE~J{JO7vz@CWphGF4=>U-#>WPwDe$*kCNkaJ{9G1 z6;fh&xXOUjc*=&-one*?R7sXgXvZ>m1KEWN&37o>Ci@q)$1Bx;{##gXB;s#6$IlhTM97VFU}i&ZO(ua$yb7&-UL<{Cia8-L*SzYXj%U>?vz5Ty`mPf(t zPFBP!+R$EY9&gN=kiL1ld5l>or(doj!o6u~+bFrBqanF6ro6nE`*yP%KRkhK4$i>Z zH=D&HS!Cn6^HR>s&0urTB`jjo#Z|%y4lh_NB*)ZaO|?Zf+wp{j&tp;CvxW9mkwCiw zynv7?51@XvV(Y*3fyegoo|^N&n8;hkKO{gpJp$_S$|r%%=YNO8r-w)W`QOpu>9g(m z-@QBqeb-)yZsuRJj?7y9`LmbI#}uORw3Nx`ja$F%{Lmuxj}Ci~U&+wkisy*du&jaP zhdCaftLZaT@mW{}lgs3;$4?U$UUfJo^LvuDqy0228^l#AuYZ(gknPq<4%?WDwg)iK%Pd5@%0c+D4ec{GxUC6GsXR%cU-$6ybrBm9*R&RpwJEB zV{rz|_5FS-h*vX9U)AgG=DFp)U+L40|Bop|Pu!XQU$p-Wj}8yF{Qo|l75IN=ZeJ1< zf7N8P6$9&w0TvN+l4u1%!({B(l+UivUTNsf^|wYmXrR8+BXpt-a--YkD%-rR{8{m- z=l>fB{4q}p|35l8E!cmCCr^i4`~ST>Yw~}scn)rcVje<~>6v|n3%?+N zf}1&U_i>cWZ~-&e&q#R5*@Q+$tw;MI3qBA&Fn(J5-NBg}4!AQ^4X!IurGlI%$vL0r zE(kbDu=<@hMNw9#j`1{>bWZ%Hbb?pivr2dsaZ?GWH#8zs5}u(6j)W4e(85dm;e`lr zq_f-lB}jOI6FjC7g~V6r{m%&PWgeC0g7&~E0)f?Zo~XT?j20Hkj^{_;L;E_>>1&+q z>)#L_{G4+0GvVx4$mC{z>)U?JkC5HQx0r|LmoL?u857c2bMw}#moG0b{1=xmpXV=l z8lQ`wgv~Le_N`}V|8*+lJM~46CdYZ6yB?a;_zVpX4-bvyZ;n4^zXf?k*RCdcYo}j#4B4L6zK;0?;h~k53Pu743f~$4AFo`F|fz zHLHf{H#w=6-|@lrVs(*!rk(Ds&wc6Or!gR+7~$}zS00SP5bm~jOoqDwV?3m>JA=DF zYkuZf5O<-GqVUB?-1pu9IB`{`xUn+6-<=Yq(-Jf^h z+NqsAH03y!{;iV<;d3e=IzcjXsk^@G!y`JADSVC-lZ|C(&y+w}k=#Ldh4s;B3aKWr z?J9Y2_LP+jDaD!dZ7MnXUEP6)V`Q<*%4Dy1(#PQ8 z4T;P6a=3PU>;f{R|4`SFIr!Nwr%fy;e=vdGyf=5cxC+SsRBNo}O4bLm#GKY`7ub3W z%o$1`HRrcoT>fi&yt@WB!;u_1Y;XU*ZVl(`kYaL*a)wahZTSuuNT;y3& z-`>V>d6Ky}=`!0Yy@)4_2Vh+T$T+lnC}&}r6M{1+VK3q<*jZU12HDL_0}QDndur{) z@b7Pf46?IW#9)u9mgQGE<(oL-wQRlV7}z|eyp}SY64lgEK@?Tj@m4iOU$R@z;0(Jw zKo5j(H!XxsFmOmX`2bmWb{X=PY1c6AB`N*@nZH(Nyvt+E1N2wbidNG7*3`th_Orfs zC4RD%6)RBCN`hcrc6?Wga-N6c!SULhj<@{Q;kSF}CjnQlXkv3N_Q~=-YgW1u4&rgk zC3rNn5>mAT{Z_PcGwtiH5!bXw9GELcAzP!zw40i`oGop|t@s{#lV58O8MWPug!IKV z+Q18b2#Oj$kcGXdN^yAPEuuT%N%^>%6GP2`Hp{IPnjf#PFAs-WGTJV^Fy@Xjh3^&Qi7aM4M?)QFTDtRRt(e z-y}apt_;f{xcftEC9rpt^AFzbP zVn!!&z&M@KcrcFGcyKhF48I#bdvMKHW&0=8M@=NxnKV^HbzCG@}8XkXJrU?Ml&stPN6nX{*dQf_5P-;&y zx4PL%GNGG(wuhd-xv~reJqlAubqyEIjM)u&d>8D}YF&n~dSXWB4^QuMTesD`?#euw z8T@LcUl(Kf=8TT(Yb$pzBDXAYg^^upyIQYWRG>12fp#1vV@0}I33b7Io3~( z)?YMCYU>s8P@<+PX2N&)xpz07TBo9iMYmfoga<~xg$dbG@%Etq>!V?JI<^$NJ@5RA zXxB`{mTI>rM_(D`I+L-b-mU%ZtD|3UI{v5>ybkH!P;$Ga(>w`eO++Q0PC1!kNt|KN zvLV*bR#vSi84UFq+Lb&dyUWxgA(gAt!y!a8I~AQc<~z2Fe-VeN%pI-kiO!c?cxqO+ z3-4YQ-XCiLRUPZ=zXCP*5Sf_Uw40m|mUgpl^dP$9HN1Ma?ZNG(7eI`YgtHssMw`4d zgOBW?4vnX%(0mg@DZt^#iv|;4{_xlI>C6l62CeFk#AY09_jD30=rpb%Ni*Dq8d-?F zS--^vFnCfvrmZOR&<>-vwDoXzIdyaMus1vfj(oPWhkEEI?H8-Kt6Fsqd%mL6n8wq! zxwOJ^N%(~EIl9sVbPi|!?}*aS!52XiA<^xO$Qj|rApvvOi_;wXqwJp95Iq%}%F4i_dV8^Y&YoUI4yLyT?D`aamVZ8{*4yb)mxN({1wOZk-R4XeMRApQB>ee1T zT(9n0f6a#_ZMSRqK?~f5>3OI!_d({c+div5L3RE=Ls6Sa0oa!R{n_xikpJ&=c)ZR3 zdoNGHXqIp`SNduy>N5UjQp<3L^>X{J!kkJM3|aP-!tS&0q=UDKax~j z%aU3(!v6J5HCH!zPztGXDFG;PjeDjA1z z67wmM`dV}+6P`ocex-h1LAPCa_jWz(nO##NH}iiJTDYbdXygAUPoEXyqZ^8b5z z3jE*KBx_Q@7Da%o9C~cS9Kp~zo|4Nnimr61l!8}$r##y1MLc6PiKa$SX-9r37ib8S~?_cd*jn)$yKkax=e zpFS3fT|Y+394+0b{Kk^IX`)96|bUk@Z&b!XF=?z#!^j?FCr zTe{7KjoGhk44b>9Ht(Xt758;?S%V|KkL&A;+o!eoM#UY^*#(*inM*WRUa%QX1SQ37NqmET=aa&yk94F+O&IwDqw%w~^0nJ#iMhw9%8dDMH3QE(`AlB8J3J8}|p2|DgLi2xR<7OlIQg#HZJB)Gg zflVf_=$!ftzKGr}sG(VgV}z$eLh6Y;Wn%dm-q0+su7<2M+nr|oTNg>|yeBMtRj_8% z&T|QJrjc|-RU$DMh$5MFYeJy`mgJCj(onedRf1>eZTthKQOb$=T(-~^^v+_-8xPSd zdTwtuN~y(V;hB40h=bA$WC$cCCEkWJ-nP3)K7kS>eupfBrnM4bMI$ zOeh6VeKhqS^+P%(LOxc7(0{99`h_V1yZGMc&u72?o?XBAjp^Wdk{H2<`Vvpk=g-K& zxLfF`H-cGDF4HKol-j@{p=>|N3j2^SpE@(4=At;#;Ns-{?)7dlmESkul)jqXamvU? z$?-X#igLXQDjOb_i-M$E!&SDIII z->$_KTJht_gvL}l#B1N&EndkY!i#dpdATC?KlZk<FIX=cOOsp{oe{Vg_qqWJA1~q90fG*Cl$GFcZbXF4)uI&ZhvSzMm8#QKV-oN!Ux7Wy5Aj~so{V-L)GBAl2|Ipd6Jy-d2ZmsNrKhy zyeW##I(3Yvv7~e2H>DH2>Yi1?E10uZl)@_oT_l{|(1=V)c!nl85=x%JNL<H$RTd-gYB+CqgSo8vxc# z!{{jgfgD#=0NVV2hbKox`G0!2_5Zz>XI=RZgpr4d?AbfOoY>}-?zHKW$)Z^qIMXeG zDC@0*$yd5}+)#S7x^xY_UT+n`Y_v{v^m*En=O2JPS2Jy_YSZvYW^3EnJ{x#C>VIp+ z1Gm}#pB)$VzoTcvldb-DAJ5AAUo#h3GIF?kNN+RNHA8%t;EbD!@@?tQy+!^0>6C@# zCu6;U;Cl#+Uq$ZL@c&yfo-y{J7qECjyPosbJ+1yfN5%X<&yEkb=fC&z6u7#X_r9KY z)XTUCouHV>nsWV|$D1m;(gf28?ber_r$VAJL4wF#2bb}z-RXo{$&+@ZP^tx;`*)?# zx&TI{7{IO=MAvV62jRDS6- zd7n=U{|`wLvBjLMl>?}m{|`@|J}aI7K0Vs<|9g2{Mu(F`G$6cZZIEsTD<-+aP~!AFn?q4oPD27 zOifF6cZ;>{7Tv(mOOHVAnO>>g`eQF)+zU(fmMwAf)^s1T3BfYuPJgP;-WNQw*UFZ>ak)RJ#xn@EB_ch!f|LmW^eo9BF1wXJT85h(1?hIkYxTC zJ+2sQQ&At^#M54Yd)m{gm+9T#fAi?_?ekyWoWFi?b$NdA;_*@-zOR&K#gzBB1!fov z-JmYuHVLc0Warld-WNAPi580VpYjOA$C5qm2Bwyt+k>4g;5!KX&T>HKz16~QCS@X= z_oyOAvGAQ?a=qdJXX8n5Bxl8> z0ZWXk2JqW*!`e`(YcCJKJ#6n~L~lq;gt+8vO#E1TMM!@mg z@@_q@@3Vzd>TFGS5hPce5jC+tUSIq3Mq?@|j-HbUFRn8svcaI`HjX+9<26fTS!jSAL|v;e9AE^}gHgBNY-(if z7~OZOn#{0uPbq3FzB@`yQ@~n*HenH)F0K-_>@Qd>B*!$CUL$IX+=W@JNRduVPzwX*vI$rxHuG*|g)j$|-Pb{Liyt;rw@aygmQDpT|4@4b45e z#^_re0P)(8#6L7eXiHS83$J=o{O3ILEuA+N?=q$FuOyJY0QV-G&5hj+nwW4J%L&^3 z4>9-;(F^b{denZt{@5v0F%^%Cr!BSOY~DZu6(?&;#H<<&-o2NZ^zcUqs%8N~2>C%m zo_bh{7xKU2U`~qA^CI~QDMGy&=A~FtmgTC@#k&{h*Dt(RKV3d|UsWoEJ+%8|@I-^p zmZiR0I%^DiuUeo(oA%K4j0!tch{e$Y;UFN16zFE?5mt_{Z>qldcS>(?q~-+9^v&4_ ziABnZKyrp9ido#d8D@2ny{Qxeeub(knE@x=mOR1}NjQ=-lH)})d_&NfkXXs}8^R?C zk!0v*_*gf|X~mh-I{4OMCsw`nGFu%B_6JNO)8MyiwCu{*7c?X6 zcb?U8D+Y>U;Eqx#HVpLY=>|p;rJSyJ*dire3|L^Bn zlmBlftK-%#yv^G9(6cr^8Q!3Nal%LJg0oWE!kpE&FF1>i+Ol{`LdLLvBLgX zifrf_0Rb5st)pj8=PB&u5eXR%JCyVep|=Sm*Gd@qrKQsLxv!^1|642Xr+r%Vzmwt7 zu$cej@OXRve=kq9@GfNayo21G)hgdvA;w`FM82-Ecz3sGCf?QJU+mUcf%m(G^z83A z2{org?jE4shzj`s7Rz9!{z#KhC)(UYFXg^~AhCoALB|n6lA$Tbu{3AoC?VV&bR!lc zj0BCR5%HSXU#@r62|qWU@pDVn56||stkJ79N4Wv4=OEtQ%`lX#VXN7~R-uHI$k??8 zu13aYNHDmeb8toxe^#oj(`QG;{om;}|Kt5UP1$)@HrubtLTd83Xjavj{mRe9>ayc4D=i?nUL+(p(^fVmVmSOOj@0PzmzQR~ymuxiP}$m>5+imJ*#kObXb{`tQd7SIhfupEmw~a&l7i{~Vrf&wuab zsX4y6pKR_m*w)PAen&cPI~TqGtnGhdk@YoZW&hHPz2a%%|2H_I;kpr^ZT>$eN5%U; zhR==;xBUM;p5@~||2HFvZ3O5aH3GDa2j4W(!2O1RX8kLsjDRS@7atQ&gcrTpLm$ZE ztP~VF2&us1h-5sE#l`SW#?R318zx^mUm&%Jm%?CI@|5frkiiJA1a7IoyKOw|HXe4( zc-Su-)M{4WLl0}MYUYDg@){mb|9ki1{Q2t_{du@q9L@UQ@yYS9aR0;b>2MqWc|Xsd z#|w9MJkCf3!fxa{4nr0z&ICJjwbB$H)1~K%=ixX+RESh5Qix40@Q zIc2GUk~E&8jQ#Gsl<1a5kzuudRmE6g)d7|?QSDGG&}4d}0gj@@0er+#u>!dx8R8@+ zw*^3|ol2YIEa4P-LFbD9P8cVMd`u``^mlgl_Ru9Kimy{aB@sJ2JwFS;(cynWsh3J~ zj3U(&H5`!4dS~Z{G>Q<_pFj}851s}f6b}s7QI$d>F^vRbF`BVk)vds2Q>rzRbzxTN>6Kn&dSgIvoUJnrx8{8f(( z_4^s9ejcC&OZCM{6Uv3Og>(tGl^3ayZ2r#3yypbcZK=jN;umB#6>3H&jL!*l2O~ie z%+)*zNnqN+4;nB_h6olkTA(zxs1*fpVt;v!P|7SzB??JIl=iA%aNA}Qq5vA{Hfd)x z8jZ1-?R>v8` z5%5sxoZX|*XlLh|`6H^vT&v_-g8-Ny&(LVT=$RLzGiZ0fV!Bvc%WD|+rnm;1&o#@Qvl}Iz4L5OQZDwZ?2n)diCA7nw4Qj5aU}!YLWsXX#nCPXC zVOIvwR54Fzcmxhw3Wx?1`|j`#90_I_$c{4_2`4v7tASKPR-UvAz2azDA!8ulkCfTl zL%tCYCT7Bvm<3|Me&Z5f4je+)TqXYKSH0-I|BSR0M}y{6T~>0GuW?dLqEt5 zlnT3`lT54;wmY|gtXRH4Sjeh^^!*HDK6^NG; zG?F|eqXT4)-9XA0um^J9eoYI`V3*XxWvp-b})1?r{NAr!~< zW>2BEri+Ay(Ei=s0`R(E(dOQiqD1RE1TkA}NS*M)0%C>j+(ZW2;7291CNxrl8C_mo zRu5Z5a7g%zh=BH;n*N}y8tTQLYcW7PO0|$oi|qW?P#9ee5)lJa;Z;k%r*H9S zL=P+bxmlvB32Kps=67zDG8h6JhhU))ns41=Dv>rmv9WP-R#F&Biy2MyRtZNajU|oj z9txH}LpT6I=N4xZs2-wmDp49kZ4%lJiipWRvI;!`dlJ1-JXdcSKhk+RFSOpa#_ni@ zWJ#hBnEi)Tpg2h)9H_SogkvUWZeP(S)HH(7#^(fw5sir*K^jZKZ*YXhMBWk-+nx)B zK{XZ!FbZ=lq*i|Pp3)mT)m^8Zs^tQ{(|Brz!QMU_DRoHBuu@tP`FDyV1ydo?GCLcS zw!TQdxP+~51uYO`uoFnkSQ>?T`U^b-3JCQ6R#nqdSQCMn-K>MQF-Epsyn8OpDpSkm z0A0L$?yx4HxG`}gAr?wdNGl?8<*2V<7>03R^e9&msRpdYV~7H*bvc}Gwkx)AhOs|? z@#@9(i|0j-qA!KY_d?JwxGBrI;p!6_{X4}ArF~WIM0x>>C1+7YxCd6^X%0`~sRCp~ zvR5v@lPWK+-kAt{Rqf^E4U?Cg2og(E*S(@~gwQASCY_Jf3ZE2B-1?qJRb(_Ym5pxm z&J6)tin~33bEQ>(ShJjjB$gCM0udSXf!lfeDo+YtDRGkn#=>uK!b06h_iiTDuqzWK zt(3-|H4KF416h0z8U;!)<;F%If-a$UOBx7*o1g6VE1$4Fx?=NUDW&0qt_Q|>O+YpY zg4!f$#*-tyRfSC$h~}OgeDONwmSNMGYJ2c->jqhIWm*vy?mQ!D-hHd zWohjyC{Xc5eB;$4@eSoH23y??=2Ug31x}?WP>p0qiZ7Z9$oPyEBx?bjq5wUuex+O! z1O5;*9Urg8xUNN1WbMIPo1p?tNlY|_Xg;Cl!X66b=LMFz)%)?NHoC`}Qd>z3<1Tl( z8eW566CkkP(fQ>|Z$YUUQi$v@omY;nNebZ2xOvw+$L_5F6}5Hx{}ve8;#L4IE`J)# z$y_nc(h1ohqH`*JO}KDVgr*4n3f3w4D6=uh*DY`fECiiuivEPS((u)+ytg}t42%IS zetxuPwje!=wP#Q$WfK@<&FvPI&C-+#$s3A%C1(%$g+?1|qgpMZ)ZR4!3XJ)P1bhX9i@mL&1+KCCT+QgbZ-z}v zoHvHMWb|w|pW4o*=0NQYCSU+7*r^GD>LL)PY zt=-L?(+hA#z;Qyrxn05g?)dPi6w&?I>;XhLeTqiYs{@E{vn;y8f);)Uk$)XQxAFN z4fAM9+(iQ|eL4-SG^ci)PcNXU8wf{Xvx(W>|xCX4PabfqmeK0tJ=MkEi4~my9al-jE!+_%UHJx+E0kV4EysExp=+g{(c| zZ8=L>)9^K8T-%mrQI>6LMWM8$VXKIsmY=toa9jpnW0A=~X;rIy{%STW)@)$PA$vcB zi$@@$Z3p1RY3vA+{uMg6-Puc>70^dbXd&M?Li3qI(T|HiH7yZWre8VddYQq5?# ztSvF0T`X<&;7V+6Ez8>yc&d)ljEvDv6iXec8K{*w%(A70{Y+@7v zFynz`Kz9j_d#!AkNS$Q3uh*8n#qQK*Wd zM>Ix4mw&7cl#OV-OW|t}=rSe9rM;jJxp3N<3x_S~@NOf}JlCE_nHO~9u0`?KqI;s#nvS*~r&U$v9|z!4CgL1w zNn7_pE@fEspwSx_&3-E0s$X$)-EqaXZLteWv}RZ40BqjjEe)>AKCcmI)xunB zx3@I5sy&|rWch7hUbzmL+5DBTRPO&uwf!w%2}t`c&|5^^wrWkIx*?~fyiu!f*eZF) z=J#tjm=nRG8&XX@`R5g=C$BuJL1w6@gr$;tO0|9JDFJDx9w9N8X@V09(OGS3SfM!j zA2zPk!U}Gd1teYRw21AFh_%?f)hV{v;JYN-Vyk8DV`AJ*U<~(d43};ZPUwCXnRf_Yz*knT*TZ*N zl;NdSQmMtdxcC%|x1y4cJ&)!B=#_Pls>RaOhc;!Tb@A1MZdOay0Nh1EX$N0B_TG-F zYFeYJUDndnQzd1JKvqyxWYmby2%2g{mC~jfjxTbm!7VR$Hnx4MXTfbUX{n7|J(|W~ zfo{FtMDRc}rnUEVO~c%+1#9o{icM(V=FRcP3l;|{=OmUFGo_})Q<7P(Yz$zW8+x)b z`Xt3h(*!dTrY4ANKjADOLO_lMtW*H)sB(oFQk4&h~fy>XnU1-$UmhLe#?3>B3AhhRFiK=|vWI?ySyHucuai z77h0PAp7&@QKlk*ldGGOWYpi;IgjADLkFoUE&y&Y5F!l3XpU-3ashoToGlDIW;b3W zydhl^9T%e8nT|CsXVB@RADq-8Rk;(Y@}^9Xb1;qiFlbK7i+{2dngGW=4$Z%JYUSkG zDYL*hV&j31fgNb0qe%(l7jqCiwuuEKr{h%8c)FuA{OFVbRG>MgnwCPfl;3x0$C9m< koRIcbKkk2JS=+YH_Srt$XZ`2@4*&rF|M}r-OaL$l0LtAE_W%F@ diff --git a/harmony-chart/charts/elasticsearch-7.17.3.tgz b/harmony-chart/charts/elasticsearch-7.17.3.tgz deleted file mode 100644 index 7f7e84fa066ce9b0e58f4c47c320e3d5d1770863..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 27893 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 diff --git a/harmony-chart/charts/ingress-nginx-4.4.2.tgz b/harmony-chart/charts/ingress-nginx-4.4.2.tgz deleted file mode 100644 index dd5cfd2ffabf13fa08c2c2df972055d9ffe48df3..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 45268 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 WpM{Q|0VoIv0I1+NQG#%WhWH;N9+8*; diff --git a/harmony-chart/charts/metrics-server-3.8.4.tgz b/harmony-chart/charts/metrics-server-3.8.4.tgz deleted file mode 100644 index 05a22d265fae5b0655e961fbe4f7f1ec2ef491b6..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 6853 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 diff --git a/harmony-chart/charts/vertical-pod-autoscaler-6.0.3.tgz b/harmony-chart/charts/vertical-pod-autoscaler-6.0.3.tgz deleted file mode 100644 index fa56ecf0ba74f1922189b187997c2d240e76ca38..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 34080 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�-f%S`B5R_hd8<$-!2~2D7ID-D_l|hdyMMiClabo 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²}A@>y_oVr@p1aM5X4;;R+r_(lL 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 diff --git a/harmony-chart/templates/NOTES.txt b/harmony-chart/templates/NOTES.txt deleted file mode 100644 index d3eb8c1..0000000 --- a/harmony-chart/templates/NOTES.txt +++ /dev/null @@ -1,42 +0,0 @@ - -Your harmony cluster is now ready to use! - -An NGINX load balancer routes all HTTP/HTTPS traffic into the cluster to each -Open edX instance. Even before you deploy any Open edX instances, you can test -that the load balancer is working. First, get its external IP using - - kubectl get svc -n harmony harmony-ingress-nginx-controller - -Next, go to http://the.external.ip.shown/cluster-echo-test and make sure you get -a JSON response. - - - - - -{{- /* - -Examples of more stuff that can be in a NOTES file: - -{{- if .Values.ingress.enabled }} -{{- range $host := .Values.ingress.hosts }} - {{- range .paths }} - http{{ if $.Values.ingress.tls }}s{{ end }}://{{ $host.host }}{{ .path }} - {{- end }} -{{- end }} -{{- else if contains "NodePort" .Values.service.type }} - export NODE_PORT=$(kubectl get --namespace {{ .Release.Namespace }} -o jsonpath="{.spec.ports[0].nodePort}" services {{ include "harmony-chart.fullname" . }}) - export NODE_IP=$(kubectl get nodes --namespace {{ .Release.Namespace }} -o jsonpath="{.items[0].status.addresses[0].address}") - echo http://$NODE_IP:$NODE_PORT -{{- else if contains "LoadBalancer" .Values.service.type }} - NOTE: It may take a few minutes for the LoadBalancer IP to be available. - You can watch the status of by running 'kubectl get --namespace {{ .Release.Namespace }} svc -w {{ include "harmony-chart.fullname" . }}' - export SERVICE_IP=$(kubectl get svc --namespace {{ .Release.Namespace }} {{ include "harmony-chart.fullname" . }} --template "{{"{{ range (index .status.loadBalancer.ingress 0) }}{{.}}{{ end }}"}}") - echo http://$SERVICE_IP:{{ .Values.service.port }} -{{- else if contains "ClusterIP" .Values.service.type }} - export POD_NAME=$(kubectl get pods --namespace {{ .Release.Namespace }} -l "app.kubernetes.io/name={{ include "harmony-chart.name" . }},app.kubernetes.io/instance={{ .Release.Name }}" -o jsonpath="{.items[0].metadata.name}") - export CONTAINER_PORT=$(kubectl get pod --namespace {{ .Release.Namespace }} $POD_NAME -o jsonpath="{.spec.containers[0].ports[0].containerPort}") - echo "Visit http://127.0.0.1:8080 to use your application" - kubectl --namespace {{ .Release.Namespace }} port-forward $POD_NAME 8080:$CONTAINER_PORT -{{- end }} -*/}} diff --git a/harmony-chart/templates/_helpers.tpl b/harmony-chart/templates/_helpers.tpl deleted file mode 100644 index ea3551a..0000000 --- a/harmony-chart/templates/_helpers.tpl +++ /dev/null @@ -1,62 +0,0 @@ -{{/* -Expand the name of the chart. -*/}} -{{- define "harmony-chart.name" -}} -{{- default .Chart.Name .Values.nameOverride | trunc 63 | trimSuffix "-" }} -{{- end }} - -{{/* -Create a default fully qualified app name. -We truncate at 63 chars because some Kubernetes name fields are limited to this (by the DNS naming spec). -If release name contains chart name it will be used as a full name. -*/}} -{{- define "harmony-chart.fullname" -}} -{{- if .Values.fullnameOverride }} -{{- .Values.fullnameOverride | trunc 63 | trimSuffix "-" }} -{{- else }} -{{- $name := default .Chart.Name .Values.nameOverride }} -{{- if contains $name .Release.Name }} -{{- .Release.Name | trunc 63 | trimSuffix "-" }} -{{- else }} -{{- printf "%s-%s" .Release.Name $name | trunc 63 | trimSuffix "-" }} -{{- end }} -{{- end }} -{{- end }} - -{{/* -Create chart name and version as used by the chart label. -*/}} -{{- define "harmony-chart.chart" -}} -{{- printf "%s-%s" .Chart.Name .Chart.Version | replace "+" "_" | trunc 63 | trimSuffix "-" }} -{{- end }} - -{{/* -Common labels -*/}} -{{- define "harmony-chart.labels" -}} -helm.sh/chart: {{ include "harmony-chart.chart" . }} -{{ include "harmony-chart.selectorLabels" . }} -{{- if .Chart.AppVersion }} -app.kubernetes.io/version: {{ .Chart.AppVersion | quote }} -{{- end }} -app.kubernetes.io/managed-by: {{ .Release.Service }} -{{- end }} - -{{/* -Selector labels -*/}} -{{- define "harmony-chart.selectorLabels" -}} -app.kubernetes.io/name: {{ include "harmony-chart.name" . }} -app.kubernetes.io/instance: {{ .Release.Name }} -{{- end }} - -{{/* -Create the name of the service account to use -*/}} -{{- define "harmony-chart.serviceAccountName" -}} -{{- if .Values.serviceAccount.create }} -{{- default (include "harmony-chart.fullname" .) .Values.serviceAccount.name }} -{{- else }} -{{- default "default" .Values.serviceAccount.name }} -{{- end }} -{{- end }} diff --git a/harmony-chart/templates/echo.yaml b/harmony-chart/templates/echo.yaml deleted file mode 100644 index 87f5227..0000000 --- a/harmony-chart/templates/echo.yaml +++ /dev/null @@ -1,58 +0,0 @@ -# This service, which is always enabled, allows you to do basic health checks of your cluster and the Ingress Controller -# Service by accessing /cluster-echo-test via HTTP on any hostname associated with your cluster. -apiVersion: v1 -kind: Service -metadata: - labels: - app: cluster-echo-app - name: cluster-echo-service -spec: - ports: - - port: 8080 - name: high - protocol: TCP - targetPort: 8080 - selector: - app: cluster-echo-app ---- -apiVersion: apps/v1 -kind: Deployment -metadata: - labels: - app: cluster-echo-app - name: cluster-echo-deployment -spec: - replicas: 1 - selector: - matchLabels: - app: cluster-echo-app - strategy: {} - template: - metadata: - creationTimestamp: null - labels: - app: cluster-echo-app - spec: - containers: - - image: mendhak/http-https-echo:25 - name: cluster-echo - ports: - - containerPort: 8080 - resources: {} ---- -apiVersion: networking.k8s.io/v1 -kind: Ingress -metadata: - name: cluster-echo-test -spec: - ingressClassName: {{ (index .Values "ingress-nginx" "controller" "ingressClass") }} - rules: - - http: - paths: - - path: /cluster-echo-test - pathType: Prefix - backend: - service: - name: cluster-echo-service - port: - number: 8080 diff --git a/harmony-chart/templates/elasticsearch/secrets.yaml b/harmony-chart/templates/elasticsearch/secrets.yaml deleted file mode 100644 index e25eecf..0000000 --- a/harmony-chart/templates/elasticsearch/secrets.yaml +++ /dev/null @@ -1,20 +0,0 @@ ---- -{{- $ca := genCA "elasticca" 1825 }} -{{- $cert := genSignedCert "elasticsearch-master.{{ Release.Namespace }}.local" nil (list "elasticsearch-master.{{ Release.Namespace }}.local") 1825 $ca }} -apiVersion: v1 -kind: Secret -metadata: - name: elasticsearch-certificates -type: Opaque -data: - "ca.crt": {{ $ca.Cert | b64enc | toYaml | indent 4}} - "tls.key": {{ $cert.Key | b64enc | toYaml | indent 4}} - "tls.crt": {{ print $cert.Cert $ca.Cert | b64enc | toYaml | indent 4}} ---- -apiVersion: v1 -kind: Secret -metadata: - name: elasticsearch-credentials -type: Opaque -data: - "password": {{ randAlphaNum 32 | b64enc | quote }} diff --git a/harmony-chart/templates/issuer.yaml b/harmony-chart/templates/issuer.yaml deleted file mode 100644 index d3b426b..0000000 --- a/harmony-chart/templates/issuer.yaml +++ /dev/null @@ -1,19 +0,0 @@ -{{ if index .Values "cert-manager" "enabled" }} -apiVersion: cert-manager.io/v1 -kind: ClusterIssuer -metadata: - name: {{ .Release.Name }}-letsencrypt-global -spec: - acme: - {{- if index .Values "cert-manager" "email" }} - email: {{ index .Values "cert-manager" "email" }} - {{- end }} - preferredChain: "" - privateKeySecretRef: - name: {{ .Release.Name }}-letsencrypt-global - server: https://acme-v02.api.letsencrypt.org/directory - solvers: - - http01: - ingress: - class: {{ index .Values "ingress-nginx" "controller" "ingressClass" }} -{{ end }} diff --git a/harmony-chart/templates/tests/example-test-not-used.yamlX b/harmony-chart/templates/tests/example-test-not-used.yamlX deleted file mode 100644 index 34a9779..0000000 --- a/harmony-chart/templates/tests/example-test-not-used.yamlX +++ /dev/null @@ -1,15 +0,0 @@ -apiVersion: v1 -kind: Pod -metadata: - name: "{{ include "harmony-chart.fullname" . }}-test-connection" - labels: - {{- include "harmony-chart.labels" . | nindent 4 }} - annotations: - "helm.sh/hook": test -spec: - containers: - - name: wget - image: busybox - command: ['wget'] - args: ['{{ include "harmony-chart.fullname" . }}:{{ .Values.service.port }}'] - restartPolicy: Never diff --git a/harmony-chart/values.yaml b/harmony-chart/values.yaml deleted file mode 100644 index 06d4969..0000000 --- a/harmony-chart/values.yaml +++ /dev/null @@ -1,79 +0,0 @@ -# Default values for tutor-multi-chart. -# This is a YAML-formatted file. -# Declare variables to be passed into your templates. - -ingress-nginx: - # Use ingress-nginx as a default controller. - enabled: true - -cert-manager: - # Use cert-manager as a default certificate controller. - enabled: true - installCRDs: false - # Email address associated with the ACME account. Used to notify about expiring - # certificates. - email: "" - -# Multi-tenant ElasticSearch -elasticsearch: - enabled: false - - # Operators will need to add/update the following setting in each - # of their instances by running the commands: - # ``` - # tutor config save --set K8S_HARMONY_ENABLE_SHARED_ELASTICSEARCH=true --set RUN_ELASTICSEARCH=false - # tutor harmony create-elasticsearch-user - # ``` - # RUN_ELASTICSEARCH: false - # ELASTICSEARCH_PREFIX_INDEX: "username-" - # K8S_HARMONY_USE_SHARED_ELASTICSEARCH: true - # ELASTICSEARCH_AUTH: "username:actual_password" - - # We will create the relevant certs, because they need to shared - # with pods in other namespaces. - createCert: false - # Authentication is only available in https - protocol: https - - # This secret will contain the http certificates. - secretMounts: - - name: elasticsearch-certificates - secretName: elasticsearch-certificates - path: /usr/share/elasticsearch/config/certs - defaultMode: 0777 - - # The password for the elastic user is stored in this secret - extraEnvs: - - name: ELASTIC_PASSWORD - valueFrom: - secretKeyRef: - name: elasticsearch-credentials - key: password - - esConfig: - "elasticsearch.yml": | - xpack.security.enabled: true - xpack.security.http.ssl.enabled: true - xpack.security.http.ssl.key: /usr/share/elasticsearch/config/certs/tls.key - xpack.security.http.ssl.certificate: /usr/share/elasticsearch/config/certs/tls.crt - xpack.security.transport.ssl.enabled: true - xpack.security.transport.ssl.key: /usr/share/elasticsearch/config/certs/tls.key - xpack.security.transport.ssl.certificate: /usr/share/elasticsearch/config/certs/tls.crt - xpack.security.transport.ssl.certificate_authorities: /usr/share/elasticsearch/config/certs/ca.crt - xpack.security.transport.ssl.verification_mode: certificate - -# Configuration for the metrics server chart -metricsserver: - # Control the chart inclusion - enabled: false - # See https://github.com/kubernetes-sigs/metrics-server/blob/master/charts/metrics-server/values.yaml - # for all available options - replicas: 1 -# Configuration for the Vertical Pod Autoscaler chart -vpa: - # Control the chart inclusion - enabled: false - # See https://github.com/cowboysysop/charts/blob/master/charts/vertical-pod-autoscaler/values.yaml - # for all available options - admissionController: - replicaCount: 1 diff --git a/infra-example/k8s-cluster/main.tf b/infra-example/k8s-cluster/main.tf deleted file mode 100644 index 5bd2c5f..0000000 --- a/infra-example/k8s-cluster/main.tf +++ /dev/null @@ -1,55 +0,0 @@ -terraform { - required_providers { - digitalocean = { - source = "digitalocean/digitalocean" - version = ">=2.23" - } - } -} - -variable "cluster_name" { type = string } -variable "do_region" { - type = string - default = "tor1" -} - -data "digitalocean_kubernetes_versions" "available_versions" {} - -resource "digitalocean_kubernetes_cluster" "cluster" { - name = var.cluster_name - region = var.do_region - version = data.digitalocean_kubernetes_versions.available_versions.latest_version - #vpc_uuid = var.vpc_uuid - auto_upgrade = true - # "Surge upgrade makes cluster upgrades fast and reliable by bringing up new nodes before destroying the outdated nodes." - surge_upgrade = true - - node_pool { - name = "${var.cluster_name}-nodes" - size = "s-4vcpu-8gb" - # At this size, at least 3 nodes are recommended to run 2 Open edX instances using the default Tutor images, because - # resources like MySQL/MongoDB are not shared. - min_nodes = 3 - max_nodes = 4 - auto_scale = true - } -} - -resource "local_sensitive_file" "kubeconfig" { - filename = "${path.root}/kubeconfig" - content = digitalocean_kubernetes_cluster.cluster.kube_config[0].raw_config - file_permission = "0400" -} - -output "kubeconfig" { - value = digitalocean_kubernetes_cluster.cluster.kube_config[0] - sensitive = true -} - -output "cluster_urn" { - value = digitalocean_kubernetes_cluster.cluster.urn -} - -output "cluster_id" { - value = digitalocean_kubernetes_cluster.cluster.id -} diff --git a/infra-example/main.tf b/infra-example/main.tf deleted file mode 100644 index 9c119e4..0000000 --- a/infra-example/main.tf +++ /dev/null @@ -1,94 +0,0 @@ -# A cluster to test proof of concept on DigitalOcean -terraform { - required_providers { - digitalocean = { - source = "digitalocean/digitalocean" - version = ">=2.23" - } - kubernetes = { - source = "hashicorp/kubernetes" - version = "2.15.0" - } - kubectl = { - source = "gavinbunney/kubectl" - version = "1.14.0" - } - helm = { - source = "hashicorp/helm" - version = "2.7.1" - } - } -} - -# Configure the DigitalOcean Provider -provider "digitalocean" { - token = var.do_token -} - -variable "cluster_name" { type = string } -variable "do_token" { - type = string - sensitive = true -} - -module "k8s_cluster" { - source = "./k8s-cluster" - - cluster_name = var.cluster_name - # max_worker_node_count = var.max_worker_node_count - # min_worker_node_count = var.min_worker_node_count - # worker_node_size = var.worker_node_size - # region = var.do_region - # vpc_uuid = digitalocean_vpc.main_vpc.id - # vpc_ip_range = var.vpc_ip_range -} - -# Pre-declare data sources that we can use to get the cluster ID and auth info, once it's created -data "digitalocean_kubernetes_cluster" "cluster" { - name = var.cluster_name - # Set the depends_on so that the data source doesn't - # try to read from a cluster that doesn't exist, causing - # failures when trying to run a `terraform plan`. - depends_on = [module.k8s_cluster.cluster_id] -} - -# Configure Kubernetes provider -provider "kubernetes" { - host = data.digitalocean_kubernetes_cluster.cluster.endpoint - token = data.digitalocean_kubernetes_cluster.cluster.kube_config[0].token - cluster_ca_certificate = base64decode(data.digitalocean_kubernetes_cluster.cluster.kube_config[0].cluster_ca_certificate) -} - -# Configure Helm provider -provider "helm" { - kubernetes { - host = data.digitalocean_kubernetes_cluster.cluster.endpoint - token = data.digitalocean_kubernetes_cluster.cluster.kube_config[0].token - cluster_ca_certificate = base64decode(data.digitalocean_kubernetes_cluster.cluster.kube_config[0].cluster_ca_certificate) - } -} - -provider "kubectl" { - host = data.digitalocean_kubernetes_cluster.cluster.endpoint - token = data.digitalocean_kubernetes_cluster.cluster.kube_config[0].token - cluster_ca_certificate = base64decode(data.digitalocean_kubernetes_cluster.cluster.kube_config[0].cluster_ca_certificate) - load_config_file = false -} - - -# Declare the kubeconfig as an output - access it anytime with "terraform output -raw kubeconfig" -output "kubeconfig" { - value = module.k8s_cluster.kubeconfig.raw_config - sensitive = true -} - -resource "digitalocean_project" "project" { - name = var.cluster_name - description = "Testing the use of Helm to provision a cluster for multi-instance tutor deployment" - purpose = "Web Application" - environment = "Production" - - resources = [ - module.k8s_cluster.cluster_urn, - ] -} diff --git a/tutor-contrib-harmony-plugin/.gitignore b/tutor-contrib-harmony-plugin/.gitignore deleted file mode 100644 index b7bcd33..0000000 --- a/tutor-contrib-harmony-plugin/.gitignore +++ /dev/null @@ -1,7 +0,0 @@ -.*.swp -!.gitignore -TODO -__pycache__ -*.egg-info/ -/build/ -/dist/ \ No newline at end of file diff --git a/tutor-contrib-harmony-plugin/MANIFEST.in b/tutor-contrib-harmony-plugin/MANIFEST.in deleted file mode 100644 index 00b80df..0000000 --- a/tutor-contrib-harmony-plugin/MANIFEST.in +++ /dev/null @@ -1,2 +0,0 @@ -recursive-include tutor_k8s_harmony_plugin/patches * -recursive-include tutor_k8s_harmony_plugin/templates * diff --git a/tutor-contrib-harmony-plugin/README.rst b/tutor-contrib-harmony-plugin/README.rst deleted file mode 100644 index d48492f..0000000 --- a/tutor-contrib-harmony-plugin/README.rst +++ /dev/null @@ -1,5 +0,0 @@ -This is a plugin for Tutor to make it easier to deploy multiple Tutor instances -onto a single cluster. This disables the use of Caddy as an external endpoint -and instead uses it only for per-instance routing. An Ingress is used to -automatically register each Open edX instance with a central NGINX load -balancer that routes traffic for the whole cluster. diff --git a/tutor-contrib-harmony-plugin/setup.py b/tutor-contrib-harmony-plugin/setup.py deleted file mode 100644 index 289a860..0000000 --- a/tutor-contrib-harmony-plugin/setup.py +++ /dev/null @@ -1,59 +0,0 @@ -import io -import os -from setuptools import setup, find_packages - -HERE = os.path.abspath(os.path.dirname(__file__)) - - -def load_readme(): - with io.open(os.path.join(HERE, "README.rst"), "rt", encoding="utf8") as f: - return f.read() - - -def load_about(): - about = {} - with io.open( - os.path.join(HERE, "tutor_k8s_harmony_plugin", "__about__.py"), - "rt", - encoding="utf-8", - ) as f: - exec(f.read(), about) # pylint: disable=exec-used - return about - - -ABOUT = load_about() - - -setup( - name="tutor-contrib-harmony-plugin", - version=ABOUT["__version__"], - url="https://github.com/openedx/openedx-k8s-harmony", - project_urls={ - "Code": "https://github.com/openedx/openedx-k8s-harmony", - "Issue tracker": "https://github.com/openedx/openedx-k8s-harmony/issues", - }, - license="AGPLv3", - author="Braden MacDonald", - description="multi instance k8s plugin for Tutor", - long_description=load_readme(), - packages=find_packages(exclude=["tests*"]), - include_package_data=True, - python_requires=">=3.7", - install_requires=["tutor"], - entry_points={ - "tutor.plugin.v1": [ - "k8s_harmony = tutor_k8s_harmony_plugin.plugin" - ] - }, - classifiers=[ - "Development Status :: 3 - Alpha", - "Intended Audience :: Developers", - "License :: OSI Approved :: GNU Affero General Public License v3", - "Operating System :: OS Independent", - "Programming Language :: Python", - "Programming Language :: Python :: 3.7", - "Programming Language :: Python :: 3.8", - "Programming Language :: Python :: 3.9", - "Programming Language :: Python :: 3.10", - ], -) diff --git a/tutor-contrib-harmony-plugin/tutor_k8s_harmony_plugin/__about__.py b/tutor-contrib-harmony-plugin/tutor_k8s_harmony_plugin/__about__.py deleted file mode 100644 index a68927d..0000000 --- a/tutor-contrib-harmony-plugin/tutor_k8s_harmony_plugin/__about__.py +++ /dev/null @@ -1 +0,0 @@ -__version__ = "0.1.0" \ No newline at end of file diff --git a/tutor-contrib-harmony-plugin/tutor_k8s_harmony_plugin/__init__.py b/tutor-contrib-harmony-plugin/tutor_k8s_harmony_plugin/__init__.py deleted file mode 100644 index e69de29..0000000 diff --git a/tutor-contrib-harmony-plugin/tutor_k8s_harmony_plugin/commands.py b/tutor-contrib-harmony-plugin/tutor_k8s_harmony_plugin/commands.py deleted file mode 100644 index 643d019..0000000 --- a/tutor-contrib-harmony-plugin/tutor_k8s_harmony_plugin/commands.py +++ /dev/null @@ -1,44 +0,0 @@ -import os - -import click -from tutor import config as tutor_config -from tutor import env as tutor_env -from tutor.commands.k8s import K8sContext, kubectl_exec -from .elasticsearch import ElasticSearchAPI - -@click.group(help="Commands and subcommands of the openedx-k8s-harmony.") -@click.pass_context -def harmony(context: click.Context) -> None: - context.obj = K8sContext(context.obj.root) - - -@click.command(help="Create or update Elasticsearch users") -@click.pass_obj -def create_elasticsearch_user(context: click.Context): - """ - Creates or updates the Elasticsearch user - """ - config = tutor_config.load(context.root) - namespace = config["K8S_HARMONY_NAMESPACE"] - api = ElasticSearchAPI(namespace) - username, password = config["ELASTICSEARCH_HTTP_AUTH"].split(":", 1) - role_name = f"{username}_role" - - prefix = config["ELASTICSEARCH_INDEX_PREFIX"] - api.post( - f"_security/role/{role_name}", - {"indices": [{"names": [f"{prefix}*"], "privileges": ["all"]}]}, - ) - - api.post( - f"_security/user/{username}", - { - "password": password, - "enabled": True, - "roles": [role_name], - "full_name": username, - }, - ) - - -harmony.add_command(create_elasticsearch_user) diff --git a/tutor-contrib-harmony-plugin/tutor_k8s_harmony_plugin/elasticsearch.py b/tutor-contrib-harmony-plugin/tutor_k8s_harmony_plugin/elasticsearch.py deleted file mode 100644 index c654e31..0000000 --- a/tutor-contrib-harmony-plugin/tutor_k8s_harmony_plugin/elasticsearch.py +++ /dev/null @@ -1,70 +0,0 @@ -import json -import typing - -from tutor import utils - - -class ElasticSearchAPI: - """ - Helper class to interact with the ElasticSearch - API on the deployed cluster. - """ - - def __init__(self, namespace): - self._command_base = [ - "kubectl", - "exec", - "--stdin", - "--tty", - "--namespace", - namespace, - "elasticsearch-master-0", - "--", - "bash", - "-c", - ] - self._curl_base = ["curl", "--insecure", "-u", "elastic:${ELASTIC_PASSWORD}"] - - def run_command(self, curl_options) -> typing.Union[dict, bytes]: - """ - Invokes a curl command on the first Elasticsearch pod. - - If possible returns the parsed json from the Elasticsearch response. - Otherwise, the raw bytes from the curl command are returned. - """ - response = utils.check_output( - *self._command_base, " ".join(self._curl_base + curl_options) - ) - try: - return json.loads(response) - except (TypeError, ValueError): - return response - - def get(self, endpoint): - """ - Runs a GET request on the Elasticsearch cluster with the specified - endpoint. - - If possible returns the parsed json from the Elasticsearch response. - Otherwise, the raw bytes from the curl command are returned. - """ - return self.run_command(["-XGET", f"https://localhost:9200/{endpoint}"]) - - def post(self, endpoint: str, data: dict) -> typing.Union[dict, bytes]: - """ - Runs a POST request on the Elasticsearch cluster with the specified - endpoint. - - If possible returns the parsed json from the Elasticsearch response. - Otherwise, the raw bytes from the curl command are returned. - """ - return self.run_command( - [ - "-XPOST", - f"https://localhost:9200/{endpoint}", - "-d", - f"'{json.dumps(data)}'", - "-H", - '"Content-Type: application/json"', - ] - ) diff --git a/tutor-contrib-harmony-plugin/tutor_k8s_harmony_plugin/patches/k8s-services b/tutor-contrib-harmony-plugin/tutor_k8s_harmony_plugin/patches/k8s-services deleted file mode 100644 index 626288f..0000000 --- a/tutor-contrib-harmony-plugin/tutor_k8s_harmony_plugin/patches/k8s-services +++ /dev/null @@ -1,34 +0,0 @@ ---- -# For multi-instance clusters. Allow one central load balancer on the cluster to -# handle HTTPS certs and forward traffic to each Open edX instance's Caddy -# instance. -{%- set HOSTS = [LMS_HOST, CMS_HOST, PREVIEW_HOST, MFE_HOST] + K8S_HARMONY_INGRESS_HOST_LIST %} -apiVersion: networking.k8s.io/v1 -kind: Ingress -metadata: - name: central-lb-to-caddy-ingress - labels: - app.kubernetes.io/component: ingress - annotations: - cert-manager.io/cluster-issuer: harmony-letsencrypt-global -spec: - ingressClassName: {{ K8S_HARMONY_INGRESS_CLASS_NAME }} - rules: - {%- for host in HOSTS if host is defined %} - - host: "{{ host }}" - http: - paths: - - path: / - pathType: Prefix - backend: - service: - name: caddy - port: - number: {{ CADDY_HTTP_PORT }} - {%- endfor %} - tls: - - hosts: - {%- for host in HOSTS if host is defined %} - - {{ host -}} - {% endfor %} - secretName: central-lb-ingress-tls diff --git a/tutor-contrib-harmony-plugin/tutor_k8s_harmony_plugin/patches/openedx-common-settings b/tutor-contrib-harmony-plugin/tutor_k8s_harmony_plugin/patches/openedx-common-settings deleted file mode 100644 index c2e5611..0000000 --- a/tutor-contrib-harmony-plugin/tutor_k8s_harmony_plugin/patches/openedx-common-settings +++ /dev/null @@ -1,10 +0,0 @@ -{% if K8S_HARMONY_ENABLE_SHARED_ELASTICSEARCH %} -ELASTICSEARCH_INDEX_PREFIX = "{{ELASTICSEARCH_INDEX_PREFIX}}" -ELASTIC_SEARCH_CONFIG = [{ - "use_ssl": True, - "host": "elasticsearch-master.{{K8S_HARMONY_NAMESPACE}}.svc.cluster.local", - "verify_certs": False, - "port": 9200, - "http_auth": "{{ ELASTICSEARCH_HTTP_AUTH }}" -}] -{% endif %} diff --git a/tutor-contrib-harmony-plugin/tutor_k8s_harmony_plugin/patches/openedx-dockerfile-post-python-requirements b/tutor-contrib-harmony-plugin/tutor_k8s_harmony_plugin/patches/openedx-dockerfile-post-python-requirements deleted file mode 100644 index 660080a..0000000 --- a/tutor-contrib-harmony-plugin/tutor_k8s_harmony_plugin/patches/openedx-dockerfile-post-python-requirements +++ /dev/null @@ -1,7 +0,0 @@ -{% if K8S_HARMONY_ENABLE_SHARED_ELASTICSEARCH %} -# This is needed otherwise the previously installed edx-search -# package doesn't get replaced. Once the below branch is merged -# upstream it will no longer be needed. -RUN pip uninstall -y edx-search -RUN pip install --upgrade git+https://github.com/open-craft/edx-search.git@keith/prefixed-index-names -{% endif %} diff --git a/tutor-contrib-harmony-plugin/tutor_k8s_harmony_plugin/plugin.py b/tutor-contrib-harmony-plugin/tutor_k8s_harmony_plugin/plugin.py deleted file mode 100644 index 568f14a..0000000 --- a/tutor-contrib-harmony-plugin/tutor_k8s_harmony_plugin/plugin.py +++ /dev/null @@ -1,57 +0,0 @@ -from glob import glob -import os -import pkg_resources - -from tutor import hooks -from . import commands - -from .__about__ import __version__ - -config = { - "defaults": { - "VERSION": __version__, - # This plugin assumes you are using ingress-nginx as an ingress controller to provide - # you with a central load balancer. The standard Ingress object uses annotations to - # trigger the generation of certificates using cert-manager. - # See: https://cert-manager.io/docs/usage/ingress/#supported-annotations - "INGRESS_CLASS_NAME": "nginx", - # Currently there is no easy way to autodiscover a list of public hosts of your - # Open edX installation to add to your ingress routes. This especially evident - # when installing additional plugins such as tutor-ecommerce or tutor-minio. - # The workaround is to manually add a list of hosts to be routed to the caddy - # instance. - "INGRESS_HOST_LIST": [], - "ENABLE_SHARED_ELASTICSEARCH": False, - }, - "overrides": { - # Don't use Caddy as a per-instance external web proxy, but do still use it - # for per-instance load balancing. - "ENABLE_WEB_PROXY": False, - # We are using HTTPS - "ENABLE_HTTPS": True, - }, - "unique": { - "ELASTICSEARCH_HTTP_AUTH": "{{K8S_NAMESPACE}}:{{ 24|random_string }}", - "ELASTICSEARCH_INDEX_PREFIX": "{{K8S_NAMESPACE}}-{{ 4|random_string|lower }}-", - }, -} - -# Load all configuration entries -hooks.Filters.CONFIG_DEFAULTS.add_items( - [(f"K8S_HARMONY_{key}", value) for key, value in config["defaults"].items()] -) - -hooks.Filters.CONFIG_OVERRIDES.add_items(list(config["overrides"].items())) -hooks.Filters.CONFIG_UNIQUE.add_items(list(config["unique"].items())) - -# Load all patches from the "patches" folder -for path in glob( - os.path.join( - pkg_resources.resource_filename("tutor_k8s_harmony_plugin", "patches"), - "*", - ) -): - with open(path, encoding="utf-8") as patch_file: - hooks.Filters.ENV_PATCHES.add_item((os.path.basename(path), patch_file.read())) - -hooks.Filters.CLI_COMMANDS.add_item(commands.harmony) diff --git a/values-example.yaml b/values-example.yaml deleted file mode 100644 index 22eb500..0000000 --- a/values-example.yaml +++ /dev/null @@ -1,15 +0,0 @@ -ingress-nginx: - controller: - config: - proxy-body-size: 100m -cert-manager: - # Set your email address here so auto-generated HTTPS certs will work: - email: "email@example.com" - -elasticsearch: - enabled: false - -metricsserver: - enabled: false -vpa: - enabled: false diff --git a/values-minikube.yaml b/values-minikube.yaml deleted file mode 100644 index 3f12c49..0000000 --- a/values-minikube.yaml +++ /dev/null @@ -1,3 +0,0 @@ -# Disable HTTPS cert provisioning for testing with minikube -cert-manager: - enabled: false