From 9ba2dd5649923d0a893ec95d45cbf394aac901d9 Mon Sep 17 00:00:00 2001 From: Shubhadeep Das Date: Wed, 6 Nov 2024 23:36:33 +0530 Subject: [PATCH] Upstream changes for v1.0.0 release Signed-off-by: Shubhadeep Das --- .dockerignore | 19 + .gitignore | 2 + CHANGELOG.md | 9 + CONTRIBUTING.md | 55 + LICENSE-3rd-party.txt | 3686 +++++++++++++++++ LICENSE => LICENSE.md | 2 +- README.md | 104 +- SECURITY.md | 24 + data/FAQ.pdf | Bin 0 -> 192435 bytes data/LICENSE | 58 + data/download.sh | 19 + data/gear-store.csv | 687 +++ data/list_manuals.txt | 6 + data/orders.csv | 574 +++ deploy/compose/README.md | 221 + deploy/compose/docker-compose.yaml | 350 ++ deploy/compose/nims.yaml | 87 + docs/api_references/agent_server.json | 597 +++ docs/api_references/analytics_server.json | 927 +++++ docs/api_references/api_gateway_server.json | 330 ++ docs/api_references/retriever_server.json | 419 ++ docs/imgs/IVA-blueprint-diagram-r5.png | Bin 0 -> 569457 bytes docs/imgs/api-catalog-generate-api-key.png | Bin 0 -> 29520 bytes docs/imgs/key-generated.png | Bin 0 -> 66356 bytes .../llama3.1-70b-instruct-get-api-key.png | Bin 0 -> 367378 bytes .../imgs/llama3.1-70b-instruct-model-card.png | Bin 0 -> 462396 bytes notebooks/ingest_data.ipynb | 630 +++ notebooks/synthetic_data_generation.ipynb | 451 ++ src/agent/Dockerfile | 47 + src/agent/cache/__init__.py | 14 + src/agent/cache/local_cache.py | 108 + src/agent/cache/redis_client.py | 193 + src/agent/cache/session_manager.py | 75 + src/agent/datastore/__init__.py | 14 + src/agent/datastore/datastore.py | 53 + src/agent/datastore/postgres_client.py | 120 + src/agent/main.py | 500 +++ src/agent/prompt.yaml | 123 + src/agent/requirements.txt | 16 + src/agent/server.py | 586 +++ src/agent/tools.py | 285 ++ src/agent/utils.py | 242 ++ src/analytics/Dockerfile | 46 + src/analytics/README.md | 7 + src/analytics/datastore/__init__.py | 14 + src/analytics/datastore/postgres_client.py | 357 ++ src/analytics/datastore/redis_client.py | 194 + src/analytics/datastore/session_manager.py | 107 + src/analytics/main.py | 242 ++ src/analytics/prompt.yaml | 20 + src/analytics/requirements.txt | 10 + src/analytics/server.py | 495 +++ src/api_gateway/Dockerfile | 45 + src/api_gateway/README.md | 7 + src/api_gateway/main.py | 286 ++ src/api_gateway/requirements.txt | 6 + src/common/__init__.py | 14 + src/common/configuration.py | 331 ++ src/common/configuration_wizard.py | 411 ++ src/common/utils.py | 362 ++ src/ingest_service/Dockerfile | 45 + src/ingest_service/docker-compose.yaml | 14 + src/ingest_service/import_csv_to_sql.py | 127 + src/ingest_service/ingest_doc.py | 134 + src/ingest_service/proxy_server.py | 58 + src/ingest_service/requirements.txt | 6 + src/retrievers/Dockerfile | 69 + src/retrievers/base.py | 37 + src/retrievers/server.py | 283 ++ src/retrievers/structured_data/__init__.py | 14 + src/retrievers/structured_data/chains.py | 122 + src/retrievers/structured_data/connector.py | 43 + .../structured_data/pandasai/llms/__init__.py | 14 + .../pandasai/llms/nv_aiplay.py | 111 + src/retrievers/structured_data/prompt.yaml | 25 + .../structured_data/requirements.txt | 11 + src/retrievers/unstructured_data/chains.py | 206 + src/retrievers/unstructured_data/prompt.yaml | 4 + .../unstructured_data/requirements.txt | 11 + 79 files changed, 15919 insertions(+), 2 deletions(-) create mode 100644 .dockerignore create mode 100644 .gitignore create mode 100644 CHANGELOG.md create mode 100644 CONTRIBUTING.md create mode 100644 LICENSE-3rd-party.txt rename LICENSE => LICENSE.md (99%) create mode 100644 SECURITY.md create mode 100644 data/FAQ.pdf create mode 100644 data/LICENSE create mode 100755 data/download.sh create mode 100644 data/gear-store.csv create mode 100755 data/list_manuals.txt create mode 100644 data/orders.csv create mode 100644 deploy/compose/README.md create mode 100644 deploy/compose/docker-compose.yaml create mode 100644 deploy/compose/nims.yaml create mode 100644 docs/api_references/agent_server.json create mode 100644 docs/api_references/analytics_server.json create mode 100644 docs/api_references/api_gateway_server.json create mode 100644 docs/api_references/retriever_server.json create mode 100644 docs/imgs/IVA-blueprint-diagram-r5.png create mode 100644 docs/imgs/api-catalog-generate-api-key.png create mode 100644 docs/imgs/key-generated.png create mode 100644 docs/imgs/llama3.1-70b-instruct-get-api-key.png create mode 100644 docs/imgs/llama3.1-70b-instruct-model-card.png create mode 100644 notebooks/ingest_data.ipynb create mode 100644 notebooks/synthetic_data_generation.ipynb create mode 100644 src/agent/Dockerfile create mode 100644 src/agent/cache/__init__.py create mode 100644 src/agent/cache/local_cache.py create mode 100644 src/agent/cache/redis_client.py create mode 100644 src/agent/cache/session_manager.py create mode 100644 src/agent/datastore/__init__.py create mode 100644 src/agent/datastore/datastore.py create mode 100644 src/agent/datastore/postgres_client.py create mode 100644 src/agent/main.py create mode 100644 src/agent/prompt.yaml create mode 100644 src/agent/requirements.txt create mode 100644 src/agent/server.py create mode 100644 src/agent/tools.py create mode 100644 src/agent/utils.py create mode 100644 src/analytics/Dockerfile create mode 100644 src/analytics/README.md create mode 100644 src/analytics/datastore/__init__.py create mode 100644 src/analytics/datastore/postgres_client.py create mode 100644 src/analytics/datastore/redis_client.py create mode 100644 src/analytics/datastore/session_manager.py create mode 100644 src/analytics/main.py create mode 100644 src/analytics/prompt.yaml create mode 100644 src/analytics/requirements.txt create mode 100644 src/analytics/server.py create mode 100644 src/api_gateway/Dockerfile create mode 100644 src/api_gateway/README.md create mode 100644 src/api_gateway/main.py create mode 100644 src/api_gateway/requirements.txt create mode 100644 src/common/__init__.py create mode 100644 src/common/configuration.py create mode 100644 src/common/configuration_wizard.py create mode 100644 src/common/utils.py create mode 100644 src/ingest_service/Dockerfile create mode 100644 src/ingest_service/docker-compose.yaml create mode 100644 src/ingest_service/import_csv_to_sql.py create mode 100644 src/ingest_service/ingest_doc.py create mode 100644 src/ingest_service/proxy_server.py create mode 100644 src/ingest_service/requirements.txt create mode 100644 src/retrievers/Dockerfile create mode 100644 src/retrievers/base.py create mode 100644 src/retrievers/server.py create mode 100644 src/retrievers/structured_data/__init__.py create mode 100644 src/retrievers/structured_data/chains.py create mode 100644 src/retrievers/structured_data/connector.py create mode 100644 src/retrievers/structured_data/pandasai/llms/__init__.py create mode 100644 src/retrievers/structured_data/pandasai/llms/nv_aiplay.py create mode 100644 src/retrievers/structured_data/prompt.yaml create mode 100644 src/retrievers/structured_data/requirements.txt create mode 100644 src/retrievers/unstructured_data/chains.py create mode 100644 src/retrievers/unstructured_data/prompt.yaml create mode 100644 src/retrievers/unstructured_data/requirements.txt diff --git a/.dockerignore b/.dockerignore new file mode 100644 index 0000000..f6e42cc --- /dev/null +++ b/.dockerignore @@ -0,0 +1,19 @@ +# Ignore git objects +.git/ +.gitignore +.gitlab-ci.yml +.gitmodules + +# Ignore temperory volumes +**/volumes + +# creating a docker image +.dockerignore + +# Ignore any virtual environment configuration files +.env* +.venv/ +env/ +# Ignore python bytecode files +*.pyc +__pycache__/ diff --git a/.gitignore b/.gitignore new file mode 100644 index 0000000..fa4bd29 --- /dev/null +++ b/.gitignore @@ -0,0 +1,2 @@ +deploy/compose/volumes/ +notebooks/.ipynb_checkpoints \ No newline at end of file diff --git a/CHANGELOG.md b/CHANGELOG.md new file mode 100644 index 0000000..4f1d4e1 --- /dev/null +++ b/CHANGELOG.md @@ -0,0 +1,9 @@ +## Changelog +All notable changes to this project will be documented in this file. +The format is based on Keep a Changelog, and this project adheres to Semantic Versioning. + +## [1.0.0] - 2024-10-23 + +### Added + +- First release. \ No newline at end of file diff --git a/CONTRIBUTING.md b/CONTRIBUTING.md new file mode 100644 index 0000000..373ff92 --- /dev/null +++ b/CONTRIBUTING.md @@ -0,0 +1,55 @@ +### Pull Requests +Developer workflow for code contributions is as follows: + +1. Developers must first [fork](https://docs.github.com/en/pull-requests/collaborating-with-pull-requests/working-with-forks/fork-a-repo) the upstream this repository. +2. Git clone the forked repository and push changes to the personal fork. +3. Once the code changes are staged on the fork and ready for review, a Pull Request (PR) can be requested to merge the changes from a branch of the fork into a selected branch of upstream. +4. Since there is no CI/CD process in place yet, the PR will be accepted and the corresponding issue closed only after adequate testing has been completed, manually, by the developer and/or repository owners reviewing the code. + + +#### Signing Your Work +We require that all contributors "sign-off" on their commits. This certifies that the contribution is your original work, or you have rights to submit it under the same license, or a compatible license. + +Any contribution which contains commits that are not Signed-Off will not be accepted. +To sign off on a commit, use the `--signoff` (or `-s`) option when committing your changes: + +`$ git commit -s -m "Add cool feature."` +This will append the following to your commit message: + +Signed-off-by: Your Name + + +#### Developer Certificate of Origin +Version 1.1 + +Copyright (C) 2004, 2006 The Linux Foundation and its contributors. + +Everyone is permitted to copy and distribute verbatim copies of this +license document, but changing it is not allowed. + + +Developer's Certificate of Origin 1.1 + +By making a contribution to this project, I certify that: + +(a) The contribution was created in whole or in part by me and I + have the right to submit it under the open source license + indicated in the file; or + +(b) The contribution is based upon previous work that, to the best + of my knowledge, is covered under an appropriate open source + license and I have the right under that license to submit that + work with modifications, whether created in whole or in part + by me, under the same open source license (unless I am + permitted to submit under a different license), as indicated + in the file; or + +(c) The contribution was provided directly to me by some other + person who certified (a), (b) or (c) and I have not modified + it. + +(d) I understand and agree that this project and the contribution + are public and that a record of the contribution (including all + personal information I submit with it, including my sign-off) is + maintained indefinitely and may be redistributed consistent with + this project or the open source license(s) involved. \ No newline at end of file diff --git a/LICENSE-3rd-party.txt b/LICENSE-3rd-party.txt new file mode 100644 index 0000000..4a6fa6f --- /dev/null +++ b/LICENSE-3rd-party.txt @@ -0,0 +1,3686 @@ + + +--- LICENSE FOR fastapi --- +https://raw.githubusercontent.com/tiangolo/fastapi/master/LICENSE + + +The MIT License (MIT) + +Copyright (c) 2018 Sebastián Ramírez + +Permission is hereby granted, free of charge, to any person obtaining a copy +of this software and associated documentation files (the "Software"), to deal +in the Software without restriction, including without limitation the rights +to use, copy, modify, merge, publish, distribute, sublicense, and/or sell +copies of the Software, and to permit persons to whom the Software is +furnished to do so, subject to the following conditions: + +The above copyright notice and this permission notice shall be included in +all copies or substantial portions of the Software. + +THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR +IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, +FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE +AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER +LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, +OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN +THE SOFTWARE. + + +--- LICENSE FOR uvicorn --- +https://raw.githubusercontent.com/encode/uvicorn/master/LICENSE.md + + +Copyright © 2017-present, [Encode OSS Ltd](https://www.encode.io/). +All rights reserved. + +Redistribution and use in source and binary forms, with or without +modification, are permitted provided that the following conditions are met: + +* Redistributions of source code must retain the above copyright notice, this + list of conditions and the following disclaimer. + +* Redistributions in binary form must reproduce the above copyright notice, + this list of conditions and the following disclaimer in the documentation + and/or other materials provided with the distribution. + +* Neither the name of the copyright holder nor the names of its + contributors may be used to endorse or promote products derived from + this software without specific prior written permission. + +THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" +AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE +IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE +DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT HOLDER OR CONTRIBUTORS BE LIABLE +FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL +DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR +SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER +CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, +OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE +OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. + + +--- LICENSE FOR langchain --- +https://raw.githubusercontent.com/langchain-ai/langchain/master/LICENSE + + +MIT License + +Copyright (c) LangChain, Inc. + +Permission is hereby granted, free of charge, to any person obtaining a copy +of this software and associated documentation files (the "Software"), to deal +in the Software without restriction, including without limitation the rights +to use, copy, modify, merge, publish, distribute, sublicense, and/or sell +copies of the Software, and to permit persons to whom the Software is +furnished to do so, subject to the following conditions: + +The above copyright notice and this permission notice shall be included in all +copies or substantial portions of the Software. + +THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR +IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, +FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE +AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER +LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, +OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE +SOFTWARE. + + +--- LICENSE FOR dataclass-wizard --- +https://raw.githubusercontent.com/rnag/dataclass-wizard/main/LICENSE + + +Apache Software License 2.0 + +Copyright (c) 2021, Ritvik Nag + +Licensed under the Apache License, Version 2.0 (the "License"); +you may not use this file except in compliance with the License. +You may obtain a copy of the License at + +http://www.apache.org/licenses/LICENSE-2.0 + +Unless required by applicable law or agreed to in writing, software +distributed under the License is distributed on an "AS IS" BASIS, +WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +See the License for the specific language governing permissions and +limitations under the License. + + + +--- LICENSE FOR langchain --- +https://raw.githubusercontent.com/langchain-ai/langchain/master/LICENSE + + +MIT License + +Copyright (c) LangChain, Inc. + +Permission is hereby granted, free of charge, to any person obtaining a copy +of this software and associated documentation files (the "Software"), to deal +in the Software without restriction, including without limitation the rights +to use, copy, modify, merge, publish, distribute, sublicense, and/or sell +copies of the Software, and to permit persons to whom the Software is +furnished to do so, subject to the following conditions: + +The above copyright notice and this permission notice shall be included in all +copies or substantial portions of the Software. + +THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR +IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, +FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE +AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER +LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, +OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE +SOFTWARE. + + +--- LICENSE FOR langgraph --- +https://raw.githubusercontent.com/langchain-ai/langgraph/main/LICENSE + + +MIT License + +Copyright (c) 2024 LangChain, Inc. + +Permission is hereby granted, free of charge, to any person obtaining a copy +of this software and associated documentation files (the "Software"), to deal +in the Software without restriction, including without limitation the rights +to use, copy, modify, merge, publish, distribute, sublicense, and/or sell +copies of the Software, and to permit persons to whom the Software is +furnished to do so, subject to the following conditions: + +The above copyright notice and this permission notice shall be included in all +copies or substantial portions of the Software. + +THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR +IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, +FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE +AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER +LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, +OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE +SOFTWARE. + + +--- LICENSE FOR redis --- +https://raw.githubusercontent.com/redis/redis/unstable/LICENSE.txt + + +Starting on March 20th, 2024, Redis follows a dual-licensing model with all Redis project code +contributions under version 7.4 and subsequent releases governed by the Redis Software Grant and +Contributor License Agreement. After this date, contributions are subject to the user's choice of +the Redis Source Available License v2 (RSALv2) or the Server Side Public License v1 (SSPLv1), as +follows: + + +1. Redis Source Available License 2.0 (RSALv2) Agreement +======================================================== + +Last Update: December 30, 2023 + +Acceptance +---------- + +This Agreement sets forth the terms and conditions on which the Licensor +makes available the Software. By installing, downloading, accessing, +Using, or distributing any of the Software, You agree to all of the +terms and conditions of this Agreement. + +If You are receiving the Software on behalf of Your Company, You +represent and warrant that You have the authority to agree to this +Agreement on behalf of such entity. + +The Licensor reserves the right to update this Agreement from time to +time. + +The terms below have the meanings set forth below for purposes of this +Agreement: + +Definitions +----------- + +Agreement: this Redis Source Available License 2.0 Agreement. + +Control: ownership, directly or indirectly, of substantially all the +assets of an entity, or the power to direct its management and policies +by vote, contract, or otherwise. + +License: the License as described in the License paragraph below. + +Licensor: the entity offering these terms, which includes Redis Ltd. on +behalf of itself and its subsidiaries and affiliates worldwide. + +Modify, Modified, or Modification: copy from or adapt all or part of the +work in a fashion requiring copyright permission other than making an +exact copy. The resulting work is called a Modified version of the +earlier work. + +Redis: the Redis software as described in redis.com redis.io. + +Software: certain Software components designed to work with Redis and +provided to You under this Agreement. + +Trademark: the trademarks, service marks, and any other similar rights. + +Use: anything You do with the Software requiring one of Your Licenses. + +You: the recipient of the Software, the individual or entity on whose +behalf You are agreeing to this Agreement. + +Your Company: any legal entity, sole proprietorship, or other kind of +organization that You work for, plus all organizations that have control +over, are under the control of, or are under common control with that +organization. + +Your Licenses: means all the Licenses granted to You for the Software +under this Agreement. + +License +------- + +The Licensor grants You a non-exclusive, royalty-free, worldwide, +non-sublicensable, non-transferable license to use, copy, distribute, +make available, and prepare derivative works of the Software, in each +case subject to the limitations and conditions below. + +Limitations +----------- + +You may not make the functionality of the Software or a Modified version +available to third parties as a service or distribute the Software or a +Modified version in a manner that makes the functionality of the +Software available to third parties. + +Making the functionality of the Software or Modified version available +to third parties includes, without limitation, enabling third parties to +interact with the functionality of the Software or Modified version in +distributed form or remotely through a computer network, offering a +product or service, the value of which entirely or primarily derives +from the value of the Software or Modified version, or offering a +product or service that accomplishes for users the primary purpose of +the Software or Modified version. + +You may not alter, remove, or obscure any licensing, copyright, or other +notices of the Licensor in the Software. Any use of the Licensor's +Trademarks is subject to applicable law. + +Patents +------- + +The Licensor grants You a License, under any patent claims the Licensor +can License, or becomes able to License, to make, have made, use, sell, +offer for sale, import and have imported the Software, in each case +subject to the limitations and conditions in this License. This License +does not cover any patent claims that You cause to be infringed by +Modifications or additions to the Software. If You or Your Company make +any written claim that the Software infringes or contributes to +infringement of any patent, your patent License for the Software granted +under this Agreement ends immediately. If Your Company makes such a +claim, your patent License ends immediately for work on behalf of Your +Company. + +Notices +------- + +You must ensure that anyone who gets a copy of any part of the Software +from You also gets a copy of the terms and conditions in this Agreement. + +If You modify the Software, You must include in any Modified copies of +the Software prominent notices stating that You have Modified the +Software. + +No Other Rights +--------------- + +The terms and conditions of this Agreement do not imply any Licenses +other than those expressly granted in this Agreement. + +Termination +----------- + +If You Use the Software in violation of this Agreement, such Use is not +Licensed, and Your Licenses will automatically terminate. If the +Licensor provides You with a notice of your violation, and You cease all +violations of this License no later than 30 days after You receive that +notice, Your Licenses will be reinstated retroactively. However, if You +violate this Agreement after such reinstatement, any additional +violation of this Agreement will cause your Licenses to terminate +automatically and permanently. + +No Liability +------------ + +As far as the law allows, the Software comes as is, without any +warranty or condition, and the Licensor will not be liable to You for +any damages arising out of this Agreement or the Use or nature of the +Software, under any kind of legal claim. + +Governing Law and Jurisdiction +------------------------------ + +If You are located in Asia, Pacific, Americas, or other jurisdictions +not listed below, the Agreement will be construed and enforced in all +respects in accordance with the laws of the State of California, U.S.A., +without reference to its choice of law rules. The courts located in the +County of Santa Clara, California, have exclusive jurisdiction for all +purposes relating to this Agreement. + +If You are located in Israel, the Agreement will be construed and +enforced in all respects in accordance with the laws of the State of +Israel without reference to its choice of law rules. The courts located +in the Central District of the State of Israel have exclusive +jurisdiction for all purposes relating to this Agreement. + +If You are located in Europe, United Kingdom, Middle East or Africa, the +Agreement will be construed and enforced in all respects in accordance +with the laws of England and Wales without reference to its choice of +law rules. The competent courts located in London, England, have +exclusive jurisdiction for all purposes relating to this Agreement. + + + +2. Server Side Public License (SSPL) +==================================== + + Server Side Public License + VERSION 1, OCTOBER 16, 2018 + + Copyright (c) 2018 MongoDB, Inc. + + Everyone is permitted to copy and distribute verbatim copies of this + license document, but changing it is not allowed. + + TERMS AND CONDITIONS + + 0. Definitions. + + "This License" refers to Server Side 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, subject to section 13. 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. Subject to section 13, 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 use, + propagate or 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 use, propagate or 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. Offering the Program as a Service. + + If you make the functionality of the Program or a modified version + available to third parties as a service, you must make the Service Source + Code available via network download to everyone at no charge, under the + terms of this License. Making the functionality of the Program or + modified version available to third parties as a service includes, + without limitation, enabling third parties to interact with the + functionality of the Program or modified version remotely through a + computer network, offering a service the value of which entirely or + primarily derives from the value of the Program or modified version, or + offering a service that accomplishes for users the primary purpose of the + Program or modified version. + + "Service Source Code" means the Corresponding Source for the Program or + the modified version, and the Corresponding Source for all programs that + you use to make the Program or modified version available as a service, + including, without limitation, management software, user interfaces, + application program interfaces, automation software, monitoring software, + backup software, storage software and hosting software, all such that a + user could run an instance of the service using the Service Source Code + you make available. + + 14. Revised Versions of this License. + + MongoDB, Inc. may publish revised and/or new versions of the Server Side + 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 Server Side 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 MongoDB, Inc. If the Program does not + specify a version number of the Server Side Public License, you may + choose any version ever published by MongoDB, Inc. + + If the Program specifies that a proxy can decide which future versions of + the Server Side 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 + + +--- LICENSE FOR psycopg2 --- +https://raw.githubusercontent.com/psycopg/psycopg2/master/LICENSE + + +psycopg2 and the LGPL +--------------------- + +psycopg2 is free software: you can redistribute it and/or modify it +under the terms of the GNU Lesser General Public License as published +by the Free Software Foundation, either version 3 of the License, or +(at your option) any later version. + +psycopg2 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 Lesser General Public +License for more details. + +In addition, as a special exception, the copyright holders give +permission to link this program with the OpenSSL library (or with +modified versions of OpenSSL that use the same license as OpenSSL), +and distribute linked combinations including the two. + +You must obey the GNU Lesser General Public License in all respects for +all of the code used other than OpenSSL. If you modify file(s) with this +exception, you may extend this exception to your version of the file(s), +but you are not obligated to do so. If you do not wish to do so, delete +this exception statement from your version. If you delete this exception +statement from all source files in the program, then also delete it here. + +You should have received a copy of the GNU Lesser General Public License +along with psycopg2 (see the doc/ directory.) +If not, see . + + +Alternative licenses +-------------------- + +The following BSD-like license applies (at your option) to the files following +the pattern ``psycopg/adapter*.{h,c}`` and ``psycopg/microprotocol*.{h,c}``: + + Permission is granted to anyone to use this software for any purpose, + including commercial applications, and to alter it and redistribute it + freely, subject to the following restrictions: + + 1. The origin of this software must not be misrepresented; you must not + claim that you wrote the original software. If you use this + software in a product, an acknowledgment in the product documentation + would be appreciated but is not required. + + 2. Altered source versions must be plainly marked as such, and must not + be misrepresented as being the original software. + + 3. This notice may not be removed or altered from any source distribution. + + +--- LICENSE FOR sqlalchemy --- +https://raw.githubusercontent.com/sqlalchemy/sqlalchemy/main/LICENSE + + +Copyright 2005-2024 SQLAlchemy authors and contributors . + +Permission is hereby granted, free of charge, to any person obtaining a copy of +this software and associated documentation files (the "Software"), to deal in +the Software without restriction, including without limitation the rights to +use, copy, modify, merge, publish, distribute, sublicense, and/or sell copies +of the Software, and to permit persons to whom the Software is furnished to do +so, subject to the following conditions: + +The above copyright notice and this permission notice shall be included in all +copies or substantial portions of the Software. + +THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR +IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, +FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE +AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER +LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, +OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE +SOFTWARE. + + +--- LICENSE FOR client_python --- +https://raw.githubusercontent.com/prometheus/client_python/master/LICENSE + + + Apache License + Version 2.0, January 2004 + http://www.apache.org/licenses/ + + TERMS AND CONDITIONS FOR USE, REPRODUCTION, AND DISTRIBUTION + + 1. Definitions. + + "License" shall mean the terms and conditions for use, reproduction, + and distribution as defined by Sections 1 through 9 of this document. + + "Licensor" shall mean the copyright owner or entity authorized by + the copyright owner that is granting the License. + + "Legal Entity" shall mean the union of the acting entity and all + other entities that control, are controlled by, or are under common + control with that entity. For the purposes of this definition, + "control" means (i) the power, direct or indirect, to cause the + direction or management of such entity, whether by contract or + otherwise, or (ii) ownership of fifty percent (50%) or more of the + outstanding shares, or (iii) beneficial ownership of such entity. + + "You" (or "Your") shall mean an individual or Legal Entity + exercising permissions granted by this License. + + "Source" form shall mean the preferred form for making modifications, + including but not limited to software source code, documentation + source, and configuration files. + + "Object" form shall mean any form resulting from mechanical + transformation or translation of a Source form, including but + not limited to compiled object code, generated documentation, + and conversions to other media types. + + "Work" shall mean the work of authorship, whether in Source or + Object form, made available under the License, as indicated by a + copyright notice that is included in or attached to the work + (an example is provided in the Appendix below). + + "Derivative Works" shall mean any work, whether in Source or Object + form, that is based on (or derived from) the Work and for which the + editorial revisions, annotations, elaborations, or other modifications + represent, as a whole, an original work of authorship. For the purposes + of this License, Derivative Works shall not include works that remain + separable from, or merely link (or bind by name) to the interfaces of, + the Work and Derivative Works thereof. + + "Contribution" shall mean any work of authorship, including + the original version of the Work and any modifications or additions + to that Work or Derivative Works thereof, that is intentionally + submitted to Licensor for inclusion in the Work by the copyright owner + or by an individual or Legal Entity authorized to submit on behalf of + the copyright owner. For the purposes of this definition, "submitted" + means any form of electronic, verbal, or written communication sent + to the Licensor or its representatives, including but not limited to + communication on electronic mailing lists, source code control systems, + and issue tracking systems that are managed by, or on behalf of, the + Licensor for the purpose of discussing and improving the Work, but + excluding communication that is conspicuously marked or otherwise + designated in writing by the copyright owner as "Not a Contribution." + + "Contributor" shall mean Licensor and any individual or Legal Entity + on behalf of whom a Contribution has been received by Licensor and + subsequently incorporated within the Work. + + 2. Grant of Copyright License. Subject to the terms and conditions of + this License, each Contributor hereby grants to You a perpetual, + worldwide, non-exclusive, no-charge, royalty-free, irrevocable + copyright license to reproduce, prepare Derivative Works of, + publicly display, publicly perform, sublicense, and distribute the + Work and such Derivative Works in Source or Object form. + + 3. Grant of Patent License. Subject to the terms and conditions of + this License, each Contributor hereby grants to You a perpetual, + worldwide, non-exclusive, no-charge, royalty-free, irrevocable + (except as stated in this section) patent license to make, have made, + use, offer to sell, sell, import, and otherwise transfer the Work, + where such license applies only to those patent claims licensable + by such Contributor that are necessarily infringed by their + Contribution(s) alone or by combination of their Contribution(s) + with the Work to which such Contribution(s) was submitted. If You + institute patent litigation against any entity (including a + cross-claim or counterclaim in a lawsuit) alleging that the Work + or a Contribution incorporated within the Work constitutes direct + or contributory patent infringement, then any patent licenses + granted to You under this License for that Work shall terminate + as of the date such litigation is filed. + + 4. Redistribution. You may reproduce and distribute copies of the + Work or Derivative Works thereof in any medium, with or without + modifications, and in Source or Object form, provided that You + meet the following conditions: + + (a) You must give any other recipients of the Work or + Derivative Works a copy of this License; and + + (b) You must cause any modified files to carry prominent notices + stating that You changed the files; and + + (c) You must retain, in the Source form of any Derivative Works + that You distribute, all copyright, patent, trademark, and + attribution notices from the Source form of the Work, + excluding those notices that do not pertain to any part of + the Derivative Works; and + + (d) If the Work includes a "NOTICE" text file as part of its + distribution, then any Derivative Works that You distribute must + include a readable copy of the attribution notices contained + within such NOTICE file, excluding those notices that do not + pertain to any part of the Derivative Works, in at least one + of the following places: within a NOTICE text file distributed + as part of the Derivative Works; within the Source form or + documentation, if provided along with the Derivative Works; or, + within a display generated by the Derivative Works, if and + wherever such third-party notices normally appear. The contents + of the NOTICE file are for informational purposes only and + do not modify the License. You may add Your own attribution + notices within Derivative Works that You distribute, alongside + or as an addendum to the NOTICE text from the Work, provided + that such additional attribution notices cannot be construed + as modifying the License. + + You may add Your own copyright statement to Your modifications and + may provide additional or different license terms and conditions + for use, reproduction, or distribution of Your modifications, or + for any such Derivative Works as a whole, provided Your use, + reproduction, and distribution of the Work otherwise complies with + the conditions stated in this License. + + 5. Submission of Contributions. Unless You explicitly state otherwise, + any Contribution intentionally submitted for inclusion in the Work + by You to the Licensor shall be under the terms and conditions of + this License, without any additional terms or conditions. + Notwithstanding the above, nothing herein shall supersede or modify + the terms of any separate license agreement you may have executed + with Licensor regarding such Contributions. + + 6. Trademarks. This License does not grant permission to use the trade + names, trademarks, service marks, or product names of the Licensor, + except as required for reasonable and customary use in describing the + origin of the Work and reproducing the content of the NOTICE file. + + 7. Disclaimer of Warranty. Unless required by applicable law or + agreed to in writing, Licensor provides the Work (and each + Contributor provides its Contributions) on an "AS IS" BASIS, + WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or + implied, including, without limitation, any warranties or conditions + of TITLE, NON-INFRINGEMENT, MERCHANTABILITY, or FITNESS FOR A + PARTICULAR PURPOSE. You are solely responsible for determining the + appropriateness of using or redistributing the Work and assume any + risks associated with Your exercise of permissions under this License. + + 8. Limitation of Liability. In no event and under no legal theory, + whether in tort (including negligence), contract, or otherwise, + unless required by applicable law (such as deliberate and grossly + negligent acts) or agreed to in writing, shall any Contributor be + liable to You for damages, including any direct, indirect, special, + incidental, or consequential damages of any character arising as a + result of this License or out of the use or inability to use the + Work (including but not limited to damages for loss of goodwill, + work stoppage, computer failure or malfunction, or any and all + other commercial damages or losses), even if such Contributor + has been advised of the possibility of such damages. + + 9. Accepting Warranty or Additional Liability. While redistributing + the Work or Derivative Works thereof, You may choose to offer, + and charge a fee for, acceptance of support, warranty, indemnity, + or other liability obligations and/or rights consistent with this + License. However, in accepting such obligations, You may act only + on Your own behalf and on Your sole responsibility, not on behalf + of any other Contributor, and only if You agree to indemnify, + defend, and hold each Contributor harmless for any liability + incurred by, or claims asserted against, such Contributor by reason + of your accepting any such warranty or additional liability. + + END OF TERMS AND CONDITIONS + + APPENDIX: How to apply the Apache License to your work. + + To apply the Apache License to your work, attach the following + boilerplate notice, with the fields enclosed by brackets "[]" + replaced with your own identifying information. (Don't include + the brackets!) The text should be enclosed in the appropriate + comment syntax for the file format. We also recommend that a + file or class name and description of purpose be included on the + same "printed page" as the copyright notice for easier + identification within third-party archives. + + Copyright [yyyy] [name of copyright owner] + + Licensed under the Apache License, Version 2.0 (the "License"); + you may not use this file except in compliance with the License. + You may obtain a copy of the License at + + http://www.apache.org/licenses/LICENSE-2.0 + + Unless required by applicable law or agreed to in writing, software + distributed under the License is distributed on an "AS IS" BASIS, + WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + See the License for the specific language governing permissions and + limitations under the License. + + +--- LICENSE FOR bleach --- +https://raw.githubusercontent.com/mozilla/bleach/main/LICENSE + + +Copyright (c) 2014-2017, Mozilla Foundation + +Licensed under the Apache License, Version 2.0 (the "License"); +you may not use this file except in compliance with the License. +You may obtain a copy of the License at + + http://www.apache.org/licenses/LICENSE-2.0 + +Unless required by applicable law or agreed to in writing, software +distributed under the License is distributed on an "AS IS" BASIS, +WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +See the License for the specific language governing permissions and +limitations under the License. + + +--- LICENSE FOR nltk --- +https://raw.githubusercontent.com/nltk/nltk/develop/LICENSE.txt + + + + Apache License + Version 2.0, January 2004 + http://www.apache.org/licenses/ + + TERMS AND CONDITIONS FOR USE, REPRODUCTION, AND DISTRIBUTION + + 1. Definitions. + + "License" shall mean the terms and conditions for use, reproduction, + and distribution as defined by Sections 1 through 9 of this document. + + "Licensor" shall mean the copyright owner or entity authorized by + the copyright owner that is granting the License. + + "Legal Entity" shall mean the union of the acting entity and all + other entities that control, are controlled by, or are under common + control with that entity. For the purposes of this definition, + "control" means (i) the power, direct or indirect, to cause the + direction or management of such entity, whether by contract or + otherwise, or (ii) ownership of fifty percent (50%) or more of the + outstanding shares, or (iii) beneficial ownership of such entity. + + "You" (or "Your") shall mean an individual or Legal Entity + exercising permissions granted by this License. + + "Source" form shall mean the preferred form for making modifications, + including but not limited to software source code, documentation + source, and configuration files. + + "Object" form shall mean any form resulting from mechanical + transformation or translation of a Source form, including but + not limited to compiled object code, generated documentation, + and conversions to other media types. + + "Work" shall mean the work of authorship, whether in Source or + Object form, made available under the License, as indicated by a + copyright notice that is included in or attached to the work + (an example is provided in the Appendix below). + + "Derivative Works" shall mean any work, whether in Source or Object + form, that is based on (or derived from) the Work and for which the + editorial revisions, annotations, elaborations, or other modifications + represent, as a whole, an original work of authorship. For the purposes + of this License, Derivative Works shall not include works that remain + separable from, or merely link (or bind by name) to the interfaces of, + the Work and Derivative Works thereof. + + "Contribution" shall mean any work of authorship, including + the original version of the Work and any modifications or additions + to that Work or Derivative Works thereof, that is intentionally + submitted to Licensor for inclusion in the Work by the copyright owner + or by an individual or Legal Entity authorized to submit on behalf of + the copyright owner. For the purposes of this definition, "submitted" + means any form of electronic, verbal, or written communication sent + to the Licensor or its representatives, including but not limited to + communication on electronic mailing lists, source code control systems, + and issue tracking systems that are managed by, or on behalf of, the + Licensor for the purpose of discussing and improving the Work, but + excluding communication that is conspicuously marked or otherwise + designated in writing by the copyright owner as "Not a Contribution." + + "Contributor" shall mean Licensor and any individual or Legal Entity + on behalf of whom a Contribution has been received by Licensor and + subsequently incorporated within the Work. + + 2. Grant of Copyright License. Subject to the terms and conditions of + this License, each Contributor hereby grants to You a perpetual, + worldwide, non-exclusive, no-charge, royalty-free, irrevocable + copyright license to reproduce, prepare Derivative Works of, + publicly display, publicly perform, sublicense, and distribute the + Work and such Derivative Works in Source or Object form. + + 3. Grant of Patent License. Subject to the terms and conditions of + this License, each Contributor hereby grants to You a perpetual, + worldwide, non-exclusive, no-charge, royalty-free, irrevocable + (except as stated in this section) patent license to make, have made, + use, offer to sell, sell, import, and otherwise transfer the Work, + where such license applies only to those patent claims licensable + by such Contributor that are necessarily infringed by their + Contribution(s) alone or by combination of their Contribution(s) + with the Work to which such Contribution(s) was submitted. If You + institute patent litigation against any entity (including a + cross-claim or counterclaim in a lawsuit) alleging that the Work + or a Contribution incorporated within the Work constitutes direct + or contributory patent infringement, then any patent licenses + granted to You under this License for that Work shall terminate + as of the date such litigation is filed. + + 4. Redistribution. You may reproduce and distribute copies of the + Work or Derivative Works thereof in any medium, with or without + modifications, and in Source or Object form, provided that You + meet the following conditions: + + (a) You must give any other recipients of the Work or + Derivative Works a copy of this License; and + + (b) You must cause any modified files to carry prominent notices + stating that You changed the files; and + + (c) You must retain, in the Source form of any Derivative Works + that You distribute, all copyright, patent, trademark, and + attribution notices from the Source form of the Work, + excluding those notices that do not pertain to any part of + the Derivative Works; and + + (d) If the Work includes a "NOTICE" text file as part of its + distribution, then any Derivative Works that You distribute must + include a readable copy of the attribution notices contained + within such NOTICE file, excluding those notices that do not + pertain to any part of the Derivative Works, in at least one + of the following places: within a NOTICE text file distributed + as part of the Derivative Works; within the Source form or + documentation, if provided along with the Derivative Works; or, + within a display generated by the Derivative Works, if and + wherever such third-party notices normally appear. The contents + of the NOTICE file are for informational purposes only and + do not modify the License. You may add Your own attribution + notices within Derivative Works that You distribute, alongside + or as an addendum to the NOTICE text from the Work, provided + that such additional attribution notices cannot be construed + as modifying the License. + + You may add Your own copyright statement to Your modifications and + may provide additional or different license terms and conditions + for use, reproduction, or distribution of Your modifications, or + for any such Derivative Works as a whole, provided Your use, + reproduction, and distribution of the Work otherwise complies with + the conditions stated in this License. + + 5. Submission of Contributions. Unless You explicitly state otherwise, + any Contribution intentionally submitted for inclusion in the Work + by You to the Licensor shall be under the terms and conditions of + this License, without any additional terms or conditions. + Notwithstanding the above, nothing herein shall supersede or modify + the terms of any separate license agreement you may have executed + with Licensor regarding such Contributions. + + 6. Trademarks. This License does not grant permission to use the trade + names, trademarks, service marks, or product names of the Licensor, + except as required for reasonable and customary use in describing the + origin of the Work and reproducing the content of the NOTICE file. + + 7. Disclaimer of Warranty. Unless required by applicable law or + agreed to in writing, Licensor provides the Work (and each + Contributor provides its Contributions) on an "AS IS" BASIS, + WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or + implied, including, without limitation, any warranties or conditions + of TITLE, NON-INFRINGEMENT, MERCHANTABILITY, or FITNESS FOR A + PARTICULAR PURPOSE. You are solely responsible for determining the + appropriateness of using or redistributing the Work and assume any + risks associated with Your exercise of permissions under this License. + + 8. Limitation of Liability. In no event and under no legal theory, + whether in tort (including negligence), contract, or otherwise, + unless required by applicable law (such as deliberate and grossly + negligent acts) or agreed to in writing, shall any Contributor be + liable to You for damages, including any direct, indirect, special, + incidental, or consequential damages of any character arising as a + result of this License or out of the use or inability to use the + Work (including but not limited to damages for loss of goodwill, + work stoppage, computer failure or malfunction, or any and all + other commercial damages or losses), even if such Contributor + has been advised of the possibility of such damages. + + 9. Accepting Warranty or Additional Liability. While redistributing + the Work or Derivative Works thereof, You may choose to offer, + and charge a fee for, acceptance of support, warranty, indemnity, + or other liability obligations and/or rights consistent with this + License. However, in accepting such obligations, You may act only + on Your own behalf and on Your sole responsibility, not on behalf + of any other Contributor, and only if You agree to indemnify, + defend, and hold each Contributor harmless for any liability + incurred by, or claims asserted against, such Contributor by reason + of your accepting any such warranty or additional liability. + + END OF TERMS AND CONDITIONS + + APPENDIX: How to apply the Apache License to your work. + + To apply the Apache License to your work, attach the following + boilerplate notice, with the fields enclosed by brackets "[]" + replaced with your own identifying information. (Don't include + the brackets!) The text should be enclosed in the appropriate + comment syntax for the file format. We also recommend that a + file or class name and description of purpose be included on the + same "printed page" as the copyright notice for easier + identification within third-party archives. + + Copyright [yyyy] [name of copyright owner] + + Licensed under the Apache License, Version 2.0 (the "License"); + you may not use this file except in compliance with the License. + You may obtain a copy of the License at + + http://www.apache.org/licenses/LICENSE-2.0 + + Unless required by applicable law or agreed to in writing, software + distributed under the License is distributed on an "AS IS" BASIS, + WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + See the License for the specific language governing permissions and + limitations under the License. + + +--- LICENSE FOR python-multipart --- +https://raw.githubusercontent.com/andrew-d/python-multipart/master/LICENSE.txt + + +Copyright 2012, Andrew Dunham + +Licensed under the Apache License, Version 2.0 (the "License"); +you may not use this file except in compliance with the License. +You may obtain a copy of the License at + + https://www.apache.org/licenses/LICENSE-2.0 + +Unless required by applicable law or agreed to in writing, software +distributed under the License is distributed on an "AS IS" BASIS, +WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +See the License for the specific language governing permissions and +limitations under the License. + + + +--- LICENSE FOR langchain --- +https://raw.githubusercontent.com/langchain-ai/langchain/master/LICENSE + + +MIT License + +Copyright (c) LangChain, Inc. + +Permission is hereby granted, free of charge, to any person obtaining a copy +of this software and associated documentation files (the "Software"), to deal +in the Software without restriction, including without limitation the rights +to use, copy, modify, merge, publish, distribute, sublicense, and/or sell +copies of the Software, and to permit persons to whom the Software is +furnished to do so, subject to the following conditions: + +The above copyright notice and this permission notice shall be included in all +copies or substantial portions of the Software. + +THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR +IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, +FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE +AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER +LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, +OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE +SOFTWARE. + + +--- LICENSE FOR pymilvus --- +https://raw.githubusercontent.com/milvus-io/pymilvus/master/LICENSE + + + Apache License + Version 2.0, January 2004 + http://www.apache.org/licenses/ + + TERMS AND CONDITIONS FOR USE, REPRODUCTION, AND DISTRIBUTION + + 1. Definitions. + + "License" shall mean the terms and conditions for use, reproduction, + and distribution as defined by Sections 1 through 9 of this document. + + "Licensor" shall mean the copyright owner or entity authorized by + the copyright owner that is granting the License. + + "Legal Entity" shall mean the union of the acting entity and all + other entities that control, are controlled by, or are under common + control with that entity. For the purposes of this definition, + "control" means (i) the power, direct or indirect, to cause the + direction or management of such entity, whether by contract or + otherwise, or (ii) ownership of fifty percent (50%) or more of the + outstanding shares, or (iii) beneficial ownership of such entity. + + "You" (or "Your") shall mean an individual or Legal Entity + exercising permissions granted by this License. + + "Source" form shall mean the preferred form for making modifications, + including but not limited to software source code, documentation + source, and configuration files. + + "Object" form shall mean any form resulting from mechanical + transformation or translation of a Source form, including but + not limited to compiled object code, generated documentation, + and conversions to other media types. + + "Work" shall mean the work of authorship, whether in Source or + Object form, made available under the License, as indicated by a + copyright notice that is included in or attached to the work + (an example is provided in the Appendix below). + + "Derivative Works" shall mean any work, whether in Source or Object + form, that is based on (or derived from) the Work and for which the + editorial revisions, annotations, elaborations, or other modifications + represent, as a whole, an original work of authorship. For the purposes + of this License, Derivative Works shall not include works that remain + separable from, or merely link (or bind by name) to the interfaces of, + the Work and Derivative Works thereof. + + "Contribution" shall mean any work of authorship, including + the original version of the Work and any modifications or additions + to that Work or Derivative Works thereof, that is intentionally + submitted to Licensor for inclusion in the Work by the copyright owner + or by an individual or Legal Entity authorized to submit on behalf of + the copyright owner. For the purposes of this definition, "submitted" + means any form of electronic, verbal, or written communication sent + to the Licensor or its representatives, including but not limited to + communication on electronic mailing lists, source code control systems, + and issue tracking systems that are managed by, or on behalf of, the + Licensor for the purpose of discussing and improving the Work, but + excluding communication that is conspicuously marked or otherwise + designated in writing by the copyright owner as "Not a Contribution." + + "Contributor" shall mean Licensor and any individual or Legal Entity + on behalf of whom a Contribution has been received by Licensor and + subsequently incorporated within the Work. + + 2. Grant of Copyright License. Subject to the terms and conditions of + this License, each Contributor hereby grants to You a perpetual, + worldwide, non-exclusive, no-charge, royalty-free, irrevocable + copyright license to reproduce, prepare Derivative Works of, + publicly display, publicly perform, sublicense, and distribute the + Work and such Derivative Works in Source or Object form. + + 3. Grant of Patent License. Subject to the terms and conditions of + this License, each Contributor hereby grants to You a perpetual, + worldwide, non-exclusive, no-charge, royalty-free, irrevocable + (except as stated in this section) patent license to make, have made, + use, offer to sell, sell, import, and otherwise transfer the Work, + where such license applies only to those patent claims licensable + by such Contributor that are necessarily infringed by their + Contribution(s) alone or by combination of their Contribution(s) + with the Work to which such Contribution(s) was submitted. If You + institute patent litigation against any entity (including a + cross-claim or counterclaim in a lawsuit) alleging that the Work + or a Contribution incorporated within the Work constitutes direct + or contributory patent infringement, then any patent licenses + granted to You under this License for that Work shall terminate + as of the date such litigation is filed. + + 4. Redistribution. You may reproduce and distribute copies of the + Work or Derivative Works thereof in any medium, with or without + modifications, and in Source or Object form, provided that You + meet the following conditions: + + (a) You must give any other recipients of the Work or + Derivative Works a copy of this License; and + + (b) You must cause any modified files to carry prominent notices + stating that You changed the files; and + + (c) You must retain, in the Source form of any Derivative Works + that You distribute, all copyright, patent, trademark, and + attribution notices from the Source form of the Work, + excluding those notices that do not pertain to any part of + the Derivative Works; and + + (d) If the Work includes a "NOTICE" text file as part of its + distribution, then any Derivative Works that You distribute must + include a readable copy of the attribution notices contained + within such NOTICE file, excluding those notices that do not + pertain to any part of the Derivative Works, in at least one + of the following places: within a NOTICE text file distributed + as part of the Derivative Works; within the Source form or + documentation, if provided along with the Derivative Works; or, + within a display generated by the Derivative Works, if and + wherever such third-party notices normally appear. The contents + of the NOTICE file are for informational purposes only and + do not modify the License. You may add Your own attribution + notices within Derivative Works that You distribute, alongside + or as an addendum to the NOTICE text from the Work, provided + that such additional attribution notices cannot be construed + as modifying the License. + + You may add Your own copyright statement to Your modifications and + may provide additional or different license terms and conditions + for use, reproduction, or distribution of Your modifications, or + for any such Derivative Works as a whole, provided Your use, + reproduction, and distribution of the Work otherwise complies with + the conditions stated in this License. + + 5. Submission of Contributions. Unless You explicitly state otherwise, + any Contribution intentionally submitted for inclusion in the Work + by You to the Licensor shall be under the terms and conditions of + this License, without any additional terms or conditions. + Notwithstanding the above, nothing herein shall supersede or modify + the terms of any separate license agreement you may have executed + with Licensor regarding such Contributions. + + 6. Trademarks. This License does not grant permission to use the trade + names, trademarks, service marks, or product names of the Licensor, + except as required for reasonable and customary use in describing the + origin of the Work and reproducing the content of the NOTICE file. + + 7. Disclaimer of Warranty. Unless required by applicable law or + agreed to in writing, Licensor provides the Work (and each + Contributor provides its Contributions) on an "AS IS" BASIS, + WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or + implied, including, without limitation, any warranties or conditions + of TITLE, NON-INFRINGEMENT, MERCHANTABILITY, or FITNESS FOR A + PARTICULAR PURPOSE. You are solely responsible for determining the + appropriateness of using or redistributing the Work and assume any + risks associated with Your exercise of permissions under this License. + + 8. Limitation of Liability. In no event and under no legal theory, + whether in tort (including negligence), contract, or otherwise, + unless required by applicable law (such as deliberate and grossly + negligent acts) or agreed to in writing, shall any Contributor be + liable to You for damages, including any direct, indirect, special, + incidental, or consequential damages of any character arising as a + result of this License or out of the use or inability to use the + Work (including but not limited to damages for loss of goodwill, + work stoppage, computer failure or malfunction, or any and all + other commercial damages or losses), even if such Contributor + has been advised of the possibility of such damages. + + 9. Accepting Warranty or Additional Liability. While redistributing + the Work or Derivative Works thereof, You may choose to offer, + and charge a fee for, acceptance of support, warranty, indemnity, + or other liability obligations and/or rights consistent with this + License. However, in accepting such obligations, You may act only + on Your own behalf and on Your sole responsibility, not on behalf + of any other Contributor, and only if You agree to indemnify, + defend, and hold each Contributor harmless for any liability + incurred by, or claims asserted against, such Contributor by reason + of your accepting any such warranty or additional liability. + + END OF TERMS AND CONDITIONS + + APPENDIX: How to apply the Apache License to your work. + + To apply the Apache License to your work, attach the following + boilerplate notice, with the fields enclosed by brackets "[]" + replaced with your own identifying information. (Don't include + the brackets!) The text should be enclosed in the appropriate + comment syntax for the file format. We also recommend that a + file or class name and description of purpose be included on the + same "printed page" as the copyright notice for easier + identification within third-party archives. + + Copyright 2019 Zilliz + + Licensed under the Apache License, Version 2.0 (the "License"); + you may not use this file except in compliance with the License. + You may obtain a copy of the License at + + http://www.apache.org/licenses/LICENSE-2.0 + + Unless required by applicable law or agreed to in writing, software + distributed under the License is distributed on an "AS IS" BASIS, + WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + See the License for the specific language governing permissions and + limitations under the License. + + +--- LICENSE FOR sentence-transformers --- +https://raw.githubusercontent.com/UKPLab/sentence-transformers/master/LICENSE + + + Apache License + Version 2.0, January 2004 + http://www.apache.org/licenses/ + + TERMS AND CONDITIONS FOR USE, REPRODUCTION, AND DISTRIBUTION + + 1. Definitions. + + "License" shall mean the terms and conditions for use, reproduction, + and distribution as defined by Sections 1 through 9 of this document. + + "Licensor" shall mean the copyright owner or entity authorized by + the copyright owner that is granting the License. + + "Legal Entity" shall mean the union of the acting entity and all + other entities that control, are controlled by, or are under common + control with that entity. For the purposes of this definition, + "control" means (i) the power, direct or indirect, to cause the + direction or management of such entity, whether by contract or + otherwise, or (ii) ownership of fifty percent (50%) or more of the + outstanding shares, or (iii) beneficial ownership of such entity. + + "You" (or "Your") shall mean an individual or Legal Entity + exercising permissions granted by this License. + + "Source" form shall mean the preferred form for making modifications, + including but not limited to software source code, documentation + source, and configuration files. + + "Object" form shall mean any form resulting from mechanical + transformation or translation of a Source form, including but + not limited to compiled object code, generated documentation, + and conversions to other media types. + + "Work" shall mean the work of authorship, whether in Source or + Object form, made available under the License, as indicated by a + copyright notice that is included in or attached to the work + (an example is provided in the Appendix below). + + "Derivative Works" shall mean any work, whether in Source or Object + form, that is based on (or derived from) the Work and for which the + editorial revisions, annotations, elaborations, or other modifications + represent, as a whole, an original work of authorship. For the purposes + of this License, Derivative Works shall not include works that remain + separable from, or merely link (or bind by name) to the interfaces of, + the Work and Derivative Works thereof. + + "Contribution" shall mean any work of authorship, including + the original version of the Work and any modifications or additions + to that Work or Derivative Works thereof, that is intentionally + submitted to Licensor for inclusion in the Work by the copyright owner + or by an individual or Legal Entity authorized to submit on behalf of + the copyright owner. For the purposes of this definition, "submitted" + means any form of electronic, verbal, or written communication sent + to the Licensor or its representatives, including but not limited to + communication on electronic mailing lists, source code control systems, + and issue tracking systems that are managed by, or on behalf of, the + Licensor for the purpose of discussing and improving the Work, but + excluding communication that is conspicuously marked or otherwise + designated in writing by the copyright owner as "Not a Contribution." + + "Contributor" shall mean Licensor and any individual or Legal Entity + on behalf of whom a Contribution has been received by Licensor and + subsequently incorporated within the Work. + + 2. Grant of Copyright License. Subject to the terms and conditions of + this License, each Contributor hereby grants to You a perpetual, + worldwide, non-exclusive, no-charge, royalty-free, irrevocable + copyright license to reproduce, prepare Derivative Works of, + publicly display, publicly perform, sublicense, and distribute the + Work and such Derivative Works in Source or Object form. + + 3. Grant of Patent License. Subject to the terms and conditions of + this License, each Contributor hereby grants to You a perpetual, + worldwide, non-exclusive, no-charge, royalty-free, irrevocable + (except as stated in this section) patent license to make, have made, + use, offer to sell, sell, import, and otherwise transfer the Work, + where such license applies only to those patent claims licensable + by such Contributor that are necessarily infringed by their + Contribution(s) alone or by combination of their Contribution(s) + with the Work to which such Contribution(s) was submitted. If You + institute patent litigation against any entity (including a + cross-claim or counterclaim in a lawsuit) alleging that the Work + or a Contribution incorporated within the Work constitutes direct + or contributory patent infringement, then any patent licenses + granted to You under this License for that Work shall terminate + as of the date such litigation is filed. + + 4. Redistribution. You may reproduce and distribute copies of the + Work or Derivative Works thereof in any medium, with or without + modifications, and in Source or Object form, provided that You + meet the following conditions: + + (a) You must give any other recipients of the Work or + Derivative Works a copy of this License; and + + (b) You must cause any modified files to carry prominent notices + stating that You changed the files; and + + (c) You must retain, in the Source form of any Derivative Works + that You distribute, all copyright, patent, trademark, and + attribution notices from the Source form of the Work, + excluding those notices that do not pertain to any part of + the Derivative Works; and + + (d) If the Work includes a "NOTICE" text file as part of its + distribution, then any Derivative Works that You distribute must + include a readable copy of the attribution notices contained + within such NOTICE file, excluding those notices that do not + pertain to any part of the Derivative Works, in at least one + of the following places: within a NOTICE text file distributed + as part of the Derivative Works; within the Source form or + documentation, if provided along with the Derivative Works; or, + within a display generated by the Derivative Works, if and + wherever such third-party notices normally appear. The contents + of the NOTICE file are for informational purposes only and + do not modify the License. You may add Your own attribution + notices within Derivative Works that You distribute, alongside + or as an addendum to the NOTICE text from the Work, provided + that such additional attribution notices cannot be construed + as modifying the License. + + You may add Your own copyright statement to Your modifications and + may provide additional or different license terms and conditions + for use, reproduction, or distribution of Your modifications, or + for any such Derivative Works as a whole, provided Your use, + reproduction, and distribution of the Work otherwise complies with + the conditions stated in this License. + + 5. Submission of Contributions. Unless You explicitly state otherwise, + any Contribution intentionally submitted for inclusion in the Work + by You to the Licensor shall be under the terms and conditions of + this License, without any additional terms or conditions. + Notwithstanding the above, nothing herein shall supersede or modify + the terms of any separate license agreement you may have executed + with Licensor regarding such Contributions. + + 6. Trademarks. This License does not grant permission to use the trade + names, trademarks, service marks, or product names of the Licensor, + except as required for reasonable and customary use in describing the + origin of the Work and reproducing the content of the NOTICE file. + + 7. Disclaimer of Warranty. Unless required by applicable law or + agreed to in writing, Licensor provides the Work (and each + Contributor provides its Contributions) on an "AS IS" BASIS, + WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or + implied, including, without limitation, any warranties or conditions + of TITLE, NON-INFRINGEMENT, MERCHANTABILITY, or FITNESS FOR A + PARTICULAR PURPOSE. You are solely responsible for determining the + appropriateness of using or redistributing the Work and assume any + risks associated with Your exercise of permissions under this License. + + 8. Limitation of Liability. In no event and under no legal theory, + whether in tort (including negligence), contract, or otherwise, + unless required by applicable law (such as deliberate and grossly + negligent acts) or agreed to in writing, shall any Contributor be + liable to You for damages, including any direct, indirect, special, + incidental, or consequential damages of any character arising as a + result of this License or out of the use or inability to use the + Work (including but not limited to damages for loss of goodwill, + work stoppage, computer failure or malfunction, or any and all + other commercial damages or losses), even if such Contributor + has been advised of the possibility of such damages. + + 9. Accepting Warranty or Additional Liability. While redistributing + the Work or Derivative Works thereof, You may choose to offer, + and charge a fee for, acceptance of support, warranty, indemnity, + or other liability obligations and/or rights consistent with this + License. However, in accepting such obligations, You may act only + on Your own behalf and on Your sole responsibility, not on behalf + of any other Contributor, and only if You agree to indemnify, + defend, and hold each Contributor harmless for any liability + incurred by, or claims asserted against, such Contributor by reason + of your accepting any such warranty or additional liability. + + END OF TERMS AND CONDITIONS + + APPENDIX: How to apply the Apache License to your work. + + To apply the Apache License to your work, attach the following + boilerplate notice, with the fields enclosed by brackets "{}" + replaced with your own identifying information. (Don't include + the brackets!) The text should be enclosed in the appropriate + comment syntax for the file format. We also recommend that a + file or class name and description of purpose be included on the + same "printed page" as the copyright notice for easier + identification within third-party archives. + + Copyright 2019 Nils Reimers + + Licensed under the Apache License, Version 2.0 (the "License"); + you may not use this file except in compliance with the License. + You may obtain a copy of the License at + + http://www.apache.org/licenses/LICENSE-2.0 + + Unless required by applicable law or agreed to in writing, software + distributed under the License is distributed on an "AS IS" BASIS, + WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + See the License for the specific language governing permissions and +limitations under the License. + + +--- LICENSE FOR pandas --- +https://raw.githubusercontent.com/pandas-dev/pandas/main/LICENSE + + +BSD 3-Clause License + +Copyright (c) 2008-2011, AQR Capital Management, LLC, Lambda Foundry, Inc. and PyData Development Team +All rights reserved. + +Copyright (c) 2011-2024, Open source contributors. + +Redistribution and use in source and binary forms, with or without +modification, are permitted provided that the following conditions are met: + +* Redistributions of source code must retain the above copyright notice, this + list of conditions and the following disclaimer. + +* Redistributions in binary form must reproduce the above copyright notice, + this list of conditions and the following disclaimer in the documentation + and/or other materials provided with the distribution. + +* Neither the name of the copyright holder nor the names of its + contributors may be used to endorse or promote products derived from + this software without specific prior written permission. + +THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" +AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE +IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE +DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT HOLDER OR CONTRIBUTORS BE LIABLE +FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL +DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR +SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER +CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, +OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE +OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. + + +--- LICENSE FOR pandas-ai --- +https://raw.githubusercontent.com/Sinaptik-AI/pandas-ai/main/LICENSE + + +Copyright (c) 2023 Sinaptik GmbH + +Portions of this software are licensed as follows: + +- All content that resides under any "pandasai/ee/" directory of this repository, if such directories exists, are licensed under the license defined in "pandasai/ee/LICENSE". +- All third party components incorporated into the PandasAI Software are licensed under the original license provided by the owner of the applicable component. +- Content outside of the above mentioned directories or restrictions above is available under the "MIT Expat" license as defined below. + +Permission is hereby granted, free of charge, to any person obtaining a copy +of this software and associated documentation files (the "Software"), to deal +in the Software without restriction, including without limitation the rights +to use, copy, modify, merge, publish, distribute, sublicense, and/or sell +copies of the Software, and to permit persons to whom the Software is +furnished to do so, subject to the following conditions: + +The above copyright notice and this permission notice shall be included in all +copies or substantial portions of the Software. + +THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR +IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, +FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE +AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER +LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, +OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE +SOFTWARE. + + +--- LICENSE FOR numexpr --- +https://raw.githubusercontent.com/pydata/numexpr/master/LICENSE.txt + + +Copyright (c) 2007,2008 David M. Cooke +Copyright (c) 2009,2010 Francesc Alted +Copyright (c) 2011- See AUTHORS.txt + +Permission is hereby granted, free of charge, to any person obtaining a copy +of this software and associated documentation files (the "Software"), to deal +in the Software without restriction, including without limitation the rights +to use, copy, modify, merge, publish, distribute, sublicense, and/or sell +copies of the Software, and to permit persons to whom the Software is +furnished to do so, subject to the following conditions: + +The above copyright notice and this permission notice shall be included in +all copies or substantial portions of the Software. + +THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR +IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, +FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE +AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER +LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, +OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN +THE SOFTWARE. + + +--- LICENSE FOR httpx --- +https://raw.githubusercontent.com/projectdiscovery/httpx/main/LICENSE.md + + +MIT License + +Copyright (c) 2021 ProjectDiscovery, Inc. + +Permission is hereby granted, free of charge, to any person obtaining a copy +of this software and associated documentation files (the "Software"), to deal +in the Software without restriction, including without limitation the rights +to use, copy, modify, merge, publish, distribute, sublicense, and/or sell +copies of the Software, and to permit persons to whom the Software is +furnished to do so, subject to the following conditions: + +The above copyright notice and this permission notice shall be included in all +copies or substantial portions of the Software. + +THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR +IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, +FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE +AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER +LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, +OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE +SOFTWARE. + + +--- LICENSE FOR psycopg --- +https://raw.githubusercontent.com/psycopg/psycopg/master/LICENSE.txt + + + GNU LESSER GENERAL PUBLIC LICENSE + Version 3, 29 June 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. + + + This version of the GNU Lesser General Public License incorporates +the terms and conditions of version 3 of the GNU General Public +License, supplemented by the additional permissions listed below. + + 0. Additional Definitions. + + As used herein, "this License" refers to version 3 of the GNU Lesser +General Public License, and the "GNU GPL" refers to version 3 of the GNU +General Public License. + + "The Library" refers to a covered work governed by this License, +other than an Application or a Combined Work as defined below. + + An "Application" is any work that makes use of an interface provided +by the Library, but which is not otherwise based on the Library. +Defining a subclass of a class defined by the Library is deemed a mode +of using an interface provided by the Library. + + A "Combined Work" is a work produced by combining or linking an +Application with the Library. The particular version of the Library +with which the Combined Work was made is also called the "Linked +Version". + + The "Minimal Corresponding Source" for a Combined Work means the +Corresponding Source for the Combined Work, excluding any source code +for portions of the Combined Work that, considered in isolation, are +based on the Application, and not on the Linked Version. + + The "Corresponding Application Code" for a Combined Work means the +object code and/or source code for the Application, including any data +and utility programs needed for reproducing the Combined Work from the +Application, but excluding the System Libraries of the Combined Work. + + 1. Exception to Section 3 of the GNU GPL. + + You may convey a covered work under sections 3 and 4 of this License +without being bound by section 3 of the GNU GPL. + + 2. Conveying Modified Versions. + + If you modify a copy of the Library, and, in your modifications, a +facility refers to a function or data to be supplied by an Application +that uses the facility (other than as an argument passed when the +facility is invoked), then you may convey a copy of the modified +version: + + a) under this License, provided that you make a good faith effort to + ensure that, in the event an Application does not supply the + function or data, the facility still operates, and performs + whatever part of its purpose remains meaningful, or + + b) under the GNU GPL, with none of the additional permissions of + this License applicable to that copy. + + 3. Object Code Incorporating Material from Library Header Files. + + The object code form of an Application may incorporate material from +a header file that is part of the Library. You may convey such object +code under terms of your choice, provided that, if the incorporated +material is not limited to numerical parameters, data structure +layouts and accessors, or small macros, inline functions and templates +(ten or fewer lines in length), you do both of the following: + + a) Give prominent notice with each copy of the object code that the + Library is used in it and that the Library and its use are + covered by this License. + + b) Accompany the object code with a copy of the GNU GPL and this license + document. + + 4. Combined Works. + + You may convey a Combined Work under terms of your choice that, +taken together, effectively do not restrict modification of the +portions of the Library contained in the Combined Work and reverse +engineering for debugging such modifications, if you also do each of +the following: + + a) Give prominent notice with each copy of the Combined Work that + the Library is used in it and that the Library and its use are + covered by this License. + + b) Accompany the Combined Work with a copy of the GNU GPL and this license + document. + + c) For a Combined Work that displays copyright notices during + execution, include the copyright notice for the Library among + these notices, as well as a reference directing the user to the + copies of the GNU GPL and this license document. + + d) Do one of the following: + + 0) Convey the Minimal Corresponding Source under the terms of this + License, and the Corresponding Application Code in a form + suitable for, and under terms that permit, the user to + recombine or relink the Application with a modified version of + the Linked Version to produce a modified Combined Work, in the + manner specified by section 6 of the GNU GPL for conveying + Corresponding Source. + + 1) Use a suitable shared library mechanism for linking with the + Library. A suitable mechanism is one that (a) uses at run time + a copy of the Library already present on the user's computer + system, and (b) will operate properly with a modified version + of the Library that is interface-compatible with the Linked + Version. + + e) Provide Installation Information, but only if you would otherwise + be required to provide such information under section 6 of the + GNU GPL, and only to the extent that such information is + necessary to install and execute a modified version of the + Combined Work produced by recombining or relinking the + Application with a modified version of the Linked Version. (If + you use option 4d0, the Installation Information must accompany + the Minimal Corresponding Source and Corresponding Application + Code. If you use option 4d1, you must provide the Installation + Information in the manner specified by section 6 of the GNU GPL + for conveying Corresponding Source.) + + 5. Combined Libraries. + + You may place library facilities that are a work based on the +Library side by side in a single library together with other library +facilities that are not Applications and are not covered by this +License, and convey such a combined library under terms of your +choice, if you do both of the following: + + a) Accompany the combined library with a copy of the same work based + on the Library, uncombined with any other library facilities, + conveyed under the terms of this License. + + b) Give prominent notice with the combined library that part of it + is a work based on the Library, and explaining where to find the + accompanying uncombined form of the same work. + + 6. Revised Versions of the GNU Lesser General Public License. + + The Free Software Foundation may publish revised and/or new versions +of the GNU Lesser 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 +Library as you received it specifies that a certain numbered version +of the GNU Lesser General Public License "or any later version" +applies to it, you have the option of following the terms and +conditions either of that published version or of any later version +published by the Free Software Foundation. If the Library as you +received it does not specify a version number of the GNU Lesser +General Public License, you may choose any version of the GNU Lesser +General Public License ever published by the Free Software Foundation. + + If the Library as you received it specifies that a proxy can decide +whether future versions of the GNU Lesser General Public License shall +apply, that proxy's public statement of acceptance of any version is +permanent authorization for you to choose that version for the +Library. + + +--- LICENSE FOR nest_asyncio --- +https://raw.githubusercontent.com/erdewit/nest_asyncio/master/LICENSE + + +BSD 2-Clause License + +Copyright (c) 2018-2020, Ewald de Wit +All rights reserved. + +Redistribution and use in source and binary forms, with or without +modification, are permitted provided that the following conditions are met: + +* Redistributions of source code must retain the above copyright notice, this + list of conditions and the following disclaimer. + +* Redistributions in binary form must reproduce the above copyright notice, + this list of conditions and the following disclaimer in the documentation + and/or other materials provided with the distribution. + +THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" +AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE +IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE +DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT HOLDER OR CONTRIBUTORS BE LIABLE +FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL +DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR +SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER +CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, +OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE +OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. + + +--- LICENSE FOR unstructured --- +https://raw.githubusercontent.com/Unstructured-IO/unstructured/main/LICENSE.md + + + Apache License + Version 2.0, January 2004 + http://www.apache.org/licenses/ + + TERMS AND CONDITIONS FOR USE, REPRODUCTION, AND DISTRIBUTION + + 1. Definitions. + + "License" shall mean the terms and conditions for use, reproduction, + and distribution as defined by Sections 1 through 9 of this document. + + "Licensor" shall mean the copyright owner or entity authorized by + the copyright owner that is granting the License. + + "Legal Entity" shall mean the union of the acting entity and all + other entities that control, are controlled by, or are under common + control with that entity. For the purposes of this definition, + "control" means (i) the power, direct or indirect, to cause the + direction or management of such entity, whether by contract or + otherwise, or (ii) ownership of fifty percent (50%) or more of the + outstanding shares, or (iii) beneficial ownership of such entity. + + "You" (or "Your") shall mean an individual or Legal Entity + exercising permissions granted by this License. + + "Source" form shall mean the preferred form for making modifications, + including but not limited to software source code, documentation + source, and configuration files. + + "Object" form shall mean any form resulting from mechanical + transformation or translation of a Source form, including but + not limited to compiled object code, generated documentation, + and conversions to other media types. + + "Work" shall mean the work of authorship, whether in Source or + Object form, made available under the License, as indicated by a + copyright notice that is included in or attached to the work + (an example is provided in the Appendix below). + + "Derivative Works" shall mean any work, whether in Source or Object + form, that is based on (or derived from) the Work and for which the + editorial revisions, annotations, elaborations, or other modifications + represent, as a whole, an original work of authorship. For the purposes + of this License, Derivative Works shall not include works that remain + separable from, or merely link (or bind by name) to the interfaces of, + the Work and Derivative Works thereof. + + "Contribution" shall mean any work of authorship, including + the original version of the Work and any modifications or additions + to that Work or Derivative Works thereof, that is intentionally + submitted to Licensor for inclusion in the Work by the copyright owner + or by an individual or Legal Entity authorized to submit on behalf of + the copyright owner. For the purposes of this definition, "submitted" + means any form of electronic, verbal, or written communication sent + to the Licensor or its representatives, including but not limited to + communication on electronic mailing lists, source code control systems, + and issue tracking systems that are managed by, or on behalf of, the + Licensor for the purpose of discussing and improving the Work, but + excluding communication that is conspicuously marked or otherwise + designated in writing by the copyright owner as "Not a Contribution." + + "Contributor" shall mean Licensor and any individual or Legal Entity + on behalf of whom a Contribution has been received by Licensor and + subsequently incorporated within the Work. + + 2. Grant of Copyright License. Subject to the terms and conditions of + this License, each Contributor hereby grants to You a perpetual, + worldwide, non-exclusive, no-charge, royalty-free, irrevocable + copyright license to reproduce, prepare Derivative Works of, + publicly display, publicly perform, sublicense, and distribute the + Work and such Derivative Works in Source or Object form. + + 3. Grant of Patent License. Subject to the terms and conditions of + this License, each Contributor hereby grants to You a perpetual, + worldwide, non-exclusive, no-charge, royalty-free, irrevocable + (except as stated in this section) patent license to make, have made, + use, offer to sell, sell, import, and otherwise transfer the Work, + where such license applies only to those patent claims licensable + by such Contributor that are necessarily infringed by their + Contribution(s) alone or by combination of their Contribution(s) + with the Work to which such Contribution(s) was submitted. If You + institute patent litigation against any entity (including a + cross-claim or counterclaim in a lawsuit) alleging that the Work + or a Contribution incorporated within the Work constitutes direct + or contributory patent infringement, then any patent licenses + granted to You under this License for that Work shall terminate + as of the date such litigation is filed. + + 4. Redistribution. You may reproduce and distribute copies of the + Work or Derivative Works thereof in any medium, with or without + modifications, and in Source or Object form, provided that You + meet the following conditions: + + (a) You must give any other recipients of the Work or + Derivative Works a copy of this License; and + + (b) You must cause any modified files to carry prominent notices + stating that You changed the files; and + + (c) You must retain, in the Source form of any Derivative Works + that You distribute, all copyright, patent, trademark, and + attribution notices from the Source form of the Work, + excluding those notices that do not pertain to any part of + the Derivative Works; and + + (d) If the Work includes a "NOTICE" text file as part of its + distribution, then any Derivative Works that You distribute must + include a readable copy of the attribution notices contained + within such NOTICE file, excluding those notices that do not + pertain to any part of the Derivative Works, in at least one + of the following places: within a NOTICE text file distributed + as part of the Derivative Works; within the Source form or + documentation, if provided along with the Derivative Works; or, + within a display generated by the Derivative Works, if and + wherever such third-party notices normally appear. The contents + of the NOTICE file are for informational purposes only and + do not modify the License. You may add Your own attribution + notices within Derivative Works that You distribute, alongside + or as an addendum to the NOTICE text from the Work, provided + that such additional attribution notices cannot be construed + as modifying the License. + + You may add Your own copyright statement to Your modifications and + may provide additional or different license terms and conditions + for use, reproduction, or distribution of Your modifications, or + for any such Derivative Works as a whole, provided Your use, + reproduction, and distribution of the Work otherwise complies with + the conditions stated in this License. + + 5. Submission of Contributions. Unless You explicitly state otherwise, + any Contribution intentionally submitted for inclusion in the Work + by You to the Licensor shall be under the terms and conditions of + this License, without any additional terms or conditions. + Notwithstanding the above, nothing herein shall supersede or modify + the terms of any separate license agreement you may have executed + with Licensor regarding such Contributions. + + 6. Trademarks. This License does not grant permission to use the trade + names, trademarks, service marks, or product names of the Licensor, + except as required for reasonable and customary use in describing the + origin of the Work and reproducing the content of the NOTICE file. + + 7. Disclaimer of Warranty. Unless required by applicable law or + agreed to in writing, Licensor provides the Work (and each + Contributor provides its Contributions) on an "AS IS" BASIS, + WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or + implied, including, without limitation, any warranties or conditions + of TITLE, NON-INFRINGEMENT, MERCHANTABILITY, or FITNESS FOR A + PARTICULAR PURPOSE. You are solely responsible for determining the + appropriateness of using or redistributing the Work and assume any + risks associated with Your exercise of permissions under this License. + + 8. Limitation of Liability. In no event and under no legal theory, + whether in tort (including negligence), contract, or otherwise, + unless required by applicable law (such as deliberate and grossly + negligent acts) or agreed to in writing, shall any Contributor be + liable to You for damages, including any direct, indirect, special, + incidental, or consequential damages of any character arising as a + result of this License or out of the use or inability to use the + Work (including but not limited to damages for loss of goodwill, + work stoppage, computer failure or malfunction, or any and all + other commercial damages or losses), even if such Contributor + has been advised of the possibility of such damages. + + 9. Accepting Warranty or Additional Liability. While redistributing + the Work or Derivative Works thereof, You may choose to offer, + and charge a fee for, acceptance of support, warranty, indemnity, + or other liability obligations and/or rights consistent with this + License. However, in accepting such obligations, You may act only + on Your own behalf and on Your sole responsibility, not on behalf + of any other Contributor, and only if You agree to indemnify, + defend, and hold each Contributor harmless for any liability + incurred by, or claims asserted against, such Contributor by reason + of your accepting any such warranty or additional liability. + + END OF TERMS AND CONDITIONS + + APPENDIX: How to apply the Apache License to your work. + + To apply the Apache License to your work, attach the following + boilerplate notice, with the fields enclosed by brackets "[]" + replaced with your own identifying information. (Don't include + the brackets!) The text should be enclosed in the appropriate + comment syntax for the file format. We also recommend that a + file or class name and description of purpose be included on the + same "printed page" as the copyright notice for easier + identification within third-party archives. + + Copyright 2022 Unstructured Technologies, Inc + + Licensed under the Apache License, Version 2.0 (the "License"); + you may not use this file except in compliance with the License. + You may obtain a copy of the License at + + http://www.apache.org/licenses/LICENSE-2.0 + + Unless required by applicable law or agreed to in writing, software + distributed under the License is distributed on an "AS IS" BASIS, + WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + See the License for the specific language governing permissions and + limitations under the License. + + +--- LICENSE FOR langchain-postgres --- +https://raw.githubusercontent.com/langchain-ai/langchain-postgres/main/LICENSE + + +MIT License + +Copyright (c) 2024 LangChain, Inc. + +Permission is hereby granted, free of charge, to any person obtaining a copy +of this software and associated documentation files (the "Software"), to deal +in the Software without restriction, including without limitation the rights +to use, copy, modify, merge, publish, distribute, sublicense, and/or sell +copies of the Software, and to permit persons to whom the Software is +furnished to do so, subject to the following conditions: + +The above copyright notice and this permission notice shall be included in all +copies or substantial portions of the Software. + +THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR +IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, +FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE +AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER +LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, +OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE +SOFTWARE. + + +--- LICENSE FOR pip --- +https://raw.githubusercontent.com/pypa/pip/master/LICENSE.txt + +Copyright (c) 2008-present The pip developers (see AUTHORS.txt file) + +Permission is hereby granted, free of charge, to any person obtaining +a copy of this software and associated documentation files (the +"Software"), to deal in the Software without restriction, including +without limitation the rights to use, copy, modify, merge, publish, +distribute, sublicense, and/or sell copies of the Software, and to +permit persons to whom the Software is furnished to do so, subject to +the following conditions: + +The above copyright notice and this permission notice shall be +included in all copies or substantial portions of the Software. + +THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, +EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF +MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND +NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE +LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION +OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION +WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. + + +--- LICENSE FOR python 3.10 --- +This package was put together by Klee Dienes from +sources from ftp.python.org:/pub/python, based on the Debianization by +the previous maintainers Bernd S. Brentrup and +Bruce Perens. Current maintainer is Matthias Klose . + +It was downloaded from http://python.org/ + +Copyright: + +Upstream Author: Guido van Rossum and others. + +License: + +The following text includes the Python license and licenses and +acknowledgements for incorporated software. The licenses can be read +in the HTML and texinfo versions of the documentation as well, after +installing the pythonx.y-doc package. Licenses for files not licensed +under the Python Licenses are found at the end of this file. + + +Python License +============== + +A. HISTORY OF THE SOFTWARE +========================== + +Python was created in the early 1990s by Guido van Rossum at Stichting +Mathematisch Centrum (CWI, see http://www.cwi.nl) in the Netherlands +as a successor of a language called ABC. Guido remains Python's +principal author, although it includes many contributions from others. + +In 1995, Guido continued his work on Python at the Corporation for +National Research Initiatives (CNRI, see http://www.cnri.reston.va.us) +in Reston, Virginia where he released several versions of the +software. + +In May 2000, Guido and the Python core development team moved to +BeOpen.com to form the BeOpen PythonLabs team. In October of the same +year, the PythonLabs team moved to Digital Creations (now Zope +Corporation, see http://www.zope.com). In 2001, the Python Software +Foundation (PSF, see http://www.python.org/psf/) was formed, a +non-profit organization created specifically to own Python-related +Intellectual Property. Zope Corporation is a sponsoring member of +the PSF. + +All Python releases are Open Source (see http://www.opensource.org for +the Open Source Definition). Historically, most, but not all, Python +releases have also been GPL-compatible; the table below summarizes +the various releases. + + Release Derived Year Owner GPL- + from compatible? (1) + + 0.9.0 thru 1.2 1991-1995 CWI yes + 1.3 thru 1.5.2 1.2 1995-1999 CNRI yes + 1.6 1.5.2 2000 CNRI no + 2.0 1.6 2000 BeOpen.com no + 1.6.1 1.6 2001 CNRI yes (2) + 2.1 2.0+1.6.1 2001 PSF no + 2.0.1 2.0+1.6.1 2001 PSF yes + 2.1.1 2.1+2.0.1 2001 PSF yes + 2.2 2.1.1 2001 PSF yes + 2.1.2 2.1.1 2002 PSF yes + 2.1.3 2.1.2 2002 PSF yes + 2.2 and above 2.1.1 2001-now PSF yes + +Footnotes: + +(1) GPL-compatible doesn't mean that we're distributing Python under + the GPL. All Python licenses, unlike the GPL, let you distribute + a modified version without making your changes open source. The + GPL-compatible licenses make it possible to combine Python with + other software that is released under the GPL; the others don't. + +(2) According to Richard Stallman, 1.6.1 is not GPL-compatible, + because its license has a choice of law clause. According to + CNRI, however, Stallman's lawyer has told CNRI's lawyer that 1.6.1 + is "not incompatible" with the GPL. + +Thanks to the many outside volunteers who have worked under Guido's +direction to make these releases possible. + + +B. TERMS AND CONDITIONS FOR ACCESSING OR OTHERWISE USING PYTHON +=============================================================== + +PYTHON SOFTWARE FOUNDATION LICENSE VERSION 2 +-------------------------------------------- + +1. This LICENSE AGREEMENT is between the Python Software Foundation +("PSF"), and the Individual or Organization ("Licensee") accessing and +otherwise using this software ("Python") in source or binary form and +its associated documentation. + +2. Subject to the terms and conditions of this License Agreement, PSF +hereby grants Licensee a nonexclusive, royalty-free, world-wide +license to reproduce, analyze, test, perform and/or display publicly, +prepare derivative works, distribute, and otherwise use Python alone +or in any derivative version, provided, however, that PSF's License +Agreement and PSF's notice of copyright, i.e., "Copyright (c) 2001, +2002, 2003, 2004, 2005, 2006, 2007, 2008, 2009, 2010, 2011, 2012, +2013, 2014 Python Software Foundation; All Rights Reserved" are +retained in Python alone or in any derivative version prepared by +Licensee. + +3. In the event Licensee prepares a derivative work that is based on +or incorporates Python or any part thereof, and wants to make +the derivative work available to others as provided herein, then +Licensee hereby agrees to include in any such work a brief summary of +the changes made to Python. + +4. PSF is making Python available to Licensee on an "AS IS" +basis. PSF MAKES NO REPRESENTATIONS OR WARRANTIES, EXPRESS OR +IMPLIED. BY WAY OF EXAMPLE, BUT NOT LIMITATION, PSF MAKES NO AND +DISCLAIMS ANY REPRESENTATION OR WARRANTY OF MERCHANTABILITY OR FITNESS +FOR ANY PARTICULAR PURPOSE OR THAT THE USE OF PYTHON WILL NOT +INFRINGE ANY THIRD PARTY RIGHTS. + +5. PSF SHALL NOT BE LIABLE TO LICENSEE OR ANY OTHER USERS OF PYTHON +FOR ANY INCIDENTAL, SPECIAL, OR CONSEQUENTIAL DAMAGES OR LOSS AS +A RESULT OF MODIFYING, DISTRIBUTING, OR OTHERWISE USING PYTHON, +OR ANY DERIVATIVE THEREOF, EVEN IF ADVISED OF THE POSSIBILITY THEREOF. + +6. This License Agreement will automatically terminate upon a material +breach of its terms and conditions. + +7. Nothing in this License Agreement shall be deemed to create any +relationship of agency, partnership, or joint venture between PSF and +Licensee. This License Agreement does not grant permission to use PSF +trademarks or trade name in a trademark sense to endorse or promote +products or services of Licensee, or any third party. + +8. By copying, installing or otherwise using Python, Licensee +agrees to be bound by the terms and conditions of this License +Agreement. + + +BEOPEN.COM LICENSE AGREEMENT FOR PYTHON 2.0 +------------------------------------------- + +BEOPEN PYTHON OPEN SOURCE LICENSE AGREEMENT VERSION 1 + +1. This LICENSE AGREEMENT is between BeOpen.com ("BeOpen"), having an +office at 160 Saratoga Avenue, Santa Clara, CA 95051, and the +Individual or Organization ("Licensee") accessing and otherwise using +this software in source or binary form and its associated +documentation ("the Software"). + +2. Subject to the terms and conditions of this BeOpen Python License +Agreement, BeOpen hereby grants Licensee a non-exclusive, +royalty-free, world-wide license to reproduce, analyze, test, perform +and/or display publicly, prepare derivative works, distribute, and +otherwise use the Software alone or in any derivative version, +provided, however, that the BeOpen Python License is retained in the +Software, alone or in any derivative version prepared by Licensee. + +3. BeOpen is making the Software available to Licensee on an "AS IS" +basis. BEOPEN MAKES NO REPRESENTATIONS OR WARRANTIES, EXPRESS OR +IMPLIED. BY WAY OF EXAMPLE, BUT NOT LIMITATION, BEOPEN MAKES NO AND +DISCLAIMS ANY REPRESENTATION OR WARRANTY OF MERCHANTABILITY OR FITNESS +FOR ANY PARTICULAR PURPOSE OR THAT THE USE OF THE SOFTWARE WILL NOT +INFRINGE ANY THIRD PARTY RIGHTS. + +4. BEOPEN SHALL NOT BE LIABLE TO LICENSEE OR ANY OTHER USERS OF THE +SOFTWARE FOR ANY INCIDENTAL, SPECIAL, OR CONSEQUENTIAL DAMAGES OR LOSS +AS A RESULT OF USING, MODIFYING OR DISTRIBUTING THE SOFTWARE, OR ANY +DERIVATIVE THEREOF, EVEN IF ADVISED OF THE POSSIBILITY THEREOF. + +5. This License Agreement will automatically terminate upon a material +breach of its terms and conditions. + +6. This License Agreement shall be governed by and interpreted in all +respects by the law of the State of California, excluding conflict of +law provisions. Nothing in this License Agreement shall be deemed to +create any relationship of agency, partnership, or joint venture +between BeOpen and Licensee. This License Agreement does not grant +permission to use BeOpen trademarks or trade names in a trademark +sense to endorse or promote products or services of Licensee, or any +third party. As an exception, the "BeOpen Python" logos available at +http://www.pythonlabs.com/logos.html may be used according to the +permissions granted on that web page. + +7. By copying, installing or otherwise using the software, Licensee +agrees to be bound by the terms and conditions of this License +Agreement. + + +CNRI LICENSE AGREEMENT FOR PYTHON 1.6.1 +--------------------------------------- + +1. This LICENSE AGREEMENT is between the Corporation for National +Research Initiatives, having an office at 1895 Preston White Drive, +Reston, VA 20191 ("CNRI"), and the Individual or Organization +("Licensee") accessing and otherwise using Python 1.6.1 software in +source or binary form and its associated documentation. + +2. Subject to the terms and conditions of this License Agreement, CNRI +hereby grants Licensee a nonexclusive, royalty-free, world-wide +license to reproduce, analyze, test, perform and/or display publicly, +prepare derivative works, distribute, and otherwise use Python 1.6.1 +alone or in any derivative version, provided, however, that CNRI's +License Agreement and CNRI's notice of copyright, i.e., "Copyright (c) +1995-2001 Corporation for National Research Initiatives; All Rights +Reserved" are retained in Python 1.6.1 alone or in any derivative +version prepared by Licensee. Alternately, in lieu of CNRI's License +Agreement, Licensee may substitute the following text (omitting the +quotes): "Python 1.6.1 is made available subject to the terms and +conditions in CNRI's License Agreement. This Agreement together with +Python 1.6.1 may be located on the Internet using the following +unique, persistent identifier (known as a handle): 1895.22/1013. This +Agreement may also be obtained from a proxy server on the Internet +using the following URL: http://hdl.handle.net/1895.22/1013". + +3. In the event Licensee prepares a derivative work that is based on +or incorporates Python 1.6.1 or any part thereof, and wants to make +the derivative work available to others as provided herein, then +Licensee hereby agrees to include in any such work a brief summary of +the changes made to Python 1.6.1. + +4. CNRI is making Python 1.6.1 available to Licensee on an "AS IS" +basis. CNRI MAKES NO REPRESENTATIONS OR WARRANTIES, EXPRESS OR +IMPLIED. BY WAY OF EXAMPLE, BUT NOT LIMITATION, CNRI MAKES NO AND +DISCLAIMS ANY REPRESENTATION OR WARRANTY OF MERCHANTABILITY OR FITNESS +FOR ANY PARTICULAR PURPOSE OR THAT THE USE OF PYTHON 1.6.1 WILL NOT +INFRINGE ANY THIRD PARTY RIGHTS. + +5. CNRI SHALL NOT BE LIABLE TO LICENSEE OR ANY OTHER USERS OF PYTHON +1.6.1 FOR ANY INCIDENTAL, SPECIAL, OR CONSEQUENTIAL DAMAGES OR LOSS AS +A RESULT OF MODIFYING, DISTRIBUTING, OR OTHERWISE USING PYTHON 1.6.1, +OR ANY DERIVATIVE THEREOF, EVEN IF ADVISED OF THE POSSIBILITY THEREOF. + +6. This License Agreement will automatically terminate upon a material +breach of its terms and conditions. + +7. This License Agreement shall be governed by the federal +intellectual property law of the United States, including without +limitation the federal copyright law, and, to the extent such +U.S. federal law does not apply, by the law of the Commonwealth of +Virginia, excluding Virginia's conflict of law provisions. +Notwithstanding the foregoing, with regard to derivative works based +on Python 1.6.1 that incorporate non-separable material that was +previously distributed under the GNU General Public License (GPL), the +law of the Commonwealth of Virginia shall govern this License +Agreement only as to issues arising under or with respect to +Paragraphs 4, 5, and 7 of this License Agreement. Nothing in this +License Agreement shall be deemed to create any relationship of +agency, partnership, or joint venture between CNRI and Licensee. This +License Agreement does not grant permission to use CNRI trademarks or +trade name in a trademark sense to endorse or promote products or +services of Licensee, or any third party. + +8. By clicking on the "ACCEPT" button where indicated, or by copying, +installing or otherwise using Python 1.6.1, Licensee agrees to be +bound by the terms and conditions of this License Agreement. + + ACCEPT + + +CWI LICENSE AGREEMENT FOR PYTHON 0.9.0 THROUGH 1.2 +-------------------------------------------------- + +Copyright (c) 1991 - 1995, Stichting Mathematisch Centrum Amsterdam, +The Netherlands. All rights reserved. + +Permission to use, copy, modify, and distribute this software and its +documentation for any purpose and without fee is hereby granted, +provided that the above copyright notice appear in all copies and that +both that copyright notice and this permission notice appear in +supporting documentation, and that the name of Stichting Mathematisch +Centrum or CWI not be used in advertising or publicity pertaining to +distribution of the software without specific, written prior +permission. + +STICHTING MATHEMATISCH CENTRUM DISCLAIMS ALL WARRANTIES WITH REGARD TO +THIS SOFTWARE, INCLUDING ALL IMPLIED WARRANTIES OF MERCHANTABILITY AND +FITNESS, IN NO EVENT SHALL STICHTING MATHEMATISCH CENTRUM BE LIABLE +FOR ANY SPECIAL, INDIRECT OR CONSEQUENTIAL DAMAGES OR ANY DAMAGES +WHATSOEVER RESULTING FROM LOSS OF USE, DATA OR PROFITS, WHETHER IN AN +ACTION OF CONTRACT, NEGLIGENCE OR OTHER TORTIOUS ACTION, ARISING OUT +OF OR IN CONNECTION WITH THE USE OR PERFORMANCE OF THIS SOFTWARE. + + +Licenses and Acknowledgements for Incorporated Software +======================================================= + +Mersenne Twister +---------------- + +The `_random' module includes code based on a download from +`http://www.math.keio.ac.jp/~matumoto/MT2002/emt19937ar.html'. The +following are the verbatim comments from the original code: + + A C-program for MT19937, with initialization improved 2002/1/26. + Coded by Takuji Nishimura and Makoto Matsumoto. + + Before using, initialize the state by using init_genrand(seed) + or init_by_array(init_key, key_length). + + Copyright (C) 1997 - 2002, Makoto Matsumoto and Takuji Nishimura, + All rights reserved. + + Redistribution and use in source and binary forms, with or without + modification, are permitted provided that the following conditions + are met: + + 1. Redistributions of source code must retain the above copyright + notice, this list of conditions and the following disclaimer. + + 2. Redistributions in binary form must reproduce the above copyright + notice, this list of conditions and the following disclaimer in the + documentation and/or other materials provided with the distribution. + + 3. The names of its contributors may not be used to endorse or promote + products derived from this software without specific prior written + permission. + + THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS + "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT + LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR + A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT + OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, + SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED + TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR + PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF + LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING + NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS + SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. + + Any feedback is very welcome. + http://www.math.keio.ac.jp/matumoto/emt.html + email: matumoto@math.keio.ac.jp + + +Sockets +------- + +The `socket' module uses the functions, `getaddrinfo', and +`getnameinfo', which are coded in separate source files from the WIDE +Project, `http://www.wide.ad.jp/about/index.html'. + + Copyright (C) 1995, 1996, 1997, and 1998 WIDE Project. + All rights reserved. + + Redistribution and use in source and binary forms, with or without + modification, are permitted provided that the following conditions + are met: + 1. Redistributions of source code must retain the above copyright + notice, this list of conditions and the following disclaimer. + 2. Redistributions in binary form must reproduce the above copyright + notice, this list of conditions and the following disclaimer in the + documentation and/or other materials provided with the distribution. + 3. Neither the name of the project nor the names of its contributors + may be used to endorse or promote products derived from this software + without specific prior written permission. + + THIS SOFTWARE IS PROVIDED BY THE PROJECT AND CONTRIBUTORS ``AS IS'' AND + GAI_ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE + IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE + ARE DISCLAIMED. IN NO EVENT SHALL THE PROJECT OR CONTRIBUTORS BE LIABLE + FOR GAI_ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR + CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF + SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS + INTERRUPTION) HOWEVER CAUSED AND ON GAI_ANY THEORY OF LIABILITY, WHETHER + IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) + ARISING IN GAI_ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED + OF THE POSSIBILITY OF SUCH DAMAGE. + + +Floating point exception control +-------------------------------- + +The source for the `fpectl' module includes the following notice: + + --------------------------------------------------------------------- + / Copyright (c) 1996. \ + | The Regents of the University of California. | + | All rights reserved. | + | | + | Permission to use, copy, modify, and distribute this software for | + | any purpose without fee is hereby granted, provided that this en- | + | tire notice is included in all copies of any software which is or | + | includes a copy or modification of this software and in all | + | copies of the supporting documentation for such software. | + | | + | This work was produced at the University of California, Lawrence | + | Livermore National Laboratory under contract no. W-7405-ENG-48 | + | between the U.S. Department of Energy and The Regents of the | + | University of California for the operation of UC LLNL. | + | | + | DISCLAIMER | + | | + | This software was prepared as an account of work sponsored by an | + | agency of the United States Government. Neither the United States | + | Government nor the University of California nor any of their em- | + | ployees, makes any warranty, express or implied, or assumes any | + | liability or responsibility for the accuracy, completeness, or | + | usefulness of any information, apparatus, product, or process | + | disclosed, or represents that its use would not infringe | + | privately-owned rights. Reference herein to any specific commer- | + | cial products, process, or service by trade name, trademark, | + | manufacturer, or otherwise, does not necessarily constitute or | + | imply its endorsement, recommendation, or favoring by the United | + | States Government or the University of California. The views and | + | opinions of authors expressed herein do not necessarily state or | + | reflect those of the United States Government or the University | + | of California, and shall not be used for advertising or product | + \ endorsement purposes. / + --------------------------------------------------------------------- + + +Cookie management +----------------- + +The `Cookie' module contains the following notice: + + Copyright 2000 by Timothy O'Malley + + All Rights Reserved + + Permission to use, copy, modify, and distribute this software + and its documentation for any purpose and without fee is hereby + granted, provided that the above copyright notice appear in all + copies and that both that copyright notice and this permission + notice appear in supporting documentation, and that the name of + Timothy O'Malley not be used in advertising or publicity + pertaining to distribution of the software without specific, written + prior permission. + + Timothy O'Malley DISCLAIMS ALL WARRANTIES WITH REGARD TO THIS + SOFTWARE, INCLUDING ALL IMPLIED WARRANTIES OF MERCHANTABILITY + AND FITNESS, IN NO EVENT SHALL Timothy O'Malley BE LIABLE FOR + ANY SPECIAL, INDIRECT OR CONSEQUENTIAL DAMAGES OR ANY DAMAGES + WHATSOEVER RESULTING FROM LOSS OF USE, DATA OR PROFITS, + WHETHER IN AN ACTION OF CONTRACT, NEGLIGENCE OR OTHER TORTIOUS + ACTION, ARISING OUT OF OR IN CONNECTION WITH THE USE OR + PERFORMANCE OF THIS SOFTWARE. + + +Execution tracing +----------------- + +The `trace' module contains the following notice: + + portions copyright 2001, Autonomous Zones Industries, Inc., all rights... + err... reserved and offered to the public under the terms of the + Python 2.2 license. + Author: Zooko O'Whielacronx + http://zooko.com/ + mailto:zooko@zooko.com + + Copyright 2000, Mojam Media, Inc., all rights reserved. + Author: Skip Montanaro + + Copyright 1999, Bioreason, Inc., all rights reserved. + Author: Andrew Dalke + + Copyright 1995-1997, Automatrix, Inc., all rights reserved. + Author: Skip Montanaro + + Copyright 1991-1995, Stichting Mathematisch Centrum, all rights reserved. + + Permission to use, copy, modify, and distribute this Python software and + its associated documentation for any purpose without fee is hereby + granted, provided that the above copyright notice appears in all copies, + and that both that copyright notice and this permission notice appear in + supporting documentation, and that the name of neither Automatrix, + Bioreason or Mojam Media be used in advertising or publicity pertaining + to distribution of the software without specific, written prior + permission. + + +UUencode and UUdecode functions +------------------------------- + +The `uu' module contains the following notice: + + Copyright 1994 by Lance Ellinghouse + Cathedral City, California Republic, United States of America. + All Rights Reserved + Permission to use, copy, modify, and distribute this software and its + documentation for any purpose and without fee is hereby granted, + provided that the above copyright notice appear in all copies and that + both that copyright notice and this permission notice appear in + supporting documentation, and that the name of Lance Ellinghouse + not be used in advertising or publicity pertaining to distribution + of the software without specific, written prior permission. + LANCE ELLINGHOUSE DISCLAIMS ALL WARRANTIES WITH REGARD TO + THIS SOFTWARE, INCLUDING ALL IMPLIED WARRANTIES OF MERCHANTABILITY AND + FITNESS, IN NO EVENT SHALL LANCE ELLINGHOUSE CENTRUM BE LIABLE + FOR ANY SPECIAL, INDIRECT OR CONSEQUENTIAL DAMAGES OR ANY DAMAGES + WHATSOEVER RESULTING FROM LOSS OF USE, DATA OR PROFITS, WHETHER IN AN + ACTION OF CONTRACT, NEGLIGENCE OR OTHER TORTIOUS ACTION, ARISING OUT + OF OR IN CONNECTION WITH THE USE OR PERFORMANCE OF THIS SOFTWARE. + + Modified by Jack Jansen, CWI, July 1995: + - Use binascii module to do the actual line-by-line conversion + between ascii and binary. This results in a 1000-fold speedup. The C + version is still 5 times faster, though. + - Arguments more compliant with python standard + + +XML Remote Procedure Calls +-------------------------- + +The `xmlrpclib' module contains the following notice: + + The XML-RPC client interface is + + Copyright (c) 1999-2002 by Secret Labs AB + Copyright (c) 1999-2002 by Fredrik Lundh + + By obtaining, using, and/or copying this software and/or its + associated documentation, you agree that you have read, understood, + and will comply with the following terms and conditions: + + Permission to use, copy, modify, and distribute this software and + its associated documentation for any purpose and without fee is + hereby granted, provided that the above copyright notice appears in + all copies, and that both that copyright notice and this permission + notice appear in supporting documentation, and that the name of + Secret Labs AB or the author not be used in advertising or publicity + pertaining to distribution of the software without specific, written + prior permission. + + SECRET LABS AB AND THE AUTHOR DISCLAIMS ALL WARRANTIES WITH REGARD + TO THIS SOFTWARE, INCLUDING ALL IMPLIED WARRANTIES OF MERCHANT- + ABILITY AND FITNESS. IN NO EVENT SHALL SECRET LABS AB OR THE AUTHOR + BE LIABLE FOR ANY SPECIAL, INDIRECT OR CONSEQUENTIAL DAMAGES OR ANY + DAMAGES WHATSOEVER RESULTING FROM LOSS OF USE, DATA OR PROFITS, + WHETHER IN AN ACTION OF CONTRACT, NEGLIGENCE OR OTHER TORTIOUS + ACTION, ARISING OUT OF OR IN CONNECTION WITH THE USE OR PERFORMANCE + OF THIS SOFTWARE. + +Licenses for Software linked to +=============================== + +Note that the choice of GPL compatibility outlined above doesn't extend +to modules linked to particular libraries, since they change the +effective License of the module binary. + + +GNU Readline +------------ + +The 'readline' module makes use of GNU Readline. + + The GNU Readline Library is free software; you can redistribute it + and/or modify it under the terms of the GNU General Public License as + published by the Free Software Foundation; either version 2, or (at + your option) any later version. + + On Debian systems, you can find the complete statement in + /usr/share/doc/readline-common/copyright'. A copy of the GNU General + Public License is available in /usr/share/common-licenses/GPL-2'. + + +OpenSSL +------- + +The '_ssl' module makes use of OpenSSL. + + The OpenSSL toolkit stays under a dual license, i.e. both the + conditions of the OpenSSL License and the original SSLeay license + apply to the toolkit. Actually both licenses are BSD-style Open + Source licenses. Note that both licenses are incompatible with + the GPL. + + On Debian systems, you can find the complete license text in + /usr/share/doc/openssl/copyright'. + + +Files with other licenses than the Python License +------------------------------------------------- + +Files: Include/dynamic_annotations.h +Files: Python/dynamic_annotations.c +Copyright: (c) 2008-2009, Google Inc. +License: Redistribution and use in source and binary forms, with or without + modification, are permitted provided that the following conditions are + met: + + * Redistributions of source code must retain the above copyright + notice, this list of conditions and the following disclaimer. + * Neither the name of Google Inc. nor the names of its + contributors may be used to endorse or promote products derived from + this software without specific prior written permission. + + THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS + "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT + LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR + A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT + OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, + SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT + LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, + DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY + THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT + (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE + OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. + +Files: Include/unicodeobject.h +Copyright: (c) Corporation for National Research Initiatives. +Copyright: (c) 1999 by Secret Labs AB. +Copyright: (c) 1999 by Fredrik Lundh. +License: By obtaining, using, and/or copying this software and/or its + associated documentation, you agree that you have read, understood, + and will comply with the following terms and conditions: + + Permission to use, copy, modify, and distribute this software and its + associated documentation for any purpose and without fee is hereby + granted, provided that the above copyright notice appears in all + copies, and that both that copyright notice and this permission notice + appear in supporting documentation, and that the name of Secret Labs + AB or the author not be used in advertising or publicity pertaining to + distribution of the software without specific, written prior + permission. + + SECRET LABS AB AND THE AUTHOR DISCLAIMS ALL WARRANTIES WITH REGARD TO + THIS SOFTWARE, INCLUDING ALL IMPLIED WARRANTIES OF MERCHANTABILITY AND + FITNESS. IN NO EVENT SHALL SECRET LABS AB OR THE AUTHOR BE LIABLE FOR + ANY SPECIAL, INDIRECT OR CONSEQUENTIAL DAMAGES OR ANY DAMAGES + WHATSOEVER RESULTING FROM LOSS OF USE, DATA OR PROFITS, WHETHER IN AN + ACTION OF CONTRACT, NEGLIGENCE OR OTHER TORTIOUS ACTION, ARISING OUT + OF OR IN CONNECTION WITH THE USE OR PERFORMANCE OF THIS SOFTWARE. + +Files: Lib/logging/* +Copyright: 2001-2010 by Vinay Sajip. All Rights Reserved. +License: Permission to use, copy, modify, and distribute this software and + its documentation for any purpose and without fee is hereby granted, + provided that the above copyright notice appear in all copies and that + both that copyright notice and this permission notice appear in + supporting documentation, and that the name of Vinay Sajip + not be used in advertising or publicity pertaining to distribution + of the software without specific, written prior permission. + VINAY SAJIP DISCLAIMS ALL WARRANTIES WITH REGARD TO THIS SOFTWARE, INCLUDING + ALL IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS. IN NO EVENT SHALL + VINAY SAJIP BE LIABLE FOR ANY SPECIAL, INDIRECT OR CONSEQUENTIAL DAMAGES OR + ANY DAMAGES WHATSOEVER RESULTING FROM LOSS OF USE, DATA OR PROFITS, WHETHER + IN AN ACTION OF CONTRACT, NEGLIGENCE OR OTHER TORTIOUS ACTION, ARISING OUT + OF OR IN CONNECTION WITH THE USE OR PERFORMANCE OF THIS SOFTWARE. + +Files: Lib/multiprocessing/* +Files: Modules/_multiprocessing/* +Copyright: (c) 2006-2008, R Oudkerk. All rights reserved. +License: Redistribution and use in source and binary forms, with or without + modification, are permitted provided that the following conditions + are met: + + 1. Redistributions of source code must retain the above copyright + notice, this list of conditions and the following disclaimer. + 2. Redistributions in binary form must reproduce the above copyright + notice, this list of conditions and the following disclaimer in the + documentation and/or other materials provided with the distribution. + 3. Neither the name of author nor the names of any contributors may be + used to endorse or promote products derived from this software + without specific prior written permission. + + THIS SOFTWARE IS PROVIDED BY THE AUTHOR AND CONTRIBUTORS "AS IS" AND + ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE + IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE + ARE DISCLAIMED. IN NO EVENT SHALL THE AUTHOR OR CONTRIBUTORS BE LIABLE + FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL + DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS + OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) + HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT + LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY + OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF + SUCH DAMAGE. + +Files: Lib/sqlite3/* +Files: Modules/_sqlite/* +Copyright: (C) 2004-2005 Gerhard Häring +License: This software is provided 'as-is', without any express or implied + warranty. In no event will the authors be held liable for any damages + arising from the use of this software. + + Permission is granted to anyone to use this software for any purpose, + including commercial applications, and to alter it and redistribute it + freely, subject to the following restrictions: + + 1. The origin of this software must not be misrepresented; you must not + claim that you wrote the original software. If you use this software + in a product, an acknowledgment in the product documentation would be + appreciated but is not required. + 2. Altered source versions must be plainly marked as such, and must not be + misrepresented as being the original software. + 3. This notice may not be removed or altered from any source distribution. + +Files: Lib/async* +Copyright: Copyright 1996 by Sam Rushing +License: Permission to use, copy, modify, and distribute this software and + its documentation for any purpose and without fee is hereby + granted, provided that the above copyright notice appear in all + copies and that both that copyright notice and this permission + notice appear in supporting documentation, and that the name of Sam + Rushing not be used in advertising or publicity pertaining to + distribution of the software without specific, written prior + permission. + + SAM RUSHING DISCLAIMS ALL WARRANTIES WITH REGARD TO THIS SOFTWARE, + INCLUDING ALL IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS, IN + NO EVENT SHALL SAM RUSHING BE LIABLE FOR ANY SPECIAL, INDIRECT OR + CONSEQUENTIAL DAMAGES OR ANY DAMAGES WHATSOEVER RESULTING FROM LOSS + OF USE, DATA OR PROFITS, WHETHER IN AN ACTION OF CONTRACT, + NEGLIGENCE OR OTHER TORTIOUS ACTION, ARISING OUT OF OR IN + CONNECTION WITH THE USE OR PERFORMANCE OF THIS SOFTWARE. + +Files: Lib/tarfile.py +Copyright: (C) 2002 Lars Gustaebel +License: Permission is hereby granted, free of charge, to any person + obtaining a copy of this software and associated documentation + files (the "Software"), to deal in the Software without + restriction, including without limitation the rights to use, + copy, modify, merge, publish, distribute, sublicense, and/or sell + copies of the Software, and to permit persons to whom the + Software is furnished to do so, subject to the following + conditions: + + The above copyright notice and this permission notice shall be + included in all copies or substantial portions of the Software. + + THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, + EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES + OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND + NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT + HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, + WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING + FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR + OTHER DEALINGS IN THE SOFTWARE. + +Files: Lib/turtle.py +Copyright: (C) 2006 - 2010 Gregor Lingl +License: This software is provided 'as-is', without any express or implied + warranty. In no event will the authors be held liable for any damages + arising from the use of this software. + + Permission is granted to anyone to use this software for any purpose, + including commercial applications, and to alter it and redistribute it + freely, subject to the following restrictions: + + 1. The origin of this software must not be misrepresented; you must not + claim that you wrote the original software. If you use this software + in a product, an acknowledgment in the product documentation would be + appreciated but is not required. + 2. Altered source versions must be plainly marked as such, and must not be + misrepresented as being the original software. + 3. This notice may not be removed or altered from any source distribution. + + is copyright Gregor Lingl and licensed under a BSD-like license + +Files: Modules/_ctypes/libffi/* +Copyright: Copyright (C) 1996-2011 Red Hat, Inc and others. + Copyright (C) 1996-2011 Anthony Green + Copyright (C) 1996-2010 Free Software Foundation, Inc + Copyright (c) 2003, 2004, 2006, 2007, 2008 Kaz Kojima + Copyright (c) 2010, 2011, Plausible Labs Cooperative , Inc. + Copyright (c) 2010 CodeSourcery + Copyright (c) 1998 Andreas Schwab + Copyright (c) 2000 Hewlett Packard Company + Copyright (c) 2009 Bradley Smith + Copyright (c) 2008 David Daney + Copyright (c) 2004 Simon Posnjak + Copyright (c) 2005 Axis Communications AB + Copyright (c) 1998 Cygnus Solutions + Copyright (c) 2004 Renesas Technology + Copyright (c) 2002, 2007 Bo Thorsen + Copyright (c) 2002 Ranjit Mathew + Copyright (c) 2002 Roger Sayle + Copyright (c) 2000, 2007 Software AG + Copyright (c) 2003 Jakub Jelinek + Copyright (c) 2000, 2001 John Hornkvist + Copyright (c) 1998 Geoffrey Keating + Copyright (c) 2008 Björn König + +License: Permission is hereby granted, free of charge, to any person obtaining + a copy of this software and associated documentation files (the + ``Software''), to deal in the Software without restriction, including + without limitation the rights to use, copy, modify, merge, publish, + distribute, sublicense, and/or sell copies of the Software, and to + permit persons to whom the Software is furnished to do so, subject to + the following conditions: + + The above copyright notice and this permission notice shall be included + in all copies or substantial portions of the Software. + + THE SOFTWARE IS PROVIDED ``AS IS'', WITHOUT WARRANTY OF ANY KIND, + EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF + MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND + NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT + HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, + WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, + OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER + DEALINGS IN THE SOFTWARE. + + Documentation: + Permission is granted to copy, distribute and/or modify this document + under the terms of the GNU General Public License as published by the + Free Software Foundation; either version 2, or (at your option) any + later version. A copy of the license is included in the + section entitled ``GNU General Public License''. + +Files: Modules/_gestalt.c +Copyright: 1991-1997 by Stichting Mathematisch Centrum, Amsterdam. +License: Permission to use, copy, modify, and distribute this software and its + documentation for any purpose and without fee is hereby granted, + provided that the above copyright notice appear in all copies and that + both that copyright notice and this permission notice appear in + supporting documentation, and that the names of Stichting Mathematisch + Centrum or CWI not be used in advertising or publicity pertaining to + distribution of the software without specific, written prior permission. + + STICHTING MATHEMATISCH CENTRUM DISCLAIMS ALL WARRANTIES WITH REGARD TO + THIS SOFTWARE, INCLUDING ALL IMPLIED WARRANTIES OF MERCHANTABILITY AND + FITNESS, IN NO EVENT SHALL STICHTING MATHEMATISCH CENTRUM BE LIABLE + FOR ANY SPECIAL, INDIRECT OR CONSEQUENTIAL DAMAGES OR ANY DAMAGES + WHATSOEVER RESULTING FROM LOSS OF USE, DATA OR PROFITS, WHETHER IN AN + ACTION OF CONTRACT, NEGLIGENCE OR OTHER TORTIOUS ACTION, ARISING OUT + OF OR IN CONNECTION WITH THE USE OR PERFORMANCE OF THIS SOFTWARE. + +Files: Modules/syslogmodule.c +Copyright: 1994 by Lance Ellinghouse +License: Permission to use, copy, modify, and distribute this software and its + documentation for any purpose and without fee is hereby granted, + provided that the above copyright notice appear in all copies and that + both that copyright notice and this permission notice appear in + supporting documentation, and that the name of Lance Ellinghouse + not be used in advertising or publicity pertaining to distribution + of the software without specific, written prior permission. + + LANCE ELLINGHOUSE DISCLAIMS ALL WARRANTIES WITH REGARD TO + THIS SOFTWARE, INCLUDING ALL IMPLIED WARRANTIES OF MERCHANTABILITY AND + FITNESS, IN NO EVENT SHALL LANCE ELLINGHOUSE BE LIABLE FOR ANY SPECIAL, + INDIRECT OR CONSEQUENTIAL DAMAGES OR ANY DAMAGES WHATSOEVER RESULTING + FROM LOSS OF USE, DATA OR PROFITS, WHETHER IN AN ACTION OF CONTRACT, + NEGLIGENCE OR OTHER TORTIOUS ACTION, ARISING OUT OF OR IN CONNECTION + WITH THE USE OR PERFORMANCE OF THIS SOFTWARE. + +Files: Modules/zlib/* +Copyright: (C) 1995-2010 Jean-loup Gailly and Mark Adler +License: This software is provided 'as-is', without any express or implied + warranty. In no event will the authors be held liable for any damages + arising from the use of this software. + + Permission is granted to anyone to use this software for any purpose, + including commercial applications, and to alter it and redistribute it + freely, subject to the following restrictions: + + 1. The origin of this software must not be misrepresented; you must not + claim that you wrote the original software. If you use this software + in a product, an acknowledgment in the product documentation would be + appreciated but is not required. + 2. Altered source versions must be plainly marked as such, and must not be + misrepresented as being the original software. + 3. This notice may not be removed or altered from any source distribution. + + Jean-loup Gailly Mark Adler + jloup@gzip.org madler@alumni.caltech.edu + + If you use the zlib library in a product, we would appreciate *not* receiving + lengthy legal documents to sign. The sources are provided for free but without + warranty of any kind. The library has been entirely written by Jean-loup + Gailly and Mark Adler; it does not include third-party code. + +Files: Modules/expat/* +Copyright: Copyright (c) 1998, 1999, 2000 Thai Open Source Software Center Ltd + and Clark Cooper + Copyright (c) 2001, 2002, 2003, 2004, 2005, 2006 Expat maintainers +License: Permission is hereby granted, free of charge, to any person obtaining + a copy of this software and associated documentation files (the + "Software"), to deal in the Software without restriction, including + without limitation the rights to use, copy, modify, merge, publish, + distribute, sublicense, and/or sell copies of the Software, and to + permit persons to whom the Software is furnished to do so, subject to + the following conditions: + + The above copyright notice and this permission notice shall be included + in all copies or substantial portions of the Software. + + THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, + EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF + MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. + IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY + CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, + TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE + SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. + +Files: Modules/_decimal/libmpdec/* +Copyright: Copyright (c) 2008-2012 Stefan Krah. All rights reserved. +License: Redistribution and use in source and binary forms, with or without + modification, are permitted provided that the following conditions + are met: + . + 1. Redistributions of source code must retain the above copyright + notice, this list of conditions and the following disclaimer. + . + 2. Redistributions in binary form must reproduce the above copyright + notice, this list of conditions and the following disclaimer in the + documentation and/or other materials provided with the distribution. + , + THIS SOFTWARE IS PROVIDED BY THE AUTHOR AND CONTRIBUTORS "AS IS" AND + ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE + IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE + ARE DISCLAIMED. IN NO EVENT SHALL THE AUTHOR OR CONTRIBUTORS BE LIABLE + FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL + DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS + OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) + HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT + LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY + OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF + SUCH DAMAGE. + +Files: Misc/python-mode.el +Copyright: Copyright (C) 1992,1993,1994 Tim Peters +License: This software is provided as-is, without express or implied + warranty. Permission to use, copy, modify, distribute or sell this + software, without fee, for any purpose and by any individual or + organization, is hereby granted, provided that the above copyright + notice and this paragraph appear in all copies. + +Files: Python/dtoa.c +Copyright: (c) 1991, 2000, 2001 by Lucent Technologies. +License: Permission to use, copy, modify, and distribute this software for any + purpose without fee is hereby granted, provided that this entire notice + is included in all copies of any software which is or includes a copy + or modification of this software and in all copies of the supporting + documentation for such software. + + THIS SOFTWARE IS BEING PROVIDED "AS IS", WITHOUT ANY EXPRESS OR IMPLIED + WARRANTY. IN PARTICULAR, NEITHER THE AUTHOR NOR LUCENT MAKES ANY + REPRESENTATION OR WARRANTY OF ANY KIND CONCERNING THE MERCHANTABILITY + OF THIS SOFTWARE OR ITS FITNESS FOR ANY PARTICULAR PURPOSE. + +Files: Python/getopt.c +Copyright: 1992-1994, David Gottner +License: Permission to use, copy, modify, and distribute this software and its + documentation for any purpose and without fee is hereby granted, + provided that the above copyright notice, this permission notice and + the following disclaimer notice appear unmodified in all copies. + + I DISCLAIM ALL WARRANTIES WITH REGARD TO THIS SOFTWARE, INCLUDING ALL + IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS. IN NO EVENT SHALL I + BE LIABLE FOR ANY SPECIAL, INDIRECT, OR CONSEQUENTIAL DAMAGES OR ANY + DAMAGES WHATSOEVER RESULTING FROM LOSS OF USE, DATA, OR PROFITS, WHETHER + IN AN ACTION OF CONTRACT, NEGLIGENCE OR OTHER TORTIOUS ACTION, ARISING OUT + OF OR IN CONNECTION WITH THE USE OR PERFORMANCE OF THIS SOFTWARE. + +Files: PC/_subprocess.c +Copyright: Copyright (c) 2004 by Fredrik Lundh + Copyright (c) 2004 by Secret Labs AB, http://www.pythonware.com + Copyright (c) 2004 by Peter Astrand +License: + * Permission to use, copy, modify, and distribute this software and + * its associated documentation for any purpose and without fee is + * hereby granted, provided that the above copyright notice appears in + * all copies, and that both that copyright notice and this permission + * notice appear in supporting documentation, and that the name of the + * authors not be used in advertising or publicity pertaining to + * distribution of the software without specific, written prior + * permission. + * + * THE AUTHORS DISCLAIMS ALL WARRANTIES WITH REGARD TO THIS SOFTWARE, + * INCLUDING ALL IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS. + * IN NO EVENT SHALL THE AUTHORS BE LIABLE FOR ANY SPECIAL, INDIRECT OR + * CONSEQUENTIAL DAMAGES OR ANY DAMAGES WHATSOEVER RESULTING FROM LOSS + * OF USE, DATA OR PROFITS, WHETHER IN AN ACTION OF CONTRACT, + * NEGLIGENCE OR OTHER TORTIOUS ACTION, ARISING OUT OF OR IN CONNECTION + * WITH THE USE OR PERFORMANCE OF THIS SOFTWARE. + +Files: PC/winsound.c +Copyright: Copyright (c) 1999 Toby Dickenson +License: * Permission to use this software in any way is granted without + * fee, provided that the copyright notice above appears in all + * copies. This software is provided "as is" without any warranty. + */ + +/* Modified by Guido van Rossum */ +/* Beep added by Mark Hammond */ +/* Win9X Beep and platform identification added by Uncle Timmy */ + +Files: Tools/pybench/* +Copyright: (c), 1997-2006, Marc-Andre Lemburg (mal@lemburg.com) + (c), 2000-2006, eGenix.com Software GmbH (info@egenix.com) +License: Permission to use, copy, modify, and distribute this software and its + documentation for any purpose and without fee or royalty is hereby + granted, provided that the above copyright notice appear in all copies + and that both that copyright notice and this permission notice appear + in supporting documentation or portions thereof, including + modifications, that you make. + + THE AUTHOR MARC-ANDRE LEMBURG DISCLAIMS ALL WARRANTIES WITH REGARD TO + THIS SOFTWARE, INCLUDING ALL IMPLIED WARRANTIES OF MERCHANTABILITY AND + FITNESS, IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR ANY SPECIAL, + INDIRECT OR CONSEQUENTIAL DAMAGES OR ANY DAMAGES WHATSOEVER RESULTING + FROM LOSS OF USE, DATA OR PROFITS, WHETHER IN AN ACTION OF CONTRACT, + NEGLIGENCE OR OTHER TORTIOUS ACTION, ARISING OUT OF OR IN CONNECTION + WITH THE USE OR PERFORMANCE OF THIS SOFTWARE ! + + --- LICENSE FOR libgl --- +https://changelogs.ubuntu.com/changelogs/pool/main/libg/libglvnd/libglvnd_1.3.2-1~ubuntu0.20.04.2/copyright + +Format: http://www.debian.org/doc/packaging-manuals/copyright-format/1.0/ +Upstream-Name: libglvnd +Source: https://gitlab.freedesktop.org/glvnd/libglvnd + +Files: * +Copyright: 2013-2017 NVIDIA Corporation + 2007-2013 VMware, Inc + 2010 Intel Corporation + 2010 Francisco Jerez + 2007-2012 The Khronos Group Inc + 1999-2006 Brian Paul + 2010 LunarG Inc + 2009 Dave Gamble +License: MIT + +Files: include/GLES/egl.h + include/GLES/glplatform.h + include/GLES2/gl2platform.h + include/GLES3/gl3platform.h + src/generate/xml/gl.xml + src/generate/xml/glx.xml +Copyright: 2008-2018 The Khronos Group Inc. +License: Apache-2.0 + +Files: m4/ax_check_enable_debug.m4 +Copyright: 2011 Rhys Ulerich + 2014-2015 Philip Withnall +License: public-domain + Public Domain. + +Files: m4/ax_check_link_flag.m4 +Copyright: 2008 Guido U. Draheim + 2011 Maarten Bosmans +License: GPL-3+ + +Files: m4/ax_pthread.m4 +Copyright: 2008 Steven G. Johnson + 2011 Daniel Richard G. +License: GPL-3+ + +Files: src/util/uthash/* +Copyright: 2005-2013 Troy D. Hanson +License: BSD-1-clause + +Files: src/util/uthash/doc/userguide.html +Copyright: 2006 Troy D. Hanson + 2006-2009 Stuart Rackham +License: GPL + +Files: debian/* +Copyright: 2013 Timo Aaltonen +License: MIT + +License: Apache-2.0 + Licensed under the Apache License, Version 2.0 (the "License"); + you may not use this file except in compliance with the License. + You may obtain a copy of the License at + . + http://www.apache.org/licenses/LICENSE-2.0 + . + Unless required by applicable law or agreed to in writing, software + distributed under the License is distributed on an "AS IS" BASIS, + WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + See the License for the specific language governing permissions and + limitations under the License. + +License: MIT + Permission is hereby granted, free of charge, to any person obtaining a + copy of this software and associated documentation files (the + "Software"), to deal in the Software without restriction, including + without limitation the rights to use, copy, modify, merge, publish, + distribute, sub license, and/or sell copies of the Software, and to + permit persons to whom the Software is furnished to do so, subject to + the following conditions: + . + The above copyright notice and this permission notice (including the + next paragraph) shall be included in all copies or substantial portions + of the Software. + . + THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS + OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF + MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NON-INFRINGEMENT. + IN NO EVENT SHALL TUNGSTEN GRAPHICS AND/OR ITS SUPPLIERS BE LIABLE FOR + ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, + TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE + SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. + +License: BSD-1-clause + Redistribution and use in source and binary forms, with or without + modification, are permitted provided that the following conditions are met: + . + * Redistributions of source code must retain the above copyright + notice, this list of conditions and the following disclaimer. + . + THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS + IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED + TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A + PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER + OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, + EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, + PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR + PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF + LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING + NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS + SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. + +License: GPL + On Debian machines the full text of the GNU General Public License + can be found in the file /usr/share/common-licenses/GPL. + +License: GPL-3+ + On Debian machines the full text of the GNU General Public License + version 3 can be found in the file /usr/share/common-licenses/GPL-3. + + --- LICENSE FOR glib --- +https://changelogs.ubuntu.com/changelogs/pool/main/g/glib2.0/glib2.0_2.64.6-1~ubuntu20.04.6/copyright + +This package was debianized by Akira TAGOH on +Thu, 7 Mar 2002 01:05:25 +0900. + +It was downloaded from . + +Original Authors +---------------- +Peter Mattis +Spencer Kimball +Josh MacDonald + +Please do not mail the original authors asking questions about this +version of GLib. + +GLib Team +--------- +Shawn T. Amundson +Jeff Garzik +Raja R Harinath +Tim Janik +Elliot Lee +Tor Lillqvist +Paolo Molaro +Havoc Pennington +Manish Singh +Owen Taylor +Sebastian Wilhelmi + +The random number generator "Mersenne Twister", which is used by GLib, +was developed and originally coded by: +Makoto Matsumoto +Takuji Nishimura + +Major copyright holders: + + Copyright © 1995-2018 Red Hat, Inc. + Copyright © 2008-2010 Novell, Inc. + Copyright © 2008-2010 Codethink Limited. + Copyright © 2008-2018 Collabora, Ltd. + Copyright © 2018 Endless Mobile, Inc. + Copyright © 2018 Emmanuele Bassi + +License: + + This package is free software; you can redistribute it and/or + modify it under the terms of the GNU Lesser General Public + License as published by the Free Software Foundation; either + version 2 of the License, or (at your option) any later version. + + This package 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 + Lesser General Public License for more details. + + You should have received a copy of the GNU Lesser General Public + License along with this package; if not, write to the Free Software + Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA + +On Debian systems, the complete text of the GNU Lesser General +Public License can be found in `/usr/share/common-licenses/LGPL'. + +Files: + gobject/tests/taptestrunner.py +Copyright: + 2015 Remko Tronçon +License: Expat + +Files: + tests/gen-casefold-txt.py + tests/gen-casemap-txt.py +Copyright: + 1998-1999 Tom Tromey + 2001 Red Hat Software +License: GPL-2+ + +License: Expat + Permission is hereby granted, free of charge, to any person obtaining a copy + of this software and associated documentation files (the "Software"), to deal + in the Software without restriction, including without limitation the rights + to use, copy, modify, merge, publish, distribute, sublicense, and/or sell + copies of the Software, and to permit persons to whom the Software is + furnished to do so, subject to the following conditions: + . + The above copyright notice and this permission notice shall be included in + all copies or substantial portions of the Software. + . + THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR + IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, + FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE + AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER + LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, + OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE + SOFTWARE. + +License: GPL-2+ + This program is free software; you can redistribute it and/or modify + it under the terms of the GNU General Public License as published by + the Free Software Foundation; either version 2, 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 General Public License for more details. + . + You should have received a copy of the GNU General Public License + along with this program; if not, see . \ No newline at end of file diff --git a/LICENSE b/LICENSE.md similarity index 99% rename from LICENSE rename to LICENSE.md index 261eeb9..f49a4e1 100644 --- a/LICENSE +++ b/LICENSE.md @@ -198,4 +198,4 @@ distributed under the License is distributed on an "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. See the License for the specific language governing permissions and - limitations under the License. + limitations under the License. \ No newline at end of file diff --git a/README.md b/README.md index bb35251..3713e60 100644 --- a/README.md +++ b/README.md @@ -1 +1,103 @@ -# ai-virtual-assistant \ No newline at end of file +# NIM Agent Blueprint: AI Virtual Assistant for Customer Service + +## Overview +With the rise of generative AI, companies are eager to enhance their customer service operations by integrating knowledge bases that are close to sensitive customer data. Traditional solutions often fall short in delivering context-aware, secure, and real-time responses to complex customer queries. This leads to longer resolution times, limited customer satisfaction, and potential data exposure risks. A centralized knowledge base that integrates seamlessly with internal applications and call center tools is vital to improving customer experience while ensuring data governance. +The AI virtual assistant for customer service NIM Agent Blueprint, powered by NVIDIA NeMo Retriever™ and NVIDIA NIM™ microservices, along with retrieval-augmented generation (RAG), offers a streamlined solution for enhancing customer support. It enables context-aware, multi-turn conversations, providing general and personalized Q&A responses based on structured and unstructured data, such as order history and product details. + +## Architecture + +![Key Generated window.](./docs/imgs/IVA-blueprint-diagram-r5.png) + +## Software Components +The RAG-based AI virtual assistant provides a reference to build an enterprise-ready generative AI solution with minimal effort. It contains the following software components: + +* NVIDIA NIM microservices + * Response Generation (Inference) + * LLM NIM - llama-3.1-70B-instruct + * NeMo Retriever embedding NIM - NV-Embed-QA-v5 + * NeMo Retriever reranking NIM - Rerank-Mistral-4b-v3 + * [Synthetic Data Generation](./notebooks/synthetic_data_generation.ipynb) for customization + * Nemotron4-340B +* Orchestrator Agent - Langgraph based +* Text Retrievers - LangChain +* Structured Data (CSV) Ingestion - Postgres Database +* Unstructured Data (PDF) Ingestion - Milvus Database (Vector GPU-optimized) + + +Docker Compose scripts are provided which spin up the microservices on a single node. When ready for a larger-scale deployment, you can use the included Helm charts to spin up the necessary microservices. You will use sample Jupyter notebooks with the JupyterLab service to interact with the code directly. + +The Blueprint contains sample use-case data pertaining to retail product catalog and customer data with purchase history but Developers can build upon this blueprint, by customizing the RAG application to their specific use case. A sample customer service agent user interface and API-based analytic server for conversation summary and sentiment are also included. + +## Key Functionalities +* Personalized Responses: Handles structured and unstructured customer queries (e.g., order details, spending history). +* Multi-Turn Dialogue: Offers context-aware, seamless interactions across multiple questions. +* Custom Conversation Style: Adapts text responses to reflect corporate branding and tone. +* Sentiment Analysis: Analyzes real-time customer interactions to gauge sentiment and adjust responses. +* Multi-Session Support: Allows for multiple user sessions with conversation history and summaries. +* Data Privacy: Integrates with on-premises or cloud-hosted knowledge bases to protect sensitive data. + +By integrating NVIDIA NIM and RAG, the system empowers developers to build customer support solutions that can provide faster and more accurate support while maintaining data privacy. + +## Target Audience +* Developers +* Data scientists +* Customer support teams + +## Get Started + +To get started with deployment follow + +* [Prerequisites](#basic-prerequisites) +* Deployment + * [Docker compose](./deploy/compose/README.md) + + +## Basic Prerequisites + +This section lists down the bare mininum requirements to deploy this blueprint. Follow the required [deployment guide](./deploy/) based on your requirement to understand deployment method specific prerequisites. + +#### Hardware requirements + +##### Option 1: Deploy with NVIDIA hosted endpoints +By default, the blueprint uses the NVIDIA API Catalog hosted endpoints for LLM, embedding and reranking models. Therefore all that is required is an instance with at least 8 cores and 64GB memory. + + +##### Option-2: Deploy with NIMs hosted locally +Once you familiarize yourself with the blueprint, you may want to further customize based upon your own use case which requires you to host your own LLM, embedding and reranking models. In this case you will need access to a GPU accelerated A instance with 8 cores, 64GB memory and 8XA100 or 8XH100. + +#### System requirements +Ubuntu 20.04 or 22.04 based machine, with sudo privileges + +#### Software requirements +* **NVIDIA AI Enterprise or Developer License**: NVIDIA NIM for LLMs are available for self-hosting under the NVIDIA AI Enterprise (NVAIE) License. [Sign up](https://build.nvidia.com/meta/llama-3-8b-instruct?snippet_tab=Docker&signin=true&integrate_nim=true&self_hosted_api=true) for NVAIE license. +* An **NGC API key** is required to access NGC resources. To obtain a key, navigate to Blueprint experience on NVIDIA API Catalog. Login / Sign up if needed and "Generate your API Key". + +## Sample Data +The blueprint comes with [synthetic sample data](./data/) representing a typical customer service function, including customer profiles, order histories (structured data), and technical product manuals (unstructured data). A notebook is provided to guide users on how to ingest both structured and unstructured data efficiently. +Structured Data: Includes customer profiles and order history +Unstructured Data: Ingests product manuals, product catalogs, and FAQ + +## AI Agent +This reference solution implements [different sub-agents using the open-source LangGraph framework and a supervisor agent to orchestrate the entire flow.](./src/agent/) These sub-agents address common customer service tasks for the included sample dataset. They rely on the Llama 3.1 models and NVIDIA NIM microservices for generating responses, converting natural language into SQL queries, and assessing the sentiment of the conversation. + +## Key Components +* [**Structured Data Retriever**](./src/retrievers/structured_data/): Works in tandem with a Postgres database and PandasAI to fetch relevant data based on user queries. +* [**Unstructured Data Retriever**](./src/retrievers/unstructured_data/): Processes unstructured data (e.g., PDFs, FAQs) by chunking it, creating embeddings using the NeMo Retriever embedding NIM, and storing it in Milvus for fast retrieval. +* [**Analytics and Admin Operations**](./src/analytics/): To support operational requirements, the blueprint includes reference code and APIs for managing key administrative tasks + * Storing conversation histories + * Generating conversation summaries + * Conducting sentiment analysis on customer interactions +These features ensure that customer service teams can efficiently monitor and evaluate interactions for quality and performance. + +## Data Flywheel +The blueprint comes with [pre-built APIs](./docs/api_references/analytics_server.json) that support continuous model improvement. The feedback loop, or “data flywheel,” allows LLM models to be fine-tuned over time to enhance both accuracy and cost-effectiveness. Feedback is collected at multiple points in the process to refine the models’ performance further. + +## Known issues +- The Blueprint responses can have significant latency when using [NVIDIA API Catalog cloud hosted models.](#option-1-deploy-with-nvidia-hosted-endpoints) + +## Inviting the community to contribute +We're posting these examples on GitHub to support the NVIDIA LLM community and facilitate feedback. We invite contributions! Open a GitHub issue or pull request! See contributing [guidelines here.](./CONTRIBUTING.md) + +## License +This NVIDIA NIM-AGENT BLUEPRINT is licensed under the [Apache License, Version 2.0.](./LICENSE.md) +Use of the sample data provided as part of this blueprint is governed by [the NVIDIA asset license.](./data/LICENSE) diff --git a/SECURITY.md b/SECURITY.md new file mode 100644 index 0000000..3518096 --- /dev/null +++ b/SECURITY.md @@ -0,0 +1,24 @@ + ## Security + +NVIDIA is dedicated to the security and trust of our software products and services, including all source code repositories managed through our organization. + +If you need to report a security issue, please use the appropriate contact points outlined below. **Please do not report security vulnerabilities through GitHub.** + +## Reporting Potential Security Vulnerability in an NVIDIA Product + +To report a potential security vulnerability in any NVIDIA product: +- Web: [Security Vulnerability Submission Form](https://www.nvidia.com/object/submit-security-vulnerability.html) +- E-Mail: psirt@nvidia.com + - We encourage you to use the following PGP key for secure email communication: [NVIDIA public PGP Key for communication](https://www.nvidia.com/en-us/security/pgp-key) + - Please include the following information: + - Product/Driver name and version/branch that contains the vulnerability + - Type of vulnerability (code execution, denial of service, buffer overflow, etc.) + - Instructions to reproduce the vulnerability + - Proof-of-concept or exploit code + - Potential impact of the vulnerability, including how an attacker could exploit the vulnerability + +While NVIDIA currently does not have a bug bounty program, we do offer acknowledgement when an externally reported security issue is addressed under our coordinated vulnerability disclosure policy. Please visit our [Product Security Incident Response Team (PSIRT)](https://www.nvidia.com/en-us/security/psirt-policies/) policies page for more information. + +## NVIDIA Product Security + +For all security-related concerns, please visit NVIDIA's Product Security portal at https://www.nvidia.com/en-us/security \ No newline at end of file diff --git a/data/FAQ.pdf b/data/FAQ.pdf new file mode 100644 index 0000000000000000000000000000000000000000..4e5048b5ff29c6647bfebe66ef070d5831c63f95 GIT binary patch literal 192435 zcmce8bzIcj_BIGemx_QABhooVcY}n0G>FvD&CnpJQc?m6N+TuRAq|3bN{3Pc64K2( z40x{h_nv#tJ@=3MK?j)G-}UUZ*4}IHXRW=VQ<9Kk1F>`C(Cy8i%;10kK!B~G1&)9K z4u`6n9Sp!BZU8s1vNgrwP%l0aU=9FA19OK*Rt9hwz}&`&9iRZSvNCtJbua*c*}2(4Pwqan+s3}CnGa+O9OUGGXn<~0|yaP zYXfsDb|YJBgcJ!|BPVN^4O~_Nz{n$kFaZ}>N|KEeDgkB#0)b#e3kR5!ot3SDF@RCp z)s@@U(plRa0#TLcfxsOl<+Uvzve>Gc8=FGmZfS2O@a-R0GJRCquv_FCNHT$~cpu5b$om|N1#OxuygNzp}6kO}7>X1{RD zKl=^oE*uUyb7Mz<4(ElJ09?pdZsaQu@|73)3Ibk!yKue=0EBe$V}wU+oowI$p5IU| zoc#+$9%f?-Hv{l;1AmQ_Ut|&K#V^ao2!8xn~Av<9DxCVIT{Jlh^xp;T?lpM zbG5d!Mhsg3q7OEXe6E5t$S3#^KVQ7fK?6WGfm;gFXeuZH;I_6_mgaE85aneDv4J40 z022oTYnY3zgCzjO&P5}HBj8|c!lxo3btTYTQ;^0C4!7gu;IMIIN6Nk!Y#ipA90)}( z#3OML5B<^3#l?l)1;TFYV9EjF<>lo7f;qroHbe_HM>iX|fh(JhX?e;0(XrL`R& zVjh~CxLr&|p^K@?1_H8yxK)8rK29D!#C#Rt_&<$skWV3JIqWZ<`mGU;0LKONZ+-sP zS{T?VDExaptgZi#O#lcD6%_dX5e)=soSe*!`Akf>p+Ey(2%8a<3!xXt#NZ+<0NJ3% zJe&rGTwDe)1MYugP-DcnyBZ31P7YQ`2OAr4z^q^wF~<>MQxKvf#zuT5whq$th!h8ShI3WQ=&uFKuUKE_C?=@;Q!w$odn@BHuy`X@rqE{+KYoO-MwL7i4fjOgH?Ccz-#qe?|U_ z81pMQTrM3KA?RYMFg7<3vvmdNT!a}eM0nxm1tY?Xl7R!l7{3-26_}%~lYavIHYV5B0v|54q{P~bcIVlf?up3 zAY{P12t6F4Ha50!LOD&<7T0)Up0-%?+f+98hU0Enn$v;)@ zqV4}qIi!`Zl;gbA^!FjddFe^cOC33pI{vN)=he9T6DM70_&?Kw^Kw*OI*Ai$b)=KT z5t9Qsx;T+8_)~*lnBafc(JRLzXD#QY^?x@w*X0c2y0kkN((b<-oD1oKKh*=dhxwl= z!gb|&q#|6G=D$$n4~uhMdg0IJFX%$M|6Nb7Tz}cqOZ)$m$&p?Fa9>)U`_l5<|DWZ# z|BdA@8voDq;r`w7+*bqtAAz6yAEWvIto1Kg23i=8UId1^mH1i!+&8qj~x+W#|HkQ>IogLmaU#5Y9D06}@! z5$aulU%_34xPJ+E(Vf2ocj-Rp1r|5-Vt{fYk+0CMV(7m_yXeh-fyT|lj@SZ&coEze z3P50Apte=%xRKKViiEzxyNn?J$VmKO*Zs|a0=lv#Cy*TxRKP&w z2!&ptU*Y{lTtO0tzoXyfP=P`aa{xhlpcg|EiUhyH`-{MWWGMdy9vE^FSU`yQf|!9w z^h>-;j`MG(-ro%^SNZ{YFG33xcrnwVNboDXzX&bJ{``IYAiSK&(838u0$!kB;r&Hu zL6W=w0*?ogGD5IY?u!Y334Vq57oi2oBL53KE+i6&^CF@_F2Jwg{vxy>+3J4*hj1KX z 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℘)2Lp#xzeVHr0OZbEN%-r~7+@78X(W%%m|&WOZ_ z?MREr*HK(iccb=hU%lOVhyPA`G*YxfbbpL^Ol~Z0tat3kIMuj{c~Np4BwcUA6I-J`n~eQ!J2I=L@JD&=u1Me428wKU7Lx9Jk;#Tn-^A~H7bL+`(T zApf8ulOZ!P3n|MzYwDry!xxVPALV6}Wk+Q1G(c_2`P>EZ~*HW|6{xapVmM4Nwil5RyO)bYS53c}McvUP`T33!& z8C3ODD^<7Dh}4wVve)L+ov%x&C#=8IfYuP)u-E9_xYFd*^sU*d`D2S|%ZFC|)^}|h zZJp1QpS^r8_q_Fm_f4gZ^pcE0xV4!(}^PX5k{E`hG9ZlUg) zo{K#VZ^hp>_saA>f2a8FP2Z)yo_?MF_XEZQj5r)Vf-{mh zN->%_#ys|ToPWH2LS~|UQfuJ^wRE+1p*G?MoD}i{z8&~DIrsm$0qZPY zz}yM;`{*0ULxbfD!OWn5e*qxP&oA avc)uq%Lt2kr2C|2H3S!v*94H?IfJk8l9r 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

YPEFC z>Fl>gUuYN^?Q@1j=uP>|h0=vnx^u%KHY);26<%m;_V!;=;!6ne=lazy?91Vo(b_4| z-tJ0?cM+Avy4!YF+0jqQ$I|=@L2Hqw&I*V5o85Ex#1-RbZn@iYRTAU3zuq1gZ=gzO zu=unk)Vt>PYFU>D_0h%w-b1_ZPAcNiu4WmxHjH1dIMJ9?qsG&}Vo>e4>`vaO+`Qhj zd}h0_W#hGS6L%|C=)u)GDa%*%b5s{^@?W5ua@mH=5}B!mtz8H^aq2NB@TRz2L4!FJP+3%H}G1c_O(6~A7HK9H77%+4u_4D8X?&bxUZPDr zaW{uQBKtoHF8_`V+%*)h;Wo)zgf_vQokz!9+r>E(1N%A-3n27|9fI$13-CRoIMQ+> z+D;I{rKb3Y*<&P~-X;Zu(CTZGRH0sr)iCdUuvfgH)Y*W-aELC+HM(w68HtN=k z*L7}%Ssb?Z=KIu>O{ZV}AxAP`ZDEV`zIQdW|5o(Ucc8Irfyq5=-jk{_M8io|t6s($ zvagT00ZW=CGk}#18FHuNH9(j1NY04L2+ahNM$@Dk!&5bWv`7c+ZIct0>WL3X!V64E3B0x!uWwVFW zp^t=+C>yFc3)o6`2}V_nG%H5MFoJ+fY>mWf{i8Ic5a(}0Z_y^ipe_Xb8tjSv8s}@f z7T4uxMFps(lNtMAiJkKW!>J@WbCoi_9vxb?+{sw4NL4r9sdC(I2L3pq zz=871ADnX5Hmqs{*K^~sHdFu~Mz*0dp+!f{`o6i{xRdnX8dt}uzk^^K8%O^p@eZx? zYBMUMu=0vu3#C3ik4NANZ=W#E3a|y13vrZ?cj>)%q&SpO#hn_lbU$01pHym)Q0zC4 zlUf+yQnJ7*LH5@gx3_}=tDq_skpQb;7)H#TDg555k)IZW_M@m=|M|-Q`?@f9!c!CP zmqGz!3TPhSxBm4(vW~t}c}@JPlvcK~tVc2s(pRQS-*$Z{0{*ygJnfEc5_z2m7i4#9 zghuV711nHxt=Mo!PUZe!j6ScU_f}Jmz3tIyhwSC`41bXD)n7@jMXy>Bm2YbMt}8oN zHs-efc2)k%O0UOrAp&|K`fK@hjOM9TwPxKuFL;ZE-8DyQgxaLaF~?-F!@S5+>)5}g zqT1?df7r_OPMO}7b($LP((>HrV)=R|L&~@|V>IW4-B{d*c5l_)g*MqJ{4aNhiqm*M z*q9)<4z{p+-yL=}ln!+7aKPl{S#OZ+Z^u-zU_SOLampyd#es4FM6%T7ZRZ&;k$3@4 z{VO_*Dq)pc{XrdNZ9Gt~ZR&@NussT`CI~-O^yEsc%1uE;k%2|%fTlkfxUgO=bvl;z zQPi3BA||y~@;`V9Q0hi%!Wrd_-G;s>lKA*JraIu`5t)#j(G?`YT=yi zZED}l$cS}N;b%~CpHfFxs07mv#tur~jZ}k^yKSJKDD>jzTfsVmrmu9*O{(tm)xX~a zRx#Lx@g~a0U2U#<%G(MGPU{-W4OFhyo>e!2`933Ei{{Fwr2W1=x{iEue5}5U{0+Su zP)5BN5ByQ8AEKfkdyMVFiexb%d%NU-pmQvAAHV5yC}MCqqn)J5;t`YM&}phP$bmvo_7wQ& zoN8?)JyHSsiR_@bl_WTvRGCAC&7v@Rp`tytlu0FFsk3`3R)fQy&8_e)1XH8PN12;~ zm-t7E25F0UL8CN8ufW>l7};O{S;ar9a#m60)hJyX<*JlgwJwV9Lg6eH7hFsnv*PsY z3iorC#Z?4#iNUIunhU-cp+V4*(pjdgR03!GF*vhD7Gwm&4}Hz5CP76mDh8E|KF9`C zw_E~zJk18AD@2G#t3!<%Nwfg>4}C92JbCgCuMj6)X7k$GCv0=RIX)aRb2$RmlgIw1 zZMyOaOka+Jib|3c?LYNp=x-x-3Nrzbf{2iar|6>02aB^a021tBzbu0X%M$xVA4+tQ*TX;O1Y(eF)i2_d9#*(r1>KH^>@~GnXqi)_}~%=sUmy zrWIM*)>nLeZNZ%4-i5xgmt!Gj1qCwtZV=qud_zLO36uvlI$E>w)YujY7sn6A^6_y> ze{(!+vi>TNsp0)f7@h|Z&5l<9XJUb!;cQ|~p5~e2d9~TnK84wIKa83#|775Eni@Zo z4vCVN>@!E zxd$z&n<`t90x`;bk%o!XJG&UEMe3Xgym}72T2}xY7@^O&~HIYim zU*cP$ykhM1JfF`t{>*Q&OENA{;8s=+|BL-fLG|66sj;)C0 zY(Z8hGaFioL?*yY#L-Y!`|5^LD3&e{K}^yHQ|4l-5bwsC(BZl}Di|ynTc!oYsBkh} zC$ALZU{mWK0>sOgyBFr1$M<;7ZrcEXkQHy2UKx^$!T4%U7uq#R2!`8~>{ySkd?X3w zYPzVI89NoLGVnS~OlCnp%i=f8CQGvFgr&9?yD+25^Ye-XjP$6C{dN)!Bh_|7{NIxRE9pp>LdGj)$_7bJOwj9@U zrcxU_oQd)8EI|a291kz!mbiM%9xgmrEeAWtF;T0Fo+M8gPd7$b{;Iluf&i`-&OtGsN?tnQYN;Q zU%*1)x#1j*V}p9R`p>eHjY+Eu|EznRa@C@FTM1Q2NeLB>^#WSSm=W|6yyU%;M;VHL z&*qe4ILG{#)bGyif;kKL#Bwkac=F0jUMYgDe=;@9U6Q47pk%;wEKcYQk(B4&RwPr8 zF$+M6ePD%9D;p7igP_XDv8L;gKU}~hG(NdE(pNkYiNE=5M5B5n;4^)E>tofvWn{dD-W?Y3||AGV?o!@Qd9iH&Yn5(&&AL7 zP&o_)I%U;5C91Z%SXmYgBlbRrQ%{Ke%uB1c{`-+lGq86*`5*IXb?%18rTj5K>~eXy zbi3{A&G)0qQL(Dh)!};+R;y8ZeE@vsA!lS&e)B7Fx*6W-xZ-R`mPVa=Be`m6XKo}Q z{qK9!rY`(M!yJFAPl5nWj<$8z<^1||#|EN&=J&BxM+%_U&G@ghfupr_lZCyydBJaJ zNm`Jl7eb8?%Z;hpg{h>;7+(B*^+@#zddF&b>tt(ZUDPge(o3OK@bVm5At+5gu&D9~ za}%<8+=}&m$H7%&XUwPJQK@p#@`DSTz|AZ1#9(YLehigtHM*g6_KBPxn|c znpPJ_X{&l9@|#|BJru9b(LfVpLM?N*V$MkuYy(3y9XoO0Tp7;z1hMj6of?lV%YE0_ z0%~(yX&?t`vIq*D-OYqB#)%RkbmJYIV1g*Vyd@m0*j;3(vyt^RRo4%$ER7k|Qc9(HLnJVK!K$dXs~W1F8hU)0pyKkp#u zCoOWTb!x_mnF&%c;7D^LKVrBbRl-Y|mk{X~>|bI`-zS++#Q{Hn-HJ zA;fdJ$=w=J(=!u+M;HhYFxS@3WYm<+oE3D@_VwqTrN%0z;h+{^>DM;#q#1W0@B^5UVJ#Q z?qL5meu4Pp2=H@H&(eO`i+PKX&MWBOhX~cqW1XLQTi>r|5M!Ui+f3V7Vy2(b5W~aA zN4yP`)Gz(ETsRZ#~eVOzK9m|J;_Qe9tcttih#UVIMl&a0ApQvO_r?s6l zb!VqhA5F#xR^G8S3Bo(-6Y|3bhlH2WNS7-4 zPa$U&6$QZTag{E?Ra!#2OO{<4N$Eyf7Is0T8y4wCx*Mcn>29QZX^@icMtTLV-{U>^ zJLkU5ocW(KFEdZ`pI3s%Z+_pZ$=Zha#200_>1rZzgoq2 zlQ_f8CUTY%@jV|)9k3nw@L>mIb+i4eC@)Pq7-d0Z>!25<9|6=OztNdr?H95KSO8qc zOLAe{wn=t~p~js8P$c*mx)-ws#g3@X9wc-qWWS(EbgNM0b{iLHMqI%I<}xhL%9k?A zctTLuW#6z>T|!@oIpN|M<*!OY2=X>uTLCcE`a^(wI;yLg!Dhj?#ec`WCTA>(_$=hRz7Y}dBAQjuj& zLzNl#D@ghMkKr%Lu)I4}c(7QlRODPMAY`SdlyqpPQVl=l&VZCto#Lbk>{`a2E;Mo#W zYV0qZrhNgA5PGkzZ{w6GJ@p4Oj;u_FD-In)W%%&0IhaXGO6ql51f0odB`%UI;DMcab9KgNr57)Cb^l#C5W-HKITomJYy zi7tL&;@ksk7LrNM3rZ0ljZIyB7lgM%YRV)#o=JIZ_FO*d`bz2^V{pA~NhRuQmKI!5 zk@P66c>U^tJHcf`W6Gah-Jc3zG=}l4_pcpx{*EMfj~jKYZ>J>cayR;Fa~fnQ1X*9U z_A2cY**|YBbQ_>_K78P-Hnc5Q^e9`}#q zc`|dv@f3ZHne@bceXZKsFgI3I+Je_~kk(+R=;gGYcKo&8Ft;+p8h#i(Wd4I(huPV>aj9$C>Cr5Dh_8NfsJ&~8}NsT;E z{xuV{=m^KW1sZG}Y}Mk)-oex`aHX{ub|!xSRpX@@C+v*aZ?0*sXtsTRQQ?sItkT`J z@A7Doc5kfD7sR%GQMwDL7tXdflT0P0-V3w}b|% z3KXsssNpLRNZ-7NA8h(5oSMfgpJFR})PcGRP6T(Z7ZNIR$a+g&rehh@M2_J85z?(U z*5)DAR!TbiYE+-9w&gSP^*`HX=ATv>vt^d2mn07+DwKbI_d|xR zHd{UB>5t#MysPsyltEa(wo&m~ktJ+a_R#=KjDh1TJ@p0AYMRV9Tz_`O$4^}h8Q^y}k8^pxE>qktdFZRp)8H zq8;T9R41v+^8M;eohNRmu=|(O74WySpfE2*yg$GHxh2F^RE}G5HTP(`SZ>vDZ_YAn z&&r2G635w95z;RGD*WoAli+64B==_ccR1qMM+s@g7Q6%{|$;6mXxkmk>cq>AhK~Ns_j4q72 z8uiU%Jzs{+ir&DXd!HZ^jn36#$BDARU|OIy@-H{#Rft9QX8;|&_tiiWy0DN=+~T=W zyf*_lgcM8w)8r}}dc=CmQie>rQCDb-OGtJk5|q;vB1`6?Y7#$X*cjzS7l?R z@Whg*(YoKbhSAW=c)@8#cIhpzu}9wbyRPPQpmJoHkzihP-q&Mp#GWY4iLQgy6Ai8l zliUxUS?i5Dzh|1QnZ`?IRjmv^cpnn(M{XY6_v`dNi_26QW8hDrueqW>1lSe+l!enO z4b<*o)L>kY$L{V0r0sI3E<%NEP}Y4c?IF$CKMdc7sJHHNuYUx%K!(=}!ML6PwzA>P zhqielqVLrV5kH6qnnf`imo|5{Akpc{!|n_G;Z>d)xkAAEgD!o;;i+uh_MUyOFM#Rz4F<@JQq*uTa*H#KdAC-AnthV#uA%ZO%hyDppdA4Te~`_0SWsOoKP42z(! zE&f9m+T&=G%lJLw-&x(ij_PX#OZ+Ew-^eO^eSD*H%YQS?Ptt(UDoxVE$>>>ef9I~| zF?x1!OUc6e>W&^@Mcwu@;+){S-uk5#@ys(gT6~YjG*7=>>EWttwu{etVPmUZNUX@F z`Es&wnN2Z=Gqid55wu|_wv?wrYaQ8RL{U*u{VDN`X!DGSAX zrnfMtjYi+55D|UuaQ@1DNT#yd(q*GrIU}2CGPc@schHbuRDItde5)Ppk?64Oy6RG! z*8RKRZ4OGh%8@IDLpSywB9hEEPftpcEkT!ZgnG{Em;D&H=X5{`6de)s?dYys)r;OK zv5Z{WFKh@z3iJ{;qh%mEJTTo;akjChe@ z?m(s*TL>MAf;~%r2L((n)H#`OBkKw81K#Kmz1fT5H;>Lli2|D#VI)8S)9W!n@DXX0 zr-=~f`NM$6oE-j3Sko5dSPF}(tec|x(tT&VxExXDBJNfB?ZL@-L{LHGdN^5YWS)#JK7H{Ebm7sV?|cx`B1=W zH{Mgu4eqIID)G;M{FEn4zl|ezP>jZBNIDwS+Jo2gnWB@=OOKhCpI_hrc41Q7Q1Kf| zQV5IuFJ4Ai5z{iy@~=zijXEt3>}v}Ff6+J3JQNG*`~w})#37=g<;1m6tW zb>m*MHalr02$`DV=Sks7P@-e>)V^<(q!S>?lTo+e@Wdn_iX$>4LY{J)+_ygDIdq_n zbIaS$lqXWM7usjOzdMki zYomn%;d5_)&sgW8240?A?$<5r|7i#|DHt~p-ahPRK0VXUB-}W{Y}Gi_hb|hvRz@$q zAu(YZHM%h}WC zP8#0QEzwZq0N}Wyx~9mh1D)8xMv}?XlR_y0QC5;9{*|E)l%<2X0!ZpnZ(CM7a#w|~ z2@55-8}va5rG<(%qQoOM-`S9h(!~9N?UVcq9TQ@mrtMywjY9X(y^mTyUe7JYUlkq&X8*_R{ELae#j1qV1s>WZid;8CqGt(S9T5MvcnyIz=LntlcbD zSBzZU7H!-b>z1B-)L~dM7D_-d%Fxfxv2vLnWY8mR+=ISEJg192t0MbRz-0A0uU~&F z_O>Tb{Bcq(ltK-gg6Bu;?}Y{ZTgX-ssQCuj?na%8+RpGqHt%NrW2FkSN#FORcS|=( znll0BgIdbR7yg-Mh6H|eU?td&Vd1vMFm1`WGzDn!pWzrx=IMsp$cPo|hl3Ih zPgGzt6Xlc$h*@js&j<=uS_JC!Rb$VX>6OzRGq*E&ahoueEth`UT>Gu2SWUiA!c;Kl zyNcOH>^tFO3S25Cxt*g=NW1YSn|rn1ZB^I$9TI{LueN(dzmyDvNaXSoi3xC>Sw&m* zl4DHbSdckv!C+?Q64s){sdDFUSh^tf0{Y=l?T=&w%c2;-bh9jx6I>)Ym@G} z8mSGHb2>M@{Hu4GrZ%DZ;4Ef97*w9iW!QoD<5`Mddd8d*S3&tQF4Q zpF+BxEjFZ@a%4tPl%RhC$cbZnlQQ^|lAF5zgS6rB>3H3NHo{rM)3yTH2QfSQtu*ksSPvizbntpQ0akCEm%DFRJ`DWp>LHt3~kDY@|Ag7p{v=WA{)#Zov3J-bVS2{5( zhDIMcf?_#oL;j9JaOAV11Vjg%#tcc_;!+q2Z-?9qV8IzbxEzw*3+G$AT2~Y`Gz8** zcnvWbZ`dRNXavbg+l16}f%>D4kxW#I^^qjz894->mHN{-OfkGzcNx>I>vlN=IwPz4 zlq+j+twaW?&BC6$l6polqFIyN#9G_Q{kZuqa)7+q1#J&~3&J15cQMk)r zjrej4wT%SBTxlB*_Hy|aFeqkx8`eql6p9G~bUm{oN`ou3KV-?foD7OHk^^`8s;$A= z@MidS$j!^`zp0Gs%y~|GU&{OAPFFIxQt%Xwj^U2^W{1Ms7UQwAtynK~(kG9;5T_f! zw;xAlBX7p72XD=4vXFaUq^eGv0leRwQk~am#P}{MFWU}0jGU_yY_{R=8XwF4k~Bh46<|RU zI@Hqp=U1mmO~k!V*x^;zoE-y7$AM@wK=d@;TfD|vaAQ0w$M=w|0+y>QD*53UU<-OJ zqZ^INXgV1<#bLc!TMip|$R`BkS6)+6d+P7^+!UO-No{p3TGTt1FNYSPPUY{!Ie*?Z z*J`G7WcnO{T_mGW?Ah#Bv+Gi$XmHy~h*EOj>zwTD=+5Wyk8(o)6}H9ye_>ldFbJ1h z!_Ll`miJ##1D9Lg*4&QvKf?dS(zFI5AEX5Yc?H2h5RgY2EFd7uFA0+2lL83{NCQD& zNsz1uSKvak(`u;V@c0Uf_SaL1FH+20Z^V{(quRv zsw~O!CrSA+)!#=1Vn@{I6lxJpNk-uGV{oX=QMX}uV1E8qm?ziy$2OX_gVoN}QxwWu zyfd3YkHY${gE*!C2Ec9`JKNbuVLwcfV$)a4)G@CxSP$6M4-hkuH&crU1%k=t&PFKW z0(R#n?!MIfm*l9NWdp6Te(U#;=Jim-MzL8z0Saeh3dYgQbH&~|3KJCBp?bx28h0w3 z-Jh(w^+g((%ylg_C9*9o$}h!o#xLD;`bCb=Ma_5K1#;`mQHa!$Xt>Exis>zk)}OOf ztQXZ=qGjm`{vCh!eVJp6KKy2`0=8G}IxhWdIB&i!;MR8gy_DGdHxmXQ0<=Hs1Pz=o zE!N_wmbceVemSO$G`lrBUX38td9^_7pmNTTfw_=qEmy9+Xq(w&nYsIy&#}#Zkd682 z!a%3b5fS&4$m~GrQ_gl$Tl#X;NR(" + exit 1 +fi + +# Create the pdfs directory if it doesn't exist +mkdir -p ./data/manuals_pdf + +# Read the file line by line +while IFS= read -r url; do + # Download the file to the pdfs folder + echo "Downloading $url..." + wget -P ./data/manuals_pdf "$url" +done < "$1" + +echo "Download completed." diff --git a/data/gear-store.csv b/data/gear-store.csv new file mode 100644 index 0000000..b7182e4 --- /dev/null +++ b/data/gear-store.csv @@ -0,0 +1,687 @@ +category,subcategory,name,description,price +NVIDIA Electronics,Geforce,GEFORCE NOW $50 MEMBERSHIP GIFT CARD,"GeForce NOW gift cards can be redeemed for either a Priority or Ultimate membership, making it easy for any gamer to upgrade to the membership level of their preference. Play the most anticipated new releases, the world’s largest free-to-play titles, and thousands of games you already own with GeForce performance, streaming from the cloud. + +Please note that gift cards cannot be redeemed with GFN Alliance partners. + +Gift Card codes will work in the following countries (GFN supported regions): + +Åland (Finland), Austria, Canada, Cyprus, Czechia (Czech Republic), Denmark, Finland, France, Germany, Guernsey, Ireland, Isle of Man, Italy, Jersey, Netherlands, Norway, Poland, Saint Pierre and Miquelon, Spain, Sweden, Switzerland, United Kingdom, United States",50 +NVIDIA Electronics,Geforce,NVIDIA® GEFORCE RTX™ 4090,"The NVIDIA® GeForce RTX® 4090 is the ultimate GeForce GPU. It brings an enormous leap in performance, efficiency, and AI-powered graphics. Experience ultra-high performance gaming, incredibly detailed virtual worlds, unprecedented productivity, and new ways to create. It’s powered by the NVIDIA Ada Lovelace architecture and comes with 24 GB of G6X memory to deliver the ultimate experience for gamers and creators. + +CUDA Cores: 16384 +Boost Clock: 2.52 GHz +Memory Configuration: 24GB GDDR6X + +Please refer to the graphics card comparison page for a full list of specifications: https://www.nvidia.com/en-us/geforce/graphics-cards/compare/",1599 +NVIDIA Electronics,Geforce,NVIDIA® GEFORCE RTX™ 4080,"The NVIDIA® GeForce RTX™ 4080 delivers the ultra performance and features that enthusiast gamers and creators demand. Bring your games and creative projects to life with ray tracing and AI-powered graphics. It's powered by the ultra-efficient NVIDIA Ada Lovelace architecture and 16GB of superfast G6X memory. + +CUDA Cores: 9728 +Boost Clock: 2.51 GHz +Memory Configuration: 16GB GDDR6X +Please refer to the graphics card comparison page for a full list of specifications: https://www.nvidia.com/en-us/geforce/graphics-cards/compare/",1199 +NVIDIA Electronics,Geforce,NVIDIA® GEFORCE RTX™ 4070,"Get equipped for stellar gaming and creating with the NVIDIA® GeForce RTX™ 4070. It’s built with the ultra-efficient NVIDIA Ada Lovelace architecture. Experience fast ray tracing, AI-accelerated performance with DLSS 3, new ways to create, and much more. + +CUDA Cores: 5888 +Boost Clock: 2.48 GHz +Memory Configuration: 12GB GDDR6X +Model 900-1G141-2544-000",599 +NVIDIA Electronics,Geforce,NVIDIA® GEFORCE™ RTX 4060TI 8GB,"Game, stream, create. The GeForce RTX™ 4060 Ti lets you take on the latest games and apps with the ultra-efficient NVIDIA Ada Lovelace architecture. Experience immersive, AI-accelerated gaming with ray tracing and DLSS 3, and supercharge your creative process and productivity with NVIDIA Studio + +CUDA Cores: 4352 +Boost Clock: 2.54 GHz +Memory Configuration: 8GB GDDR6",299 +NVIDIA Electronics,Geforce,NVIDIA® GEFORCE RTX™ 4070 SUPER,"Product Description: Get equipped for supercharged gaming and creating with the NVIDIA® GeForce RTX™ 4070 SUPER. It’s built with the ultra-efficient NVIDIA Ada Lovelace architecture. Experience super-fast ray tracing, AI-accelerated performance with DLSS 3, new ways to create, and much more. + +CUDA Cores: 7168 +Boost Clock: 2.48 GHz +Memory Configuration: 12GB GDDR6X",799 +NVIDIA Electronics,Shield,NVIDIA® SHIELD™ REMOTE (2020),"Motion-activated, backlit buttons +Mic for voice search and control +Bluetooth connectivity +IR for TV control +Built-in lost remote locator +930-13700-2500-100",54.99 +NVIDIA Electronics,Shield,NVIDIA® SHIELD™ TV 2019,"NVIDIA® SHIELD® TV is the ultimate streaming media player for the modern living room. Enjoy a cinematic experience with stunning visuals brought to you by Dolby Vision HDR, and immersive audio with Dolby Atmos surround sound. The new SHIELD TV is compact, stealth, and designed to disappear behind your entertainment center, right along with your cables. Now powered by the latest NVIDIA Tegra X1+ processor, SHIELD TV is faster, and smarter. Level up. Experience more.",199 +NVIDIA Electronics,Shield,NVIDIA® SHIELD™ TV PRO 2019,"NVIDIA® SHIELD® TV Pro is the supreme streaming media player - packed with features to make even the most demanding users proud. Beautifully designed to be the perfect centerpiece of your entertainment center. Enjoy a cinematic experience with stunning visuals brought to you by Dolby Vision HDR, and immersive audio with Dolby Atmos surround sound. Now powered by the latest NVIDIA Tegra X1+ processor, SHIELD TV is faster, and smarter. Level up to SHIELD TV Pro for more storage space, two USB 3.0 ports for expandability (storage expansion, USB cameras, USB keyboards and controllers, TV tuners, and more), Plex Media Server, SmartThings hub-ready (just add a SmartThings Link), AAA Android gaming, Twitch broadcasting, and 3GB RAM.",199.99 +NVIDIA Electronics,Jetson,JETSON NANO DEVELOPER KIT,"The power of modern AI is now available for makers, learners, and embedded developers everywhere. + +NVIDIA® Jetson Nano Developer Kit is a small, powerful computer that lets you run multiple neural networks in parallel for applications like image classification, object detection, segmentation, and speech processing. All in an easy-to-use platform that runs in as little as 5 watts. + +It’s simpler than ever to get started! Just insert a microSD card with the system image, boot the developer kit, and enjoy using the same NVIDIA JetPack SDK used across the NVIDIA Jetson™ family of products. + +This version of Jetson Nano Developer Kit has two camera connectors.",149 +NVIDIA Electronics,Jetson,NVIDIA JETSON ORIN NANO DEVELOPER KIT,"The NVIDIA® Jetson Orin™ Nano Developer Kit sets a new standard for creating entry-level AI-powered robots, smart drones, and intelligent cameras. Compact design, lots of connectors, and up to 40 TOPS of AI performance deliver everything you need to transform your visionary concepts into reality. + +With up to 80X the performance of Jetson Nano, the developer kit can run all modern AI models, including those for transformer and advanced robotics. It features a Jetson Orin Nano 8GB module, a reference carrier board that can accommodate all Orin Nano and Orin NX modules, and the power to run the entire NVIDIA AI software stack. This gives you the ideal platform for prototyping your next-gen edge AI solution. + +Get started with your AI journey!",499.95 +Apparel,Mens,UNISEX TMYBTMYS CUDA TEE,"Product Details: + +4.2 oz., 100% airlume combed and ringspun cotton +Retail fit +Unisex sizing +Shoulder taping +Sideseamed +Tear away label +Pre-shrunk",22 +Apparel,Mens,MEN'S BEYOND YOGA CREW T-SHIRT - DARKEST NIGHT,"Beyond Yoga Featherweight Always Beyond Crew T-shirt is a classic top you can wear anytime, anywhere. Darkest Night + +Product Details: + +Lightweight, ultrasoft +4-way stretch fabric +Crew neckline +Classic fit +94% Polyester 6% Elastane",66 +Apparel,Mens,MEN'S BEYOND YOGA TAKE IT EASY SHORTS,"Beyond Yoga Take It Easy shorts are total comfort whether you're lounging on the couch or out and about for the day. Available in Darkest Night or Olive Heather. + +Product Details: + +Elasticized waistband, relaxed fit +Two side hand pockets +One zippered back pocket +87% Polyester 13% Elastane +4-way stretch +7"" inseam",88 +Apparel,Mens,MEN'S BEYOND YOGA TAKE IT EASY PANT - DARKEST NIGHT,"Whether you are lounging at your home or out on the town on those casual weekends, the Beyond Yoga Take It Easy Pants are perfect. + +Product Details: + +Slim fit with slightly tapered legs +Elasticized waistband with internal drawcord closure +Two side hip pockets +One zippered back pocket +87% Polyester 13% Elastane",99 +Apparel,Mens,MEN'S LOGO TEE,"4.2 oz., 100% airlume combed and ringspun cotton +Retail fit +Unisex sizing +Shoulder taping +Sideseamed +Tear away label +Pre-shrunk",22 +Apparel,Mens,NEXT LEVEL ECO UNISEX TEE UNISEX,"5.6 oz./yd², 60/40 organic cotton/recycled poly RPET, 20 singles +Made of approximately 4 recycled RPET bottles per shirt +Melange color effect +1x1 baby rib-knit set-in collar +Unisex fit +Side seams +Tear away label",22 +Apparel,Mens,NVIDIA DUO-TONE LOGO UNISEX TEE,"4.2 oz., 100% airlume combed and ringspun cotton +Retail fit +Unisex sizing +Shoulder taping +Sideseamed +Tear away label +Pre-shrunk",18 +Apparel,Mens,UNISEX INSPIRE 365 TEE,"4.2 oz., 100% airlume combed and ringspun cotton +Retail fit +Unisex sizing +Shoulder taping +Sideseamed +Tear away label +Pre-shrunk",18 +Apparel,Mens,NORTH FACE MEN'S TREKKER JACKET,"Designed with baffles contoured to fit your body, this streamlined jacket offers lightweight, highly compressible synthetic insulation. +The Trekker jacket will keep you warmer regardless of the conditions. + +Product Details: + +15D 33 g/m2 100% nylon with durable water-repellent (DWR) finish +Partially constructed from recycled fabrications +Interior left chest zippered pocket +Interior elastic cuffs +Secure-zip hand pockets +Stows in left hand pocket +Hem cinch-cord",229 +Apparel,Mens,MARINE LAYER CORBET FULL ZIP MEN'S,"We took the (dare we say) famous Corbet fabric and put it in a full zip jacket silhouette! + +Product Details: + +Black +68% Polyester, 16% Cotton, 16% Rayon +Signature Corbet Quilted Fabric +Standard fit +Wash cold, dry low +Made responsibly in China",139 +Apparel,Mens,MARINE LAYER CORBET FULL ZIP VEST MEN'S,"We took the (dare we say) famous Corbet fabric and put it in a full zip vest silhouette! + +68% Polyester, 16% Cotton, 16% Rayon +Signature Corbet Quilted Fabric +Standard fit +Wash cold, dry low +Made responsibly in China",119 +Apparel,Mens,CHAMPION REVERSE WEAVE CREWNECK UNISEX,"12-ounce, 82/18 cotton/poly fleece +Reverse weave cross-grain cut resists shrinkage +1x1 rib knit neck, side panels, sleeve cuffs and hem +Embroidered Champion “C” logo at left cuff +Woven back neck label +Loose fit, runs large",55 +Apparel,Mens,FLUX BONDED JACKET 2.0 MEN'S LIGHT HEATHER,"Take performance to the next level with this 2.0 Fleece Jacket. The modern fit and sleek look make this the ideal jacket for all. + +Product Details: + +100% polyester microfleece +Coverstitch details throughout +Center front coil zipper with contrast teeth, semi-autolock slider and rubber pull +Active fit +Easy care",65 +Apparel,Mens,FULL ZIP NEURAL HOODIE UNISEX,"Stay comfortable and warm in this stylish hoodie. + +Product Details: + +50/50 cotton/poly fleece +NVIDIA pattern hood liner",55 +Apparel,Mens,LONG SLEEVE PERFORMANCE SHIRT MEN'S,"This crew neck is the perfect shirt whether you are exercising or just lounging around. + +Product Details: + +Stretchy and comfortable 90% polyester 10% spandex fabric +Decorative and functional reflective patterns on front & back +Moisture wicking, UPF 30",35 +Apparel,Mens,NIKE 2.0 POLO MEN'S,"100% polyester Dri-FIT fabric +Flat knit collar and three-button placket +Rolled-forward shoulder seams +Open hem sleeves and open hem +Contrast Swoosh logo is embroidered on the left sleeve",40 +Apparel,Mens,COTTON TOUCH POLO MEN'S,"This polyester polo performs with the comfortable feel of cotton. Just right for the workday or after hours, this sophisticated style has subtle texture, manages moisture, keeps you fresher with odor-controlling technology and feels great against your skin. + +Product Details: + +Made from 5.8 oz. 95/5 poly/spandex jersey +Self-fabric collar +Tag-free label +3-button placket",25 +Apparel,Mens,AUTONOMOUS TIME TRAVELER TEE UNISEX,"Retail fit +90% cotton/10% poly +Machine wash +Imported",22 +Apparel,Mens,GEFORCE LOGO HIGH DENSITY TEE UNISEX,"Heather Black & Athletic Heather: 90% airlume combed and ring-spun cotton, 10% polyester +Stone: 52% airlume combed and ringspun cotton, 48% polyester +Retail fit +Tear-away label +Side seamed +Shoulder taping",18 +Apparel,Mens,GEFORCE TRIANGULATION TEE UNISEX,"90/10 airlume combed and ring spun cotton/polyester +Retail fit +Tear-away label +Side seamed +Shoulder taping",16 +Apparel,Mens,GEFORCE ABSTRACTION TEE UNISEX,"Retail fit +90% cotton/10% poly +Machine wash +Imported",16 +Apparel,Mens,WIREFRAME EYE GRAPHIC TEE UNISEX,"100% airlume combed and ring spun cotton +Retail fit +Tear-away label +Side seamed +Shoulder taping",16 +Apparel,Mens,HEROES OF NVIDIA 3.0 UNISEX TEE,"Represent the bright minds known as the Heroes of NVIDIA with this tee. + +Product Details: + +100% cotton jersey +Fine rib trim at neck +Straight fit, hits at the hip +Machine wash +Imported",20 +Apparel,Mens,I AM AI TEE MEN'S,"Express your love for AI with this signature style, premium fitted, short sleeve, super soft crew tee. + +Product Details: + +100% cotton jersey +Fine rib trim at neck +Straight fit, hits at the hip +Machine wash +Imported",16 +Apparel,Mens,MEN'S LULULEMON ABC JOGGER,"Everyday performance featuring shape retention, quick-drying, four-way stretch, breathable and wrinkle-resistant. + +Product Details: + +Intended to sit just above ankle for 30"" inseam +Designed to sit 2-3 inches below your natural waist, it is recommend to measure your waist and adding an inch +Streamlined fit that gives glutes and thighs breathing room, then tapers to hem +Feels smooth, falls softly away from body +Wear the drawcord out or hide it inside for a flat waistband +Hidden media and coin pockets +Secure back pocket",115 +Apparel,Mens,NVIDIA TWILL HAT - SAGE,"Low profile six panel unstructured cap +Standard pre-curved visor +Washed chino twill +Fabric strap with antique brass sliding buckle",18.5 +Apparel,Mens,"12"" MARLED KNIT CUFF BEANIE","12"" Marled Beanie with Cuff or Slouch, Regular Gauge Knit (100% Acrylic), Stretch to Fit",10 +Apparel,Mens,NVIDIA GREEN LABEL BEANIE,"Premium tri-blend (rayong/polyester/nylon) knit cap with cuff +Ultra-soft ribbing throughout",25 +Apparel,Mens,NVIDIA GEFORCE HAT,"Light weight brushed cotton twill +Polysnap closure +Adjustable +Structured",9.5 +Apparel,Mens,NVIDIA CORDUROY HAT,"100% cotton corduroy +6-panel +Unstructured +Low-profile",18 +Apparel,Mens,ANKLE SOCK UNISEX,"80% cotton/15% nylon/5% spandex +Sizing: Men's 9 - 11",12 +Apparel,Mens,NVIDIA ATHLETIC CREW SOCKS,"Cotton athletic socks with compression knitting and cushion, ribbed upper. Black socks with NVIDIA logo vertically on both sides. + +75% Cotton/21% Nylon/4% Lycra +One size fits most (Womens shoe size 6-11 / Mens show size 7-12)",16 +Apparel,Mens,NVIDIA LIGHTWEIGHT HOODIE,"78 oz., 52% Airlume combed and ring spun cotton, 48% polyester fleece +White cord drawstring +Retail fit +Kangaroo pockets +Ribbed cuffs and waistband",40 +Apparel,Kids,YOUTH LOGO TEE,"4.2 oz., 100% airlume combed, ringspun cotton +Retail fit +Unisex youth sizing +Sideseamed +Tear away label +Pre-shrunk",22 +Lifestyle,Lifestyle,PORTABLE FOLDING CHAIR,"Outdoor portable folding chair is great for amphitheaters, beaches, and concerts. Strong and durable construction with cradle-style seat. + +Product Details: + +Steel frame +Includes mesh gear pouch +Capacity: 300 lbs +Chair Dimensions: 26.5""h x 26""w x 18""d +Seat is 12.5"" off the ground",60 +Lifestyle,Lifestyle,TITLEIST® PRO V1® HALF DOZEN GOLF BALLS,"Go for the green! The top selling golf ball in the industry combines soft, fast core; spin control ionomer casing; and a soft, thin urethane elastomer cover with 392 dimples in staggered wave parting line; AIM sidestamp. Assembled in USA. Three balls per sleeve; two sleeves per box.",45 +Lifestyle,Lifestyle,LAPEL PIN,"Stylish and sleek custom NVIDIA lapel pin. + +Product Details: + +Actual size approx. 3/4"" wide +Includes military clutch attachment",2 +Lifestyle,Lifestyle,GEFORCE 40-SERIES ALUMINUM COASTER,"A custom-engraved drink coaster made from a solid piece of aluminum with a cork backing. Durable and long-lasting. Laser engraved design. + +Product Details: + +Material: Black Aluminum",15 +Lifestyle,Lifestyle,S'WELL 16OZ PET BOWL,"This 16 oz S’well Dog Bowl is perfect for keeping food-loving, water-gulping four-legged friends fed and hydrated in style! Engraved logo. + +S'well's timeless designs and durable, double-walled construction making it ideal for food and water. +Non-slip bottom and wide stance for improved stability. +BPA/BPS-free and reusable. +Dishwasher safe. +Approx. 5.35""D x 2.40""H x 5.35""W",35 +Lifestyle,Lifestyle,NVIDIA ICONOGRAPHY BANDANA,"2-ply folded triangular bandana +31.0"" W x 18.5"" H +100% spun polyester",11 +Lifestyle,Lifestyle,CLUBMAN SUNGLASSES,"Vintage design sunglasses fully customized for NVIDIA +Custom pouch +Metallic lenses +UV400 +Glossy finish",12 +Lifestyle,Lifestyle,NVIDIA NIMBLE CHAMP PRO CHARGER,"Keep your devices fully charged while on the go with the Eco-Friendly CHAMP Pro 60W USB-C Portable Charger. Made with REPLAY 72.5% post-consumer plastic, this portable battery is both eco-friendly and supports most USB devices including laptops, smartphones, tablets and cameras. The included USB-C cable is both BPA and PVC-free and made with recyclable materials. Charge up to 2 devices at once. And, it holds up to 8 full phone charges or 3 full tablet charges. + +Product Details: + +Extra compact +20,000 mAh battery +60W Max Output +Works with MacBook, iPhone, iPad, Android devices and more +Up to 80% charge in 30 minutes +Charges two devices simultaneously",124 +Lifestyle,Lifestyle,NVIDIA LICENSE PLATE FRAME,"Sleek and stylish NVIDIA license plate cover. + +Product Details: + +Choose from Matte black or Chrome coated zinc frame +Includes matching screw covers and packaged for protection",30 +Drinkware,Drinkware,40 OZ. STANLEY QUENCHER TUMBLER,"18/8 Recycled stainless steel; naturally BPA-free +Double-wall vacuum insulation +FlowState™ 3-position lid with rotating cover for versatility: no splash straw quencher, open drink spout, or fully covered & close +Silicone sealed cover reduces spills +Reusable straw included +Lid disassembles for deep cleaning +Hand Wash Only +Built for Life™ lifetime warranty +7 HRS HOT / 11 HRS COLD / 2 DAYS ICED",50 +Drinkware,Drinkware,20 OZ. ELEMENTAL WATER BOTTLE,"Featuring unique stainless steel lid with bamboo and convenient partially removable strap, this water bottle is the last water bottle you'll need. Attach it to your purse or bag to make transportation a breeze. The internal strainer is perfect for loose leaf tea, fruit, or drinks that need shaking. + +Product Details: + +2.75"" D x 9.7"" H +Complies with Food Grade +Keeps your beverages cold for up to 24 hours or hot for up to 12 hours +Prevents condensation",30 +Drinkware,Drinkware,25 OZ. NVIDIA ICONOGRAPHY BOTTLE,"The CamelBak® eddy®+ water bottle is made from Eastman Tritan™ RENEW, a durable and sustainable material containing 50% recycled plastic. The bottle is shatter, stain and odor-resistant, and its wide mouth makes it easy to fill or clean. Enjoy spill-proof sipping at work or on the trail thanks to the screw-on lid with bite valve and one-finger carry handle. BPA-free + +Product Details: + +Dimensions: 10.0"" H x 3.0""W x 3.0"" D +Single-wall construction +Handwash only +Straw Top +25 oz.",24 +Drinkware,Drinkware,32 OZ. NVIDIA ICONOGRAPHY BOTTLE,"The CamelBak Mag bottle is made from Eastman Tritan RENEW, a durable and sustainable material containing 50% recycled plastic. The bottle is shatter-, stain- and odor-resistant, and it's wide mouth makes it easy to fill or clean. The two-finger magnetic carry handle keeps the cap stowed while drinking, and the angled spout provides a high flow of water without sloshing or spilling. BPA-free. + +Product Details: + +Dimensions: 9.50"" H x 3.70""W x 3.70"" D +Single-wall construction +Handwash only +Spill-proof with included lid +32 oz.",28 +Drinkware,Drinkware,14 OZ. VISUAL PURR-CEPTION MUG,"Everyone loves cats. Keep an eye on those felines with this 14 oz. deep learning mug inspired by NVIDIA Engineer Robert Bond. + +Product Details: + +3-5/8"" H x 3-5/8 (5 w/handle)"" +Hand wash recommended +Microwave safe +Cannot be shipped to APAC",12 +Drinkware,Drinkware,14 OZ. A NEW BREED OF INNOVATION MUG,"14 oz. ceramic mug features a barrel design, large handle, matte exterior finish and gloss colored interior. + +Product Details: + +3-5/8"" H x 3-5/8 (5 w/handle)"" +Hand wash recommended +Microwave safe",9.5 +Drinkware,Drinkware,14 OZ. I AM AI MUG,"14 oz. ceramic mug features a barrel design, large handle, matte exterior finish and gloss colored interior. + +Product Details: + +3-5/8"" H x 3-5/8 (5 w/handle)"" +Hand wash recommended +Microwave safe",9.5 +Drinkware,Drinkware,14 OZ. NVIDIA LOGO MUG,"14 oz. ceramic mug features a barrel design, large handle, matte exterior finish and gloss colored interior. + +Product Details: + +3-5/8"" H x 3-5/8 (5 w/handle)"" +Hand wash recommended +Microwave safe",7.5 +Office,Office,TIMBUK2 LAPTOP SLEEVE - 2 SIZES,"A protective case with contemporary styling, this accessory begs to be carried in your hand, but will agree to sit inside a bag, for a moment. Sized to fit a laptop, cords, phone, it carries and protects everything you really need. Easily stows inside a bag or can be used independently with the wrist strap. Eco Black + +Product Details: + +Lots of stretchy pockets and internal webbing to maximize organization +Extra padding inside to protect all your contents +100% recycled nylon from pre-consumer material + + +Available in 2 Sizes: + +Fits up to most 13"" laptops: 14.2"" W x 10.6"" H x .984"" D (L) + +Fits up to most 16"" laptops: 15.2"" W x 11.6"" H x .984"" D (XL)",55 +Office,Office,NVIDIA SMALL INFINITY MOUSEPAD,"Dimensions: 10""x8"" +Anti-slip base keeps the mousepad from sliding around +Smooth surface for maximized speed, accuracy, and control +Crafted so edges remain flat +For use on any flat, hard surface",10 +Office,Office,NVIDIA FLOW LARGE MOUSEPAD,"Dimensions: 27.20"" x 11.75"" +2.22 sq. ft. of full-color space +Anti-slip base keeps the mousepad from sliding around +Smooth surface for maximized speed, accuracy, and control +Crafted so edges remain flat +For use on any flat, hard surface",20 +Office,Office,NVIDIA ICONOGRAPHY KRAFT POCKET JOURNAL -3 PACK,"Classic saddle-stitch notebook +Softcover with kraft paper +Round corners +48 pages (24 sheets) +70# (100gsm) paper",16 +Office,Office,RULER 2.0,"The new Ruler 2.0 highlights the Geforce RTX. + + Features include: + +35cm/12in ruler (1mm edge to first marker) +Image from Geforce RTX 2080Ti PCB +RLCs (Resistors, Inductors and Capacitors), Mosfets and Crystals +Gold color is ENIG (Electroless Nickel Immersion Gold) +Endeavor symbol +Simulated break-off tab of a PCB +Holes to facilitate hanging +Unique Serial Numbers",13.5 +Office,Office,RULER,"Made from standard FR4 dielectric with an ENIG plating finish, this ruler is designed to be an engineer's best friend + +Some features include: + +RLCs (Resistors, Inductors and Capacitors), Mosfets and Crystals +Formula quick guide +Footprints for some advanced packages, including memories and some ICs + +All bulk orders must be charged through a cost center and submitted via a Purchase Requisition (PR) through Coupa or NVIDIA IBR. ",4 +Office,Office,TROIKA CONSTRUCTION PEN,"Multifunction black gold brass ballpoint pen. + +Product Details: + +4 different metric ratios (1:20, 1:50, 1:100, 1:1 inch) +Phillips and slotted screwdriver +Stylus",25 +Office,Office,PRODIR® PATTERN PEN,"A fascinating triangular structure characterizes the casing surface of this pen. The pattern is introduced in the injection moulding into the surface of the casing and is an authentic part of the writing instrument. The smooth, minimalistic clip is located above the casing and, in combination with the three-dimensional surface, strongly draws attention to the logo.",4.5 +Office,Office,INTENSITY CLIC GEL PEN,With an automatic clip-retracting mechanism and an ultra-smooth gel roller the BIC® Intensity® Clic™ Gel is a modern take on the retractable pen.,2.5 +Office,Office,COMPUTER CARE KIT,"Whether you want to show off some cool laptop stickers, clean your electronics in style or cover your webcam, this is the kit for you! + +This Computer Care Kit contains: + +Razor Webcam Cover +Screen cleaner +5-piece sticker set (Features 2 new sheet designs and 3 NVIDIA stickers) +Size: 7"" x 9""",12 +Bags,Bags,TIMBUK2 VAPOR BACKPACK TOTE - GRAPHITE,"New Color - Graphite +Timbuk2 Vapor Backpack Tote. + +Product Details: +Constructed with 100% recycled nylon and polyester made from pre- and post-consumer materials waste. +Padded laptop sleeve fits most 15"" laptops +Tuck the tote straps when wearing as a backpack or tuck the shoulder straps when carrying as a tote +Napoleon pocket with key keeper",129 +Bags,Bags,NVIDIA HEX SLING BAG - GRAY,"Product Details: + +Dimensions: (H x W x D): 5.5"" x 10"" x 2.5"" +Recycled ECco Cordura exterior fabric +Anti-microbial technology to repel bacteria, mold and fungus +Durable water-resistant shell +Front zippered pocket +Back panel zippered pocket +Interior mesh pocket +Padded back panel +Side compression straps +Woven cord zipper pulls",55 +Bags,Bags,IGLOO COAST COOLER,"The Igloo Seadrift Cooler collection features MaxCold® insulation more foam to keep drinks and food cooler longer and a classic colorblock design. + +Features MaxCold® insulation with 25% more foam to keep drinks and food cooler longer +Dual zippered opening to large main compartment +Dual side pockets for water bottles and other belongings +Top hatch for easy, quick access to main compartment +Deep, gusseted front zippered pocket for additional storage +Comfortable, rubberized dual carry handles secure together effortlessly +Adjustable, removable shoulder strap with shoulder pad +PEVA heat-sealed lining +PVC and Phthalate free +36 can capacity",95 +Bags,Bags,OGIO CATALYST DUFFEL - BLACK,"Made for the gym or a weekend trip, this modern duffel has ample room to store and organize everything you need. Easy to carry using the padded carrying handles or the detachable, adjustable shoulder strap. + +Product Details: + +600D rhombus poly/600D poly +Large main compartment with U-shaped opening +Side compartment with large mesh window for ventilation +Front zippered pocket +Durable, water-resistant bottom +Dimensions: 10.5""h x 20""w x 10.5""d",50 +Bags,Bags,TIMBUK2 LAPTOP SLEEVE - 2 SIZES,"A protective case with contemporary styling, this accessory begs to be carried in your hand, but will agree to sit inside a bag, for a moment. Sized to fit a laptop, cords, phone, it carries and protects everything you really need. Easily stows inside a bag or can be used independently with the wrist strap. Eco Black + +Product Details: + +Lots of stretchy pockets and internal webbing to maximize organization +Extra padding inside to protect all your contents +100% recycled nylon from pre-consumer material + + +Available in 2 Sizes: + +Fits up to most 13"" laptops: 14.2"" W x 10.6"" H x .984"" D (L) + +Fits up to most 16"" laptops: 15.2"" W x 11.6"" H x .984"" D (XL)",55 +Bags,Bags,TIMBUK2 PARKSIDE BACKPACK 2.0,"The Parkside is loaded with useful organization and well-suited for anyone, from campus to the boardroom. Multiple front pockets are great for storing a tablet and headphones, to charging cables, keys and a phone. Perfect for stowing away your lunch and a light jacket, the interior compartment is roomy and includes a slip pocket for a laptop. Designed to be a workhorse, pack it full with everything you need to get through your day. + +Product Details: + +Front zippered organization zone with iPad slip pocket +Large main compartment fits books, lunch, and a light jacket +Elasticized external side pocket for water bottle or U-lock +Padded back panel and straps for maximum comfort +100% recycled nylon from pre-consumer materials +Fits 15"" laptop",99 +Bags,Bags,VICTORINOX LAPTOP WOMEN'S TOTE,"16"" Women's Laptop Tote +Padded 15.6"" laptop compartment and dedicated 10"" tablet pocket +Essentials organizer with anti-scratch lining +Feet protect the bottom of the bag +Interior zippered pocket +Removable adjustable shoulder strap +Rear pocket unzips to become a Pass-Thru trolley sleeve to slide over the handle of wheeled luggage for easy travel",140 +Bags,Bags,TOPO ROVER TECH PACK,"An exterior front pocket and top flap pocket give quick access to smaller items +External padded laptop sleeve fits most 15"" laptops +Large internal sleeve can be used for notebooks, a laptop or other gear +Expandable side pockets hold your water bottle in place",129 +Bags,Bags,TIMBUK2 COPILOT ROLLER LUGGAGE,"The Copilot is lightweight and easy to pack. Its sleek new styling works downtown or way way out of town and its bike-inspired handle system and broad-base skateboard wheels yield a smooth roll. Its clamshell structure makes it easy to pack and repack, while always providing the opportunity to quarantine things as needed. The Copilot features multiple reinforced grab straps for an easy heave-ho into overhead bins, and its expandable top stash pocket is designed for easy access in said bins. Light, organized, and subtly chic, the Copilot is ready to board. + + Product Details: +52 L +Expandable top compartment for quarantining shoes and toiletries +Padded front zippered pocket fits up to 13"" MacBook or iPad +Internal mesh divider keeps items separate and organized",225 +Bags,Bags,TOTE BAG,"Cotton canvas tote bag. + +Product Details: + +15"" W x 16"" H",9 +Bags,Bags,OGIO® STRATAGEM BACKPACK,"Materials: 600D Oxford polyester, 420D dobby polyester +Padded fleece-lined interior laptop compartment fits most 17"" laptops +Integrated foam panels keep your electronics and other valuables protected +Padded tablet/e-reader sleeve +Large main compartment for books, binders and files +Padded back panel with moisture-wicking air mesh +Dual side water bottle/accessory holders +Easy access front stash pocket",100 +Bags,Bags,GIFT BAG,"Premium weight matte laminated medium gift bag with green handles and cardboard bottom insert. Green tissue paper included. + +Product Details: +Medium: 13x5x10 +Large: 16x6x12",2.1 +Apparel,Womens,WOMEN'S BEYOND YOGA REFOCUS TANK,"Beyond Yoga Spacedye Refocus tank is a flattering fit for all shapes. Cropped active tank with built-in bra. The right length to pair over your high waisted leggings. Reflective NVIDIA logo on right side hem. + +Product Details: + +High scooped neckline +Slim racerback design +87% polyester/13% elastane",70 +Apparel,Womens,WOMEN'S BEYOND YOGA MOVEMENT SKIRT,"Beyond Yoga Spacedye lined Movement skirt has comfortable built-in shorts. Made with the classic A-line flare and curved hem at bottom. Super comfortable and flattering active skirt. Reflective NVIDIA logo on hem. + +Product Details: + +3"" waistband sits at natural waist +15 in. length +87% polyester/13% elastane",88 +Apparel,Womens,WOMEN'S BEYOND YOGA IN-STRIDE PULLOVER - BLACK,"Ultra-light, breezy workout zip front pullover made of our new airy performance fabric. Featuring a front kangaroo pocket and elastic waist for the perfect fit. This woven active fabric features an ultra light feel, enabling the versatility for both being active or kicking back. Reflective NVIDIA logo on back of collar. + +Product Details: + +Half zip front +Elasticated cuffs and hemband +Classic length +86% Recycled Polyester/14% Spandex",128 +Apparel,Womens,WOMEN'S V-NECK TEE,"Bella + Canvas women's v-neck t-shirt with logo embroidered. + +Product Details: + +4.2 oz, 100& combed and ringspun cotton +Relaxed fit +Sideseamed +Pre-shrunk",22 +Apparel,Womens,MARINE LAYER CORBET FULL ZIP VEST WOMEN'S,"We took the (dare we say) famous Corbet fabric and put it in a full zip vest silhouette! + +Product Details: + +68% Polyester, 16% Cotton, 16% Rayon +Signature Corbet Quilted Fabric +Standard fit +Wash cold, dry low +Made responsibly in China",119 +Apparel,Womens,WOMEN'S BEYOND YOGA SPACEDYE RACERBACK CROPPED TANK,"This Beyond Yoga tank is made from performance fabric featuring UPF 50+ protection, built-in bra offering medium support, soft straps that never dig in, and racerback design to balance athleticism with effortlessness. Reflective NVIDIA logo on back + +Color: Darkest Night +Skinny racerback with keyhole +Self shelf bra +Cropped length +Reflective NVIDIA logo on back",60 +Apparel,Womens,WOMEN'S LOGO TEE,"Women's relaxed fit t-shirt. + +Product details: + +Relaxed fit +Tear-away label +Side seamed +4.2-ounce, 100% Airlume combed and ring spun cotton",22 +Apparel,Womens,WOMEN'S FLEECE CROPPED CREW,"District women's perfect weight fleece. Cropped with crewneck in premium 8.26-ounce weight. Heathered Loganberry with NVIDIA logo embroidered on front and woven patch along bottom hem. + +Product Details: + +65/35 combed ring spun cotton/poly blend +Drop shoulder +Twill back neck tape +2x1 rib knit neck, cuffs and hem",35 +Apparel,Womens,NORTH FACE WOMEN'S TREKKER JACKET,"Designed with baffles contoured to fit your body, this streamlined jacket offers lightweight, highly compressible synthetic insulation. +The Trekker jacket will keep you warmer regardless of the conditions. + + Product Details: +15D 33 g/m2 100% nylon with durable water-repellent (DWR) finish +Partially constructed from recycled fabrications +Interior left chest zippered pocket +Interior elastic cuffs +Secure-zip hand pockets +Stows in left hand pocket +Hem cinch-cord",229 +Apparel,Womens,FLUX BONDED JACKET WOMEN'S LIGHT HEATHER,"Take performance to the next level with this 2.0 Fleece Jacket. The modern fit and sleek look make this the ideal jacket for all. + +Product Details: + +100% polyester microfleece +Coverstitch details throughout +Center front coil zipper with contrast teeth, semi-autolock slider and rubber pull +Lower pockets for flattering feminine fit +Lower pockets with invisible zippers +Active fit +Easy care",65 +Apparel,Womens,NIKE 2.0 POLO WOMEN'S,"100% polyester Dri-FIT fabric +Tailored for a feminine fit with a self-fabric collar +Open neckline and side vents +Rolled-forward shoulder seams +Open hem sleeves and open hem +Contrast Swoosh logo is embroidered on the left sleeve",40 +Apparel,Womens,COTTON TOUCH POLO WOMEN'S,"This polyester polo performs with the comfortable feel of cotton. Just right for the workday or after hours, this sophisticated style has subtle texture, manages moisture, keeps you fresher with odor-controlling technology and feels great against your skin. + +Product Details: + +Made from 5.8 oz. 95/5 poly/spandex jersey +Self-fabric collar +Tag-free label +Y-neck placket",25 +Apparel,Womens,LONG SLEEVE PERFORMANCE SHIRT WOMEN'S,"This crew neck is the perfect shirt whether you are exercising or just lounging around. + +Product Details: + +Stretchy and comfortable 90% polyester 10% spandex fabric +Decorative and functional reflective patterns on front & back +Moisture wicking, UPF 30 +Sleeve thumbholes",35 +Apparel,Womens,I AM AI TEE WOMEN'S,"This short sleeve, ladies cut, super soft boyfriend crew will instantly be loved by all who wear it. + +Product Details: + +100% cotton jersey +Laundered for reduced shrinkage +Ladies' cut +Machine wash",16 +Apparel,Womens,WOMEN'S POCKET LEGGINGS,"Beyond Yoga Pocket Leggings + +Product Details: + +Ultra-soft feel +4-way stretch to move with you +Moisture-wicking to keep dry +Easy care- wash + dry +Enjoy the sun with UV protection +87% Polyester, 13% LYCRA®",99 diff --git a/data/list_manuals.txt b/data/list_manuals.txt new file mode 100755 index 0000000..a3690bd --- /dev/null +++ b/data/list_manuals.txt @@ -0,0 +1,6 @@ +https://www.nvidia.com/content/geforce-gtx/GeForce_RTX_4090_QSG_Rev1.pdf +https://www.nvidia.com/content/geforce-gtx/GEFORCE_RTX_4080_SUPER_User_Guide_Rev1.pdf +https://www.nvidia.com/content/geforce-gtx/GeForce_RTX_4080_QSG_Rev1.pdf +https://www.nvidia.com/content/geforce-gtx/GEFORCE_RTX_4070_SUPER_User_Guide_Rev1.pdf +https://www.nvidia.com/content/geforce-gtx/GeForce_RTX_4070_QSG_Rev1.pdf +https://www.nvidia.com/content/geforce-gtx/GEFORCE_RTX_4060_Ti_User_Guide_Rev1.pdf diff --git a/data/orders.csv b/data/orders.csv new file mode 100644 index 0000000..58e3276 --- /dev/null +++ b/data/orders.csv @@ -0,0 +1,574 @@ +CID,OrderID,product_name,product_description,OrderDate,Quantity,OrderAmount,OrderStatus,ReturnStatus,ReturnStartDate,ReturnReceivedDate,ReturnCompletedDate,ReturnReason,Notes +4165,52768,JETSON NANO DEVELOPER KIT,"The power of modern AI is now available for makers, learners, and embedded developers everywhere. + +NVIDIA® Jetson Nano Developer Kit is a small, powerful computer that lets you run multiple neural networks in parallel for applications like image classification, object detection, segmentation, and speech processing. All in an easy-to-use platform that runs in as little as 5 watts. + +It’s simpler than ever to get started! Just insert a microSD card with the system image, boot the developer kit, and enjoy using the same NVIDIA JetPack SDK used across the NVIDIA Jetson™ family of products. + +This version of Jetson Nano Developer Kit has two camera connectors.",2024-10-05T10:00:00,2,298.0,Delivered,"",,,,, +4165,4065,NVIDIA® GEFORCE RTX™ 4090,"The NVIDIA® GeForce RTX® 4090 is the ultimate GeForce GPU. It brings an enormous leap in performance, efficiency, and AI-powered graphics. Experience ultra-high performance gaming, incredibly detailed virtual worlds, unprecedented productivity, and new ways to create. It’s powered by the NVIDIA Ada Lovelace architecture and comes with 24 GB of G6X memory to deliver the ultimate experience for gamers and creators. + +CUDA Cores: 16384 +Boost Clock: 2.52 GHz +Memory Configuration: 24GB GDDR6X + +Please refer to the graphics card comparison page for a full list of specifications: https://www.nvidia.com/en-us/geforce/graphics-cards/compare/",2024-10-10T14:00:00,1,1599.0,Return Requested,Requested,2024-10-12T14:00:00,,,Received a faulty unit that doesn't display correctly., +4165,69268,NVIDIA® GEFORCE RTX™ 4070,"Get equipped for stellar gaming and creating with the NVIDIA® GeForce RTX™ 4070. It’s built with the ultra-efficient NVIDIA Ada Lovelace architecture. Experience fast ray tracing, AI-accelerated performance with DLSS 3, new ways to create, and much more. + +CUDA Cores: 5888 +Boost Clock: 2.48 GHz +Memory Configuration: 12GB GDDR6X +Model 900-1G141-2544-000",2024-10-01T09:30:00,1,599.0,Delivered,"",,,,, +4165,71110,NVIDIA® SHIELD™ REMOTE (2020),"Motion-activated, backlit buttons +Mic for voice search and control +Bluetooth connectivity +IR for TV control +Built-in lost remote locator +930-13700-2500-100",2024-10-15T16:00:00,3,164.97,Returned,Approved,,2024-10-18T16:00:00,2024-11-02T16:00:00,Item stopped functioning correctly within a week., +4165,15620,NVIDIA® SHIELD™ TV PRO 2019,"NVIDIA® SHIELD® TV Pro is the supreme streaming media player - packed with features to make even the most demanding users proud. Beautifully designed to be the perfect centerpiece of your entertainment center. Enjoy a cinematic experience with stunning visuals brought to you by Dolby Vision HDR, and immersive audio with Dolby Atmos surround sound. Now powered by the latest NVIDIA Tegra X1+ processor, SHIELD TV is faster, and smarter. Level up to SHIELD TV Pro for more storage space, two USB 3.0 ports for expandability (storage expansion, USB cameras, USB keyboards and controllers, TV tuners, and more), Plex Media Server, SmartThings hub-ready (just add a SmartThings Link), AAA Android gaming, Twitch broadcasting, and 3GB RAM.",2024-10-03T11:30:00,1,199.99,Delivered,"",,,,, +4165,15848,NVIDIA® GEFORCE™ RTX 4060TI 8GB,"Game, stream, create. The GeForce RTX™ 4060 Ti lets you take on the latest games and apps with the ultra-efficient NVIDIA Ada Lovelace architecture. Experience immersive, AI-accelerated gaming with ray tracing and DLSS 3, and supercharge your creative process and productivity with NVIDIA Studio + +CUDA Cores: 4352 +Boost Clock: 2.54 GHz +Memory Configuration: 8GB GDDR6",2024-10-07T08:45:00,4,1196.0,Canceled,"",,,,,Order canceled due to payment processing issues. +4165,13955,NVIDIA® GEFORCE RTX™ 4070 SUPER,"Product Description: Get equipped for supercharged gaming and creating with the NVIDIA® GeForce RTX™ 4070 SUPER. It’s built with the ultra-efficient NVIDIA Ada Lovelace architecture. Experience super-fast ray tracing, AI-accelerated performance with DLSS 3, new ways to create, and much more. + +CUDA Cores: 7168 +Boost Clock: 2.48 GHz +Memory Configuration: 12GB GDDR6X",2024-10-16T15:00:00,2,1598.0,Return Requested,Pending Approval,2024-10-18T15:00:00,,,The performance did not meet expectations., +4165,51115,NVIDIA SMALL INFINITY MOUSEPAD,"Dimensions: 10""x8"" +Anti-slip base keeps the mousepad from sliding around +Smooth surface for maximized speed, accuracy, and control +Crafted so edges remain flat +For use on any flat, hard surface",2024-10-05T12:00:00,5,50.0,Delivered,"",,,,, +4165,67932,COMPUTER CARE KIT,"Whether you want to show off some cool laptop stickers, clean your electronics in style or cover your webcam, this is the kit for you! + +This Computer Care Kit contains: + +Razor Webcam Cover +Screen cleaner +5-piece sticker set (Features 2 new sheet designs and 3 NVIDIA stickers) +Size: 7"" x 9""",2024-10-09T13:00:00,6,72.0,Returned,Rejected,,2024-10-18T13:00:00,,Item was opened and used.,Return rejected as the product was not in original condition. +4165,62025,GEFORCE ABSTRACTION TEE UNISEX,"Retail fit +90% cotton/10% poly +Machine wash +Imported",2024-10-11T17:00:00,3,48.0,In Transit,"",,,,,Order has been delayed due to shipping issues. +125,88153,NVIDIA® GEFORCE RTX™ 4080,"The NVIDIA® GeForce RTX™ 4080 delivers the ultra performance and features that enthusiast gamers and creators demand. Bring your games and creative projects to life with ray tracing and AI-powered graphics. It's powered by the ultra-efficient NVIDIA Ada Lovelace architecture and 16GB of superfast G6X memory. + +CUDA Cores: 9728 +Boost Clock: 2.51 GHz +Memory Configuration: 16GB GDDR6X +Please refer to the graphics card comparison page for a full list of specifications: https://www.nvidia.com/en-us/geforce/graphics-cards/compare/",2024-10-10T14:30:00,2,2398.0,Delivered,"",,,,, +125,7035,NVIDIA® GEFORCE RTX™ 4090,"The NVIDIA® GeForce RTX® 4090 is the ultimate GeForce GPU. It brings an enormous leap in performance, efficiency, and AI-powered graphics. Experience ultra-high performance gaming, incredibly detailed virtual worlds, unprecedented productivity, and new ways to create. It’s powered by the NVIDIA Ada Lovelace architecture and comes with 24 GB of G6X memory to deliver the ultimate experience for gamers and creators. + +CUDA Cores: 16384 +Boost Clock: 2.52 GHz +Memory Configuration: 24GB GDDR6X + +Please refer to the graphics card comparison page for a full list of specifications: https://www.nvidia.com/en-us/geforce/graphics-cards/compare/",2024-10-15T10:00:00,1,1599.0,Return Requested,Requested,2024-10-16T10:00:00,,,Product did not perform as expected., +125,17774,JETSON NANO DEVELOPER KIT,"The power of modern AI is now available for makers, learners, and embedded developers everywhere. + +NVIDIA® Jetson Nano Developer Kit is a small, powerful computer that lets you run multiple neural networks in parallel for applications like image classification, object detection, segmentation, and speech processing. All in an easy-to-use platform that runs in as little as 5 watts. + +It’s simpler than ever to get started! Just insert a microSD card with the system image, boot the developer kit, and enjoy using the same NVIDIA JetPack SDK used across the NVIDIA Jetson™ family of products. + +This version of Jetson Nano Developer Kit has two camera connectors.",2024-10-12T09:00:00,4,596.0,Returned,Approved,,2024-10-17T09:00:00,2024-11-02T09:00:00,Compatibility issues with existing hardware., +125,45309,NVIDIA® GEFORCE™ RTX 4060TI 8GB,"Game, stream, create. The GeForce RTX™ 4060 Ti lets you take on the latest games and apps with the ultra-efficient NVIDIA Ada Lovelace architecture. Experience immersive, AI-accelerated gaming with ray tracing and DLSS 3, and supercharge your creative process and productivity with NVIDIA Studio + +CUDA Cores: 4352 +Boost Clock: 2.54 GHz +Memory Configuration: 8GB GDDR6",2024-10-14T16:00:00,3,897.0,Shipped,"",,,,, +125,46869,NVIDIA® SHIELD™ REMOTE (2020),"Motion-activated, backlit buttons +Mic for voice search and control +Bluetooth connectivity +IR for TV control +Built-in lost remote locator +930-13700-2500-100",2024-10-05T12:30:00,5,274.95,Delivered,"",,,,, +125,74210,NVIDIA® SHIELD™ TV 2019,"NVIDIA® SHIELD® TV is the ultimate streaming media player for the modern living room. Enjoy a cinematic experience with stunning visuals brought to you by Dolby Vision HDR, and immersive audio with Dolby Atmos surround sound. The new SHIELD TV is compact, stealth, and designed to disappear behind your entertainment center, right along with your cables. Now powered by the latest NVIDIA Tegra X1+ processor, SHIELD TV is faster, and smarter. Level up. Experience more.",2024-10-18T08:15:00,1,199.0,Pending,"",,,,, +125,39550,NVIDIA® SHIELD™ TV PRO 2019,"NVIDIA® SHIELD® TV Pro is the supreme streaming media player - packed with features to make even the most demanding users proud. Beautifully designed to be the perfect centerpiece of your entertainment center. Enjoy a cinematic experience with stunning visuals brought to you by Dolby Vision HDR, and immersive audio with Dolby Atmos surround sound. Now powered by the latest NVIDIA Tegra X1+ processor, SHIELD TV is faster, and smarter. Level up to SHIELD TV Pro for more storage space, two USB 3.0 ports for expandability (storage expansion, USB cameras, USB keyboards and controllers, TV tuners, and more), Plex Media Server, SmartThings hub-ready (just add a SmartThings Link), AAA Android gaming, Twitch broadcasting, and 3GB RAM.",2024-10-02T11:45:00,2,399.98,Returned,Rejected,,2024-10-10T11:45:00,,The device did not integrate properly with existing equipment.,Return has been rejected due to insufficient compatibility information provided. +125,19498,WOMEN'S BEYOND YOGA MOVEMENT SKIRT,"Beyond Yoga Spacedye lined Movement skirt has comfortable built-in shorts. Made with the classic A-line flare and curved hem at bottom. Super comfortable and flattering active skirt. Reflective NVIDIA logo on hem. + +Product Details: + +3"" waistband sits at natural waist +15 in. length +87% polyester/13% elastane",2024-10-06T14:20:00,3,264.0,In Transit,"",,,,, +125,85593,GEFORCE TRIANGULATION TEE UNISEX,"90/10 airlume combed and ring spun cotton/polyester +Retail fit +Tear-away label +Side seamed +Shoulder taping",2024-10-08T17:30:00,8,128.0,Cancelled,"",,,,,Order cancelled due to processing delays. +125,89350,14 OZ. I AM AI MUG,"14 oz. ceramic mug features a barrel design, large handle, matte exterior finish and gloss colored interior. + +Product Details: + +3-5/8"" H x 3-5/8 (5 w/handle)"" +Hand wash recommended +Microwave safe",2024-10-17T15:15:00,6,57.0,Processing,"",,,,, +5603,36121,NVIDIA JETSON ORIN NANO DEVELOPER KIT,"The NVIDIA® Jetson Orin™ Nano Developer Kit sets a new standard for creating entry-level AI-powered robots, smart drones, and intelligent cameras. Compact design, lots of connectors, and up to 40 TOPS of AI performance deliver everything you need to transform your visionary concepts into reality. + +With up to 80X the performance of Jetson Nano, the developer kit can run all modern AI models, including those for transformer and advanced robotics. It features a Jetson Orin Nano 8GB module, a reference carrier board that can accommodate all Orin Nano and Orin NX modules, and the power to run the entire NVIDIA AI software stack. This gives you the ideal platform for prototyping your next-gen edge AI solution. + +Get started with your AI journey!",2024-10-05T10:00:00,3,1498.85,Delivered,"",,,,, +5603,47597,JETSON NANO DEVELOPER KIT,"The power of modern AI is now available for makers, learners, and embedded developers everywhere. + +NVIDIA® Jetson Nano Developer Kit is a small, powerful computer that lets you run multiple neural networks in parallel for applications like image classification, object detection, segmentation, and speech processing. All in an easy-to-use platform that runs in as little as 5 watts. + +It’s simpler than ever to get started! Just insert a microSD card with the system image, boot the developer kit, and enjoy using the same NVIDIA JetPack SDK used across the NVIDIA Jetson™ family of products. + +This version of Jetson Nano Developer Kit has two camera connectors.",2024-10-12T11:30:00,2,298.0,Return Requested,Requested,2024-10-17T11:30:00,,,Incompatibility with existing hardware., +5603,58681,NVIDIA® GEFORCE RTX™ 4080,"The NVIDIA® GeForce RTX™ 4080 delivers the ultra performance and features that enthusiast gamers and creators demand. Bring your games and creative projects to life with ray tracing and AI-powered graphics. It's powered by the ultra-efficient NVIDIA Ada Lovelace architecture and 16GB of superfast G6X memory. + +CUDA Cores: 9728 +Boost Clock: 2.51 GHz +Memory Configuration: 16GB GDDR6X +Please refer to the graphics card comparison page for a full list of specifications: https://www.nvidia.com/en-us/geforce/graphics-cards/compare/",2024-10-01T14:45:00,1,1199.0,Returned,Approved,,2024-10-03T14:45:00,2024-10-20T14:45:00,Product did not meet performance expectations., +5603,54706,NVIDIA® SHIELD™ TV 2019,"NVIDIA® SHIELD® TV is the ultimate streaming media player for the modern living room. Enjoy a cinematic experience with stunning visuals brought to you by Dolby Vision HDR, and immersive audio with Dolby Atmos surround sound. The new SHIELD TV is compact, stealth, and designed to disappear behind your entertainment center, right along with your cables. Now powered by the latest NVIDIA Tegra X1+ processor, SHIELD TV is faster, and smarter. Level up. Experience more.",2024-10-08T09:00:00,1,199.0,Shipped,"",,,,, +5603,1643,NVIDIA® GEFORCE RTX™ 4090,"The NVIDIA® GeForce RTX® 4090 is the ultimate GeForce GPU. It brings an enormous leap in performance, efficiency, and AI-powered graphics. Experience ultra-high performance gaming, incredibly detailed virtual worlds, unprecedented productivity, and new ways to create. It’s powered by the NVIDIA Ada Lovelace architecture and comes with 24 GB of G6X memory to deliver the ultimate experience for gamers and creators. + +CUDA Cores: 16384 +Boost Clock: 2.52 GHz +Memory Configuration: 24GB GDDR6X + +Please refer to the graphics card comparison page for a full list of specifications: https://www.nvidia.com/en-us/geforce/graphics-cards/compare/",2024-10-10T16:00:00,2,3198.0,Cancelled,"",,,,,Order cancelled due to payment issues. +5603,57160,NVIDIA® GEFORCE RTX™ 4070,"Get equipped for stellar gaming and creating with the NVIDIA® GeForce RTX™ 4070. It’s built with the ultra-efficient NVIDIA Ada Lovelace architecture. Experience fast ray tracing, AI-accelerated performance with DLSS 3, new ways to create, and much more. + +CUDA Cores: 5888 +Boost Clock: 2.48 GHz +Memory Configuration: 12GB GDDR6X +Model 900-1G141-2544-000",2024-10-03T13:15:00,1,599.0,Returned,Rejected,,2024-10-05T13:15:00,,Not suitable for VR applications.,Performance issue not covered under warranty. +5603,6394,NVIDIA® SHIELD™ REMOTE (2020),"Motion-activated, backlit buttons +Mic for voice search and control +Bluetooth connectivity +IR for TV control +Built-in lost remote locator +930-13700-2500-100",2024-10-04T15:00:00,4,219.96,In Transit,"",,,,, +5603,46575,NORTH FACE WOMEN'S TREKKER JACKET,"Designed with baffles contoured to fit your body, this streamlined jacket offers lightweight, highly compressible synthetic insulation. +The Trekker jacket will keep you warmer regardless of the conditions. + + Product Details: +15D 33 g/m2 100% nylon with durable water-repellent (DWR) finish +Partially constructed from recycled fabrications +Interior left chest zippered pocket +Interior elastic cuffs +Secure-zip hand pockets +Stows in left hand pocket +Hem cinch-cord",2024-10-14T12:00:00,2,458.0,Processing,"",,,,,Processing delay due to high order volume. +5603,9145,TIMBUK2 LAPTOP SLEEVE - 2 SIZES,"A protective case with contemporary styling, this accessory begs to be carried in your hand, but will agree to sit inside a bag, for a moment. Sized to fit a laptop, cords, phone, it carries and protects everything you really need. Easily stows inside a bag or can be used independently with the wrist strap. Eco Black + +Product Details: + +Lots of stretchy pockets and internal webbing to maximize organization +Extra padding inside to protect all your contents +100% recycled nylon from pre-consumer material + + +Available in 2 Sizes: + +Fits up to most 13"" laptops: 14.2"" W x 10.6"" H x .984"" D (L) + +Fits up to most 16"" laptops: 15.2"" W x 11.6"" H x .984"" D (XL)",2024-10-11T09:30:00,1,55.0,Returned,Approved,,2024-10-13T09:30:00,2024-10-28T09:30:00,Size too small for my laptop., +5603,65042,MEN'S LULULEMON ABC JOGGER,"Everyday performance featuring shape retention, quick-drying, four-way stretch, breathable and wrinkle-resistant. + +Product Details: + +Intended to sit just above ankle for 30"" inseam +Designed to sit 2-3 inches below your natural waist, it is recommend to measure your waist and adding an inch +Streamlined fit that gives glutes and thighs breathing room, then tapers to hem +Feels smooth, falls softly away from body +Wear the drawcord out or hide it inside for a flat waistband +Hidden media and coin pockets +Secure back pocket",2024-10-15T18:00:00,5,575.0,Delivered,"",,,,, +9522,50433,NVIDIA® GEFORCE RTX™ 4070 SUPER,"Product Description: Get equipped for supercharged gaming and creating with the NVIDIA® GeForce RTX™ 4070 SUPER. It’s built with the ultra-efficient NVIDIA Ada Lovelace architecture. Experience super-fast ray tracing, AI-accelerated performance with DLSS 3, new ways to create, and much more. + +CUDA Cores: 7168 +Boost Clock: 2.48 GHz +Memory Configuration: 12GB GDDR6X",2024-10-10T10:00:00,2,1598.0,Delivered,"",,,,, +9522,68658,NVIDIA® GEFORCE RTX™ 4090,"The NVIDIA® GeForce RTX® 4090 is the ultimate GeForce GPU. It brings an enormous leap in performance, efficiency, and AI-powered graphics. Experience ultra-high performance gaming, incredibly detailed virtual worlds, unprecedented productivity, and new ways to create. It’s powered by the NVIDIA Ada Lovelace architecture and comes with 24 GB of G6X memory to deliver the ultimate experience for gamers and creators. + +CUDA Cores: 16384 +Boost Clock: 2.52 GHz +Memory Configuration: 24GB GDDR6X + +Please refer to the graphics card comparison page for a full list of specifications: https://www.nvidia.com/en-us/geforce/graphics-cards/compare/",2024-10-15T14:30:00,1,1599.0,Returned,Approved,2024-10-16T14:30:00,2024-10-18T14:30:00,2024-11-02T14:30:00,Product was too advanced for my current needs., +9522,3480,NVIDIA® SHIELD™ TV PRO 2019,"NVIDIA® SHIELD® TV Pro is the supreme streaming media player - packed with features to make even the most demanding users proud. Beautifully designed to be the perfect centerpiece of your entertainment center. Enjoy a cinematic experience with stunning visuals brought to you by Dolby Vision HDR, and immersive audio with Dolby Atmos surround sound. Now powered by the latest NVIDIA Tegra X1+ processor, SHIELD TV is faster, and smarter. Level up to SHIELD TV Pro for more storage space, two USB 3.0 ports for expandability (storage expansion, USB cameras, USB keyboards and controllers, TV tuners, and more), Plex Media Server, SmartThings hub-ready (just add a SmartThings Link), AAA Android gaming, Twitch broadcasting, and 3GB RAM.",2024-10-12T09:00:00,1,199.99,Delivered,"",,,,, +9522,36447,NVIDIA® GEFORCE™ RTX 4060TI 8GB,"Game, stream, create. The GeForce RTX™ 4060 Ti lets you take on the latest games and apps with the ultra-efficient NVIDIA Ada Lovelace architecture. Experience immersive, AI-accelerated gaming with ray tracing and DLSS 3, and supercharge your creative process and productivity with NVIDIA Studio + +CUDA Cores: 4352 +Boost Clock: 2.54 GHz +Memory Configuration: 8GB GDDR6",2024-10-05T11:15:00,4,1196.0,Return Requested,Pending Approval,2024-10-07T11:15:00,,,Incompatibility with existing hardware., +9522,51111,NVIDIA JETSON ORIN NANO DEVELOPER KIT,"The NVIDIA® Jetson Orin™ Nano Developer Kit sets a new standard for creating entry-level AI-powered robots, smart drones, and intelligent cameras. Compact design, lots of connectors, and up to 40 TOPS of AI performance deliver everything you need to transform your visionary concepts into reality. + +With up to 80X the performance of Jetson Nano, the developer kit can run all modern AI models, including those for transformer and advanced robotics. It features a Jetson Orin Nano 8GB module, a reference carrier board that can accommodate all Orin Nano and Orin NX modules, and the power to run the entire NVIDIA AI software stack. This gives you the ideal platform for prototyping your next-gen edge AI solution. + +Get started with your AI journey!",2024-10-09T16:45:00,2,999.9,Shipped,"",,,,, +9522,99510,NVIDIA® GEFORCE RTX™ 4070,"Get equipped for stellar gaming and creating with the NVIDIA® GeForce RTX™ 4070. It’s built with the ultra-efficient NVIDIA Ada Lovelace architecture. Experience fast ray tracing, AI-accelerated performance with DLSS 3, new ways to create, and much more. + +CUDA Cores: 5888 +Boost Clock: 2.48 GHz +Memory Configuration: 12GB GDDR6X +Model 900-1G141-2544-000",2024-10-14T10:30:00,3,1797.0,Delivered,"",,,,, +9522,20539,JETSON NANO DEVELOPER KIT,"The power of modern AI is now available for makers, learners, and embedded developers everywhere. + +NVIDIA® Jetson Nano Developer Kit is a small, powerful computer that lets you run multiple neural networks in parallel for applications like image classification, object detection, segmentation, and speech processing. All in an easy-to-use platform that runs in as little as 5 watts. + +It’s simpler than ever to get started! Just insert a microSD card with the system image, boot the developer kit, and enjoy using the same NVIDIA JetPack SDK used across the NVIDIA Jetson™ family of products. + +This version of Jetson Nano Developer Kit has two camera connectors.",2024-10-01T08:00:00,5,745.0,Returned,Rejected,2024-10-03T08:00:00,2024-10-06T08:00:00,,Product did not meet expectations for AI projects.,Return request rejected due to misuse claims. +9522,93281,IGLOO COAST COOLER,"The Igloo Seadrift Cooler collection features MaxCold® insulation more foam to keep drinks and food cooler longer and a classic colorblock design. + +Features MaxCold® insulation with 25% more foam to keep drinks and food cooler longer +Dual zippered opening to large main compartment +Dual side pockets for water bottles and other belongings +Top hatch for easy, quick access to main compartment +Deep, gusseted front zippered pocket for additional storage +Comfortable, rubberized dual carry handles secure together effortlessly +Adjustable, removable shoulder strap with shoulder pad +PEVA heat-sealed lining +PVC and Phthalate free +36 can capacity",2024-10-04T12:00:00,1,95.0,In Transit,"",,,,, +9522,47589,NVIDIA LIGHTWEIGHT HOODIE,"78 oz., 52% Airlume combed and ring spun cotton, 48% polyester fleece +White cord drawstring +Retail fit +Kangaroo pockets +Ribbed cuffs and waistband",2024-10-20T15:00:00,3,120.0,Processing,"",,,,,Order has been in processing longer than expected. +9522,31197,MARINE LAYER CORBET FULL ZIP MEN'S,"We took the (dare we say) famous Corbet fabric and put it in a full zip jacket silhouette! + +Product Details: + +Black +68% Polyester, 16% Cotton, 16% Rayon +Signature Corbet Quilted Fabric +Standard fit +Wash cold, dry low +Made responsibly in China",2024-10-13T13:00:00,2,278.0,Cancelled,"",,,,,Order was cancelled due to stock issues. +6229,94036,NVIDIA® GEFORCE RTX™ 4090,"The NVIDIA® GeForce RTX® 4090 is the ultimate GeForce GPU. It brings an enormous leap in performance, efficiency, and AI-powered graphics. Experience ultra-high performance gaming, incredibly detailed virtual worlds, unprecedented productivity, and new ways to create. It’s powered by the NVIDIA Ada Lovelace architecture and comes with 24 GB of G6X memory to deliver the ultimate experience for gamers and creators. + +CUDA Cores: 16384 +Boost Clock: 2.52 GHz +Memory Configuration: 24GB GDDR6X + +Please refer to the graphics card comparison page for a full list of specifications: https://www.nvidia.com/en-us/geforce/graphics-cards/compare/",2024-10-15T10:30:00,2,3198.0,Delivered,"",,,,, +6229,52557,NVIDIA® SHIELD™ TV PRO 2019,"NVIDIA® SHIELD® TV Pro is the supreme streaming media player - packed with features to make even the most demanding users proud. Beautifully designed to be the perfect centerpiece of your entertainment center. Enjoy a cinematic experience with stunning visuals brought to you by Dolby Vision HDR, and immersive audio with Dolby Atmos surround sound. Now powered by the latest NVIDIA Tegra X1+ processor, SHIELD TV is faster, and smarter. Level up to SHIELD TV Pro for more storage space, two USB 3.0 ports for expandability (storage expansion, USB cameras, USB keyboards and controllers, TV tuners, and more), Plex Media Server, SmartThings hub-ready (just add a SmartThings Link), AAA Android gaming, Twitch broadcasting, and 3GB RAM.",2024-10-07T14:45:00,1,199.99,Return Requested,Requested,2024-10-10T14:45:00,,,Product did not meet expectations regarding streaming quality., +6229,96577,JETSON NANO DEVELOPER KIT,"The power of modern AI is now available for makers, learners, and embedded developers everywhere. + +NVIDIA® Jetson Nano Developer Kit is a small, powerful computer that lets you run multiple neural networks in parallel for applications like image classification, object detection, segmentation, and speech processing. All in an easy-to-use platform that runs in as little as 5 watts. + +It’s simpler than ever to get started! Just insert a microSD card with the system image, boot the developer kit, and enjoy using the same NVIDIA JetPack SDK used across the NVIDIA Jetson™ family of products. + +This version of Jetson Nano Developer Kit has two camera connectors.",2024-10-12T09:00:00,4,596.0,Returned,Approved,,2024-10-14T09:00:00,2024-10-30T09:00:00,"Device was too complicated for intended use, not suitable for beginners.", +6229,29933,NVIDIA® SHIELD™ TV 2019,"NVIDIA® SHIELD® TV is the ultimate streaming media player for the modern living room. Enjoy a cinematic experience with stunning visuals brought to you by Dolby Vision HDR, and immersive audio with Dolby Atmos surround sound. The new SHIELD TV is compact, stealth, and designed to disappear behind your entertainment center, right along with your cables. Now powered by the latest NVIDIA Tegra X1+ processor, SHIELD TV is faster, and smarter. Level up. Experience more.",2024-10-16T11:00:00,1,199.0,Cancelled,"",,,,,Order was cancelled due to a last-minute decision. +6229,24251,NVIDIA JETSON ORIN NANO DEVELOPER KIT,"The NVIDIA® Jetson Orin™ Nano Developer Kit sets a new standard for creating entry-level AI-powered robots, smart drones, and intelligent cameras. Compact design, lots of connectors, and up to 40 TOPS of AI performance deliver everything you need to transform your visionary concepts into reality. + +With up to 80X the performance of Jetson Nano, the developer kit can run all modern AI models, including those for transformer and advanced robotics. It features a Jetson Orin Nano 8GB module, a reference carrier board that can accommodate all Orin Nano and Orin NX modules, and the power to run the entire NVIDIA AI software stack. This gives you the ideal platform for prototyping your next-gen edge AI solution. + +Get started with your AI journey!",2024-10-18T13:15:00,2,999.9,In Transit,"",,,,, +6229,77196,NVIDIA® SHIELD™ REMOTE (2020),"Motion-activated, backlit buttons +Mic for voice search and control +Bluetooth connectivity +IR for TV control +Built-in lost remote locator +930-13700-2500-100",2024-10-05T15:25:00,3,164.97,Returned,Approved,,2024-10-10T15:25:00,2024-10-25T15:25:00,Remote had issues with connectivity and did not sync with devices., +6229,63802,NVIDIA® GEFORCE RTX™ 4070 SUPER,"Product Description: Get equipped for supercharged gaming and creating with the NVIDIA® GeForce RTX™ 4070 SUPER. It’s built with the ultra-efficient NVIDIA Ada Lovelace architecture. Experience super-fast ray tracing, AI-accelerated performance with DLSS 3, new ways to create, and much more. + +CUDA Cores: 7168 +Boost Clock: 2.48 GHz +Memory Configuration: 12GB GDDR6X",2024-10-08T16:00:00,1,799.0,Shipped,"",,,,, +6229,51961,RULER 2.0,"The new Ruler 2.0 highlights the Geforce RTX. + + Features include: + +35cm/12in ruler (1mm edge to first marker) +Image from Geforce RTX 2080Ti PCB +RLCs (Resistors, Inductors and Capacitors), Mosfets and Crystals +Gold color is ENIG (Electroless Nickel Immersion Gold) +Endeavor symbol +Simulated break-off tab of a PCB +Holes to facilitate hanging +Unique Serial Numbers",2024-10-11T14:00:00,5,67.5,Return Requested,Requested,2024-10-14T14:00:00,,,Item arrived with scratches that affect the display quality., +6229,44097,"12"" MARLED KNIT CUFF BEANIE","12"" Marled Beanie with Cuff or Slouch, Regular Gauge Knit (100% Acrylic), Stretch to Fit",2024-10-20T12:00:00,6,60.0,Delivered,"",,,,, +6229,29599,RULER,"Made from standard FR4 dielectric with an ENIG plating finish, this ruler is designed to be an engineer's best friend + +Some features include: + +RLCs (Resistors, Inductors and Capacitors), Mosfets and Crystals +Formula quick guide +Footprints for some advanced packages, including memories and some ICs + +All bulk orders must be charged through a cost center and submitted via a Purchase Requisition (PR) through Coupa or NVIDIA IBR. ",2024-10-06T17:50:00,2,8.0,Delayed,"",,,,,Order has been delayed due to unforeseen shipping issues. +8301,37702,NVIDIA® SHIELD™ REMOTE (2020),"Motion-activated, backlit buttons +Mic for voice search and control +Bluetooth connectivity +IR for TV control +Built-in lost remote locator +930-13700-2500-100",2024-10-05T14:30:00,2,109.98,Delivered,"",,,,, +8301,71718,JETSON NANO DEVELOPER KIT,"The power of modern AI is now available for makers, learners, and embedded developers everywhere. + +NVIDIA® Jetson Nano Developer Kit is a small, powerful computer that lets you run multiple neural networks in parallel for applications like image classification, object detection, segmentation, and speech processing. All in an easy-to-use platform that runs in as little as 5 watts. + +It’s simpler than ever to get started! Just insert a microSD card with the system image, boot the developer kit, and enjoy using the same NVIDIA JetPack SDK used across the NVIDIA Jetson™ family of products. + +This version of Jetson Nano Developer Kit has two camera connectors.",2024-10-10T10:15:00,1,149.0,Return Requested,Requested,2024-10-12T10:00:00,,,Product did not meet the intended use for AI training., +8301,24497,NVIDIA® GEFORCE™ RTX 4060TI 8GB,"Game, stream, create. The GeForce RTX™ 4060 Ti lets you take on the latest games and apps with the ultra-efficient NVIDIA Ada Lovelace architecture. Experience immersive, AI-accelerated gaming with ray tracing and DLSS 3, and supercharge your creative process and productivity with NVIDIA Studio + +CUDA Cores: 4352 +Boost Clock: 2.54 GHz +Memory Configuration: 8GB GDDR6",2024-10-15T12:00:00,3,897.0,Returned,Approved,,2024-10-16T12:00:00,2024-11-02T12:00:00,Product was not compatible with existing setup., +8301,53810,NVIDIA® GEFORCE RTX™ 4070 SUPER,"Product Description: Get equipped for supercharged gaming and creating with the NVIDIA® GeForce RTX™ 4070 SUPER. It’s built with the ultra-efficient NVIDIA Ada Lovelace architecture. Experience super-fast ray tracing, AI-accelerated performance with DLSS 3, new ways to create, and much more. + +CUDA Cores: 7168 +Boost Clock: 2.48 GHz +Memory Configuration: 12GB GDDR6X",2024-10-01T09:00:00,1,799.0,Cancelled,"",,,,,Order was cancelled due to payment processing delay. +8301,67088,NVIDIA JETSON ORIN NANO DEVELOPER KIT,"The NVIDIA® Jetson Orin™ Nano Developer Kit sets a new standard for creating entry-level AI-powered robots, smart drones, and intelligent cameras. Compact design, lots of connectors, and up to 40 TOPS of AI performance deliver everything you need to transform your visionary concepts into reality. + +With up to 80X the performance of Jetson Nano, the developer kit can run all modern AI models, including those for transformer and advanced robotics. It features a Jetson Orin Nano 8GB module, a reference carrier board that can accommodate all Orin Nano and Orin NX modules, and the power to run the entire NVIDIA AI software stack. This gives you the ideal platform for prototyping your next-gen edge AI solution. + +Get started with your AI journey!",2024-10-08T16:45:00,2,999.9,In Transit,"",,,,,Order is delayed due to shipping issues. +8301,90567,NVIDIA® GEFORCE RTX™ 4070,"Get equipped for stellar gaming and creating with the NVIDIA® GeForce RTX™ 4070. It’s built with the ultra-efficient NVIDIA Ada Lovelace architecture. Experience fast ray tracing, AI-accelerated performance with DLSS 3, new ways to create, and much more. + +CUDA Cores: 5888 +Boost Clock: 2.48 GHz +Memory Configuration: 12GB GDDR6X +Model 900-1G141-2544-000",2024-10-14T11:15:00,1,599.0,Returned,Approved,,2024-10-17T11:00:00,2024-11-01T11:00:00,Performance did not match expectations., +8301,81103,NVIDIA® SHIELD™ TV PRO 2019,"NVIDIA® SHIELD® TV Pro is the supreme streaming media player - packed with features to make even the most demanding users proud. Beautifully designed to be the perfect centerpiece of your entertainment center. Enjoy a cinematic experience with stunning visuals brought to you by Dolby Vision HDR, and immersive audio with Dolby Atmos surround sound. Now powered by the latest NVIDIA Tegra X1+ processor, SHIELD TV is faster, and smarter. Level up to SHIELD TV Pro for more storage space, two USB 3.0 ports for expandability (storage expansion, USB cameras, USB keyboards and controllers, TV tuners, and more), Plex Media Server, SmartThings hub-ready (just add a SmartThings Link), AAA Android gaming, Twitch broadcasting, and 3GB RAM.",2024-10-18T15:30:00,1,199.99,Processing,"",,,,,Order is being processed. +8301,54212,MARINE LAYER CORBET FULL ZIP VEST WOMEN'S,"We took the (dare we say) famous Corbet fabric and put it in a full zip vest silhouette! + +Product Details: + +68% Polyester, 16% Cotton, 16% Rayon +Signature Corbet Quilted Fabric +Standard fit +Wash cold, dry low +Made responsibly in China",2024-10-06T09:45:00,4,476.0,Delivered,"",,,,, +8301,48309,COTTON TOUCH POLO WOMEN'S,"This polyester polo performs with the comfortable feel of cotton. Just right for the workday or after hours, this sophisticated style has subtle texture, manages moisture, keeps you fresher with odor-controlling technology and feels great against your skin. + +Product Details: + +Made from 5.8 oz. 95/5 poly/spandex jersey +Self-fabric collar +Tag-free label +Y-neck placket",2024-10-11T13:20:00,3,75.0,Returned,Rejected,,2024-10-13T13:00:00,,Product size was not as described.,Return was rejected due to incorrect size selection. +8301,43853,NIKE 2.0 POLO MEN'S,"100% polyester Dri-FIT fabric +Flat knit collar and three-button placket +Rolled-forward shoulder seams +Open hem sleeves and open hem +Contrast Swoosh logo is embroidered on the left sleeve",2024-10-09T08:30:00,2,80.0,Delivered,"",,,,, +7154,22723,NVIDIA® SHIELD™ REMOTE (2020),"Motion-activated, backlit buttons +Mic for voice search and control +Bluetooth connectivity +IR for TV control +Built-in lost remote locator +930-13700-2500-100",2024-10-05T12:30:00,2,109.98,Delivered,"",,,,, +7154,85009,NVIDIA® GEFORCE™ RTX 4060TI 8GB,"Game, stream, create. The GeForce RTX™ 4060 Ti lets you take on the latest games and apps with the ultra-efficient NVIDIA Ada Lovelace architecture. Experience immersive, AI-accelerated gaming with ray tracing and DLSS 3, and supercharge your creative process and productivity with NVIDIA Studio + +CUDA Cores: 4352 +Boost Clock: 2.54 GHz +Memory Configuration: 8GB GDDR6",2024-10-09T09:00:00,1,299.0,Returned,Approved,2024-10-10T09:00:00,2024-10-12T09:00:00,2024-10-27T09:00:00,"Too complex for my needs, found it overwhelming.", +7154,34078,NVIDIA® SHIELD™ TV PRO 2019,"NVIDIA® SHIELD® TV Pro is the supreme streaming media player - packed with features to make even the most demanding users proud. Beautifully designed to be the perfect centerpiece of your entertainment center. Enjoy a cinematic experience with stunning visuals brought to you by Dolby Vision HDR, and immersive audio with Dolby Atmos surround sound. Now powered by the latest NVIDIA Tegra X1+ processor, SHIELD TV is faster, and smarter. Level up to SHIELD TV Pro for more storage space, two USB 3.0 ports for expandability (storage expansion, USB cameras, USB keyboards and controllers, TV tuners, and more), Plex Media Server, SmartThings hub-ready (just add a SmartThings Link), AAA Android gaming, Twitch broadcasting, and 3GB RAM.",2024-10-15T15:00:00,1,199.99,Returned,Rejected,2024-10-16T15:00:00,2024-10-18T15:00:00,,Device stopped working after one week.,Device malfunctioned and is not covered under warranty. +7154,42084,NVIDIA® GEFORCE RTX™ 4080,"The NVIDIA® GeForce RTX™ 4080 delivers the ultra performance and features that enthusiast gamers and creators demand. Bring your games and creative projects to life with ray tracing and AI-powered graphics. It's powered by the ultra-efficient NVIDIA Ada Lovelace architecture and 16GB of superfast G6X memory. + +CUDA Cores: 9728 +Boost Clock: 2.51 GHz +Memory Configuration: 16GB GDDR6X +Please refer to the graphics card comparison page for a full list of specifications: https://www.nvidia.com/en-us/geforce/graphics-cards/compare/",2024-10-11T10:30:00,1,1199.0,In Transit,"",,,,, +7154,89884,NVIDIA JETSON ORIN NANO DEVELOPER KIT,"The NVIDIA® Jetson Orin™ Nano Developer Kit sets a new standard for creating entry-level AI-powered robots, smart drones, and intelligent cameras. Compact design, lots of connectors, and up to 40 TOPS of AI performance deliver everything you need to transform your visionary concepts into reality. + +With up to 80X the performance of Jetson Nano, the developer kit can run all modern AI models, including those for transformer and advanced robotics. It features a Jetson Orin Nano 8GB module, a reference carrier board that can accommodate all Orin Nano and Orin NX modules, and the power to run the entire NVIDIA AI software stack. This gives you the ideal platform for prototyping your next-gen edge AI solution. + +Get started with your AI journey!",2024-10-20T11:00:00,1,499.95,Delivered,"",,,,, +7154,46993,NVIDIA® SHIELD™ TV 2019,"NVIDIA® SHIELD® TV is the ultimate streaming media player for the modern living room. Enjoy a cinematic experience with stunning visuals brought to you by Dolby Vision HDR, and immersive audio with Dolby Atmos surround sound. The new SHIELD TV is compact, stealth, and designed to disappear behind your entertainment center, right along with your cables. Now powered by the latest NVIDIA Tegra X1+ processor, SHIELD TV is faster, and smarter. Level up. Experience more.",2024-10-03T14:00:00,3,597.0,Cancelled,"",,,,,Order cancelled upon request due to a change in need. +7154,9205,NVIDIA® GEFORCE RTX™ 4070 SUPER,"Product Description: Get equipped for supercharged gaming and creating with the NVIDIA® GeForce RTX™ 4070 SUPER. It’s built with the ultra-efficient NVIDIA Ada Lovelace architecture. Experience super-fast ray tracing, AI-accelerated performance with DLSS 3, new ways to create, and much more. + +CUDA Cores: 7168 +Boost Clock: 2.48 GHz +Memory Configuration: 12GB GDDR6X",2024-10-08T13:00:00,4,3196.0,Returned,Approved,2024-10-09T13:00:00,2024-10-11T13:00:00,2024-10-26T13:00:00,Product did not meet performance expectations., +7154,22931,VICTORINOX LAPTOP WOMEN'S TOTE,"16"" Women's Laptop Tote +Padded 15.6"" laptop compartment and dedicated 10"" tablet pocket +Essentials organizer with anti-scratch lining +Feet protect the bottom of the bag +Interior zippered pocket +Removable adjustable shoulder strap +Rear pocket unzips to become a Pass-Thru trolley sleeve to slide over the handle of wheeled luggage for easy travel",2024-10-06T08:00:00,2,280.0,Return Requested,Requested,2024-10-07T08:00:00,,,Color mismatch; ordered thinking it was black., +7154,93937,MARINE LAYER CORBET FULL ZIP VEST MEN'S,"We took the (dare we say) famous Corbet fabric and put it in a full zip vest silhouette! + +68% Polyester, 16% Cotton, 16% Rayon +Signature Corbet Quilted Fabric +Standard fit +Wash cold, dry low +Made responsibly in China",2024-10-04T14:45:00,1,119.0,Shipped,"",,,,, +7154,28089,NIKE 2.0 POLO MEN'S,"100% polyester Dri-FIT fabric +Flat knit collar and three-button placket +Rolled-forward shoulder seams +Open hem sleeves and open hem +Contrast Swoosh logo is embroidered on the left sleeve",2024-10-14T17:30:00,4,160.0,Out for Delivery,"",,,,, +4706,83007,NVIDIA® GEFORCE RTX™ 4090,"The NVIDIA® GeForce RTX® 4090 is the ultimate GeForce GPU. It brings an enormous leap in performance, efficiency, and AI-powered graphics. Experience ultra-high performance gaming, incredibly detailed virtual worlds, unprecedented productivity, and new ways to create. It’s powered by the NVIDIA Ada Lovelace architecture and comes with 24 GB of G6X memory to deliver the ultimate experience for gamers and creators. + +CUDA Cores: 16384 +Boost Clock: 2.52 GHz +Memory Configuration: 24GB GDDR6X + +Please refer to the graphics card comparison page for a full list of specifications: https://www.nvidia.com/en-us/geforce/graphics-cards/compare/",2024-10-05T10:00:00,2,3198.0,Returned,Approved,2024-10-06T10:00:00,2024-10-09T10:00:00,2024-10-25T10:00:00,Device did not meet performance expectations for high-end gaming., +4706,18855,NVIDIA JETSON ORIN NANO DEVELOPER KIT,"The NVIDIA® Jetson Orin™ Nano Developer Kit sets a new standard for creating entry-level AI-powered robots, smart drones, and intelligent cameras. Compact design, lots of connectors, and up to 40 TOPS of AI performance deliver everything you need to transform your visionary concepts into reality. + +With up to 80X the performance of Jetson Nano, the developer kit can run all modern AI models, including those for transformer and advanced robotics. It features a Jetson Orin Nano 8GB module, a reference carrier board that can accommodate all Orin Nano and Orin NX modules, and the power to run the entire NVIDIA AI software stack. This gives you the ideal platform for prototyping your next-gen edge AI solution. + +Get started with your AI journey!",2024-10-10T10:00:00,1,499.95,Delivered,"",,,,, +4706,76125,NVIDIA® SHIELD™ REMOTE (2020),"Motion-activated, backlit buttons +Mic for voice search and control +Bluetooth connectivity +IR for TV control +Built-in lost remote locator +930-13700-2500-100",2024-10-15T10:00:00,3,164.97,Return Requested,Requested,2024-10-16T10:00:00,,,Remote control frequently disconnects during use., +4706,70214,NVIDIA® SHIELD™ TV PRO 2019,"NVIDIA® SHIELD® TV Pro is the supreme streaming media player - packed with features to make even the most demanding users proud. Beautifully designed to be the perfect centerpiece of your entertainment center. Enjoy a cinematic experience with stunning visuals brought to you by Dolby Vision HDR, and immersive audio with Dolby Atmos surround sound. Now powered by the latest NVIDIA Tegra X1+ processor, SHIELD TV is faster, and smarter. Level up to SHIELD TV Pro for more storage space, two USB 3.0 ports for expandability (storage expansion, USB cameras, USB keyboards and controllers, TV tuners, and more), Plex Media Server, SmartThings hub-ready (just add a SmartThings Link), AAA Android gaming, Twitch broadcasting, and 3GB RAM.",2024-10-05T10:00:00,1,199.99,Shipped,"",,,,, +4706,50036,NVIDIA® GEFORCE RTX™ 4070,"Get equipped for stellar gaming and creating with the NVIDIA® GeForce RTX™ 4070. It’s built with the ultra-efficient NVIDIA Ada Lovelace architecture. Experience fast ray tracing, AI-accelerated performance with DLSS 3, new ways to create, and much more. + +CUDA Cores: 5888 +Boost Clock: 2.48 GHz +Memory Configuration: 12GB GDDR6X +Model 900-1G141-2544-000",2024-10-02T10:00:00,1,599.0,Return Requested,Pending Approval,2024-10-03T10:00:00,,,Graphics card did not meet compatibility requirements., +4706,41445,NVIDIA® GEFORCE RTX™ 4080,"The NVIDIA® GeForce RTX™ 4080 delivers the ultra performance and features that enthusiast gamers and creators demand. Bring your games and creative projects to life with ray tracing and AI-powered graphics. It's powered by the ultra-efficient NVIDIA Ada Lovelace architecture and 16GB of superfast G6X memory. + +CUDA Cores: 9728 +Boost Clock: 2.51 GHz +Memory Configuration: 16GB GDDR6X +Please refer to the graphics card comparison page for a full list of specifications: https://www.nvidia.com/en-us/geforce/graphics-cards/compare/",2024-10-12T10:00:00,2,2398.0,Cancelled,"",,,,,Order cancelled due to pricing error. +4706,34172,JETSON NANO DEVELOPER KIT,"The power of modern AI is now available for makers, learners, and embedded developers everywhere. + +NVIDIA® Jetson Nano Developer Kit is a small, powerful computer that lets you run multiple neural networks in parallel for applications like image classification, object detection, segmentation, and speech processing. All in an easy-to-use platform that runs in as little as 5 watts. + +It’s simpler than ever to get started! Just insert a microSD card with the system image, boot the developer kit, and enjoy using the same NVIDIA JetPack SDK used across the NVIDIA Jetson™ family of products. + +This version of Jetson Nano Developer Kit has two camera connectors.",2024-10-07T10:00:00,4,596.0,Delivered,"",,,,, +4706,37929,32 OZ. NVIDIA ICONOGRAPHY BOTTLE,"The CamelBak Mag bottle is made from Eastman Tritan RENEW, a durable and sustainable material containing 50% recycled plastic. The bottle is shatter-, stain- and odor-resistant, and it's wide mouth makes it easy to fill or clean. The two-finger magnetic carry handle keeps the cap stowed while drinking, and the angled spout provides a high flow of water without sloshing or spilling. BPA-free. + +Product Details: + +Dimensions: 9.50"" H x 3.70""W x 3.70"" D +Single-wall construction +Handwash only +Spill-proof with included lid +32 oz.",2024-10-08T10:00:00,5,140.0,Returned,Rejected,2024-10-09T10:00:00,2024-10-11T10:00:00,,Item arrived with a dent and scratches.,Return request rejected due to signs of use. +4706,63422,COMPUTER CARE KIT,"Whether you want to show off some cool laptop stickers, clean your electronics in style or cover your webcam, this is the kit for you! + +This Computer Care Kit contains: + +Razor Webcam Cover +Screen cleaner +5-piece sticker set (Features 2 new sheet designs and 3 NVIDIA stickers) +Size: 7"" x 9""",2024-10-01T10:00:00,2,24.0,In Transit,"",,,,, +4706,44400,14 OZ. NVIDIA LOGO MUG,"14 oz. ceramic mug features a barrel design, large handle, matte exterior finish and gloss colored interior. + +Product Details: + +3-5/8"" H x 3-5/8 (5 w/handle)"" +Hand wash recommended +Microwave safe",2024-10-20T10:00:00,6,45.0,Delivered,"",,,,, +4402,64056,NVIDIA® GEFORCE RTX™ 4070,"Get equipped for stellar gaming and creating with the NVIDIA® GeForce RTX™ 4070. It’s built with the ultra-efficient NVIDIA Ada Lovelace architecture. Experience fast ray tracing, AI-accelerated performance with DLSS 3, new ways to create, and much more. + +CUDA Cores: 5888 +Boost Clock: 2.48 GHz +Memory Configuration: 12GB GDDR6X +Model 900-1G141-2544-000",2024-10-10T10:00:00,3,1797.0,Returned,Approved,2024-10-13T10:00:00,2024-10-15T10:00:00,2024-10-30T10:00:00,Item did not meet performance expectations for gaming., +4402,33037,NVIDIA® SHIELD™ TV PRO 2019,"NVIDIA® SHIELD® TV Pro is the supreme streaming media player - packed with features to make even the most demanding users proud. Beautifully designed to be the perfect centerpiece of your entertainment center. Enjoy a cinematic experience with stunning visuals brought to you by Dolby Vision HDR, and immersive audio with Dolby Atmos surround sound. Now powered by the latest NVIDIA Tegra X1+ processor, SHIELD TV is faster, and smarter. Level up to SHIELD TV Pro for more storage space, two USB 3.0 ports for expandability (storage expansion, USB cameras, USB keyboards and controllers, TV tuners, and more), Plex Media Server, SmartThings hub-ready (just add a SmartThings Link), AAA Android gaming, Twitch broadcasting, and 3GB RAM.",2024-10-05T10:00:00,1,199.99,Delivered,"",,,,, +4402,7161,NVIDIA JETSON ORIN NANO DEVELOPER KIT,"The NVIDIA® Jetson Orin™ Nano Developer Kit sets a new standard for creating entry-level AI-powered robots, smart drones, and intelligent cameras. Compact design, lots of connectors, and up to 40 TOPS of AI performance deliver everything you need to transform your visionary concepts into reality. + +With up to 80X the performance of Jetson Nano, the developer kit can run all modern AI models, including those for transformer and advanced robotics. It features a Jetson Orin Nano 8GB module, a reference carrier board that can accommodate all Orin Nano and Orin NX modules, and the power to run the entire NVIDIA AI software stack. This gives you the ideal platform for prototyping your next-gen edge AI solution. + +Get started with your AI journey!",2024-10-01T10:00:00,2,999.9,Return Requested,Requested,2024-10-03T10:00:00,,,Product did not work as expected for AI development., +4402,70054,NVIDIA® SHIELD™ TV 2019,"NVIDIA® SHIELD® TV is the ultimate streaming media player for the modern living room. Enjoy a cinematic experience with stunning visuals brought to you by Dolby Vision HDR, and immersive audio with Dolby Atmos surround sound. The new SHIELD TV is compact, stealth, and designed to disappear behind your entertainment center, right along with your cables. Now powered by the latest NVIDIA Tegra X1+ processor, SHIELD TV is faster, and smarter. Level up. Experience more.",2024-10-12T10:00:00,1,199.0,Shipped,"",,,,, +4402,8542,JETSON NANO DEVELOPER KIT,"The power of modern AI is now available for makers, learners, and embedded developers everywhere. + +NVIDIA® Jetson Nano Developer Kit is a small, powerful computer that lets you run multiple neural networks in parallel for applications like image classification, object detection, segmentation, and speech processing. All in an easy-to-use platform that runs in as little as 5 watts. + +It’s simpler than ever to get started! Just insert a microSD card with the system image, boot the developer kit, and enjoy using the same NVIDIA JetPack SDK used across the NVIDIA Jetson™ family of products. + +This version of Jetson Nano Developer Kit has two camera connectors.",2024-10-15T10:00:00,2,298.0,In Transit,"",,,,, +4402,99659,NVIDIA® GEFORCE RTX™ 4070 SUPER,"Product Description: Get equipped for supercharged gaming and creating with the NVIDIA® GeForce RTX™ 4070 SUPER. It’s built with the ultra-efficient NVIDIA Ada Lovelace architecture. Experience super-fast ray tracing, AI-accelerated performance with DLSS 3, new ways to create, and much more. + +CUDA Cores: 7168 +Boost Clock: 2.48 GHz +Memory Configuration: 12GB GDDR6X",2024-10-18T10:00:00,1,799.0,Cancelled,"",,,,,Order was cancelled before shipping due to payment issue. +4402,65954,NVIDIA® GEFORCE™ RTX 4060TI 8GB,"Game, stream, create. The GeForce RTX™ 4060 Ti lets you take on the latest games and apps with the ultra-efficient NVIDIA Ada Lovelace architecture. Experience immersive, AI-accelerated gaming with ray tracing and DLSS 3, and supercharge your creative process and productivity with NVIDIA Studio + +CUDA Cores: 4352 +Boost Clock: 2.54 GHz +Memory Configuration: 8GB GDDR6",2024-10-02T10:00:00,4,1196.0,Delivered,"",,,,, +4402,73966,25 OZ. NVIDIA ICONOGRAPHY BOTTLE,"The CamelBak® eddy®+ water bottle is made from Eastman Tritan™ RENEW, a durable and sustainable material containing 50% recycled plastic. The bottle is shatter, stain and odor-resistant, and its wide mouth makes it easy to fill or clean. Enjoy spill-proof sipping at work or on the trail thanks to the screw-on lid with bite valve and one-finger carry handle. BPA-free + +Product Details: + +Dimensions: 10.0"" H x 3.0""W x 3.0"" D +Single-wall construction +Handwash only +Straw Top +25 oz.",2024-10-07T10:00:00,8,192.0,Returned,Approved,2024-10-10T10:00:00,2024-10-12T10:00:00,2024-10-27T10:00:00,"Quality issue with material, leak during use.", +4402,52719,GEFORCE 40-SERIES ALUMINUM COASTER,"A custom-engraved drink coaster made from a solid piece of aluminum with a cork backing. Durable and long-lasting. Laser engraved design. + +Product Details: + +Material: Black Aluminum",2024-10-04T10:00:00,5,75.0,Processing,"",,,,,Order processing longer than expected due to high demand. +4402,41544,NVIDIA CORDUROY HAT,"100% cotton corduroy +6-panel +Unstructured +Low-profile",2024-10-06T10:00:00,6,108.0,Out for Delivery,"",,,,, +6301,85763,NVIDIA® GEFORCE RTX™ 4080,"The NVIDIA® GeForce RTX™ 4080 delivers the ultra performance and features that enthusiast gamers and creators demand. Bring your games and creative projects to life with ray tracing and AI-powered graphics. It's powered by the ultra-efficient NVIDIA Ada Lovelace architecture and 16GB of superfast G6X memory. + +CUDA Cores: 9728 +Boost Clock: 2.51 GHz +Memory Configuration: 16GB GDDR6X +Please refer to the graphics card comparison page for a full list of specifications: https://www.nvidia.com/en-us/geforce/graphics-cards/compare/",2024-10-05T10:30:00,2,2398.0,Delivered,"",,,,, +6301,91283,NVIDIA® SHIELD™ TV PRO 2019,"NVIDIA® SHIELD® TV Pro is the supreme streaming media player - packed with features to make even the most demanding users proud. Beautifully designed to be the perfect centerpiece of your entertainment center. Enjoy a cinematic experience with stunning visuals brought to you by Dolby Vision HDR, and immersive audio with Dolby Atmos surround sound. Now powered by the latest NVIDIA Tegra X1+ processor, SHIELD TV is faster, and smarter. Level up to SHIELD TV Pro for more storage space, two USB 3.0 ports for expandability (storage expansion, USB cameras, USB keyboards and controllers, TV tuners, and more), Plex Media Server, SmartThings hub-ready (just add a SmartThings Link), AAA Android gaming, Twitch broadcasting, and 3GB RAM.",2024-10-12T14:00:00,1,199.99,Delivered,"",,,,, +6301,23540,NVIDIA® SHIELD™ REMOTE (2020),"Motion-activated, backlit buttons +Mic for voice search and control +Bluetooth connectivity +IR for TV control +Built-in lost remote locator +930-13700-2500-100",2024-10-15T09:25:00,3,164.97,Returned,Approved,2024-10-17T09:25:00,2024-10-18T09:25:00,2024-10-22T09:25:00,The remote was non-responsive and not connecting as expected., +6301,49362,JETSON NANO DEVELOPER KIT,"The power of modern AI is now available for makers, learners, and embedded developers everywhere. + +NVIDIA® Jetson Nano Developer Kit is a small, powerful computer that lets you run multiple neural networks in parallel for applications like image classification, object detection, segmentation, and speech processing. All in an easy-to-use platform that runs in as little as 5 watts. + +It’s simpler than ever to get started! Just insert a microSD card with the system image, boot the developer kit, and enjoy using the same NVIDIA JetPack SDK used across the NVIDIA Jetson™ family of products. + +This version of Jetson Nano Developer Kit has two camera connectors.",2024-10-02T11:15:00,1,149.0,Cancelled,"",,,,,Order was cancelled due to shipping delays. +6301,49513,NVIDIA® GEFORCE RTX™ 4070,"Get equipped for stellar gaming and creating with the NVIDIA® GeForce RTX™ 4070. It’s built with the ultra-efficient NVIDIA Ada Lovelace architecture. Experience fast ray tracing, AI-accelerated performance with DLSS 3, new ways to create, and much more. + +CUDA Cores: 5888 +Boost Clock: 2.48 GHz +Memory Configuration: 12GB GDDR6X +Model 900-1G141-2544-000",2024-10-09T13:30:00,4,2396.0,Returned,Requested,2024-10-14T13:30:00,2024-10-16T13:30:00,,The graphics card was incompatible with current system requirements., +6301,26879,NVIDIA® GEFORCE™ RTX 4060TI 8GB,"Game, stream, create. The GeForce RTX™ 4060 Ti lets you take on the latest games and apps with the ultra-efficient NVIDIA Ada Lovelace architecture. Experience immersive, AI-accelerated gaming with ray tracing and DLSS 3, and supercharge your creative process and productivity with NVIDIA Studio + +CUDA Cores: 4352 +Boost Clock: 2.54 GHz +Memory Configuration: 8GB GDDR6",2024-10-20T15:00:00,5,1495.0,Shipped,"",,,,, +6301,95899,NVIDIA® GEFORCE RTX™ 4090,"The NVIDIA® GeForce RTX® 4090 is the ultimate GeForce GPU. It brings an enormous leap in performance, efficiency, and AI-powered graphics. Experience ultra-high performance gaming, incredibly detailed virtual worlds, unprecedented productivity, and new ways to create. It’s powered by the NVIDIA Ada Lovelace architecture and comes with 24 GB of G6X memory to deliver the ultimate experience for gamers and creators. + +CUDA Cores: 16384 +Boost Clock: 2.52 GHz +Memory Configuration: 24GB GDDR6X + +Please refer to the graphics card comparison page for a full list of specifications: https://www.nvidia.com/en-us/geforce/graphics-cards/compare/",2024-10-08T16:45:00,1,1599.0,In Transit,"",,,,, +6301,8395,NVIDIA FLOW LARGE MOUSEPAD,"Dimensions: 27.20"" x 11.75"" +2.22 sq. ft. of full-color space +Anti-slip base keeps the mousepad from sliding around +Smooth surface for maximized speed, accuracy, and control +Crafted so edges remain flat +For use on any flat, hard surface",2024-10-04T08:10:00,5,100.0,Processing,"",,,,,Order is processing longer than expected. +6301,64566,MEN'S BEYOND YOGA CREW T-SHIRT - DARKEST NIGHT,"Beyond Yoga Featherweight Always Beyond Crew T-shirt is a classic top you can wear anytime, anywhere. Darkest Night + +Product Details: + +Lightweight, ultrasoft +4-way stretch fabric +Crew neckline +Classic fit +94% Polyester 6% Elastane",2024-10-19T12:15:00,1,66.0,Delivered,"",,,,, +6301,55675,OGIO® STRATAGEM BACKPACK,"Materials: 600D Oxford polyester, 420D dobby polyester +Padded fleece-lined interior laptop compartment fits most 17"" laptops +Integrated foam panels keep your electronics and other valuables protected +Padded tablet/e-reader sleeve +Large main compartment for books, binders and files +Padded back panel with moisture-wicking air mesh +Dual side water bottle/accessory holders +Easy access front stash pocket",2024-10-11T19:45:00,2,200.0,Returned,Rejected,2024-10-16T19:45:00,2024-10-17T19:45:00,,The bag arrived with a manufacturing defect.,Returns not accepted for items with visible defects. diff --git a/deploy/compose/README.md b/deploy/compose/README.md new file mode 100644 index 0000000..66ea5e3 --- /dev/null +++ b/deploy/compose/README.md @@ -0,0 +1,221 @@ +# Docker deployment guide +- [Docker deployment guide](#docker-deployment-guide) + - [1. Prerequisites](#1-prerequisites) + - [Software requirements](#software-requirements) + - [Get an NVIDIA API Catalog key](#get-an-nvidia-api-catalog-key) + - [Get an NVIDIA NGC API Key](#get-an-nvidia-ngc-api-key) + - [2. Start the required microservices](#2-start-the-required-microservices) + - [Deploy with cloud hosted models](#deploy-with-cloud-hosted-models) + - [Deploy with on-prem models](#deploy-with-on-prem-models) + - [3. Data Ingestion](#3-data-ingestion) + - [4. Testing](#4-testing) + - [Using sample frontend](#using-sample-frontend) + - [Using standalone API's](#using-standalone-apis) + - [5. API References](#5-api-references) + - [6. Stopping Services](#6-stopping-services) + - [7. Customizing GPUs for on-prem NIM Deployment](#7-customizing-gpus-for-on-prem-nim-deployment) + +### 1. Prerequisites + +#### Software requirements +- Install Docker Engine and Docker Compose. + Refer to the instructions for [Ubuntu](https://docs.docker.com/engine/install/ubuntu/). + + Ensure the Docker Compose plugin version is 2.29.1 or higher. + Run `docker compose version` to confirm. + Refer to [Install the Compose plugin](https://docs.docker.com/compose/install/linux/) + in the Docker documentation for more information. + +- Optional: You can run some containers with GPU acceleration, such as Milvus and NVIDIA NIM for LLMs. + To configure Docker for GPU-accelerated containers, [install](https://docs.nvidia.com/datacenter/cloud-native/container-toolkit/latest/install-guide.html) the NVIDIA Container Toolkit. + + +#### Get an NVIDIA API Catalog key + +This step can be skipped if you are interested in [deploying the models on-prem.](#deploy-with-on-prem-models) +This key will be used to access cloud hosted models in [API Catalog](https://build.nvidia.com/explore/discover). +You can use different model API endpoints with the same API key. + +1. Navigate to . + +2. Find the **Llama 3.1 70B Instruct** card and click the card. + ![Llama 3.1 70B Instruct model card](../../docs/imgs/llama3.1-70b-instruct-model-card.png) + +3. Click **Get API Key**. + ![API section of the model page.](../../docs/imgs/llama3.1-70b-instruct-get-api-key.png) + +4. Click **Generate Key**. + + ![Generate key window.](../../docs/imgs/api-catalog-generate-api-key.png) + +5. Click **Copy Key** and then save the API key. + The key begins with the letters nvapi-. + + ![Key Generated window.](../../docs/imgs/key-generated.png) + +6. Export NVIDIA_API_KEY + ``` + export NVIDIA_API_KEY="give your NVIDIA api key" + ``` + + +#### Get an NVIDIA NGC API Key + +The NVIDIA NGC API Key is a mandatory key that is required to use this blueprint. This is needed to log into the NVIDIA container registry, `nvcr.io`, and to pull secure container images used in this NVIDIA NIM Blueprint. + +Refer to [Generating NGC API Keys](https://docs.nvidia.com/ngc/gpu-cloud/ngc-user-guide/index.html#generating-api-key) +in the _NVIDIA NGC User Guide_ for more information. + +After you get your NGC API key, run `docker login nvcr.io` and provide the credentials. + + +### 2. Start the required microservices + +#### Deploy with cloud hosted models + + + `docker compose -f deploy/compose/docker-compose.yaml up -d` + + +On deployment following containers should be up and running + + ``` + $ docker ps --format "table {{.ID}}\t{{.Names}}\t{{.Status}}" + CONTAINER ID NAMES STATUS + b6a1853c4e81 agent-chain-server Up 3 hours + 91487a937be1 analytics-server Up 3 hours + 0112183489fe unstructured-retriever Up 3 hours + 9970bb569dbd structured-retriever Up 3 hours + 4ea1a3267a17 milvus-standalone Up 3 hours + c988dcdd67c3 postgres_container Up 3 hours (healthy) + 3dc1c2262903 milvus-minio Up 3 hours (healthy) + eee52b7302fb milvus-etcd Up 3 hours (healthy) + 907f5702f82b compose-redis-1 Up 3 hours + fcde431d44de pgadmin_container Up 3 hours + f2ce39cf3027 compose-redis-commander-1 Up 3 hours (healthy) + ``` +#### Deploy with on-prem models + + ``` + # Create model directory to download model from NGC + mkdir -p ~/.cache/models + export MODEL_DIRECTORY=~/.cache/models/ + + # export your ngc api key, note it's not nvidia_api_key from build.nvidia.com + export NGC_API_KEY= + export USERID="$(id -u):$(id -g)" + + # Export path where NIMs are hosted + # LLM server path + export APP_LLM_SERVERURL=nemollm-inference:8000 + # Embedding server path + export APP_EMBEDDINGS_SERVERURL=nemollm-embedding:8000 + # Re-ranking model path + export APP_RANKING_SERVERURL=ranking-ms:8000 + + docker compose -f deploy/compose/docker-compose.yaml --profile local-nim up -d + ``` + + +On deployment following containers should be up and running + + ``` + $ docker ps --format "table {{.ID}}\t{{.Names}}\t{{.Status}}" + CONTAINER ID NAMES STATUS + 1dd42caad60e agent-chain-server Up 55 minutes + 4c4d1136cd7a structured-retriever Up 3 hours + ff2f71eb9d75 unstructured-retriever Up 3 hours + fd70635efcac analytics-server Up 3 hours + 8fc99cf27945 nemo-retriever-ranking-microservice Up 3 hours (healthy) + d3853cc6b622 nemo-retriever-embedding-microservice Up 3 hours (healthy) + dcc22f20df1f nemollm-inference-microservice Up 3 hours (healthy) + b4cfafffa57b milvus-standalone Up 3 hours + dfdaa5ff59be postgres_container Up 3 hours (healthy) + 8787645d8b4f milvus-minio Up 3 hours (healthy) + caa2e19b030b pgadmin_container Up 3 hours + 77b4fb45d600 milvus-etcd Up 3 hours (healthy) + 5be79d19281e compose-redis-1 Up 3 hours + 6a5353baa2d1 compose-redis-commander-1 Up 3 hours (healthy) + ``` + +Note: + + - By default, GPU IDs 0-3 are for LLM, 4 for the embedding model, and 5 for the reranking model; see [Customizing GPU](#customizing-gpus-for-nim-deployment) for changes. + + - The above command pulls in the prebuilt containers from NGC and deploys it locally. If you have made changes locally or you are interested in building the container from source code, append `--build` argument to the above commands. For example to deploy the pipeline locally using cloud hosted models and containers build from source use: + + `docker compose -f deploy/compose/docker-compose.yaml up -d --build` + +### 3. Data Ingestion + +Download the manuals into `data/manuals_pdf` folder +``` +# Run this script to download the manuals listed in the specified txt file +./data/download.sh ./data/list_manuals.txt +``` + +Install jupyterlab +``` +pip install jupyterlab +``` + +Run the jupyterlab server +``` +# Use this command to run Jupyter Lab so that you can execute this IPython notebook. +jupyter lab --allow-root --ip=0.0.0.0 --NotebookApp.token='' --port=8889 +``` + +Follow the cells in the notebook ingest_data.ipynb to do the following + +1. Unstructured Data (PDF) Ingestion to Milvus DB +2. Structured Data (CSV) Ingestion to Postgres DB + +### 4. Testing + +#### Using sample frontend +A sample frontend is available to showcase key functionalities of this blueprint. +You can deploy it using the following docker run command: +``` + docker run -d -it -e INFERENCE_ORIGIN="http://:9000" --name agent-frontend --rm -p 3001:3001 nvcr.io/nvidia/blueprint/aiva-customer-service-ui:1.0.0 + ``` + +- After deploying it visit `http://:3001/` to access the frontend and try out queries. +You can choose any of the preset customer names and ask queries relevant to order history displayed or relevant to [any ingested unstructured data.](../../data/) + +- Click `End Chat Session` button once you have finished your conversation. +- The sample UI showcases limited number of functionalities and interacts with a [single API endpoint exposed by the API Gateway container.](../../docs/api_references/api_gateway_server.json) + +#### Using standalone API's +You can also try out the pipeline using REST based API's exposed to better understand the underlying flow. + +1. Create a new session using the `create_session` API exposed by the Langgraph based agent at `http://:8081/docs#/default/create_session_create_session_get`. Note down the session id returned for this request. + +2. Carry out conversation with the agent using `generate` API at `http://:8081/docs#/Inference/generate_answer_generate_post`. The `session_id` must match the one returned by `create_session` API call and `user_id` should match one of the `CID` mentioned in the [sample structured purchase history dataset which was ingested.](../../data/orders.csv) + +3. After testing queries, end the session at `http://:8081/docs#/default/end_session_end_session_get` + +4. Explore the analytics server APIs at `http://:8082/docs#/` + This server offers different APIs for fetching session specific info like conversation history, summary and sentiment as well as for submitting feedback related to a session. Please note these API's will be functional only after `end_session` is invoked. + + +### 5. API References +For detailed API references of all the key deployed microservices, please refer to the following: + +- [Analytics Microservice](../../docs/api_references/analytics_server.json) +- [Agent Microservice](../../docs/api_references/agent_server.json) +- [Retriever Microservices](../../docs/api_references/retriever_server.json) + + +### 6. Stopping Services +``` +docker compose -f deploy/compose/docker-compose.yaml down +``` + +### 7. Customizing GPUs for on-prem NIM Deployment +To change the GPUs used for NIM deployment, set the following environment variables before triggering the docker compose: + +`LLM_MS_GPU_ID`: Update this to specify the LLM GPU IDs (e.g., 0,1,2,3). +`EMBEDDING_MS_GPU_ID`: Change this to set the embedding GPU ID. +`RANKING_MS_GPU_ID`: Modify this to adjust the reranking LLM GPU ID. +`RANKING_MS_GPU_ID`: Modify this to adjust the reranking LLM GPU ID. +`VECTORSTORE_GPU_DEVICE_ID` : Modify to adjust the Milvus vector database GPU ID. \ No newline at end of file diff --git a/deploy/compose/docker-compose.yaml b/deploy/compose/docker-compose.yaml new file mode 100644 index 0000000..ea0a79f --- /dev/null +++ b/deploy/compose/docker-compose.yaml @@ -0,0 +1,350 @@ +include: + - path: + - nims.yaml + +services: + # ======================= + # Agent Services + # ======================= + agent-chain-server: + container_name: agent-chain-server + image: aiva-customer-service-agent:1.0.0 + build: + # Set context to repo's root directory + context: ../../ + dockerfile: src/agent/Dockerfile + command: --port 8081 --host 0.0.0.0 --workers 1 --loop asyncio + environment: + EXAMPLE_PATH: './src/agent' + APP_LLM_MODELNAME: ${APP_LLM_MODELNAME:-"meta/llama-3.1-70b-instruct"} + APP_LLM_MODELENGINE: nvidia-ai-endpoints + APP_LLM_SERVERURL: ${APP_LLM_SERVERURL:-""} + # Cache name to store user conversation + # supported type inmemory, redis + APP_CACHE_NAME: ${APP_CACHE_NAME:-"redis"} + APP_CACHE_URL: ${APP_CACHE_URL:-"redis:6379"} + # Database name to store user conversation + # supported type postgres + APP_DATABASE_NAME: ${APP_DATABASE_NAME:-"postgres"} + APP_DATABASE_URL: ${APP_DATABASE_URL:-"postgres:5432"} + # Checkpointer name to store intermediate state of conversation + # supported type postgres, inmemory + APP_CHECKPOINTER_NAME: ${APP_CHECKPOINTER_NAME:-"postgres"} + APP_CHECKPOINTER_URL: ${APP_CHECKPOINTER_URL:-"postgres:5432"} + # Postgres config + POSTGRES_USER: ${POSTGRES_USER:-postgres} + POSTGRES_PASSWORD: ${POSTGRES_PASSWORD:-password} + POSTGRES_DB: ${POSTGRES_DB:-postgres} + CANONICAL_RAG_URL: http://unstructured-retriever:8081 + STRUCTURED_RAG_URI: http://structured-retriever:8081 + NVIDIA_API_KEY: ${NVIDIA_API_KEY} + GRAPH_RECURSION_LIMIT: 20 + RETURN_WINDOW_CURRENT_DATE: '2024-10-23' # Leave it empty to get the current date + RETURN_WINDOW_THRESHOLD_DAYS: 30 + # Log level for server, supported level NOTSET, DEBUG, INFO, WARN, ERROR, CRITICAL + LOGLEVEL: ${LOGLEVEL:-INFO} + # Set the default expiration time (TTL) for Redis keys (in seconds) + REDIS_SESSION_EXPIRY: 12 # in hours + ports: + - "8081:8081" + expose: + - "8081" + shm_size: 5gb + depends_on: + - unstructured-retriever + - structured-retriever + - postgres + - redis + + + # ======================= + # UI and related services for Agent Interface + # ======================= + api-gateway-server: + build: + context: ../../ + dockerfile: ./src/api_gateway/Dockerfile + image: aiva-customer-service-api-gateway:1.0.0 + command: --port 9000 --host 0.0.0.0 --workers 1 + ports: + - "9000:9000" + environment: + AGENT_SERVER_URL: ${AGENT_SERVER_URL:-http://agent-chain-server:8081} + ANALYTICS_SERVER_URL: ${ANALYTICS_SERVER_URL:-http://analytics-server:8081} + REQUEST_TIMEOUT: 180 + restart: unless-stopped # Optional: Automatically restart the container unless it is stopped + depends_on: + - agent-chain-server + + + # ======================= + # Analytics Services - summary/sentiment and similar APIs are exposed as part of analytics MS + # ======================= + analytics-server: + container_name: analytics-server + image: aiva-customer-service-analytics:1.0.0 + build: + # Set context to repo's root directory + context: ../../ + dockerfile: src/analytics/Dockerfile + command: --port 8081 --host 0.0.0.0 --workers 1 + environment: + EXAMPLE_PATH: './src/analytics' + APP_LLM_MODELNAME: ${APP_LLM_MODELNAME:-"meta/llama-3.1-70b-instruct"} + APP_LLM_MODELENGINE: nvidia-ai-endpoints + APP_LLM_SERVERURL: ${APP_LLM_SERVERURL:-""} + # Database name to store user conversation/summary + # supported type inmemory, redis + APP_DATABASE_NAME: ${APP_DATABASE_NAME:-"postgres"} + APP_DATABASE_URL: ${APP_DATABASE_URL:-"postgres:5432"} + # Postgres config + POSTGRES_USER: ${POSTGRES_USER:-postgres} + POSTGRES_PASSWORD: ${POSTGRES_PASSWORD:-password} + POSTGRES_DB: ${POSTGRES_DB:-postgres} + # Postgres database name for customer data + CUSTOMER_DATA_DB: ${CUSTOMER_DATA_DB:-customer_data} + # Store summary/sentiment in database + PERSIST_DATA: ${PERSIST_DATA:-true} + NVIDIA_API_KEY: ${NVIDIA_API_KEY} + # Log level for server, supported level NOTSET, DEBUG, INFO, WARN, ERROR, CRITICAL + LOGLEVEL: ${LOGLEVEL:-INFO} + ports: + - "8082:8081" + expose: + - "8081" + shm_size: 5gb + depends_on: + - postgres + + + # ======================= + # Retriever Microservices + # ======================= + # Fetch relevant document from vectorstore + unstructured-retriever: + container_name: unstructured-retriever + image: aiva-customer-service-unstructured-retriever:1.0.0 + build: + # Set context to repo's root directory + context: ../../ + dockerfile: src/retrievers/Dockerfile + args: + # Build args, used to copy relevant directory inside the container + EXAMPLE_PATH: 'src/retrievers/unstructured_data' + # start the server on port 8081 + command: --port 8081 --host 0.0.0.0 --workers 1 + environment: + # Path to example directory relative to GenerativeAIExamples/RAG/examples + EXAMPLE_PATH: 'src/retrievers/unstructured_data' + # URL on which vectorstore is hosted + APP_VECTORSTORE_URL: "http://milvus:19530" + # Type of vectordb used to store embedding supported type milvus, pgvector + APP_VECTORSTORE_NAME: "milvus" + # url on which llm model is hosted. If "", Nvidia hosted API is used + APP_LLM_MODELNAME: ${APP_LLM_MODELNAME:-"meta/llama-3.1-70b-instruct"} + # embedding model engine used for inference, supported type nvidia-ai-endpoints, huggingface + APP_LLM_MODELENGINE: nvidia-ai-endpoints + # url on which llm model is hosted. If "", Nvidia hosted API is used + APP_LLM_SERVERURL: ${APP_LLM_SERVERURL:-""} + APP_EMBEDDINGS_MODELNAME: ${APP_EMBEDDINGS_MODELNAME:-nvidia/nv-embedqa-e5-v5} + # embedding model engine used for inference, supported type nvidia-ai-endpoints + APP_EMBEDDINGS_MODELENGINE: ${APP_EMBEDDINGS_MODELENGINE:-nvidia-ai-endpoints} + # url on which embedding model is hosted. If "", Nvidia hosted API is used + APP_EMBEDDINGS_SERVERURL: ${APP_EMBEDDINGS_SERVERURL:-""} + APP_RANKING_MODELNAME: ${APP_RANKING_MODELNAME:-"nvidia/nv-rerankqa-mistral-4b-v3"} # Leave it blank to avoid using ranking + # ranking engine used for inference, supported type nvidia-ai-endpoints + APP_RANKING_MODELENGINE: ${APP_RANKING_MODELENGINE:-nvidia-ai-endpoints} + # url on which re-ranking model is hosted. If "", Nvidia hosted API is used + APP_RANKING_SERVERURL: ${APP_RANKING_SERVERURL:-""} + # text splitter model name, it's fetched from huggingface + APP_TEXTSPLITTER_MODELNAME: Snowflake/snowflake-arctic-embed-l + APP_TEXTSPLITTER_CHUNKSIZE: 506 + APP_TEXTSPLITTER_CHUNKOVERLAP: 200 + NVIDIA_API_KEY: ${NVIDIA_API_KEY} + # vectorstore collection name to store embeddings + COLLECTION_NAME: ${COLLECTION_NAME:-unstructured_data} + APP_RETRIEVER_TOPK: 4 + APP_RETRIEVER_SCORETHRESHOLD: 0.25 + # Number of documents to be retrieved from retriever when reranking model is enabled + # This will be then send to re ranker to get `APP_RETRIEVER_TOPK` documents + VECTOR_DB_TOPK: 20 + # Log level for server, supported level NOTSET, DEBUG, INFO, WARN, ERROR, CRITICAL + LOGLEVEL: ${LOGLEVEL:-INFO} + ports: + - "8086:8081" + expose: + - "8081" + shm_size: 5gb + depends_on: + - milvus + + + # Fetch user information form database + structured-retriever: + container_name: structured-retriever + image: aiva-customer-service-structured-retriever:1.0.0 + build: + context: ../../ + dockerfile: src/retrievers/Dockerfile + args: + EXAMPLE_PATH: 'src/retrievers/structured_data' + command: --port 8081 --host 0.0.0.0 --workers 1 + environment: + EXAMPLE_PATH: 'src/retrievers/structured_data' + APP_LLM_MODELNAME: ${APP_LLM_MODELNAME:-meta/llama-3.1-70b-instruct} + APP_LLM_MODELENGINE: nvidia-ai-endpoints + APP_LLM_SERVERURL: ${APP_LLM_SERVERURL:-""} + APP_LLM_MODELNAMEPANDASAI: ${APP_LLM_MODELNAME:-meta/llama-3.1-70b-instruct} + APP_PROMPTS_CHATTEMPLATE: "You are a helpful, respectful and honest assistant. Always answer as helpfully as possible, while being safe. Please ensure that your responses are positive in nature." + APP_PROMPTS_RAGTEMPLATE: "You are a helpful AI assistant named Envie. You will reply to questions only based on the context that you are provided. If something is out of context, you will refrain from replying and politely decline to respond to the user." + NVIDIA_API_KEY: ${NVIDIA_API_KEY} + COLLECTION_NAME: ${COLLECTION_NAME:-structured_data} + # Database name to store user purchase history, only postgres is supported + APP_DATABASE_NAME: ${APP_DATABASE_NAME:-"postgres"} + APP_DATABASE_URL: ${APP_DATABASE_URL:-"postgres:5432"} + POSTGRES_USER: ${POSTGRES_USER:-postgres} + POSTGRES_PASSWORD: ${POSTGRES_PASSWORD:-password} + POSTGRES_DB: ${POSTGRES_DB:-customer_data} + CSV_NAME: PdM_machines + LOGLEVEL: ${LOGLEVEL:-INFO} + ports: + - "8087:8081" + expose: + - "8081" + shm_size: 5gb + depends_on: + postgres: + condition: service_healthy + required: false + + + # ======================= + # Database Services - User purchase history and permanently store conversation details + # ======================= + postgres: + container_name: postgres_container + image: postgres:17.0 + environment: + POSTGRES_USER: ${POSTGRES_USER:-postgres} + POSTGRES_PASSWORD: ${POSTGRES_PASSWORD:-password} + POSTGRES_DB: ${POSTGRES_DB:-customer_data} + command: + - "postgres" + - "-c" + - "shared_buffers=256MB" + - "-c" + - "max_connections=200" + volumes: + - ${DOCKER_VOLUME_DIRECTORY:-.}/volumes/postgres_data:/var/lib/postgresql/data + ports: + - "5432:5432" + healthcheck: + test: ["CMD-SHELL", "sh -c 'pg_isready -U postgres -d postgres'"] + interval: 10s + timeout: 3s + retries: 3 + restart: unless-stopped + + # For visualization purpose + pgadmin: + container_name: pgadmin_container + image: dpage/pgadmin4:8.12.0 + environment: + PGADMIN_DEFAULT_EMAIL: ${PGADMIN_DEFAULT_EMAIL:-pgadmin4@pgadmin.org} + PGADMIN_DEFAULT_PASSWORD: ${PGADMIN_DEFAULT_PASSWORD:-admin} + PGADMIN_CONFIG_SERVER_MODE: 'False' + user: '$UID:$GID' + volumes: + - ${DOCKER_VOLUME_DIRECTORY:-.}/volumes/pgadmin:/var/lib/pgadmin + ports: + - "${PGADMIN_PORT:-5050}:80" + restart: unless-stopped + + + # ======================= + # Cache Services - To store conversation of user to share among multiple workers + # ======================= + redis: + image: redis:7.0.13 + restart: always + ports: + - "6379:6379" + volumes: + - ${DOCKER_VOLUME_DIRECTORY:-.}/volumes/redis-data:/data + + redis-commander: + # Visualization tool for redis + image: rediscommander/redis-commander:latest + restart: always + ports: + - "9092:8081" + environment: + - REDIS_HOSTS=local:redis:6379 + + + # ======================= + # Vector Store Services + # ======================= + etcd: + container_name: milvus-etcd + image: quay.io/coreos/etcd:v3.5.5 + environment: + - ETCD_AUTO_COMPACTION_MODE=revision + - ETCD_AUTO_COMPACTION_RETENTION=1000 + - ETCD_QUOTA_BACKEND_BYTES=4294967296 + - ETCD_SNAPSHOT_COUNT=50000 + volumes: + - ${DOCKER_VOLUME_DIRECTORY:-.}/volumes/etcd:/etcd + command: etcd -advertise-client-urls=http://127.0.0.1:2379 -listen-client-urls http://0.0.0.0:2379 --data-dir /etcd + healthcheck: + test: ["CMD", "etcdctl", "endpoint", "health"] + interval: 30s + timeout: 20s + retries: 3 + + minio: + container_name: milvus-minio + image: minio/minio:RELEASE.2024-05-01T01-11-10Z + environment: + MINIO_ACCESS_KEY: minioadmin + MINIO_SECRET_KEY: minioadmin + ports: + - "9011:9011" + - "9010:9010" + volumes: + - ${DOCKER_VOLUME_DIRECTORY:-.}/volumes/minio:/minio_data + command: minio server /minio_data --console-address ":9011" --address ":9010" + healthcheck: + test: ["CMD", "curl", "-f", "http://localhost:9010/minio/health/live"] + interval: 30s + timeout: 20s + retries: 3 + + milvus: + container_name: milvus-standalone + image: milvusdb/milvus:v2.4.4-gpu + command: ["milvus", "run", "standalone"] + environment: + ETCD_ENDPOINTS: etcd:2379 + MINIO_ADDRESS: minio:9010 + KNOWHERE_GPU_MEM_POOL_SIZE: 2048;4096 + volumes: + - ${DOCKER_VOLUME_DIRECTORY:-.}/volumes/milvus:/var/lib/milvus + ports: + - "19530:19530" + - "9091:9091" + depends_on: + - "etcd" + - "minio" + deploy: + resources: + reservations: + devices: + - driver: nvidia + capabilities: ["gpu"] + device_ids: ['${VECTORSTORE_GPU_DEVICE_ID:-0}'] + + +networks: + default: + name: nvidia-rag diff --git a/deploy/compose/nims.yaml b/deploy/compose/nims.yaml new file mode 100644 index 0000000..212a928 --- /dev/null +++ b/deploy/compose/nims.yaml @@ -0,0 +1,87 @@ +services: + nemollm-inference: + container_name: nemollm-inference-microservice + image: nvcr.io/nim/meta/llama-3.1-70b-instruct:1.1 + volumes: + # Use current path for model directory if nothing is specified + - ${MODEL_DIRECTORY:-.}:/opt/nim/.cache + user: "${USERID:-1000:1000}" + ports: + - "8000:8000" + expose: + - "8000" + environment: + NGC_API_KEY: ${NGC_API_KEY} + shm_size: 20gb + deploy: + resources: + reservations: + devices: + - driver: nvidia + # count: ${INFERENCE_GPU_COUNT:-all} + device_ids: ['${LLM_MS_GPU_ID:-0,1,2,3}'] + capabilities: [gpu] + healthcheck: + test: ["CMD", "curl", "-f", "http://localhost:8000/v1/health/ready"] + interval: 10s + timeout: 20s + retries: 100 + profiles: ["local-nim"] + + nemollm-embedding: + container_name: nemo-retriever-embedding-microservice + image: nvcr.io/nim/nvidia/nv-embedqa-e5-v5:1.0.0 + volumes: + - ${MODEL_DIRECTORY:-.}:/opt/nim/.cache + ports: + - "9080:8000" + expose: + - "8000" + environment: + NGC_API_KEY: ${NGC_API_KEY} + user: "${USERID:-1000:1000}" + shm_size: 16GB + deploy: + resources: + reservations: + devices: + - driver: nvidia + device_ids: ['${EMBEDDING_MS_GPU_ID:-4}'] + capabilities: [gpu] + healthcheck: + test: ["CMD", "curl", "-f", "http://localhost:8000/v1/health/ready"] + interval: 30s + timeout: 20s + retries: 3 + start_period: 10m + profiles: ["local-nim"] + + ranking-ms: + container_name: nemo-retriever-ranking-microservice + image: nvcr.io/nim/nvidia/nv-rerankqa-mistral-4b-v3:1.0.0 + volumes: + - ${MODEL_DIRECTORY:-.}:/opt/nim/.cache + ports: + - "1976:8000" + expose: + - "8000" + environment: + NGC_API_KEY: ${NGC_API_KEY} + user: "${USERID:-1000:1000}" + healthcheck: + test: ["CMD", "curl", "-f", "http://localhost:8000/health"] + interval: 10s + timeout: 20s + retries: 100 + deploy: + resources: + reservations: + devices: + - driver: nvidia + device_ids: ['${RANKING_MS_GPU_ID:-5}'] + capabilities: [gpu] + profiles: ["local-nim"] + +networks: + default: + name: nvidia-rag diff --git a/docs/api_references/agent_server.json b/docs/api_references/agent_server.json new file mode 100644 index 0000000..aafe085 --- /dev/null +++ b/docs/api_references/agent_server.json @@ -0,0 +1,597 @@ +{ + "openapi": "3.1.0", + "info": { + "title": "Agent API's for AI Virtual Assistant for Customer Service", + "description": "This API schema describes all the core agentic endpoints exposed by the AI Virtual Assistant for Customer Service NIM Blueprint", + "version": "1.0.0" + }, + "paths": { + "/health": { + "get": { + "tags": [ + "Health" + ], + "summary": "Health Check", + "description": "Perform a Health Check\n\nReturns 200 when service is up. This does not check the health of downstream services.", + "operationId": "health_check_health_get", + "responses": { + "200": { + "description": "Successful Response", + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/HealthResponse" + } + } + } + }, + "500": { + "description": "Internal Server Error", + "content": { + "application/json": { + "example": { + "detail": "Internal server error occurred" + } + } + } + } + } + } + }, + "/metrics": { + "get": { + "tags": [ + "Health" + ], + "summary": "Get Metrics", + "operationId": "get_metrics_metrics_get", + "responses": { + "200": { + "description": "Successful Response", + "content": { + "application/json": { + "schema": {} + } + } + } + } + } + }, + "/create_session": { + "get": { + "tags": [ + "Session Management" + ], + "summary": "Create Session", + "operationId": "create_session_create_session_get", + "responses": { + "200": { + "description": "Successful Response", + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/CreateSessionResponse" + } + } + } + }, + "500": { + "description": "Internal Server Error", + "content": { + "application/json": { + "example": { + "detail": "Internal server error occurred" + } + } + } + } + } + } + }, + "/end_session": { + "get": { + "tags": [ + "Session Management" + ], + "summary": "End Session", + "operationId": "end_session_end_session_get", + "parameters": [ + { + "name": "session_id", + "in": "query", + "required": true, + "schema": { + "title": "Session Id" + } + } + ], + "responses": { + "200": { + "description": "Successful Response", + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/EndSessionResponse" + } + } + } + }, + "422": { + "description": "Validation Error", + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/HTTPValidationError" + } + } + } + }, + "500": { + "description": "Internal Server Error", + "content": { + "application/json": { + "example": { + "detail": "Internal server error occurred" + } + } + } + } + } + } + }, + "/delete_session": { + "delete": { + "tags": [ + "Session Management" + ], + "summary": "Delete Session", + "operationId": "delete_session_delete_session_delete", + "parameters": [ + { + "name": "session_id", + "in": "query", + "required": true, + "schema": { + "title": "Session Id" + } + } + ], + "responses": { + "200": { + "description": "Successful Response", + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/DeleteSessionResponse" + } + } + } + }, + "422": { + "description": "Validation Error", + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/HTTPValidationError" + } + } + } + }, + "500": { + "description": "Internal Server Error", + "content": { + "application/json": { + "example": { + "detail": "Internal server error occurred" + } + } + } + } + } + } + }, + "/generate": { + "post": { + "tags": [ + "Inference" + ], + "summary": "Generate Answer", + "description": "Generate and stream the response to the provided prompt.", + "operationId": "generate_answer_generate_post", + "requestBody": { + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/Prompt" + } + } + }, + "required": true + }, + "responses": { + "200": { + "description": "Successful Response", + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/ChainResponse" + } + } + } + }, + "422": { + "description": "Validation Error", + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/HTTPValidationError" + } + } + } + }, + "500": { + "description": "Internal Server Error", + "content": { + "application/json": { + "example": { + "detail": "Internal server error occurred" + } + } + } + } + } + } + }, + "/feedback/response": { + "post": { + "tags": [ + "Feedback" + ], + "summary": "Store Last Response Feedback", + "description": "Store user feedback for the last response in a conversation session.", + "operationId": "store_last_response_feedback_feedback_response_post", + "requestBody": { + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/FeedbackRequest" + } + } + }, + "required": true + }, + "responses": { + "200": { + "description": "Successful Response", + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/FeedbackResponse" + } + } + } + }, + "404": { + "description": "Session Not Found", + "content": { + "application/json": { + "example": { + "detail": "Session not found" + } + } + } + }, + "422": { + "description": "Validation Error", + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/HTTPValidationError" + } + } + } + }, + "500": { + "description": "Internal Server Error", + "content": { + "application/json": { + "example": { + "detail": "Internal server error occurred" + } + } + } + } + } + } + } + }, + "components": { + "schemas": { + "ChainResponse": { + "properties": { + "id": { + "type": "string", + "maxLength": 100000, + "pattern": "[\\s\\S]*", + "title": "Id", + "default": "" + }, + "choices": { + "items": { + "$ref": "#/components/schemas/ChainResponseChoices" + }, + "type": "array", + "maxItems": 256, + "title": "Choices", + "default": [] + }, + "session_id": { + "type": "string", + "title": "Session Id", + "description": "A unique identifier representing the session associated with the response." + } + }, + "type": "object", + "title": "ChainResponse", + "description": "Definition of Chain APIs resopnse data type" + }, + "ChainResponseChoices": { + "properties": { + "index": { + "type": "integer", + "maximum": 256.0, + "minimum": 0.0, + "format": "int64", + "title": "Index", + "default": 0 + }, + "message": { + "$ref": "#/components/schemas/Message", + "default": { + "role": "assistant", + "content": "" + } + }, + "finish_reason": { + "type": "string", + "maxLength": 4096, + "pattern": "[\\s\\S]*", + "title": "Finish Reason", + "default": "" + } + }, + "type": "object", + "title": "ChainResponseChoices", + "description": "Definition of Chain response choices" + }, + "CreateSessionResponse": { + "properties": { + "session_id": { + "type": "string", + "maxLength": 4096, + "title": "Session Id" + } + }, + "type": "object", + "required": [ + "session_id" + ], + "title": "CreateSessionResponse" + }, + "DeleteSessionResponse": { + "properties": { + "message": { + "type": "string", + "maxLength": 4096, + "pattern": "[\\s\\S]*", + "title": "Message", + "default": "" + } + }, + "type": "object", + "title": "DeleteSessionResponse" + }, + "EndSessionResponse": { + "properties": { + "message": { + "type": "string", + "maxLength": 4096, + "pattern": "[\\s\\S]*", + "title": "Message", + "default": "" + } + }, + "type": "object", + "title": "EndSessionResponse" + }, + "FeedbackRequest": { + "properties": { + "feedback": { + "type": "number", + "maximum": 1.0, + "minimum": -1.0, + "title": "Feedback", + "description": "A unique identifier representing your end-user." + }, + "session_id": { + "type": "string", + "title": "Session Id", + "description": "A unique identifier representing the session associated with the response." + } + }, + "type": "object", + "required": [ + "feedback", + "session_id" + ], + "title": "FeedbackRequest", + "description": "Definition of the Feedback Request data type." + }, + "FeedbackResponse": { + "properties": { + "message": { + "type": "string", + "maxLength": 4096, + "pattern": "[\\s\\S]*", + "title": "Message", + "default": "" + } + }, + "type": "object", + "title": "FeedbackResponse", + "description": "Definition of the Feedback Request data type." + }, + "HTTPValidationError": { + "properties": { + "detail": { + "items": { + "$ref": "#/components/schemas/ValidationError" + }, + "type": "array", + "title": "Detail" + } + }, + "type": "object", + "title": "HTTPValidationError" + }, + "HealthResponse": { + "properties": { + "message": { + "type": "string", + "maxLength": 4096, + "pattern": "[\\s\\S]*", + "title": "Message", + "default": "" + } + }, + "type": "object", + "title": "HealthResponse" + }, + "Message": { + "properties": { + "role": { + "type": "string", + "maxLength": 256, + "pattern": "[\\s\\S]*", + "title": "Role", + "description": "Role for a message AI, User and System", + "default": "user" + }, + "content": { + "type": "string", + "maxLength": 131072, + "pattern": "[\\s\\S]*", + "title": "Content", + "description": "The input query/prompt to the pipeline.", + "default": "I am going to Paris, what should I see?" + } + }, + "type": "object", + "title": "Message", + "description": "Definition of the Chat Message type." + }, + "Prompt": { + "properties": { + "messages": { + "items": { + "$ref": "#/components/schemas/Message" + }, + "type": "array", + "maxItems": 50000, + "title": "Messages", + "description": "A list of messages comprising the conversation so far. The roles of the messages must be alternating between user and assistant. The last input message should have role user. A message with the the system role is optional, and must be the very first message if it is present." + }, + "max_tokens": { + "type": "integer", + "maximum": 1024.0, + "minimum": 0.0, + "format": "int64", + "title": "Max Tokens", + "description": "The maximum number of tokens to generate in any given call. Note that the model is not aware of this value, and generation will simply stop at the number of tokens specified.", + "default": 1024 + }, + "stop": { + "items": { + "type": "string", + "maxLength": 256, + "pattern": "[\\s\\S]*" + }, + "type": "array", + "maxItems": 256, + "title": "Stop", + "description": "A string or a list of strings where the API will stop generating further tokens. The returned text will not contain the stop sequence.", + "default": [] + }, + "user_id": { + "type": "string", + "title": "User Id", + "description": "A unique identifier representing your end-user." + }, + "session_id": { + "type": "string", + "title": "Session Id", + "description": "A unique identifier representing the session associated with the response." + } + }, + "type": "object", + "required": [ + "messages", + "session_id" + ], + "title": "Prompt", + "description": "Definition of the Prompt API data type." + }, + "ValidationError": { + "properties": { + "loc": { + "items": { + "anyOf": [ + { + "type": "string" + }, + { + "type": "integer" + } + ] + }, + "type": "array", + "title": "Location" + }, + "msg": { + "type": "string", + "title": "Message" + }, + "type": { + "type": "string", + "title": "Error Type" + } + }, + "type": "object", + "required": [ + "loc", + "msg", + "type" + ], + "title": "ValidationError" + } + } + }, + "tags": [ + { + "name": "Health", + "description": "APIs for checking and monitoring server liveliness and readiness." + }, + { + "name": "Feedback", + "description": "APIs for storing useful information for data flywheel." + }, + { + "name": "Session Management", + "description": "APIs for managing sessions." + }, + { + "name": "Inference", + "description": "Core APIs for interacting with the agent." + } + ] + } \ No newline at end of file diff --git a/docs/api_references/analytics_server.json b/docs/api_references/analytics_server.json new file mode 100644 index 0000000..1bc125c --- /dev/null +++ b/docs/api_references/analytics_server.json @@ -0,0 +1,927 @@ +{ + "openapi": "3.1.0", + "info": { + "title": "Analytics API's for AI Virtual Assistant for Customer Service", + "description": "This API schema describes all the analytics endpoints exposed for the AI Virtual Assistant for Customer Service NIM Blueprint", + "version": "1.0.0" + }, + "paths": { + "/health": { + "get": { + "tags": [ + "Health" + ], + "summary": "Health Check", + "description": "Perform a Health Check\n\nReturns 200 when service is up. This does not check the health of downstream services.", + "operationId": "health_check_health_get", + "responses": { + "200": { + "description": "Successful Response", + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/HealthResponse" + } + } + } + }, + "500": { + "description": "Internal Server Error", + "content": { + "application/json": { + "example": { + "detail": "Internal server error occurred" + } + } + } + } + } + } + }, + "/sessions": { + "get": { + "tags": [ + "Session" + ], + "summary": "Get Sessions", + "description": "Retrieve session information in last k hours", + "operationId": "get_sessions_sessions_get", + "parameters": [ + { + "name": "hours", + "in": "query", + "required": true, + "schema": { + "type": "integer", + "description": "Last K hours, for which sessions info is extracted", + "title": "Hours" + }, + "description": "Last K hours, for which sessions info is extracted" + } + ], + "responses": { + "200": { + "description": "Successful Response", + "content": { + "application/json": { + "schema": { + "type": "array", + "items": { + "$ref": "#/components/schemas/SessionsResponse" + }, + "title": "Response Get Sessions Sessions Get" + } + } + } + }, + "404": { + "description": "No Sessions Found", + "content": { + "application/json": { + "example": { + "detail": "No sessions found for the specified time range" + } + } + } + }, + "422": { + "description": "Validation Error", + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/HTTPValidationError" + } + } + } + }, + "500": { + "description": "Internal Server Error", + "content": { + "application/json": { + "example": { + "detail": "Internal server error occurred" + } + } + } + } + } + } + }, + "/session/summary": { + "get": { + "tags": [ + "Session" + ], + "summary": "Generate Session Summary", + "description": "Generate a summary and sentiment analysis for the specified session.", + "operationId": "generate_session_summary_session_summary_get", + "parameters": [ + { + "name": "session_id", + "in": "query", + "required": true, + "schema": { + "type": "string", + "description": "The ID of the session", + "title": "Session Id" + }, + "description": "The ID of the session" + } + ], + "responses": { + "200": { + "description": "Successful Response", + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/SessionSummaryResponse" + } + } + } + }, + "404": { + "description": "Session Not Found", + "content": { + "application/json": { + "example": { + "detail": "Session not found" + } + } + } + }, + "422": { + "description": "Validation Error", + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/HTTPValidationError" + } + } + } + }, + "500": { + "description": "Internal Server Error", + "content": { + "application/json": { + "example": { + "detail": "Internal server error occurred" + } + } + } + } + } + } + }, + "/session/conversation": { + "get": { + "tags": [ + "Session" + ], + "summary": "Get Session Conversation", + "description": "Retrieve the conversation and sentiment for the specified session.", + "operationId": "get_session_conversation_session_conversation_get", + "parameters": [ + { + "name": "session_id", + "in": "query", + "required": true, + "schema": { + "type": "string", + "description": "The ID of the session", + "title": "Session Id" + }, + "description": "The ID of the session" + } + ], + "responses": { + "200": { + "description": "Successful Response", + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/SessionConversationResponse" + } + } + } + }, + "404": { + "description": "Session Not Found", + "content": { + "application/json": { + "example": { + "detail": "Session not found" + } + } + } + }, + "422": { + "description": "Validation Error", + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/HTTPValidationError" + } + } + } + }, + "500": { + "description": "Internal Server Error", + "content": { + "application/json": { + "example": { + "detail": "Internal server error occurred" + } + } + } + } + } + } + }, + "/get_user_purchase_history": { + "post": { + "tags": [ + "User Data" + ], + "summary": "Get User Purchase History", + "description": "Get purchase history for user", + "operationId": "get_user_purchase_history_get_user_purchase_history_post", + "parameters": [ + { + "name": "user_id", + "in": "query", + "required": true, + "schema": { + "type": "string", + "title": "User Id" + } + } + ], + "responses": { + "200": { + "description": "Successful Response", + "content": { + "application/json": { + "schema": { + "type": "array", + "items": { + "$ref": "#/components/schemas/PurchaseInfo" + }, + "title": "Response Get User Purchase History Get User Purchase History Post" + } + } + } + }, + "404": { + "description": "Session Not Found", + "content": { + "application/json": { + "example": { + "detail": "Session not found" + } + } + } + }, + "422": { + "description": "Validation Error", + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/HTTPValidationError" + } + } + } + }, + "500": { + "description": "Internal Server Error", + "content": { + "application/json": { + "example": { + "detail": "Internal server error occurred" + } + } + } + } + } + } + }, + "/feedback/sentiment": { + "post": { + "tags": [ + "Feedback" + ], + "summary": "Store Sentiment Feedback", + "description": "Store user feedback for the sentiment analysis of a conversation session.", + "operationId": "store_sentiment_feedback_feedback_sentiment_post", + "requestBody": { + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/FeedbackRequest" + } + } + }, + "required": true + }, + "responses": { + "200": { + "description": "Successful Response", + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/FeedbackResponse" + } + } + } + }, + "404": { + "description": "Session Not Found", + "content": { + "application/json": { + "example": { + "detail": "Session not found" + } + } + } + }, + "422": { + "description": "Validation Error", + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/HTTPValidationError" + } + } + } + }, + "500": { + "description": "Internal Server Error", + "content": { + "application/json": { + "example": { + "detail": "Internal server error occurred" + } + } + } + } + } + } + }, + "/feedback/summary": { + "post": { + "tags": [ + "Feedback" + ], + "summary": "Store Summary Feedback", + "description": "Store user feedback for the summary of a conversation session.", + "operationId": "store_summary_feedback_feedback_summary_post", + "requestBody": { + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/FeedbackRequest" + } + } + }, + "required": true + }, + "responses": { + "200": { + "description": "Successful Response", + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/FeedbackResponse" + } + } + } + }, + "404": { + "description": "Session Not Found", + "content": { + "application/json": { + "example": { + "detail": "Session not found" + } + } + } + }, + "422": { + "description": "Validation Error", + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/HTTPValidationError" + } + } + } + }, + "500": { + "description": "Internal Server Error", + "content": { + "application/json": { + "example": { + "detail": "Internal server error occurred" + } + } + } + } + } + } + }, + "/feedback/session": { + "post": { + "tags": [ + "Feedback" + ], + "summary": "Store Conversation Session Feedback", + "description": "Store user feedback for the overall conversation session.", + "operationId": "store_conversation_session_feedback_feedback_session_post", + "requestBody": { + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/FeedbackRequest" + } + } + }, + "required": true + }, + "responses": { + "200": { + "description": "Successful Response", + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/FeedbackResponse" + } + } + } + }, + "404": { + "description": "Session Not Found", + "content": { + "application/json": { + "example": { + "detail": "Session not found" + } + } + } + }, + "422": { + "description": "Validation Error", + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/HTTPValidationError" + } + } + } + }, + "500": { + "description": "Internal Server Error", + "content": { + "application/json": { + "example": { + "detail": "Internal server error occurred" + } + } + } + } + } + } + } + }, + "components": { + "schemas": { + "FeedbackRequest": { + "properties": { + "feedback": { + "type": "number", + "maximum": 1.0, + "minimum": -1.0, + "title": "Feedback", + "description": "A unique identifier representing your end-user." + }, + "session_id": { + "type": "string", + "title": "Session Id", + "description": "A unique identifier representing the session associated with the response." + } + }, + "type": "object", + "required": [ + "feedback", + "session_id" + ], + "title": "FeedbackRequest", + "description": "Definition of the Feedback Request data type." + }, + "FeedbackResponse": { + "properties": { + "message": { + "type": "string", + "maxLength": 4096, + "pattern": "[\\s\\S]*", + "title": "Message", + "default": "" + } + }, + "type": "object", + "title": "FeedbackResponse", + "description": "Definition of the Feedback Request data type." + }, + "HTTPValidationError": { + "properties": { + "detail": { + "items": { + "$ref": "#/components/schemas/ValidationError" + }, + "type": "array", + "title": "Detail" + } + }, + "type": "object", + "title": "HTTPValidationError" + }, + "HealthResponse": { + "properties": { + "message": { + "type": "string", + "maxLength": 4096, + "pattern": "[\\s\\S]*", + "title": "Message", + "default": "" + } + }, + "type": "object", + "title": "HealthResponse" + }, + "PurchaseInfo": { + "properties": { + "customer_id": { + "type": "string", + "title": "Customer Id" + }, + "order_id": { + "type": "string", + "title": "Order Id" + }, + "product_name": { + "type": "string", + "title": "Product Name" + }, + "order_date": { + "type": "string", + "title": "Order Date" + }, + "quantity": { + "anyOf": [ + { + "type": "integer" + }, + { + "type": "null" + } + ], + "title": "Quantity" + }, + "order_amount": { + "anyOf": [ + { + "type": "number" + }, + { + "type": "null" + } + ], + "title": "Order Amount" + }, + "order_status": { + "anyOf": [ + { + "type": "string" + }, + { + "type": "null" + } + ], + "title": "Order Status" + }, + "return_status": { + "anyOf": [ + { + "type": "string" + }, + { + "type": "null" + } + ], + "title": "Return Status" + }, + "return_start_date": { + "anyOf": [ + { + "type": "string" + }, + { + "type": "null" + } + ], + "title": "Return Start Date" + }, + "return_received_date": { + "anyOf": [ + { + "type": "string" + }, + { + "type": "null" + } + ], + "title": "Return Received Date" + }, + "return_completed_date": { + "anyOf": [ + { + "type": "string" + }, + { + "type": "null" + } + ], + "title": "Return Completed Date" + }, + "return_reason": { + "anyOf": [ + { + "type": "string" + }, + { + "type": "null" + } + ], + "title": "Return Reason" + }, + "notes": { + "anyOf": [ + { + "type": "string" + }, + { + "type": "null" + } + ], + "title": "Notes" + } + }, + "type": "object", + "required": [ + "customer_id", + "order_id", + "product_name", + "order_date", + "quantity", + "order_amount", + "order_status", + "return_status", + "return_start_date", + "return_received_date", + "return_completed_date", + "return_reason", + "notes" + ], + "title": "PurchaseInfo" + }, + "SessionConversationMessage": { + "properties": { + "role": { + "type": "string", + "maxLength": 256, + "pattern": "[\\s\\S]*", + "title": "Role", + "description": "Role for a message AI, User and System", + "default": "user" + }, + "content": { + "type": "string", + "maxLength": 131072, + "pattern": "[\\s\\S]*", + "title": "Content", + "description": "The input query/prompt to the pipeline.", + "default": "I am going to Paris, what should I see?" + }, + "sentiment": { + "type": "string", + "enum": [ + "positive", + "negative", + "neutral" + ], + "title": "Sentiment", + "description": "The sentiment of the text, which can be positive, negative, or neutral." + } + }, + "type": "object", + "required": [ + "sentiment" + ], + "title": "SessionConversationMessage", + "description": "Definition of the Chat Message type." + }, + "SessionConversationResponse": { + "properties": { + "session_info": { + "$ref": "#/components/schemas/SessionInfo" + }, + "messages": { + "items": { + "$ref": "#/components/schemas/SessionConversationMessage" + }, + "type": "array", + "title": "Messages", + "description": "The list of messages in the conversation" + } + }, + "type": "object", + "required": [ + "session_info", + "messages" + ], + "title": "SessionConversationResponse" + }, + "SessionInfo": { + "properties": { + "session_id": { + "type": "string", + "title": "Session Id", + "description": "The ID of the session" + }, + "start_time": { + "anyOf": [ + { + "type": "string", + "format": "date-time" + }, + { + "type": "null" + } + ], + "title": "Start Time", + "description": "The start time of the session" + }, + "end_time": { + "anyOf": [ + { + "type": "string", + "format": "date-time" + }, + { + "type": "null" + } + ], + "title": "End Time", + "description": "The end time of the session" + } + }, + "type": "object", + "required": [ + "session_id" + ], + "title": "SessionInfo" + }, + "SessionSummaryResponse": { + "properties": { + "session_info": { + "$ref": "#/components/schemas/SessionInfo" + }, + "summary": { + "type": "string", + "title": "Summary", + "description": "The generated summary of the session" + }, + "sentiment": { + "type": "string", + "enum": [ + "positive", + "negative", + "neutral" + ], + "title": "Sentiment", + "description": "The sentiment of the text, which can be positive, negative, or neutral." + } + }, + "type": "object", + "required": [ + "session_info", + "summary", + "sentiment" + ], + "title": "SessionSummaryResponse" + }, + "SessionsResponse": { + "properties": { + "session_id": { + "type": "string", + "title": "Session Id", + "description": "The ID of the session" + }, + "user_id": { + "anyOf": [ + { + "type": "string" + }, + { + "type": "null" + } + ], + "title": "User Id", + "description": "The ID of the user" + }, + "start_time": { + "anyOf": [ + { + "type": "string", + "format": "date-time" + }, + { + "type": "null" + } + ], + "title": "Start Time", + "description": "The start time of the session" + }, + "end_time": { + "anyOf": [ + { + "type": "string", + "format": "date-time" + }, + { + "type": "null" + } + ], + "title": "End Time", + "description": "The end time of the session" + } + }, + "type": "object", + "required": [ + "session_id", + "user_id" + ], + "title": "SessionsResponse" + }, + "ValidationError": { + "properties": { + "loc": { + "items": { + "anyOf": [ + { + "type": "string" + }, + { + "type": "integer" + } + ] + }, + "type": "array", + "title": "Location" + }, + "msg": { + "type": "string", + "title": "Message" + }, + "type": { + "type": "string", + "title": "Error Type" + } + }, + "type": "object", + "required": [ + "loc", + "msg", + "type" + ], + "title": "ValidationError" + } + } + }, + "tags": [ + { + "name": "Health", + "description": "APIs for checking and monitoring server liveliness and readiness." + }, + { + "name": "Feedback", + "description": "APIs for storing useful information for data flywheel." + }, + { + "name": "Session", + "description": "APIs for fetching useful information for different sessions." + }, + { + "name": "User Data", + "description": "APIs for fetching user specific information." + } + ] + } \ No newline at end of file diff --git a/docs/api_references/api_gateway_server.json b/docs/api_references/api_gateway_server.json new file mode 100644 index 0000000..6636b20 --- /dev/null +++ b/docs/api_references/api_gateway_server.json @@ -0,0 +1,330 @@ +{ + "openapi": "3.1.0", + "info": { + "title": "AI Virtual Assistant for Customer Service", + "description": "This API schema describes all the endpoints exposed by the AI Virtual Assistant for Customer Service NIM Blueprint", + "version": "1.0.0" + }, + "paths": { + "/agent/metrics": { + "get": { + "tags": [ + "Health" + ], + "summary": "Get Metrics", + "operationId": "get_metrics_agent_metrics_get", + "responses": { + "200": { + "description": "Successful Response", + "content": { + "application/json": { + "schema": {} + } + } + } + } + } + }, + "/agent/health": { + "get": { + "tags": [ + "Health" + ], + "summary": "Health Check", + "description": "Perform a Health Check\n\nReturns 200 when service is up. This does not check the health of downstream services.", + "operationId": "health_check_agent_health_get", + "responses": { + "200": { + "description": "Successful Response", + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/HealthResponse" + } + } + } + }, + "500": { + "description": "Internal Server Error", + "content": { + "application/json": { + "example": { + "detail": "Internal server error occurred" + } + } + } + } + } + } + }, + "/agent/generate": { + "post": { + "tags": [ + "Agent" + ], + "summary": "Generate Response", + "description": "Generate and stream the response to the provided prompt.", + "operationId": "generate_response_agent_generate_post", + "requestBody": { + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/AgentRequest" + } + } + }, + "required": true + }, + "responses": { + "200": { + "description": "Successful Response", + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/AgentResponse" + } + } + } + }, + "422": { + "description": "Validation Error", + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/HTTPValidationError" + } + } + } + }, + "500": { + "description": "Internal Server Error", + "content": { + "application/json": { + "example": { + "detail": "Internal server error occurred" + } + } + } + } + } + } + } + }, + "components": { + "schemas": { + "AgentRequest": { + "properties": { + "messages": { + "anyOf": [ + { + "items": { + "$ref": "#/components/schemas/Message" + }, + "type": "array", + "maxItems": 50000 + }, + { + "type": "null" + } + ], + "title": "Messages", + "description": "A list of messages comprising the conversation so far. The roles of the messages must be alternating between user and assistant. The last input message should have role user. A message with the the system role is optional, and must be the very first message if it is present.", + "default": [] + }, + "user_id": { + "anyOf": [ + { + "type": "string" + }, + { + "type": "null" + } + ], + "title": "User Id", + "description": "A unique identifier representing your end-user.", + "default": "" + }, + "session_id": { + "anyOf": [ + { + "type": "string" + }, + { + "type": "null" + } + ], + "title": "Session Id", + "description": "A unique identifier representing the session associated with the response.", + "default": "" + }, + "api_type": { + "type": "string", + "title": "Api Type", + "description": "The type of API action: 'create_session', 'end_session', 'generate', or 'summary'." + } + }, + "type": "object", + "required": [ + "api_type" + ], + "title": "AgentRequest", + "description": "Definition of the Prompt API data type." + }, + "AgentResponse": { + "properties": { + "id": { + "type": "string", + "maxLength": 100000, + "pattern": "[\\s\\S]*", + "title": "Id", + "default": "" + }, + "choices": { + "items": { + "$ref": "#/components/schemas/AgentResponseChoices" + }, + "type": "array", + "maxItems": 256, + "title": "Choices", + "default": [] + }, + "session_id": { + "type": "string", + "title": "Session Id", + "description": "A unique identifier representing the session associated with the response." + } + }, + "type": "object", + "title": "AgentResponse", + "description": "Definition of Chain APIs resopnse data type" + }, + "AgentResponseChoices": { + "properties": { + "index": { + "type": "integer", + "maximum": 256, + "minimum": 0, + "format": "int64", + "title": "Index", + "default": 0 + }, + "message": { + "$ref": "#/components/schemas/Message", + "default": { + "role": "assistant", + "content": "" + } + }, + "finish_reason": { + "type": "string", + "maxLength": 4096, + "pattern": "[\\s\\S]*", + "title": "Finish Reason", + "default": "" + }, + "sentiment": { + "type": "string", + "title": "Sentiment", + "description": "Any sentiment associated with this message", + "default": "" + } + }, + "type": "object", + "title": "AgentResponseChoices", + "description": "Definition of Chain response choices" + }, + "HTTPValidationError": { + "properties": { + "detail": { + "items": { + "$ref": "#/components/schemas/ValidationError" + }, + "type": "array", + "title": "Detail" + } + }, + "type": "object", + "title": "HTTPValidationError" + }, + "HealthResponse": { + "properties": { + "message": { + "type": "string", + "maxLength": 4096, + "pattern": "[\\s\\S]*", + "title": "Message", + "default": "" + } + }, + "type": "object", + "title": "HealthResponse" + }, + "Message": { + "properties": { + "role": { + "type": "string", + "maxLength": 256, + "pattern": "[\\s\\S]*", + "title": "Role", + "description": "Role for a message AI, User and System", + "default": "user" + }, + "content": { + "type": "string", + "maxLength": 131072, + "pattern": "[\\s\\S]*", + "title": "Content", + "description": "The input query/prompt to the pipeline.", + "default": "I am going to Paris, what should I see?" + } + }, + "type": "object", + "title": "Message", + "description": "Definition of the Chat Message type." + }, + "ValidationError": { + "properties": { + "loc": { + "items": { + "anyOf": [ + { + "type": "string" + }, + { + "type": "integer" + } + ] + }, + "type": "array", + "title": "Location" + }, + "msg": { + "type": "string", + "title": "Message" + }, + "type": { + "type": "string", + "title": "Error Type" + } + }, + "type": "object", + "required": [ + "loc", + "msg", + "type" + ], + "title": "ValidationError" + } + } + }, + "tags": [ + { + "name": "Health", + "description": "APIs for checking and monitoring server liveliness and readiness." + }, + { + "name": "Agent", + "description": "Core APIs for interacting with the agent." + } + ] +} \ No newline at end of file diff --git a/docs/api_references/retriever_server.json b/docs/api_references/retriever_server.json new file mode 100644 index 0000000..ace53c3 --- /dev/null +++ b/docs/api_references/retriever_server.json @@ -0,0 +1,419 @@ +{ + "openapi": "3.1.0", + "info": { + "title": "Retriever API's for AI Virtual Assistant for Customer Service", + "description": "This API schema describes all the retriever endpoints exposed for the AI Virtual Assistant for Customer Service NIM Blueprint", + "version": "1.0.0" + }, + "paths": { + "/health": { + "get": { + "tags": [ + "Health" + ], + "summary": "Health Check", + "description": "Perform a Health Check\n\nReturns 200 when service is up. This does not check the health of downstream services.", + "operationId": "health_check_health_get", + "responses": { + "200": { + "description": "Successful Response", + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/HealthResponse" + } + } + } + }, + "500": { + "description": "Internal Server Error", + "content": { + "application/json": { + "example": { + "detail": "Internal server error occurred" + } + } + } + } + } + } + }, + "/documents": { + "post": { + "tags": [ + "Core" + ], + "summary": "Upload Document", + "description": "Upload a document to the vector store.", + "operationId": "upload_document_documents_post", + "requestBody": { + "required": true, + "content": { + "multipart/form-data": { + "schema": { + "$ref": "#/components/schemas/Body_upload_document_documents_post" + } + } + } + }, + "responses": { + "200": { + "description": "Successful Response", + "content": { + "application/json": { + "schema": {} + } + } + }, + "422": { + "description": "Validation Error", + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/HTTPValidationError" + } + } + } + }, + "500": { + "description": "Internal Server Error", + "content": { + "application/json": { + "example": { + "detail": "Internal server error occurred" + } + } + } + } + } + }, + "get": { + "tags": [ + "Management" + ], + "summary": "Get Documents", + "description": "List available documents.", + "operationId": "get_documents_documents_get", + "responses": { + "200": { + "description": "Successful Response", + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/DocumentsResponse" + } + } + } + }, + "500": { + "description": "Internal Server Error", + "content": { + "application/json": { + "example": { + "detail": "Internal server error occurred" + } + } + } + } + } + }, + "delete": { + "tags": [ + "Management" + ], + "summary": "Delete Document", + "description": "Delete a document.", + "operationId": "delete_document_documents_delete", + "parameters": [ + { + "name": "filename", + "in": "query", + "required": true, + "schema": { + "type": "string", + "title": "Filename" + } + } + ], + "responses": { + "200": { + "description": "Successful Response", + "content": { + "application/json": { + "schema": {} + } + } + }, + "422": { + "description": "Validation Error", + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/HTTPValidationError" + } + } + } + }, + "500": { + "description": "Internal Server Error", + "content": { + "application/json": { + "example": { + "detail": "Internal server error occurred" + } + } + } + } + } + } + }, + "/search": { + "post": { + "tags": [ + "Core" + ], + "summary": "Document Search", + "description": "Search for the most relevant documents for the given search parameters.", + "operationId": "document_search_search_post", + "requestBody": { + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/DocumentSearch" + } + } + }, + "required": true + }, + "responses": { + "200": { + "description": "Successful Response", + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/DocumentSearchResponse" + } + } + } + }, + "422": { + "description": "Validation Error", + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/HTTPValidationError" + } + } + } + }, + "500": { + "description": "Internal Server Error", + "content": { + "application/json": { + "example": { + "detail": "Internal server error occurred" + } + } + } + } + } + } + } + }, + "components": { + "schemas": { + "Body_upload_document_documents_post": { + "properties": { + "file": { + "type": "string", + "format": "binary", + "title": "File" + } + }, + "type": "object", + "required": [ + "file" + ], + "title": "Body_upload_document_documents_post" + }, + "DocumentChunk": { + "properties": { + "content": { + "type": "string", + "maxLength": 131072, + "pattern": "[\\s\\S]*", + "title": "Content", + "description": "The content of the document chunk.", + "default": "" + }, + "filename": { + "type": "string", + "maxLength": 4096, + "pattern": "[\\s\\S]*", + "title": "Filename", + "description": "The name of the file the chunk belongs to.", + "default": "" + }, + "score": { + "type": "number", + "title": "Score", + "description": "The relevance score of the chunk." + } + }, + "type": "object", + "required": [ + "score" + ], + "title": "DocumentChunk", + "description": "Represents a chunk of a document." + }, + "DocumentSearch": { + "properties": { + "query": { + "type": "string", + "maxLength": 131072, + "pattern": "[\\s\\S]*", + "title": "Query", + "description": "The content or keywords to search for within documents.", + "default": "" + }, + "top_k": { + "type": "integer", + "maximum": 25.0, + "minimum": 0.0, + "format": "int64", + "title": "Top K", + "description": "The maximum number of documents to return in the response.", + "default": 4 + }, + "user_id": { + "anyOf": [ + { + "type": "string" + }, + { + "type": "null" + } + ], + "title": "User Id", + "description": "An optional unique identifier for the customer." + } + }, + "type": "object", + "title": "DocumentSearch", + "description": "Definition of the DocumentSearch API data type." + }, + "DocumentSearchResponse": { + "properties": { + "chunks": { + "items": { + "$ref": "#/components/schemas/DocumentChunk" + }, + "type": "array", + "maxItems": 256, + "title": "Chunks", + "description": "List of document chunks." + } + }, + "type": "object", + "required": [ + "chunks" + ], + "title": "DocumentSearchResponse", + "description": "Represents a response from a document search." + }, + "DocumentsResponse": { + "properties": { + "documents": { + "items": { + "type": "string", + "maxLength": 131072, + "pattern": "[\\s\\S]*" + }, + "type": "array", + "maxItems": 1000000, + "title": "Documents", + "description": "List of filenames.", + "default": [] + } + }, + "type": "object", + "title": "DocumentsResponse", + "description": "Represents the response containing a list of documents." + }, + "HTTPValidationError": { + "properties": { + "detail": { + "items": { + "$ref": "#/components/schemas/ValidationError" + }, + "type": "array", + "title": "Detail" + } + }, + "type": "object", + "title": "HTTPValidationError" + }, + "HealthResponse": { + "properties": { + "message": { + "type": "string", + "maxLength": 4096, + "pattern": "[\\s\\S]*", + "title": "Message", + "default": "" + } + }, + "type": "object", + "title": "HealthResponse" + }, + "ValidationError": { + "properties": { + "loc": { + "items": { + "anyOf": [ + { + "type": "string" + }, + { + "type": "integer" + } + ] + }, + "type": "array", + "title": "Location" + }, + "msg": { + "type": "string", + "title": "Message" + }, + "type": { + "type": "string", + "title": "Error Type" + } + }, + "type": "object", + "required": [ + "loc", + "msg", + "type" + ], + "title": "ValidationError" + } + } + }, + "tags": [ + { + "name": "Health", + "description": "APIs for checking and monitoring server liveliness and readiness." + }, + { + "name": "Core", + "description": "Core APIs for ingestion and searching." + }, + { + "name": "Management", + "description": "APIs for deleting and listing ingested files." + } + ] + } \ No newline at end of file diff --git a/docs/imgs/IVA-blueprint-diagram-r5.png b/docs/imgs/IVA-blueprint-diagram-r5.png new file mode 100644 index 0000000000000000000000000000000000000000..2cacd937659821345a3bb67a995ca092339768fc GIT binary patch literal 569457 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

F%@!8&iPx6G{$g_#CkgQ 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 z⁣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%0DcpB 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

!_=5H#7(F#S$POpXBDXRB&WS<-; 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 literal 0 HcmV?d00001 diff --git a/docs/imgs/key-generated.png b/docs/imgs/key-generated.png new file mode 100644 index 0000000000000000000000000000000000000000..e1f204d90e9408676c1c54299c24ec175c0993a5 GIT binary patch literal 66356 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 IM6N<$f~aG(QUCw| literal 0 HcmV?d00001 diff --git a/docs/imgs/llama3.1-70b-instruct-get-api-key.png b/docs/imgs/llama3.1-70b-instruct-get-api-key.png new file mode 100644 index 0000000000000000000000000000000000000000..586c6616605a40666347041e54b4699390e8aa27 GIT binary patch literal 367378 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μ-6UMy7M$&4?+#!39Iej%n!+u%Xx@*CN2;Aa25}L79+GA&M1XuiJO$5M z7#8*@MvGWm{V4lxO8u`NW5Vc?3FVadqE zjOEtKn%^89famPYcgJt22@z#RxpgOGYkX_!9>m`Xzw0z7B3ggl-q)B@`_gWy4Pw!- z1I0{Ki@?}ceh|+%(_E-l&YEG>%9OvSqzCqAfj8k6FYVVudAVG9q^+7zAx}{Q=beSt0 zpwmlF)EutVxtf?XjaMsY+nFHbmp9Eb%v-o~G{w8mQE&=oQJlG-ThGRpRJ?wz>}gU{ zbwz{j@pt(tTlYHaXyW+j9-0^CODM++EJVXx@Zp~h_^!oa^YsXM(KACEV{B(lg9S9C zUs_+R`_j|1+$43ERE2hCU?6HuG>fiI9i6x8yq365@!cZRYAMbag>?Q&_w>#y!s_97 zObG8z>7RWg5Z!$*{AZ}RukZTHo$K0j0_-U*f@eJ`FFkEG&HdDlYi3H7%#qA;-B`fT zynp@V{YaXqj>`tBtnY5wmULUIzP?0Cnmyn+7(_eFI!BZt6yh1?2V*4~5jeCNQezA& zBk;LaK-p?bpyX6p98r6|X!HDY7Bj^xIi=Ah-Kqz?@OWE`s9{4JSewRc`C9;7kD=tiwWb+4WAtr zpm!;~%6^W*c?UX^D{jiPhdB554CkV2_iYnqwk-*nfO@D4)Iy+%b6a&E& z@3&yy%D|z%xD}?3%WFMfdHk}R6(~LYw8nIh-k407=VCnE%?Kpzof^D;#cjQ%eIy+ZacL%qp z6baIK)zLzJhf#f0AqLVmn(4;@@Nr8}JAur#I(t1wRf$`@uv040&HYK0z*(BDdzwoo z99=?Zo>N>pcX&2>8OHzmm;*yDF-($N_0;S+&>c4%^n~YYrD!Eu_zV0(hJvd7x=}Bb zB=a!Hu%ng9-F~BSt4!q>NMN6DiYA*8>!@+=m+NW{6xk(NFRssBgpY%&45Q%!zrgI( zbF4P{3-0IdNbF+oitDHtQ77qtG-CgHy6=+v4d10Fr780;yoS3PXP<*5H2v}XiddoK z!@U#r+8=QSk~};5G!5PK zC98+IOxm|WH#WNrq%#h?qQx2{dvTLWy5US2F9S6Mo0p!f8ppDWv;Gmk{c!rTC#MfT z7viUPEdXN51DSL|iRE^{-e1=}|C#?WL6-Ujm|NqI{)H0AN&NP29NYiaasGel`bqru ze`#R<9K`;2zfyhpgH$Duk0u3I83MY-6Uh@F|8?&5ry!c@_qUUE`k$5;{bxV+lXZHs zPJ8}&oerI>)01`j@8cm2?%_F9<7y&Atv{$W3>T`LKR^?VtA?=|#&@4UdVqrGE826M zUC$X<_rX~GV^#7O{>mw60wygCE(Ea^AtYd2HFg{N)ZfKONR+u2Zo7?1S}yBIGn$|C zef%BTA~&H&W$e9VYT4JI_p<@5{jDVbF9gN1-|{Qm?EY4vIjGwV7W;dNE!CxKDnUb~^okQzT!{+&E@P&u)0`m9@yR zo;9IT)FW2q*H$Gs71I>?p{xN=g=Zl8&%ePI;B%r7?}Zk&f>EydwM?jkS6@m#2gZ&p z68!L|Tsa%H*up-@XT2)zv!S!NcZJ=H>x=z#m4MH+ zX1^(-U?L01vo46q=IbMFRhj)!Qi=X_t&%-wf4U}#){OHMbd2kaGyCH<61P;?<}o86msvwq-wmh&4o}L|6)S48|D+PJ5+8)H!y~E z>`MHEL0$T6=T6Nk(8K%IwKPiW%X9zvZ`7}c45hzRaHMNL_o(Gr8DU+8-vl@wnV9f2 zhccKRF1{KwEulwNm6TJai_tDq9Nf%t8Un||jiGNDq;s3+N#W$PL={2;K2&=G?d(ni zVD;7n<5HgsMLzQqiZgRj<1?|e%st#K(l_opP%kqk$7`eF8}%>5xi6^RnQJfc%m}dV zttkm$b-R1{OYA-7C8n@0T%+57V($DCBaMK;R#e0UpEABVOHP8>dK{+g90(x+SqTlP z#Clf4ew#tLhucyvJ=c7@@vF$=L5i`Ff)yba2iq#=)&VPlo)0Kz0#E@{7$Pe`$h-t0 z$1*FZr`VvFehvP#9$)bXQ@B;+A_cXi!B8xAI>*a;0metD6(W_T=CF-TEgw0%mcCZeJG_3`$h_jaWQWONyFQsb}4IXdzcrjf#cx3&sWz7io{Y{E-{ufcrHYoS~*0B;f z1I7kNz8iAwk5`rU3SOI=ES?klh&O-H=rynNIJE0Xf*gB5QKc8;DpB`Jl2TO2^v79E zkKsC{HY4Zn*`JCyC7l}H=At#xj{u%+XbZY(@Fif^4I_{i!wLSl5)5xj*hHicB#?a+ zm5((23~^QK9T>B{wEaUjR^i5r7pHEYUi91l2F%Wj#LEQ6dBimHzCIp1*ufu`ql9i6 zO0_XDP_iw_ciE@3Pwm=2ljQWKN?b7h;T*jJ?A@KpZkfr-oh#9Mfrc;Ucu>gu@!hQ% z8~yL6g|N5;gE~8i>y<5?l@7wap$-uL5|(zF=Y^KQ zc(sZGPJK};woF_?3fV|ZdJK3)WZ{PIy8z&c|9LO(@OmcvadisCj_t;a;r(<=%)$cNFHw#Ti=3& z2{>s^7ayN4RNSHhDzo`D&h>-s%B@X@8CPhxmnhGrOP;s%g9#%V@Jd9h1p3L=S0k<_Q9Gg24PyQ~Og=@khE!wQEAAEjiYP-6hB!>kw|Vs4>(G zU;Tu4kKPr7ERV`gTTQ=IhbBIqavpkL>snFU&q?jeT^zleKoC*Drr{&H5xmV3@WH7i zWJKOKaoFP$%WjFX7>BcO?aD{<8QGiSrIl|^s&q-D-~3^q4+jXwgy2%*RYEdmD>{cO znzovse$6+d^rN3>Kh>avj3HO=hcBIUm*`nvCuUvrF9ESN3qj^Mn?<3Si`3D%wV@C2 zwk7@_Z8e(5UDsFs^Relwm{YFxzV>{@JBdb8jQAOsQTWakgQouaym!Sgr zTZ$su58l{Q0!mtg_rfQ^)o3guj(y&IqaA|`CW|!VUOVHC+D&t8B+Y75x4~*oi}4%p zPC+j-mdA@w-g0>L%FmeGgXSbM9zR61npPvGLUnNtH8Gy`d?gFYs!Vs%p37Gkt_m}s z*&Yehc^>CYVbgbcCaGQSP#vGQAB7+6cBO71^Wx)55zFo#GXN^0Hs?@yF5iCA9 zt0Q<`+L>GEl%#YRPjWwzi7^;0 zTVZiIk5Abu{tW*4>rC&F&{~3N6)`9vM^23EP1EU$GbfS!I%omDk^XzOIyBNDBhm<(0c zR_t0H{K?+MK)7buF&B-XlXDM+bKu-V)p&l{3g*yd`+}%fwG5L@107}V)EaE}!an>Y zEp+mAod5Rdm483O{yL!@gP$LAD0BiiOf(8%dtjQ?W6WnYhxkuv(m!<6B+ssn+UP7* zJiB#gQ?qr@mHsH@rsj^PvrvEO9J+tK)~lxr_w-7W$cLd=mi(*l^3yi!n1?JkEmucu zHUkTZEL7l$Mjssez8fKC5wad<2Oe!?_d7G2=PzdHrDVA_;Y^ciE`)rNMES%}6|%kE z)Ue>!y~PEyz)=Uoxe2LLz1$2D_1;IenL-uXm3rqpzor>XocZbF$Z(k=_wDqH+bT## z)SIt(=~AmHt%~De9kTE*Yt^(ty0HBlW>p2d8!K1QXPX%2q$XDu5FJwAO~^D2_=Nq} zq%1iRq8y&umJsufaA&83%VT>_nU{XDKfri)2^9FO@<(w=Ma5=Y?562uz$@&&R3x7a z={->KN$0OXU=8uh*gbUQK|pN`?4}oL=7rCBE4>kv#MJ1_JLeGK2xul}R zi8mHFWcSAeaoEPAxk>)}71a?;>803m9?!eC<7}dob6oc#(;6aS{%q$Bh$DZ1f-T0sLN+lyqN@d%BV|+JElKzUVPJ;8fTdH8r5p}9kD+~ zSUnaZ+K-auVX8UZ=FNE4l+Cn-^B{1Ijk^AXEJ-`m-?7N5jt_R@letHom1hXemUR3J zco}&DFnjObn8r(yY0*XSL0dV}+v#M3$MHCy_sYJvzxKL8_Jm-EAg zozL}$2rD5rq1vkJ)vH%}_17ITS zLn^F={f=z!ifF#-c=^kXb&hVo`IZuQI)*D2_P#iA0aR6sh2Vwvi$=&i&S=JGReg$N zc7n1YPA$oMayhoY&>1EBs?TRd|9W8Rjhg*fEl!Fjax1dA)VmDF4`8%}^bd&EKC)63 z>GfmWM8qD5!Fn1x0NG-+qOG!#(2BtNsH&UP1)IiHncUmyuGZrYiA(Hb023bL9kob# zXnU!t^%l4Ssb~*8Wy{gbH%rKtZGzk#6Q3WEJ1@UUT{|j!SS{=j%sTB9!m;p0)c1q2 z7!Lgac*s@cv9vkdeH(T1Iio_WUrO%rdrt4F(IaoGGW40&hEm>zfb;?6%s`E3)qr1w50IJhvke6VYHK{pj*A*^ zO>>5-%$kn)&mTLMB{Vacy$OOSW%h683$>l@hoWkNK#8q%g`5yTVkE_Y=1btRq%iMn z3Zf)I0#{;-mkKX)Y$(TrBV~cj%ilgbYsb(1!?dJ;xpa5U^*fK40w#jt6Ns7!qTI-; z0y9jA;D;MtyqB@&Ux<@T@ha%~pgNIiIBmJGz23jw%gi_PS@Li|Q^Jk9vw9c3QHx($ z^lNpGQu0Y_1s1x?EPI6Y=*KIgCifarzq<|J{1kINE*zJuMIrA|*92LPKC0aJB$e2c zGO=Zg)dbgh1osbX>rNlmx#+6(nCTevNLcO+roNWuJ+b4W!TbeCgH%SGQ_o=Pj1P%H zO6mRD(T~G@&^viGt)$-mpM@FBr*6OcPXC>VAiYD+=fb5)@2juk6{5+U zFwhW8L$c7l#IWqwl*13M*E?1<^GSme8`F6(%1d3^RPnDXN{($BKMQf$`l{G}ohv6d22g{^GgWEc!HEwU_% z)s69%d{(A1!g*R==;|GsOF4P0_}U1#Jj{kvfS6AOa~F_u<<_^@2j`KDP@r-CHhOF+ zup~1uPImz+xft!Qawc6Jp)k1B_gXy?ej@U~_WI`sbVE`7ABqih-3F%un+`LpkFA0Noje?f za#7GQg9mA{s$t8sC5ak65|UevyvhwoH!`s0SNU}#zO(Q9k+M`6kENj*$E^VddGo)B zMnPAT$Xfg1rT%``KSOG6$0UerMlJPxKGPyV>9I$NBZs|1w6?Zk_hJw25Z42|Jp#fHTe8}7%I+u>m z3?QjK7M+^hICU-W91Y#T(%Gg6GOgjU7W|vi(`39CW;1)y)#W^OJ3lSVs_55IfbG|s zarSa?FD)~FmN!pubZ!dl|@YIJ(xdgnNs>$~#whpt9bnv&9yc6#EaPg*M&q7n? zK9rP879#ikrns2Ukr00V>4AyG59f*0jJSH6@3!A<%6hP6kKlYFXBFr}Tb3I?vIUtb zzIjlh;DE3K4ca^ly6W2c*?C^{TibB->yOxByqV3g@9=8C8zgJ98q9;R<>!dN*LEJE zV;n~k7ps%a8d9-uEodam(=DRIFELSDpWAjh*h=_K!GD=>T>21lpTN*&OLcr&g0>cy z5<7m~u&&lWS$t%`qWjiuiVM=VRJQV><{#!16p)C}Kly#@DfH3X#0!LwXnA=G^GE1hWfRAzB-o&&SVmOsy<-m5AT| zETfsj7tA>U@>hqwkEdKLg~=Ur!)HJoh$s5)9VRf)h_@6A6wzfyR{)J^=MyO>4-NT1 zoaVkpxs@Jtb-qhpi5k9ZFE~H{$`AAmM7YM@iJazF$D!J>cI{*?9D8u%g*2)=xWdqn z7qas$dwg5VBrW)K@>7>xOP2KnBNV@!v*`1*GWkr7`Ay-*KfSa6jlc?=?N9+Ss zK!<<>Lz^Mc+@pne-#Eme!$GVO;VL4S_qd5@xoim^E9}`L37N@3-jta}JpHr{t-ba# z6OAPAjC|@N1P%Ede0r|RuLUvXyRzSei?8H8h?BD_SWOi4&Jaq{rg9F~0%V6_eTpr~|EPF(p- z0||j=HsuUOkMAdWCR%^jo$umgVQEXqWc>!80M($eI>%DLSCB_MLDQ4_bL7WVs7dcI zu8v0N`frTc2)DWK zvwiz*z<1t(UBfZ#KV$5}dv>=RO++qM$7=B)A)i84%(65a?Wa4%<46m%!h#t`$NO~z zha&h0sInV7SZqzyC-^V!kE+~uz+1HifL{`IoIkE{1;qy|uO4{LOyAzQTau@L`re{w zS+Gv~IpW!B;AYk2VP8}wGW6F5;F7nyV8CUMXii4Jc`$w8>0Y*eiIouzw)X&1hAyAAs( zXHP2fF#|csSlqECbfCLy1SXHuYIiQZoFw8(WGJ+D9zSpw4A;zAa+54eU+(Fe@0G{L z@7dfs)QrAX{GVN(|NrCP`#YE+f76HLM5p2(q6+;F%?zQWpm?l#MuO!py2F3=RR81k z)I|m(Jq?yWiwyte^##TCvm#Fa{k};57V`ezdHwG}{YOuDBL5I8^lu#w|In-UZ++mC zYkyz4=$J&yzP4p97F6Zlp(pin?i5V!1GEz84c~Dubbckf zQ{R=Jz5n6Rh=plj(v&CZOrRr{`S=2P6kRSHEvpQgro+ruVw6?QZVO(;JkauIc~;$EvF1XSA(!j@H|jsKeR>qkL3I^n8D1G)-+l0eGn5Ur6+Dm6$ zxZY<3<5f4rqa<@*l{-|QX=mo*VYu<=(9Rg{Pf7GP&4 zPnRf$Osk7YE=3ilBuU9dh;ckw5up3>1$kfXZf;ZV`o1?|wUFo+y8mPhCi3As?Dpre zOG9?wB;P>-M-ZOtJQw{vv6tUF+Ps{<{^)k=+2$m?ACYO0eD3nR)XRXuZUhJH68Y6-hHaY`fH^#bO6x|e|Ol5;Al`k zY9Hz5QysP}O53GAq(o)R3V*8j!{<|A`BbK zU#c+4g?97y_|u&UyW($W=C6Bo#VARe6{ys3kx#?yNLg?pFrX~8j%oN!agKnz=fJMy z`;J*dCW^xT5yOS}_cBUJA8ACjbLai#SPy_CmLRl3WD&+twA`j-A9&5CNJPvX#_#vM{ z`Ppf+Y;2aJ_p;QEpz%%D22-Q-NQw-}7l#?qM_T*oBmmxWMomt4u{BeX3LDvrpf?_% zL$PM%b6xV*>e>023>myG3vQYRtHQ%Yf{?P&^J#OZ$kzZkLzt*@tPL$#H%VCJE6Rr! zcJVRPggaQ#!c^z`N+stW+_+^YCHU3Nt+9f~gYTA_mA&UJIOPyno&2>~i1bE949{j` zxL=LyYFL<~%M`JT?`xlWY3VxIAQ^s>en(yD&DiPS60_N%g?eU_kp>1exU0q0nA#BjL8ugkWsAq%G7JC$plFa3xRH`3w~ zE#8Lq2qx+Lv4vbK_?HRA$-nz^8zWp(7)F*BB z|G*sv|1e<))d7f1tMvhze47-FaCK)Qie*5++*3rg5w?Lqc`?8L#on1mL;3%IUs05z z>`P3A$eMjO^(nH%i0sQ0!dO#wW5yD)hfubukUiOVV;4ep#x@2i>x^X#vvgmd-+j*g z$9f4# z-5^~891}~ZduW^Z(YgJhe%aap?s(6eHl*Bgn=2TD+hptAT4$J0%&~38Q=U`=f|`Sb zEdyI;wP-K1cLD&xRON-C+mI>OPe&KA*u*>vyM9~ur;Boqrx|D|&W zq$b`wv1D(n-x%c`(N+5LKUxCP80U1C=PreRrblI#(O0c2KeYtujVOK-qR@+&d%@?70)2Ac*DzUD;y}5_- z^ZJgG^St?z+3#3V*76|7~QqI)pt?Wj+{ z*>MH^JOqTf33+qX_4srzan~y*Y;7Vx>gbK4wxv-a5v!LgNy&Gw`5Y8e%mWoM`qFOH8pv8$Fbik}wi6ki*O4&?ls>&uz(Ni2Dp(VX7)XJfN0D@WbVMChxmX5ikLzQeoKdJk+hS#Y(De3W{NoPe#!BSs6qBCzSy6h zDftfa2{Xlr9uOx@n6ye`0gP?pqIjyx}EO4b*$RL2eO3)J*^ znv3yrJDrsgKGWblelKR_cqg8$2bZ9J_LIT%cL<8mMoCfShNZUlZp)4}nLjeE_43i) zH3rP{GC4JacdF>J(f%Ca;T^2w$t2}~$5Y7^PVW_Byyq)$CZO+loAG<6YE4UEQn%+R zw*KKYmz!t~@1sO_le3!E`?%jXRM-diJvH$>ITlv<7FE_LS-Bveo|~1y-doy z|K8Tp&76(rtJE6Z*T*rXspTy9Z;Rh!h&xp#0%MXRB4{(H`lF24BHE`jw-L^%hFaru8`46LK77F66FL_wjagt#lsK%UT_{>*jia#=_F}yd9Eh=I zm+kdeimwf{ib_U<&bo<-e6PRn;{BrM)5-Uz`2q*ftaq>JC!I?^f&W_VQ>d=s(4``U1GRSZ7n$aFwBNA)c!@owhel3@KY4jhN;r%PIKv}@ z^Hc#8s85M355x?wQQuPTEuCaX{)Azo#;qZH9Fz>I6%U3 z?6JSqOyGQd>Kl+D_vbXBzQ!u{b9;o1M9#qZBOaI7Od%M6FNR_mi65yS(Qc>&ZX^ip zD#N)%%IxEgmO6dcawD*ZjwzK1Yl#aN>U(_Sftl)cr&NP8R7IfYSi84fh&QEOOd-_t zsVTpvsZ+E`iN%Y7XdMDHhD}QDv}=Fb$IsI@+1o>FjL2`-WvP3^F-c*=`5uKxP0{ed zEi)iHnSqZbJ@C75I5X91g>BQ?GzgIWP8=V2v9I0sqSI-XvqR`5TakDVC{qJ40G&$% zzK3+mBa&k=T$F(7`SVp$G5$=Un?)52$-1teboB5<6b2LHW(0p_YM!vW=(Fs!O)I`ae$Z z!S6oAIR}1|tx3xP$3bgl`jCmxYrqy{it}%iE?Uin8rzv~nO*IsufuWP7VkeREW0h% zVs_Q+E}a-Xhf28V>Ry-TD=cF_gcr_CP(s#f@KYpAP$nhiU^e{jwb_zJ@i7&Pnr3UWt%HQSrrHQDFfSgfxA zTbHBMH;Joc!^Fh4zNt$(qw+AG?$;tEPo!wjF?2WXiTN4Y3W_*xnhKJSy z2nF|c*1GSd2jT;0$Hq&h{7u6Oj45N<935f+zTiJU|MxZ6{6E=UM_d0VBI3W+@b7-fRz!Tswg1RV-b*1Rp4Kx|3o>}OVo8mZs$hp z$94R@`3SkMVWg$FLsT4;5g|^wN=hk)gGg;FJNLWuZjXPlls;@B3Gx@Oz2H5Q7$&S% zU47@f-_t?e>!|8~b)B6eNNfQR*CE)32&1@%ohWvgJ$GHba)ZT7>s@!7=XN`aQ_b=a zPd;gb+Ody!S#Wn;8$r2~7C(_S$=msW5NrmakiD|EJ%QaZ=u>N}1;ZL+An`BfI~!%P zHOkG!92f2`3yH6-DrS@KA%?*qm#KZd zmW+uX^cY;OPc#Y&Xmf6&Shbia7Nn|`zjPddWh>J$K4q|_ixcR&qXF!E{or@qs-XSd z>pM%Etxju)A6X?nx0&jaga}Z3(*1IH$k?HJd@^Go;&lGeq@UURn$6;pgu<0}qn+_{ z4tJPVD?%;s-n0u);Iv?-emo47?}46g=Wq`u=9a@EEo)lBZ`uTTV61NFF^uaLGY@dY zrDU*a^Fpbl~M7Wnp_Bd_!&C8+<$$U znBwOxE99&*T>A3fh#L7Jg|mSOB?*y*Y176Od1~ILNzYc9;y{;wW;|D>yv%num8LvW z|BS8cu9{<@^cU40zW~b?f35(C%bNiyuu~5iA0KswB(ZlbErMrD6H*~hZ-<-59deQM z2xc5DBu8_)OQ{}39iZdhpd$c%0|ktz7ydOU&ZYGUs*wa%c7pAUZ76q1ugXaI7W=zq zme5&k-#=?8$?asNe(?bI$nTYzxFqSWb&hmf6Mr{|HZnrm8z0~BAqxHgR`#88_jCI$ z6;OI7Gb1KI_~KM5pu<~{xnF-36onpJ!aEqEL2(T8FV)3QuU93H(*E%JJ?lMANw<_g&BjN z6V1H+YID9ewM~VzNNv~hRkC;)Y{F->5uNZGz=~_p#!*1r@O+sMZa+x@eeK4DK)3ZM zB1OGKAC@wAq!9J13BTlnJ3(HJzT}1IKTr;BGAm+Q9`2q-d>P+y3czC}zzywh8IZ1A zJ?9S~qYYj>pthw(Kn8Z@ie@}y^hT( z{BoD~>^w1_w3QE|-6Vmrp{70Ne1((K=Eqz3r>^#F_|uaPKHPTzaNLfyr}tVdk=DX7r-z z514bfUY^+08K4Ma{E@B4q0O42muZrCd#dN2IEwydoXKB0mUbdl+I8!mRYMcOj&m|l zq7xxOO2+Ldci5l%mi=VfFaG_GWQEj>Z;heExd)Fo^-fue;-*RY_y!zzCj{gMWd^8i z^1l(+$AvBTB){HedoU7zbAus*m)FXY4ZzpEbsq~H)SBO{g~1)EU|&rcO-<1{D|jqJ~SKorFk|2a<;t@ctA2q zEi2PiWb;il3ysxk9usJ~GF8zKdD!jEccannhQ^0o5!Vj30jbffCD?%9e5(6UWuDkC zh5g?;yN}<^)1GAM(_VT*@IzHBmF=Gnw9b4+KL%qz0?gUtZ8E?#18uv1nYFoxW4+{h zzeiB2(ekaGQcb19x~FIw|LAN*Ywf)phet=hN)dg?YVTf&J?3TF&vpe8b1B>c&+_TB z+hfZi?_vQp{*YqZK5zK!d`P^1^b;`)UXf`11k#JuA98~ko@Ot*42wm@iWL1n<9@Az z5E8k!h|UI_f)LlgbStAj+$7pbP+(~p`%r?gzjT+hxL~I4*0j=*j0|(qfr#rW%u*W1 z$du48`mqv57~Q^4wt*{<3|RZ2Ah_1FZ{>yIb<_@j{LA8aB?gGN%a2%L$xnjXW)6dA zgyT+a&4VI7S*y4m2rj`PJoZ6j>WFR9UDE zB)VMz?cAOok36)okmY#KJg>!sG36Lt}L^77GjAaiG8U!e_=pqtmqV zlH`{5lf0_<)L*H)>AN)T<|;$&Hb`c1N zLJee<7|W2RcPclIWgmMjIbi!j_5MInU|zI~OcJKB)S=Ql=WJx-3_5O+>$8nSYR)H<;z_R{6gerz`t8UmjkwuFPoimmAtIHq$ujs2EKKS2qCt z@;gg^ra>UMP;sE$k!wP|r+?&7t_6RWZq(aqFS|c2FW0>2h2#!?a8DzOcJg2Ph%BbP4p>?>kDX*vIQ-c1q&D`jCfL3tpJ>Dt67-qEj@D_1^OAju|sEvfiX z)IG=WteqdPY^7OHb-j}bLQ94sH6iuQx2WvTjS3tpMIG1GBo?vM_wC?OLO+eSm}Eqg z5#+VM`gxcq?sxM8mkz6o5tsDsn1t1^C91ruT6}whEjsEeQH zE?Ywi|B&?kD;&bEKYCKaSYVRN7rt+XSnd~>DEmF<25eFk>5)-S!DhzV#L8DAzbhNT z4(Pd8tN-quR+M}AhAyBM7KdQRFXhus9}Y>RxQXhVYmHQS`rS_Fp6v$DsN%tB|FG7O zE@@@;vXBwJC+}kPs8xG794yssr&oAl+8mm=;hkk3mMqz{mOkvWLW*Ry0BN+R85!#h zj>p$6jc6?VnYVLv_iKM$S~AcnXrPUFkNAPY8$vM>{mWNqe582XUYH^o6uoq3x^~MT z*F+^D#G}$B>4wsa(Tgf6@Fu6biB0}#DX6OxNGD_*iW3O~^TGM3Iju6GxKWa}qB?&1 zt=dUf-#C80On2M()jN|8Kh@qK{Ay0AS*b~4AlgL`W{{;(X2Gv&Kk%gv;$SYGi)rug zueF#(Hv~j0AQ^$OYi3L>B&q?-_$*@j2kO$|vR1z2rJoYKkM`Mm40Ewgt6HQ|Pf%W!^DwheVUx)^hjDr6fdio<#6yH%2gNBv_b9-|mz=r_s-; zGX8qpJR{#6zTHR%Ixq;R;o#Sv-3a{=V4I?c=mvpOD)cCYa*S)Rv7e5 zpSm+NHP+w#_Fz4L0aoCY9CYpVVhhh|iv4{8^9nk-ojq`zyfV`>EV%d2jPD$Sg_3fW zf_z`kdE0!t7lZe2Uz2+a9if5Y?zf?OLQD z;PiLzw9b5U_$%+%EW|l()44WD^-BW0WA90Z95=5+r-h`Ctq(4zYAi54Hs+@P%Z6}1GmOk(89lvzKCWU)XE(Ii5PHs}^~tsA5>T#!MWeeGAE|_Z z^A<$>%(9R9^#|iQJ9#wck-|0)p-nbDf6dg%e^V}v@0?vJ9V0#G_rQP^iykmnAbSs( zy;Z%?&=0u#i=pq_j)%fIKefN@^|+R*n%-$fFN`H}{<$w#I24?!_a)83THm}Dn*Gb% z8hDROr40QvPUEQQ)c0UV)NExx>XILozYigaCO~^WVFgV4s^(pdQeeS1t>&nonGNO& zbVB0$T_8$g#Bxg~=Y=!i_scav)xTAfz`EKW0Y8IVz4=FN7yaeW@fWTO*BhFflWzOV zGDvthMn*U0G)V z=d*G*GV(8-Alz{Urbu5xQ6uHFUm0hZC=;E%(8xGq90^A^dgpLn3&l{fzb*;j9%;e! z&Ats_q@>Im5}u#v!FSF02HgmNwzoZO^8d$L-~Uq$?mwu<|J30Ado{Sq#Y&R02*nVv zEG`?Qb?Q1zTXf}#DP8<1>;9==A?W(~6Fr$ER>n32+e`yu6kQwBH#%p56Q@{HQFYV! zy*H^Ndk~wchK8nR-l5Dk3)c zHG~s6qUEm)z?osl;#?iQTaX>ViK$ELmW(#hZSrS-O8o_drwMnLFVR>iEWpJt0Ot_e z3mgk#lWCPFi0@euSfeyRSY3~s6Nh`>?4-(%GaD?va@h>nMn3?;Y!=>kZ&|xRf?#aP za>MeDJpKt{6vVG}6H-Rf-Zdfaj;KrUD^E&0+{n*1Zmf&Ay=P}-7T%cpsJbktIlA;O z9X%Rb3~G?sUdIQ^gds1&Vb`?SYMN4yAyt#L74l|$oWI-e~==}5X1J;qz1AEZDQ$8)r@qVCab;cZtZQC z2#i&oz>Tk1_mC}jf8Di&!iAeE{exFl94a?lRx5X+$cD5DK_&c54>}1U+d9+w5KEPw z&>1`Wr^;r@24gua)!QgPFAR|!P#D)E#u|+Ln1fxQ2RQ`x)0lmLa@}3RMwlWr#{MQL zo0eQ@S^uHbjjLHJ4OV79SG|2_wA2QOu{$a+Exqt(*mX?%*97KHWS>OPxgzloSQBT^ ze4yT{Kg!E&zRch&C%{ z5&3L+j=TZ}e0da|I{aSvE?hT@JB|`^uF=kDa6eEmL|vlA_-3QQ?Frapl<=KLN$Ggj z?Itn|F@dfMcyk11M+_sx)4KQFGrESJ)TJ(APP=FeN-La;>D#6@kIsm~0*Az$F*>Wc z=ptAhbxNFx{jC)9v)5f1DYHTcB(J zyiy3pz6Bq;FUbOM#`wQIh}N#9SaEifls-qBG4U$cOjvxR8r zZI1PA?)<*&hsK*CWAnfhXe?^^+eY|dh5hEJ!9**2i8~j5Uiartd)gCM+E^2l!|%5r z6H?*mY-i?rq#D{CL=r;+3JCAHe+4zS|EHivPAj|6YR>9UuwQNJ#*cJQ1wc^)gNn*k z%VXd2(8m$}eU)n=eclO6%y?+`Xl&LDF)tCnXBaBfT@UoJ8)CN2O@2(Y+N{J1XUo+n z{rRxqa;7R=@4BWuah6)uF7z*1L{J*(IvO90$bE)Wr-C6>?V*ao51K=@=A_JjJ(f&m zS1958z;xrKim^&18i{SI`i}J2W8S=>*U(0SVVf$}`v)Xl^r8ateV;Fs0|U^6>JYbP z{y@TjP~jUCZvu+`OLt!KU(M=eioQJQzR|Z(@$sQ2;|hu91|i%gD3|Ch2CeZr?(5EOjp9FIer2mx};+))wF9#Hge@xp?4W(z!Mjek#b{P#EPS0JMp64 zbxYO}eIX@Ax|#ULPZ*CLmcc!#-Qfh|l#b%wl?H+y#be#>6`b z!tlt(jnUubWzR|`%}Y3_X2%ozKMh5jP63Sz!)L;+7VIJQv&Q3Hba_1Jxd(z)p5?!*Be{%0(XTC z=el*@&x&PcahZBCWV6)IykZ!f})x=WdqMk$>Kd(xk;VUpNU=cQ; zer&&PM=>EaAq9)RE(_~v_9)d)>keIV=XiP##&PHC)w_cqMN0;RXBtwS8q04v#+Qio zj#r2%?4G0%eOCrohulLF4_+M^WR_H@y-Zj;)kHF&jW&K;P&ms>r%hLp;qaE0sECb~ zhA7)JLa$S-d(O^|@USt7q7}zT`KE;7WXe_Ut_%#r%oW!eDEkr9kq|wn#j~dsUa9Gw zV!Hkp5hjBL`&{k%6G-eQP`%Lyyfbu;0QWdXT*)*{d&p%mt;Aie{Y+Aat08*x*OI|| z$E&%;H`C!&iP^g6+oMQGa?mFFEcluC1-LYc7pJFy7WlIyJ*9YAe`MPzG};ZFGyy5Q^Y&&bbWEx) z49ALx?aAOyRmwWQ<3qVkI#D#gKx{ z6{mB*(@7zOGU6N3B3YZFhXnRkKKMhwuYrjfV&jDR`)dUnJ#QbL?Z3tpBU#2*e96Gk zN0_QtitIE;dQ)Ax8tmEINnx|?wE%%3Uof{wyL8yI!6oA~)kbPgWs~OpKBTI=YU$dq z_%k|rtf`8)(jsa9d=N|vVQ*pdxP)Q5={b+m=knEn=NbY=5Axl&NR&Egz;{x7XMnxx zn8vHZMT&A35qNoKssxk_WpnH*aNjl3yna$>-X9XPRTmRp*?_tIyyJs6dUBypNPAi( zKDa*sYb!Q;%iepQvTod%1Bs;J;r+v{?o9Nf~cx3C{@Yd3#}0Rt_%t zljv!B-+Q=n2thZQVWFK4dYZzOKo$?6}gmb~9KBeq4`=J-rHS zGUL&p2#jbiXnx*On;BnuH^h$a`x#c8rmtdpGzT8X33GbO^2F0iZ6*ac(3RR*UD5n# z_hB|bVWqx{FM7?k+Dp6Dm@QrQ<@Xk`B%x`oyqXE;^@==Fx6v+2Em9z(XZyRs)iRN_ zLB5lzAv|GbW0sOFSN0I}rihzwYOUmG_7m(KVvU33Y$iu|DcF5Wx#dwfU`a{tnM>cVQJrrON9UFZQm zpLQ{Z><7P$H_yiJtym;V)#eI448vfwsWJJGoB!yE@C9ubd^ku;-R((Iv#9E8RgbMq zh1?#5buT5~{FN4$5af|nduy?Fd}wllUB@V`$WVHDI^hsW5@MwkOsqhup@5^~PxWpa zK$+SjF!u{;O`_f2P+$Ow0agjWMR2Y}WU?v5Djv1m{kb5QmMkZ?^DQY1>jMRCA@RmY zfCSM4=F?Cm-`_+?gar!){38 zGDkbh5Kgt7ZxcP2h}+>h=x%P>zn;CL=KQH)N9iwJdm;rb??Btvtd<6j21T5UEoagX zmp45#2|{Y`es_w9if|iM=%ItUq=)sD{M#nRtdw&fDSTPT{W?zJcliyXu<4VZcqbw> zCOmg<-Du}0m1|#Yc{)J6snf%_=aLehMY@mG96g(6tj}9?cnLO5`&8?EZFKaD;-e2uSyo$sxb4Lx9c3&MV;`ympq*iLc3U*D4 zcx|1Kmy=?eYPcnJwg1|+e8c5X^|o9hKw`{Cb5Udn@m(PN1Ly_UWge-@^7n9aU|en; zXR7Mw2^*d4rx(Ons%mMkt_v|JJsi{qI_RASTA~0MVmg;BWf>S^)m#;GmvnE%6AG~u zcH%l7Kly!pA(Hm3{Hk;)2dniu(nAL0ja{lBOa4Jt1JO134RGT0Qmwc8AeD;AvLr_DQ=`sgq%P>gs2+|6WL`gQWT?rTDZqJ zci6)A3$uJImgkcB3%n=1DCF|XF+BNUq>2rDY_0}EJS)!3ePl!~-tF_cp^pCM>GB8d z+C5JXd%no@B9SR{D^-(BgHcBs;;x75C9Aff?S6^9l`>E(}+! z4bP*l?Wa~RtcDEkNBv_LFQ!syj`!TyJ}CzlLL3RR@eWH|HAs}}I_^>im?sxtHGz&T z+2*t3R-u_u>8rxFPHT~%3WOH?GU+cJ026d0VBiKMfv-a!-6bw%jEW1tdZ^gicyJ@{ zLaOeU*l!o~u4V$`l+J2K;zW0j$kvo6c%wFaf1ka0BEZpmUT;9XHDfffy*)U$z}yIb zU$L{wwf2a<<$hHm=CcX*jE#%Ez-p=E?S94qzAG65y{{Bj`Q#IFtc|_A2KE~i-7!Pv zi?-JmGNlKXBM+&NFUV)129{|=RceVRwz<(IrYq}yPnl3^TvkCy938^AY%<|#h(#{4 z^LF9*5tJmh(WOHu=)+yDDA8$p`Iio@Tj2hbneElaHU``lcXA)=y>pe&K!gz@fp{G9 zW*4qnYCvy2EG%&?Wt9HPFbDoo<)yI@3`&O3-~R)))~JF?H~U2N>|!?dwy_K zUAXq_!?#jP?2C_S9g0W&J%9ojpsm&rk~@N9x{)B#?C2NwtL4_&*0YvYc5YXT7L)dO zrB?Fj?Ah|XQ){%gw1tW$l9*l$FOEN@l%SmYWk{Q z;NrVzlRKd=Tvv?v`qxPw+V;BQ2YTAC1|NIL)&`-3tt}>W>+?Nr#xyi9+*6*Jp)vk8 z!y~(Z`gdUR>iJB(y}_$O_v6zZzT1(;I$K#t80jpOBk6-CN4|rmG#wt7g7&0^`q|1sjF4-KGjn_X#Hp9(!5eZ z$;l3BF7 z`jGBn@z1$+dkNXHg~I9aM)5M(uU(jXRfh@UGbj*CNXpGgp(iACdYmgQ34wJm^M@l&b4-4%(J50Qz~*bRLrG z0ct^TdU<_?W_i<`f`gd}p`PgyP!K3qJbgxfNNVZjg8)ulq6_{@I#RP9RqRHSZElJd zb+U4F+={_->S^`w1STXtLJM75!|(i8&GfXJGjEQ1*LH&vW@v#rHNlIY>)W?9x;oRnKo|By{eC=I`sSE{Rc znB1Ejod=?(v_i@HG>q2eo?w~yT6GC;I@>efbZKBn?XY4M$gjM@d`+5_c|sG-Kok8p z*9Q(mU%25EP@7s|ACuBhEui6;5Tk{&dt^oQu4D3#eM%p7ExW*j^5ccJw}@brR(jd?d%WA3ldDE<02)heLTNa(&`Fk2FL% zd5SKU+32Hc&DfH%+OA1%zjM*_wfJ@Vu7aZtRJaG!U4MBYdNPlR%k`kHH&R|AajF_F zA7h^Qn|YJo-_?4`#F%XT2kn{u4M`G{=`EO&C7Kc#?by9k1fj%oa&@R|Rv}pnv4pHc zZkMeDwesWHfmWqpt`8iOR*+?s87hkTAe8XE#vU^&PN}+nv7F=T+cU!NsGpGDAWRFf z9KRrVl|;q4hx&Id9lD8C{ZV_KfO5MajBqr3?#@uTKX_v9P>}Ohmm%~?b@|-JvOUpv zO7I~wS??9*_}4no9BuIGWckzBfGOs{%El9@LV;?b9Dd7*SCE~(%{tkI3(y-e&~Z;G zPn^R|yDPJICxm?>Yrd1gAB4hW8|6Vcd=wD%i???<5{7}cT2`U-j_npJpS z4AKdj;**I})GzG}q@f|>D)HbGe|)PL+09TiV#nVT>Jt;%I}ce-cAoa$XwjlDhBSV zPaeEe_G0%XBpR-yrwOEfrk?iQ1ZWrZB8~1hk`aEHY!tYKgS>%Tfuau=k=;Zswxq$! z>N*XR9}4OlYD1!B6#LexYbhVkef#u2fi?MGR$Qkc*ozgz-qD=g4Nb6@tDjczw7Z$K zE3<7Vh_TSM6HZ``4^i2;TONNb5XcW1)K$p?0e2D$m>IZ9E?+3ZV{qqzg5UMOCLU!N z@blI&Gdo;7QObJ#R&kB#OxK%VCSi2hcY7Tpu?zdE_Kft8O^qVf-Q*GbYwISazTVs+ zOX6xpgx#zpzRH>eyV`^OLrs9YXX@e!cpuIwkx-Y*9YkOXC02LoWu#M_c6(UlMtYN* z6i+r*E2F^dH102%qCF^nNYCOc7ScYNY; zjr(gl$)R)G@(-`&Gar03SGVxFp&fYK>zxSYLa0z4wvyTi-q4mA4MXHjJ*7|b=hA$i zGW9szDP!xSV@ip7Lg#t5{nfe7z~9Xz>y$4g12aA)Wo6_)s@4l74>Pld4-7u&s7b%? zzYNHbZ0v$J5i7JoEn!ka8StDr(!^n4_C4=kKs^s__ZfXeXJ5a98UrM3WB zhGGlJU^V$oW=a9mXSZqCVpvb0@wyv6z%5Zk*fW# zHQGEweOM6q1~Q@y!f;X6Gi!y*oLI zk(4%yh9^bn_P>z8db7ciB=jn4%mL*#L8*p_VznbhtoF)VhvqFRyB+&TvM&b3@_kqC z`vm`pyOHpkG3y9AFGS4wMlI3^{p2RdKDLJ6h-wvD*-`Jd=1P|wQlFoj)s7g~EsYyD zkk=EsW2}3fO?NnCR+^>H

4sZnNKx>fCAt;e5!8}+9BA#HD;qGrV;KK-8|_J8Tt zNwkMRNZ2U>xA<&8)?K8HYANR2Us+DT2mo7xH}8q%#-z~j>p}Fvn2b=Y@e%)sCaVis zn-pSAeFw&(5ErQ*j!1^dakLwxG!uZe{8Yo>a$f3QA#8d-xL>%$M-2#(pT< z*t<0kD>CAOnCh)$mlo7-ZB}}34S;}irBf^nbhTY-l@_ZUk3LM7IAAoI^b-IXM_P>S ziqy8$r8q|fUh9`Mxp658;9^vNJ7;<29^iu9=&mG*H|!AbnVqNJVF&@z(v0D_Z#>W8 zyk&IcXZhrFG$A(N8(#TCn=4PZ4z%boyD}1fSRgEtJW!+amTMON}xI z4Pe>Pd-zw_fIbL@zb_WQfrUiXL3rHv?~8Q(In^w0$h;*MCa1UlpnTr=YUAqJ)~{$| zFg6!mUkP-bpDo8g1t{*0#NK~HG@xkL1;U?-*=pN3p{p{=dW`K>EX?0?O=Kl}g5zghBE zA(W&Hpu}~44174{ZV$1q`rnul|MfSq{{7G3!T+d6{(GvC&v8e4VW=|*DcZy`_aP_@ zeYV!B^*(NtZ6P!p@-3{iHi@&q-z6noC`n}s7-IMQfwr>)2OFJ6bR1O;h`6z7&|1LV zgLk(ek-2KHdms|DTltO^DQ>G%>w3)$|NXpmN~7uHq{W8rcF0>L-uo|fg-sEcke#={ zZs0^D1BI8YYw0G)fu9L$_12_Td}+bi1yAVKG@u~OT#1}LnUCIQ!1S(Y^Q7u=3PeQd z+<0{zEc?5%908{FLIuIk_b^5>bB?RIxq0C@_1N-p<_}+SY995++n<+?WS+b?%#U7p zK62$e3upQ}L=ba zW&CpW@N(o$QYL5lG+^G*P6bmqdlZklh=hicx1XHX<7nGe;(;ZMLY3ye0jFRfDO=f<-W|ngP!ozbmKjZej zlL34PK$0ellcM{(khL)pN8SvZ!Rctsj%QtnOMQkbeJ#R4B20hJr0M8Rb|8;luG5+`s+>|S`$R5HQ7clX>Wj2$o2(MC4 zU5g~?YNZpQ6ix{Cc$>PC3q+Xw$mez}QuG}(sd(!Nw&@GPDVL99j%?yp3x6bRxBH%7 zy4&>orP|CSE^z3wfn4``YC_Z2t%>@0o$>S|BYpYmhPi+SyQN#=ZUUnN!4kw7+`k2$ z=g>KKtVPH2&S-!l_CXUEmcDi)MNe)EmgSlMBGq z8@6M}j|0_vX=m_1r{TP~%FBQ3&AUQLD_UaxReV92J-I;Qct$GJsv$HELwBm^$fQ>oakVNsQ? zI4p)Sl4>`{(Rd9?-Jy1gFOHg4huzO{?m}x=qZL5>h;cNl1~0DcdE59Ak{zaGk+G|5 z^|Y}yPSsIFSH;PJg-HYNemL3%u0HNqzKobf){6F`k!bolPj|Jusk*D}E$#yq z3ZXYum4i^NZ_gUx{^>us!mk)}#V3znx!8jm9{eGHmBsVus4e*vsIV4doq8 z9Qt*h0_g;o7=o3K;f{fGdD{zc4GIZ4jL_YTvyiI+e^9H;z3!~ya{a|Q^ZR{)9(@J3 zpW${_MkVGK;3FETGq_&~Q|VJHQvOW_?7S^9B=0R~Bi>D{5;Mv}iX>W7-vf^*BwX-1 zL8gOB-=9g-{JB?o6hFVU^Uug1%o0tPF3tcJ(buOzH_yVvc)mF>IacuO6IfS5=}38w zNqk(ej%o1VV;k+Gh0>`e$<(&dUNwp1)PABU6{VpH91s=&=l}Dlb`~;bnOz|l+yf9O z3Py#AcQ(xf*!V91lY(yXI$*1o8@zD+!W2JXT2CuA&#OWaxY89}lN?#wv}RByrpP3t zXr4Fs-F4j8qRB~yx4ZbMh0t5=KpxgBtBEB>ya+x&)lYnhOU&tpgSWL{6{fE%-M8Jc-$^ws$&5fG>RyVck|sMnvdx%4(01|Xb_ z?yMzAd`{+{sJLLjs$-H`XjIWQx!|U1qYBj_!Gcl2^p zk7?HvuU6Ytjz5dqVlDrJy*H1B`h6dVwF*i0-Bi{H$yT)Jfth_l7=dNtR2PZ z_Fy5?rSLM=!Oaa6(=zd^aeiKZD(hO<{kgTXg7mFW(4fMN1#F;LH6X4U%y^Ik!sxGg zwfUNbZ;;BmNz%fXyy&^Eib=KG<%ODcMu)vVG5gLp1`7E4o3_|3njBGB?DrSRHMW&5 z)YW&mpM+2{Q-i5iauO*<;a`zxeX2RpoSF_|fn^`ssuTKK)wyv;UJ=+Z9VW}>ehjT-hR^2YY9Jq>8uFWIy}#b2=y5 zDv@IX)h!{4HxujMMTJU8Z*VfzrhHJD%kb0ZkJ-u1m9QBxemXz@G+#p(J?QRMw4k?a zHth3G&t$#^(fWmSFIwuyB8>r23}+)atscN8j8DvRw+r%jRnrtlXR1`PUMWucDH*FI zJA~a#Is1i889tLS*3|K0sQ0a+*K}Xsg>#Dh;ts{Z8~R#hwD78;?-xFez1xn{3Th%7 zkjAj)z)^A5M;w4_ki2q9EQX(bU;L=c9eiE?40d8Fa#Xi@=v0`6Wa9Um@NRVTDz&Ov znbw1;pkFnbHF_A#O-*m)E&N8~Y36z|Wn<$Sqfm59r}uF^;}MJa1Mp2-#gc-HacTnd zCMBX8wytg|a$c4-s&1c39Vs8PM87`seei=;pB?_}`g*itpfsYRKEC0#g=W5$?UaER zXL6lAbNS_Y&?`KtQ+U5*ipb32Bsa$9rHu4wcZ;P9TEQTzHcOG3`jhT?b(C`>kLJEJO>^EAq_`ZiN08 zv{Sg+zS%E^;nFLPwQ~Ls78W={FecSWH}szhwnd3-+<0;-Uhhef)XZA}UsKk{g$eOT z3M!(X8sa^y%lfn>-KWMY)6A=CTm%w3mAN&{JyW-{vlPsijlg~BIR6D|7}SY{A43~@ zAfgh{0pnOU7vjOYm-L;;Z%RoQr(E$JHglLxayVWkO))^Z9m!M*Eu?+IRG=vAATFm1 z#tw&kRzu(*d~QO=D;w)a)?{;TCm5z3KVy=5eCcCSx4$VH^YaL=JrQiOhRSgT7fU46M0Jgl4UH3o z@5ZD`dJJx*yEJIN7+06Qy=0NDdar>78%rc%wSq$@K#Cu@YRBs}AmdB(FTt%KofbZ# z!!^+73JU`wbxLHvJ7~u}8#VU>XQRJroQA8D%<(lud1`92ipw-_Wzz^nD*#s<7vval z(e>Ro%SP6TR*kU(S1($gut!f=WGo)6M~qn>DRJ&%^DuMJbth76?3}Q*D_Wz4M8A-QPx>jz3Fw;j z!_Vmi?5l!ZDW^%>_-rlGY%vMb0Xx*FUiOuCJn>dFp89d?gTw29q~lW_gpU<+beux= zHT%cJOuL@PT6-Nid$K^cwsPL+hLlorfqUlKO5>V=ntn2Mte{{!`J?zGcInu@Gx3e~3G_Hy zA)mXP%f`>Rq|5ZbH;D6h_6*)%sE@9iLK}8;^QDElPIhCbILWQEkT1o=Kmt95OWu~6 zi*ps^DYU%-jmJLQ9wNzl z-yMBILfQ=dc;R%#BU-iLaoE(oLz6`vv7zt3!2;tthuQ}+ACwJ5yYGnJ_wCV@s_1-! z{L0d9%Sw#|W)YM~v+9Q7jX=0I98!sYIe2WWgrbORaMvapTwCJf@V+eG#ICA&%KXH5 zjJD~P-P=4i-r&9X)HYZI$RWUA@#KNKH4f%H?X*NBRQ5??j8D;S-}koYJ@w>KgX5_0 zVO?v&Xfx9uoH}21oF#jK*f%Nt6k-Ybanrc2<+s;JpP?aen8=g$trR7g(4Qvt!w+ZP zjtHaeqlN;B@P3Eitm!aB%VyTlT;GMQLU>%Vk067+F%T!?@ir z&qmi|pw&_@H?R4mw5VwA*P6FR+z!6{%bs1`GgX{BHDq?s^ywVgJoqz=jV4BlXgS)K zPtt5tNrY|J8BQb!u0 zc-jQkuTx#zEMB5iL8(4fZ@9AHqCig#o9>)-3uz9L;dJgj14c-Gp*u+XtV?y>IrO~i z5!Y{ueILgHw9b|h4M#S!15^6@dlnbxImw=67XMu0ZNlQpB0=651kZsTiJMAITQ>YTC> z9T-m{++Xwn*Cyw--L!(6ocW+2Bg7NFmy}yX62=AxZil0%~lQne%zD&JwP?NXS zFHSVnWQ`K$SyfIIy(cs;+JD;nWRwQ6rS-%1pk^|g50ln$Kj|K)ad$vi{hxNGH9u9@ zY3f`NQw_XqmvlO3)Vce>`#EFt4n@utS}D|hl@sdZZ@YHH1(W?Wxzn>R@ay1%eVsq% z{hCS(3Q3zN1#FHN&&&#fUuUp zL6b+Jss_}=i`3%7hfK4&zAucQy&L9~HFaF|*<9`3=1Zg~d_>CwdJ20?3yka4AlpRe zgVZ?RCYhZd>+I@HrH#x2GI^`~g6X6SALhn72MFx+YF)1_a%KFl#VJ=ceLYtw9Srd; z+p@AU&Af$Mz>cT}b3>ud$Z1$?E^!Yv7U2vMI)q6T_@oKgz>f(7NeDOTQy`g8oIjfH z!aQ7)qU+J75IrKZ$Kty1!hZAx534y)^?XKrWqGzg9>YN~1=Ox2^()!clQ7`@Zda*{G%_-&yBS>N3Rp+FP&1avO30tJde%5J_drO0Cq zygLf>Nv_K)mR${E>7I2yF;cN|@%l}qTbxmG)`!{a5R%3Dc)vI`C;W1!lEyibUkS{a zZy{A8tJiqQL!`2y`q^!U<5^rcgl{rzCqK$-p%s9fF?FdH6JT(`#qS+;Pq5*fD5kIs z!CFsSH4%$TmL7yG$zLeE6#OaC^=M0+bYZWqi0<>=qPIqJ7q$_z>n+fPY(8)#5C$n% zTx`W0S!$MeJE(SHHgEV&WqJTo^hVj{HGSQz=>zxCjJ-#nlyS~q`}BHxqatT@?lRe1XpqWnpSy|=)voC7W1(j zXsZRDPg)N&8pvX_VJF%l2(~}sG+drwOxO<-*kr!&qiO)z{G~b$`{kBZsK@b*{bJ{@ zUN(2Jt2u{59YA0`Db_#f!qQOuEYX`!XD>C{Xu;2WmO-nua7TOZ$@*>M9FDPyQCl8` z!mfb8?mom!e)bP91UvBa%0{8vlG##kAv{YD9P@KP9ap6aPwD*mJmg{gmGE;XlFpb7 z3_NsjxT$%PF66Z9lO?J3gh!|v?NHz;ZlR$aMjGHq6P;Z0|F!?Fozv08m+2_;ll2Pntm#g z)6j~Zv6?MsJJI$hZ}{)Y_Qi(YMA)IKQadn@5NwEfJ}6$89{`$_x+@d+suYZb)b zj$suWxn0ZG**dr)voJ7Q^WwU+q}8%0`Gobw`6z>NHqPr5C2&=9;w#~6dGJW~-bT}z zz-%s3+d8&%v)o_7+S;W){&l@Og}LzC-47nGzgnL;ax>~m(jBQ9x-l#wN<*G<8x+*V zkZhXe2*EYQq_Nf0wum-OPyoxQi28c?SWWtB`DLdKJJy#`TWjZ|IpT5|WI+a}H{8fG z?mMZ$%9CGxpxN_iIyqt0)TbppV|sn#V;*}drgpK^@m2mq>Ral|#=uz=6Hp9Uis=kw z53Oelc2I+dl-rf&)?czLbiASAMODM0+Yb7w%vW{p&X;cGmA8b^*_4f2vs3|vNVer8 zX_AA2KV&n{Q(yWX0%e)8(P~z{xVT&TAq=&6!M>`lx1XPMC`{WH+&n&!p|ii1-@AX~ z97y&`rRIVr8`9eS*Fm}?=xi=H`EB5NsmR!-YUZVhT>E>S#3)EF^Fu2SWg$a@AWb|w zu>&u=0%D~Y;I~0kzEu7aJx;ufsZ`3KZj>(S&Z?T?&4nc#T6sflUE}+#>y<3qcE*Hs zKaNSCeG4$O=j>Pv!qo^3=|WY);&o}mgx3`T#UIma4rzTX`L>sxa`ctOllx|S8_z^b zwoorqQ@d9bf>|s;d;z$+(l`NECvay%vvd3dHIsJQI5zlu{TFStC*?0c_Y<;cXFKyC zI}>roj;zkY=K{ljLa|ef3Hk_d3 z!n3e08_Dkro)M_McN%qq>;i6^EZhTe=y&WN4V|j0Jy4zR?&5vw^mI#!fY!apR>#=WhdEp6VrLcmBJs2Aro001chbY5 zxxM3E*_|It3Hn)Oh2!4Rn~ja^_ZAn%jM{gc*0NVQ$+n~dq6akt<=7|Q*35`Eij?sP zhP3(#<>Cw&G1rG=u*DDh3tk#!Pqs<(MB;m9%`Pm#pxI>63RBw z*yND@donj`yQlkJEbCD_;W#=vpJiJw91A~bqO;o4;{~qI@h6>G^?-X=Rwna&$J1`7 zJ3Mbgrfxg3UgAml^4vPf>*-a0^Ui5$JS5Ux4K`zNedE%|3glx|^Uz`vdV#)`KPT-( zSzL(rwa~u645^mkGeu_#^;mr|P?Y=j>$&7DP-Cd3s?XWZOwp%mm>Nt)(U>Uq)zl=E zBe@}gVOg#dM6ykn6|LIc0>l1c3_Ef8APPDN7OUfPh1y0W?8 zP9-jukKLI^l8H@ktgVdLgTBs3>%I_V@x6Hgd7flSw({4(COo{O#!>|5z_Y{@lyCUC zqNkd3MK`@wY6zFtk~b95Qq0S9Vr)Ij84AA&xh= z%ynwZ7ceOzG{dNIKk4SyH8>Gpu&+Q8T^l2Ho|Fp8ULk5yyC7&y8bb|1(+cF6Q_40Z3qB26@jhfV&jhqQ8$+QbVzc`oT1$YT@_!bKkuRi6@C=Fifi!B4V# z;~(r-7rx#m73ik+lq)VLaV~2On>^#Zb!p(4$7deA=yP^dJW+W4u{0CfkdtFLSL*dh zwj|gcaN*vUhWYZP50o}$_J2triFroT)Is^vc!VpIE%?*GboXrfe!Qzier6KJy3qZ) z|Jq*k2aeYFVR@5>ot%5`YU^~us=7f}>n$8DBG(mCt;RRug1+{>yTG9EtJgPUkuk}` zk>xsW9)g*6^ln_oP98hrwun3cn$A}$x7*lXCvdlWLP$^B>%&nJ+1Kg^H?10Uk@<($ zMCy}xSzq5BR6Y3QX(|YocO=D;FVhAvJU^V_%7h3UcT}TQfz?NuTa}|#ZoMSoOtU9? ziIaLuMg4&xRK!+&-J4E z6iX^uB={w*2O^+xoa9Dh5GHH-`{~wc83>VeD&A&3Q6N^+MAKK$C8ys9Twc3XrR5-S zyCP^d5gb`*WX>Y^ooPJ7jjXxL%EUCWa{PxkE}tiL1@k8+*gh+EFt(ku6uV_FllMxb zOx`vdFEx8T3U7WLHKK^3BYAfB1~PV3(?p_|EJ}N-*Uubx^YUn&cr|&s+m-me@zK0@ z7Y_epc;2!=CAu83|HQ~tYDc~-Ibie7Xr_$LNzsNntRhv)--*~W1a*LgqTWr~p2Lqt zY+??%@;S_li`HxFe+?F%48frsmwLxu9t!J!A+&z ztN$TisyQL@x)f9w3*G?13{G9Ldl9X{KFln$_Zz^A+?b*%-3boWTH_Yd)t?Po^a`~I zUn8rYcpQ0XR?_%9Q}lKL2$0N0%#=Zos!8LJdnm>=1jX*qwXimrNHcf%G^G5}e6M21 z{X<`)IpprnK1%XRql|gRL-^A>`JnOqU1@|dHC1=Pl&6J)+Ka0xT%W@&URGv*+&C7s z@9m|y74RBXRc#n zmi%Zx+o4YXAB`#<-P{qKBl#CgUg>2*A3&K3PHMQi_NP#KwcHe{&R8ga%p1I~8#I+r z=aUdYQz9*b#Gl6lKTwY?&Bh|DSoXtpn$s=b4PgV*i{0F)D#8bPHIF(Sl@}I&uB{xR zD)0cZN`Iigg(Vd64%UW@d8ZM9V_`5Vc0+f@4L&a@uNdAWm6fLXV_5ika_*V62=5n4 z-e$pf&$4v(hXfzfkRmDL;>_F9o=WJ{4SLL1CS9UGE+Thk9XQEM4o3Mw$H{kTgR}!w zq*_o8#pm51QUS@gq@qw2G@4ap**Rn)x2xla;ZJ9j8%24$7DK2`? zO7NfZEo=0rV;2pL=aZ-E5CKYg^=~@!8$4NLom0mf5D&m>w;#>2H~15TUkya}A6OjG zkX~*UKvm#_Qcy+yX^5lxo{}!Q`MpkRAMScGZmaU&y|Ui@B6;ZulwRW?3DOPYggP^; z8k4+UxvI?FbxRrZriP4Kg&vl@pQn~1>K+rn`e@y{b8Jxm#VVo>S;J0rddoz;v36NM zbF!x-&f}}ig}J?#4>p`dgnC~QUVJloI9Ef}NEWl-hJUBINy{?s0J~CN!)}>Rm zDo}I_(ViWEXtfCzgkQjeYD8Fqau=Ey_U6l1^y_+D4-GeJQR>0+EaK?L9yY^0P${8s zlymoLAWJ)H!VSv;u50?B=Z7kh>=YF|4HPuF4~jyJ`ea%e4_&&i>@|HQw$r}$OOEn3 z-Mz~#$OU@PMunBE33nKB|KS-M3?+!il&p%#U+^qls_`ReojhjMzN|wF{YiVo_%q{IxINh_cofFksOUR`ip=Jq*x{J@ zNRpG^c2a5(zHX@8(F%(NU+000I+x2k>9(#(N8T4 zA~(}Rl9X@WWdF?f9YvD5GiqtHx(9fUVKA5Q#cL$Q3=1>K$^5(E?RaVJuHhHB!+9b0 zXAam6D_x+A2CgZzN_N>$&4T~hDCPpz!5kW5U-@fy4_`?+QFnYn#yvf{DtUuvGD7@j?*m9HEuHW z>y3%cP=Z<5H`B^vXAQ=l2@8sfTjpjr&JA8SN|sLd^VC0*C1ji`|1A(c)h~-2M3F== z?Z`+CVQPId4+%5}U^vdNU)>=Bto7cT6KU&6AI9j z?eGk5rq6EwmhYkxt#wC+qMkSPkz=A`5xy~@Rxa>v{(06^F#&?(?uLS{gT74CFx+CC z;yUNlw}&z3HZ!#scC2o8$Q^C!h##1LDDJ|0Olai2e?^y&EV#;uENirzowD4r8I{F+ ztVa!tCoL`c(Mh;CCcl`R*#j=f_gHhDW#n1W=4$pd%rtT^yz5nSrZN9uUR|oQ0`(F; ztiYz`N zA&cmc?4hR1yiz_9X47mfHo7)-QQ5RsuHVZ>7WkvZZP{FEte{3lc4*cC{O!SBfl$-W z?wg0!uWFA=lzIiJ1;TP27`iV?Efu`57mgybw$(7@_xCYbH6i;7UR7k&mG-_OOOy5B z2tdaKxD?5W4D}BrUf^4#2+PAy;5$3}i5{Ux3b`j$7efI4M z3*e3b4hm`l(q<``9R|`w{JQFGQwuJpjHcXAqrGBoYLt_(z(tE>oY0QmTl5B$I^ii} zGA1n(`YlE_*N?i=l*ZOJSvakj)IFBm_2w6cSCh^5bC)ZGm7QRWekFRU_Nv@NshP8$ z4+(W1LRA6^5^Z_Ul8SlAt3Bq1mQv$ND-#X+uRiE7Nr>g%CT~J-Av{q0Bz_vBCK)<@j#6nGu|iC?j6$o=WPKeO&P3Q(Pfu;)}6>3#G=2JUYKT^3l z7*)Ly+{Y1qoVor`ay*|wEssbR^DX~b8bcr1z`uqVL8@YjuDn4J&h@{r*>wLWo%Lwx zn){D-H}_LXI&+iTTB2@=2^C@e&(G1*C2nsMgmH_V$XIlV%2pSY(@jVQ1!{nOo?JE` zpHdv~oT{YAR-*$?8pV)Zai+5ouvfhEA%>D!G2;pYirRoGtltn0}^MK;zq z-o%DHydV<${NkPq38@0Nn#S7dk|l=;JPf9JQ;LSVTD6_p1_cJrl_suzq7~nqkZ;pm z+Isa7?T{Q81BD4(D#d~mLmdBV@JlxPS`|yTh?)s8JP(*BRSZ79Ic<{UvT9u!LcwPe@a-(*WJBn>D>qCp^GzW zj%IQ157SQxzd1`81dfO&4%M1{6v71;B4`w24UBW;6h{*S6f=;#$DU7N9Zo%dsFxA? z?S_UDVLhHE=ASa#g8wy@&(1X4ATl zF6n&fDk&Cq>hF^@Dd^d(kz9C&Z0KQl?GxeO)66cK-Il67c}(E?Ry!gV%1vW-^(p%eUXGO?h*C>pg7#9g8|4c~sn@Ijq|=-cx1p$!qH0iH5Gfg!4me)x`)w<{j#^mOiAeN}n?)@Pl4NdqDdW;{tR`AE|^zkKIQlUVLadHG6aO7Tt#v&8DOaGYPEDsJ9s40uW!3AXv~nX2PGPJ*53I zL6r7LI=;cXY}%&eYL`b@I{W45zJ{Lj@0HkF7YXK_FjlbnUGHLpUm}3kInr(&rfMc1 ziZD}sUhwbdixO3>-}jw#9$~$j(i3*|G+kK(@IV>B+iq4S(zD z^BIw6W<-79Hp{g0ojpxk92(@qf-+t4m(L`Yc9{t95CLH zTiH|Aj$K@ho5AcMNg3jUKo9{cB1<^k=<%hUtYY^<_4yC`v(Gq2T#Y`ncy`-ZM^LIe zSe0_;bF-4G68Da5J7~t{f8f+D|11{fPG1f`(f6tg+~&&r%V(J?-?W}Ph`Q7{+-aX{ zzQ>AL!Zht!!1l`@F2&=j%iorKKlGS~TFMjG!C_pMh9U)AE`*eU9?^XSXuC>$92UZm z&F7|!?i;CmXTdL3>^2WN8mF2?8>#l0@-V0Hztu2>K|qISMgpu$mL$sE=?PwRhZV?i zem0-so;k}k4}4?Y)jz)t)Gck?3_ty;2bno1!+F8}A#-qme+)4J{NYudzwZr-Y&6}q;p+I-$%yoKz`2H(+WeV z+mr>_5%$DHQYx+~up3bxTBUR`7{fsd6vzG=VQ)(c=g&Sp-RgU%ki(mr zdF{QJMfjmFhfbWwL}l?1%%dAwkZ4jx%TE46OtHngK(}Rvx$3&GNJ-0cw;X&#*v=f9 z8M7y-&iZvB<7$XI1ziXpH(Qz73X_!YZps_e&&}S|>MS;_Fjsm^#3nw~4rnDc+PZ-x z^$Xf;F(&h_Mfx{PO$N)wI@QSp1uCU~`!$_jSH?Cr>)F)+iDD+C^>$gVXq>t4=N_!CJ@0$5pEvBwG=mzY@={kf zLP9U=EK-%f^+lFsip#~4ncV2uXYPIeD96I$?He`|WsxuJUXNT_T}LD*3?skH&Wv>$ zjV}`KP;5DqKG#-^7)6ig1JvILPMZ8 z&)Diyd^U~2cm})!zs$HI(8^iLW5UCT3WYbD*S~Wyc?C z!`(^UBJ6NGLRJ%QwEEoRWy`p}pL8i+u?1+6phmAwA6q&qxCwSaJ+7z2XSadtHA#GR zl88%Kd}4|1xK%(xT>o6Fq}W1Buf6y_#qM-cKx|i+86mjGJK19R?lY@`UOo>-m8lw} zA{wJFWu5k1SO3P1228L08)}i73;7ycn-oSLhj5Ej1ljFg&QCPO3SP^ke7CyTS94o; zKVwhHN96_e2hLfyJy<&yuo@LlhUsqv& zW}*l6T7i~>f{k!3d^?Syf*^%6dMrlPCOs^o(|OE;$olj`0Z6&y>9)K)Se9 zf|1xJv7K36Jgw$|?3$1M$%O<17vtw`26gw4bM#W|8VhDL8AGcQiXkZ-2c`d(eT1Tg zGcdo3Cq{lkdn9`YC{$lJI4P#-?y+|3ah=FJEnbm@W)oxtXF-N(->k8enYZgi=U^<` zW^Aqxu`++MeaRConYxTVxcod?VTW-;oK{VA)da=0UtNaH{F!eUvvZg zP0odwvX!bdcDa|i;ly_Mt$9NA8S^JBA0QPPnKLL}+8DG7103{+MB=njG(~h)TD46j zD7r|?=Qt|fD$q^Akiq|i7>994@fSu)$Y?&aLYuWCpuNVY|AywSr?EppEvuw+jg3ek#N~Suh*_zXHJcdT~BJ1Z$EJlDG+Iv z7;)>+iN=hYwpg1}BKV53$^yo_E_(grm9ysxq-+PGU6q#B%U%q%=xTLQ*{$Qmk%V~-eA*BxY?G8tNg`4sgcNgc)eTOJpLFv_T6JE8k8EM~_ zs7@mJ@p0$W+KjzDh|w-uF1OQ1Hr*RsSKUM&a6DUGkEFZG;lojBZ2RHm|DY(P-SDIT z?(@GDy);CV{R;Yq5_TkV9)h+4zdq_4AlEtt$_4ZTyjg$J>4_lakyl7VKj}mhI#EPk z)K9v>D5;NM>HY`zqW}K`Zu@db^MK~aE(no-82aP2-goq-Y&`6{CB+Vu1!&R)oVksZ z{yUYQ#e@WuTiBt1`bYsvRkSou87qX}1aWNTL$sDO2#8~o>UI8$F8e0cZv3P>0Skey zF#lghFYTSL&U|Bg!OPcae^RG&i0%|ec}H0CzH|E+nabaY@AKMM$Z6P|MtuqrZu;Y) z?>syA5zJ?7Uma)~87X!_XC`k}ny2u+PM6Ai`o(s_uq|s|;&^j}i@@Bja$!T(Qap^^{>{jOpKl%N07Pr4zq(g5`b-Cfz+g3=(BmpKRV zt!T6{>zAE?{v7_d^^o{WqyDG;|3AliT+T@exXyE}p^mXASLA66ou3%W12I#5{|rTa z7;N6w$NO!lV^QGJiVHuQjbqZ@c6>X$2JVJHr-UN?!={%k1O(2WMfO9#tP^Vp^ef=< zZ+#XL0vE+1IY^Nfie*ogqgD`=HwQh?&UrT4qf;-gPPGX;gv}j(V_iLX9?1Zz!$Cpd z6f)AXyE7rivJadSfC9}0jiB~G_l8()mS(TqS2`ZXmj}%DTsuH_!2LWHwAQ)FVXOuE zqyGEze~Jda|FzZj=6^LczetYwIr4AA@^8aJ%k*6CU;g}`9hHCko&PWU-TU6``uf88 zDC(n1Bj8AmJsm6g&j}H~n6U5X=)d*!-+KCQJ^lYC1Ll82Psjd`=xIF*%Wl$jhw?#H z&m=|iccB=XIJ!v*63%z|inaBXzNLn1!CF?^W9cz{Z?2}En$FY9vC0zF3e2WRNz>B; ztq~Yd{Tg>0Z_X*)(Vu~Zso z_@ke6>SfS%a3+XzMU38&_1mJaj>0OKgFE3iPzdP{7z0^~@CtcPUWNQ#X;6UMv;ZOi|?Kf0#%yr{!6J`=(5j9h3-UPswfGY;d7O3>u z47RjUp!8JO4ea{%D!?>I90a`T?DU1L(Xc_c=pPN(k^%6FcFZ4)Pb84cvV{IM6{6$| zSQ<;odAy_)27xsr1^$iVE*XmPTNL7-c_MSEj%{0ryR>)gEzZbbFsb=}n3N)kVnOt~ zC6K>CNzvJxxeQa(cH)5A!RW1Zl3DOS=0xF(8bO5HUqo|3lv)@99NgJkB#BFqec zUH`Kdc71?;K|5+=`WL}ZBy1J~xUH)>a8O4n=l~eZ1#A0jkaUeExVtv!FEajy%Uu(- zvC8=aLXkv(E_eNb*}w3E{dsij*P{x5Q1E15te5%<#-;@TnBQZ78-;LihoioR_{C$1 zpLCXQGcl90C6~4rqIV!PPVornVpIPwSpiIj9zpyyiBU8@2(azOqm3rcA4Xt^`ELZ$ zz$CW(Kk2e#{@}Ch$kIR#T|TYho6`)gSHrZh$nACSKMdU^LPR@kV|sB{>XdbM#zWU= zGdmwyGQJ{n5!kCBAUAOGC*9xD`wBls*{b_39)N9kS^?XF9O*wPm=9p^Z`9=fwVIO{ zd;#Sj-@)pvPX9qVi1SAT<>dO|zmblHVvYQr{xy{`t@Em#J%UI{erpZGd}KDv~X{f80#onwEvaS{c-1tNd5eEI$#61(O!rvMTwV-vR5 zegD!K%1PwEp3UAw9ROms`5dA!00Y!-dx7t!P;3wwW6%r&NW^Qn>`yu1QQ@Iz?hg#@kpg{ z)P$iHamzF^2tAG)pw-@N_)TCHsc#sP$uv0g+$F>s6i5N(B#iO*Pq!eyv>qGsTPmKv zL4sQqtRA?O+NIO3Wdd0I{`!;dFS`AO#&;^`CJW^x^cO4)^%tyNfzxk8Z4mqbdAfhw zMC-f1(f+>5xyemADa(lH@B8z(Ay~99)@YjqY+my$xbXHtjh*5KhH&&IyhbZ%7n)96 z_TSLDz9F!e{Y?RK02^RkNK=sIls_cAk<>dPy7K2at2WaS+HH+UC)AC&nN{WSgP4E&W=5IBNm6mNrWYy|vaArRgF^aon~F5)ojN8f`uHxnol35S3< z^)3Du0iE6N0Q0}T?kqprm99CKr*DuYK)N(ZnzUd~=x_eXQX~-ndYC_#dcS4Y46-M9Rtm|gMh9xGJzxLziF~7 zh!^}-X~D=p>wx?X{ZdXdAamHhnf2|Rzv+#_zuXN5f|~zYiEF~N(AzrO1CC zCOKgaBKk-E#wFknF5S<}zaa4aS-{Nyg^LbFelZkqXzLG$;Jy!kvpzur`4+G~TMgKG zs50sgJ9#($iP<*68`0Ig}B`b$;_O`Jrd|1=8pr(Mlo>NjxIu2uO9Hs1iu0r4Nk0Ay4M z>K9;uBe1l81J36pI#J|nb_dD72>?8ycGX{SQR{Osifif)IrX=AcU?0d$KXFTGXUZh zuamdAL7P0_j)nW;jVM$M0`ne48j;;3%lsx^tOT+GkS|k>6_C#lvo*O3i^eqscln-hME=xjPK(@UFmSPRp-g!b5){?uFPjgG8I(tl=DhxdIxT^@q@c z*HP=WyQ`weM*z=vaShODmw?7J)ch1MY-K}ha8s=yV5<&eW)R!tW+2WWRB-khqFwpV z&v!{!Ks#~p7jU#wCx`h21m8Cev_8Ax4-Io^yfrOAQFn1eocQ(gj`O{{ufm2aq^xMN z)9yItU&B6#b|nya`Uklw2;t}%Ktl*ndjqYY8i33AjOV{_@j>DHvVdmpPPZmYQ`Dhc zI^6Kvs0imY14k;{4X+Hy095N211a*Lt<2)uPdXY+>oC0P4DP&2jz00kW zMU@Wz6*=-I<`=X$%#Fc6SNHsHeCV|Zy)=DTEObTr4dUCCt8{;gxZhz!skgm z#HkP+4%Zt|D=!n55mhh>d&OmvG+Dz1R<*dYPSCkT>cv+BU)_`0dYR9lbRpBbz!kUe zUiDZC_dwo2)bRtePuTbc!g@T-ztS(b?^ZcP(HL0rmQXA-!DU3HXE&4{E-!@q7rcYZt-o4L{MouT3u-G>|2=I7?&ieYoe? zkyJrjlQ3p^aqQH?G9UUmbS+lVBbu!^{qVoI{=^0sk);-&!^DLZw1RKW(O zHG0C%Gf=Q}#Uc1+S?;}g5zVR>_Zxy_LA1&!ec}^s%s*XUi0&2KOaRk)nw!+ z-CLgtcbVxxBxrfOahU5(RAv#~48d?Fn9~>*91INF+h-s^x#ppo17RHpi}%S6!!R|{ zjXrU+6&u0TH9*`@x1>u}R!Ro-V~V5pR=8i~yyo!S;lda-A9|Aq;bh>4jfmmLDMjHt zA7^t-Om`Rdu z9S}XHaizYZ;a%$crYP)F*Xl8o0=I`fckkZ47Q%AZ+pKtVna1Q~Pu3m}{z7D<4P~<` ztVgR%Ek3T)?-dNxA7a<7NxxDT_PTQKxNr<}Rqs0o&~NqO-k59#&`V_JU@1PP1;Gw= zS&!FXB`G5aw(Pz$Q~XxZJ8KKH;Scj#em+DmUCy}5PdqxO`a&N)Vd&Jj2^Dfi4xvIJ zcs)!4gbg*52LguW)SLobu$}@Fldji?tS>WHYzH_Ahy)EK%3dIB&}hEJHVa%fNC6+PLq*%Dpmi@vtLKkQvTD82V#?4JIi^i_ z3pkAu_AmBqGiz~9!B3L{kQ6IYR1W+!z9c2l)sniRq|_he&6!!=tGeG*v129i(!=Z* zQz38WGEDb{<)CcVp)*mKYQ?yWnhH1Qk)DgOE8N{e5XZLIj6DHKL3GQoL=Nk{(NbG5 z;QQb&O|X~x>w|sVEH^tX^O4)dk#6)UnfsN@ZD&$dAz^fE{o@VCS*Y;|#^iAR>I>A!N>>FaDH)@0wR z3*jxZf7V%e&)}htP(lgzi=80C8H#(kNIP9v; zb~cwWGWYG(1Kj&I!qK1B@U@ju^K!YD$sEVhA-D@1az)x31`7Ql*Cp)Y=AS(5t2#2`*dl&f zXpdHKB^-D=A-DWxFf+)wX1U#jUo|;G21Vv_0Um7+%RAv0d zqK%7_PIpZjM~ogp@K9?X7zPd3MeGTk0xsE%z@}Qo#n@g=H^Anp8|sy_kSq>~KFZ z)?o?h;6E#~R{6mvu%&)VM)d2fGO7=2LLvp^_@dVSg!; znqe8oB=xJaMg|vmMtP-6MCyB1bYw86_j?@B0sGSZ(bPoW4=A?;v=Ok;ov*&R;F{>M z%JDzExZWO5Lbuh(_jq{up(;&j_US zrw7aVd(U!*HwqV7ew~&{(5W0gB|fm``Mlfhn1S{oTioc4gB_V>%JMS9c8&Q)53}(` zo}spJVY{r7JoaVoyF=E}grSZS*R)el(j@2P zo|_Fy6~Iu)I3ovT1re?4(g-KigpL*U3G|L^)B{L+q)&`lV?w9c^oH5s`tjOu)fnX( ztFvkM^`GY*F1hM{tav7x3JwNBDrqe+ywQ3@*6BgTgaeej_=HD_{6^tBf>dO4f z>-5){*?VZmVv)4#**FQ~AIr6~(F__BB7^VW@dw^o<=PCel|$WHI3Ik(81^oU2@qBh zZcj*E9VftuOh%kvi6Dcxo#hCI^vu(Rdx6%Zo=)I(8bAiKaO;a6py&bqo*B| zJK&d&&O&U|B+xF1p6Eg9#v)^b1@QOt-SS9n>Rc07%hR=Mo1b*L9kaQ}BZM1u(Mfq) zB(@+`b;IvW#(S2YG^w4-)D(oPCucC&+8eH;16xqs6!9696n3nAO3D4mmH~b`)BcU7 zz~XetguTwAgq6E%%NVy@yLg+7(Z`Yxn; z`(vB64#{Jm7H{1xVo+mrc{K0yt3WwP1R1_c5hifcczb6H9@C`!C$I<8{fbH5?R;is zxh{%T;Tg+<)V{cpIo1hGx3dNBl{q zArvu{eb1KN*k#L_W$b%onNg<6EZr}9f4|?)_w)PR$M5*v$M28(zK=P~j5%hm>v~$KiH`W)L#ttn=6 z)cox9x5GA}_b6Y{RU6w&Sd}qt)S_q)FV6~7dh)E)cA!aG;bwR1b-^pufWAV2|8*nX z{*T)Gb8#_b2q6t?(*-$&Tug$pRwqm+W5OjrTOac=kKLptj?k>*|<1dbN z21;5e#-Gf880u2lT-p3Wd1w7H>IyaOS=zVWNsEXlBhUu?0#;{%j^K<8H%Ib8ToV}J zCx5KyMaV;0;nsbJ{kQ7s>(Z>F3@)6Bh0jY^vQ0Y>@9ck2%Lo;~7z4$mfz;3OL>)Mh za{3hD#-LqoOujMF^dQHL6Q7=Wu(~ZjV-u{%Szp%-OJRJiF~pS$c_|lh^RB@naLoJO zf&yMlz{`1mZ~6zYFl4Anhyz!d?r;LmpIBD7^D<_}V)Vl&^l;4sB@;)h5)Xx|*(%`; zm-!y14s>7Emfh|L4aS_I`fzm7ZC|($^oWqXv=9bm+J2F}EOU0tyul>HjqCPcLsQEA zaK`%6A&pE`tVOa0RA-`&FVer%4id_i*Eru!wM(4F7{BM>ZOjPciZ`Zva+~HCqHbl z>PK}dk#HgUu2&YD$Q>xKhjAksrzk^#qB}^U8tK*u;tEOf>p?Ac0Q2PyEFjNz%Keh3 zXL#;h_@U6q@0TZVbwaGljIU%4OR*A^Q=7o=_a*@KS{j6-30h1F!urk~62dxENsgkC z3eIUArLqH1Uq;X>zzIflPe3iLNN$My|w*E*pMl z%A4%$W&Vm~Lm{ ziaSu;Ps$@kr+Zcy?Zk&}j(Pt4yqBwpozvla&*88?JQy`FoE#T1^HGj|fPT%^yH`Gz z!_aCfr0Ar9=(`imqRVM*39(RG1$PjL_Og_jw(xv*k*$G`kA&Yq z61!i)(w+Nv?uk)3#BR|8YxLXyZwm|je>$H34cI*Ve*iYq0Nyfs%bxp7GY_=F#G@?_ z)3`RUtz{o7NRU5N{5&#;OJGWfgacZ%Yp|~*hgcPAdTV@p3^rZnEFz5@`Ypdb=0idD z<~vt7RlvqEz5-WZ(|}iR75K){%dqy8?O0)b{!RVr>Q~iFK)Bxx*GsTV?#kTPffu*a z9AM;+-(zTQR}H`g_ah%6&)_R1EOo-M$_Vv?Vk`nXYWtl9Z@Tr3(P7OkYeVa3c2&p* zDczPh>O%TMm289x91J=7TvH|O=yO9`z<;&xN3h0^28VI{T zmztCs!YN;WG`LacVM@sSAAqOGBCQ?>UZ34&fxI|hWNo?az>ggxjDJ- z=>O>y81#Si54;_wDTG~ey{7^+UHOpSWr0L_QvK$508;<_%xvRmum;B)MI{aR0*5w? z3{Xd{44)VsH9LNqcsxb-x5qcRL%;t}iM&thahXq(fAcGM@S@GpxI-3=;4RgIs(7=bM^1G=ZFI@*OU^BI4e{z-+7 z2OmGEIDowt0?gfD2(bTZBxw+`cXyb1br`L|)?RMlG^Dj}Rlv+uuRd_3|@!f>m# zuVSXvN8Y0rkEij?@r)l2*eay{cy^>=a(fh{itT^R!SIRo<6UxN^!STf7dPfJ(>;SX zrwd<}NdX6jQ}59{yxcx+@oys{M+f2GwfO*7psY!P z=F#!8?B^~Qi0@OQ(iX#S;w1yl?aTtTtZRpzd+}ZpVJl-h&0B3sPb(Ne;oe&A3pid zFOvbEL8$g7ungs)&;j+=J}!ipZ`niq|%TD6_e62I)5E45owkcQ*W*sve3=>g70$|B}f;w>sfW zRPWDW70TY;suaOHCWiB)`qSct?8;=tt(;N=Fk5RFD=1IqR25J;(LglUxQ6C1m7IsZ zhr-ZMPAAK3FAJvS{0v28bl6tMZ>L3#ycxerbd9B&VQT^heQE|>++jphe8o1coN z{!K0H@7K`N1B!%H0|m#=P)>tz$R%NtN_nI&I20it`UOAz{H1Mad{&y%kL%w%dIVbs z;$*q>`CmRpCjFt3yx%Hxii(Mv|1v#4tIEFIAT#%6s)UBekkhsyNIMh=y|QIWyc}!+ z#AVn{4k5(IF)iv83FDLaCV~t_I1nW z6*DT`RS$(&0xu&LWp^pAiRTnBVN`d#JecB} zdlYONsL5)8A4k@OkX#D9s<+5dy3q6_#wD332v?BY3K7f>riHi9V+c@7EqCdRK)m7) z(-THM4`f5Tgq#`H?i%nDSnNR%uLv?~6y|A60 z6^rkQQ5OEXlO1p`Y^Ra-rFh?$Hp@D*E6~W;*K@*gui&4Z9tg=M4u>k!nk5Yh8VgA7 z8p&M|ew~$*+$&%2TL&IV2!%W-j|XbMpa_B}peIztL<)U8$qKvDoh6>usUlo+@Ky=` z$nDyMjZH*teY&Wt(`n5_ExTD4{*`^7MZoPcgzqO8Xo$g!7i(L+PS_C=Iw_|D1Shry z(kGOvT=U&sSjKKd%{(we2`UMWr4uUkFTPsqkypF&`Mu>M6(5rU(AI4VBN{Nk=E#8C zeo1}=3G-fL93p51abbtr(-Bq00r-}?xr5=a{3fqd2F$ykUlTZW{hsMHJ%w1J0iqpM z%}F}zxJ19*h^xYjR#xDg!ln(r);Ei{wXJTq>-Scd0Bh#Fk)BQiW# zb!zaU+#8*s_1IG8ThG~_TyGN`;IW~N@8DltDfmo}GE}w%Pt~@|#6wsRs=z*+ut2dP zSlzJS8`!Pf8XmOdyDcp>BpYDW4ugK^TukEScK4s!(tpr#LhB@21h8ITQpvQN&Tz2M zlf+7W{!ke`bjK-V>zYa?q>ZK|Lg^y46OCTdTliqV{8;Kn;TUyV2yOR+i{REgpP}Ye zVC+8qmXS{=%sq3^Y={U7JAaH%3)tvkUu%w zNis;?<3XMk#trOcULRwbU*YaAa*^$I{JRKH)o;0Xo|aCvy7xJ9@sWQV16h9Q^#D8bUv=$;mNK z38jo!Fob4>ylVjRNthsp~@1;3@Hhjq6?r*%#sq(%=I8H-O<_rKD!8t-}J zbagIN(M2%C0&t3|9Gt+kmNx5xCNeaUchFev1%im_&SdWQ7HRUkatiN!*Ww-@;3m*X zeO8zeYbuRjF|S~B^W|lusTHKrtZ9_`I_O=Y#4ALw@yNM|`wQyqBmA@UicA+qYM#W?yL#9;x*t$A7rIF){o zQxu?68Je-nj6o1=cg+WQ>O?!GOZsPVN3oG4%-2f|XBcYvg)jqSs#9(QY(NF^n4A>e z00o{IZ9z}(p*3yIr;zPmSko@R{oG^9KpCPi)K^wcsJRqdyH5CQ$(@%H%-X*j%?&%z zD1KsE_3rDRcbx@Hy@`&Lem)g)G#Zw0j?#~0-}||9+ZG!>?l);+ePdAlZG@#`oi)y1k3Q?(nH(sgVa|V_&pyyKo9Zl-WMUwiWT0*!-%2TkctQyxdpiKwrZXfL zlX!^Eh(6@KaReJl6T1*${4198W~GfOQ>LnEZRPlwnO@xs%bbsw)ygvN)QY`%)Ea~W zW}*(;6Bz_lM@CHXF=1U|EV>(< z{A4V7eC78X_Kj3{s;1nYev z(UgdQ-M;pa>nMB4^EW1`ic_plRt2|Gh1ZS%(cX3bG`Ruk9DG8C zJ4kXE!3y`N@$fN5S0u`Bj67-gJ@5HmE_x+>N)EXgSEJvr zHkN3MPG{PnF0yPSQa=G3X{?`j*ZSfJUJ?s`nV(G}x=rbrD@P5!f%K!aHAcOnolu;iK=rRM8#vsZLHYzfaKq z5deNLI}bRs<@#s+ytI9pNWlGvnR z;15;ZAw@@jPVmNR)n|XXD?&+uNv0yNKXzwaOK5zHkbg`~uIpWT-Q*6;#bh_y9;5}ru3VS?WbpF-CT6PLT@%TgnKx@R%p5zSCYLNv}QwRgwR2BgKG`|b)|P< zklwib5U8g-Au5Y{vWfnp!DA0fFJB|K?xfrG#{uyy15sawr-|(?O5J|D!k?tS_KLc# zzGeE!CA1hgdXwgtAcbM&!yxYIQvQxAQ53GYK14Z#jz)o!COf!&*T&BwG5&rk&pBnS zwWKhezJ8ZJ~b`*HBywi&TXw4Y; zfXui8?i{pO{MEYmoR76)SfQ96*ES|l$$b#pz?XI4ZdO z?p}BaS_zYn=kVLz9qB+xaYf&mee4(3+Pk{^y05I!(uten3C+$B#)xvNhv3Q8~1eW9& zB!@448au;#Zt}W^yzN|WQ&N<5zyd?r-I&4^@irvNk?CQm>{VXzYfAcK%98uM0|N#^ zM^3b^ua(3t(MY5ykkI1dt72P^k=$O%;IuWz zwV&CqK;O^c>&dTc=7226zi?hFND_w^{t?z<8;1jRuy4jL279%Ks`Ht$x^Z$ksP-$3 z-fygnSPh`<`_Wxc#PV|q3XVWxfolapG#{{Y2$w9nn~fGN+Uy*)M|_QCv>PTLprG|h zn7MZ~@DE}UVtIa#e~4bk6mU(2G?94at7facd?orEZbq+P@hDIcUwupc?b6!=vpb7% zp;{eGY&{OA=*MqnJJByJV2uF7FN@*GqFT&G(E~X0c4JJBCZG+7m9#Nya=Fc1%`B5F z+|jUm@~ZalxPDZM0dMio+bg0ZHf{VnY+4uKL$BuS2@dQ4>gRc!A-Y4yn&4hiUQ!C3 z=~hAjx}Mr8>l`yKC}xgQzLDbHRHXD{=2_fLqt|A0Z{ob!KZi%(l^PHKcB=IYogz@U zfN**MvKWT0J`t+v70t&=zwnDw57p_6zVu`-9>V?sI}}Obbyrz`k6Z#XZ+R3=yFQ*( zwbJsDxRhmiPpCWT1_%AUdi5XnCbx_t1rtp^v?Bc=)w$@MDqw$aBQbxd@Ztm`EYyzR zSZ0t-BftjW<^kx&hW9(~e@KOk_!r z3lU1QaMgA+cMAlz-%$#eX}8!D|JG2_kXoqf9vEJlY~(JC!L*wj!G#~Re^$B_L`}k; z_)dc<{uranf{PH~O1moT6RK;XQT=UR|AA2yS9X#t7w;)^GZj`n{&6wbJxDQl=C&?S zWodyRfR1{COhB`!abfd2i*ZkNlT1Ny-BCu)82XW2QoXMPTolz;|M&vKn$sJ{yHec6 z0!Jmb7c;@9n;eN2z-c1`arK&}UsUsJnCxu6-8s)b@pBKPzE+dFMo!7FlNv}Z_LVfc z5+;yy*WnIZx0M!&fsNmXAADuYKxmi;_4R@gC%t z2X?dw(nfRql5U-UGp}`eJ5Kf76nf4!i(Z{hl-ZMh7er!1n?SgmP7w_$oqS+l4QZgh z6>ca(%7`{t`_8a*_IOgahy&+9me9+BtLL>pmv_$D7<_%gYqoNIQYyEyxhiofYyOGr zTFiA-JKpmr&CMA2L$nsZ4lxl>oh_$vypeH1JO#F!DlIAAymKiBZ%gUAny???YcY2O z5=TPB`?P2+J|V_XH7-3~GvH-O2q(mK@V=VXGJKnV%xOHlw7F!Gb;ff)ebGjb+d#}5 z^FX3Gv}{>_@NNywMxfY-*Z&a-_y6@*UcG_`UEaM<74Hy4#x`hx~#6 zjQpSQngdt|aMgW2*-xp{`$P5a^i&D*zyDv}>kaNqE56FNQaGJAR%LnR%D;Lf6=H=m z{hu{~mc63pMQX8W&r1gf*Lttoh7@I|`a8B4y)b}iC25uoEkoL5&XZ)vc50f)W8UDyq|;#$GaP(3WWq%Cs&-r9zm49xK?{PuTP`&cI5fKh&x^U!G+y zaa0Ch8hE`MF? z7kd0qd{w-Poz-F*44}Snpd`)n2CU0752Ujx*qx6BchSny4S7bohOv>prm5i+Z`aOS zw(dhm>zRRVGf}zExB|(xXzfuf%k9+{Sq&5;FWGU0Van4@_X9eh7%w=|Cy0gojs(h= z1Slke7XHe%c~qb13ue*s7fC^Wn(@|AOw-Wm(AT(sA>4qUDL|&DJQTuAIfdwjFx04D zo6sdB;@Esa9QLXMi`K3up%t6A7<|^&Hy7*be=y8d-TT5K@gk2MrbvY1YS+!8v0YM# zBS+y?h%*%M7hDLU$0_v$_Jn#;q~T-j-kYc?1Wo0*)0jPlr(T3Jtz?+ZSH)TqM$B*q zy`lDGxY$xl6eZ}b^z5Wyhw%3aNbL8{1==9(P3?LtP0OS24%&P!ZnjluYzB*Qg`gx0TP3WO`im_FA4PS4QChzS(<4E_pGqn2oi zeSS!qRDp(*ycHW24pwVNvUv=ArPNo9wCTp)S-hCl9SL}=x}wk-#7YnZ$Tg4x@OKGi z0^q4$5i%sBWgtLI0&X&<8+J3boo5i^U>jAomf+LHLFb%^Im_PoJR$IskXfrzQPQV| z?_-G2HHh#f_g|ppjgBFLs9wA2^sl9~9dtfPZM>!cA<=_$@mM@{(D=GUzOj^j^WAtE z^mZKM^vX;1+Ua+FujaS+TTU>G0$bol;wE$vgMk#ic36b5jUK@V=h&u*WaAq##Ybf4 zPASxkPo_VS^~idaOlUNt3Yq z%J)GLJn!klWgArwgT+J-k-G4^xe>~r*_xutaz`vHBWOby%I8b{0hXOjvL?vkq$!Z; zs&4cN1qe0#F>qdS>oyk60>*UUTWfpa4AT~yDZzN@2em)=l<&EwJ$V{bMKXhyyB)j-zP?33s@k<``Ub$qk~J+j}fKXtkVfXq{7-YwRH4$ciDyn z4AHzZr3~tvb6kXW+R-l}qKVht6h~yjN!msBuK3&0H$VUKW9yRK8lh>{w0apKNU!#! z4BW=Yj05t1b8Uh_L7Z-0HSvM?1(T1TmpNsPS zv*17QcI4MUy$tZQ`wFyej{8SP77JmsER)9yJ5W11&#SU`<7;V&ml@`u-Q<2<%$iU_ zfXg-0FK|Y=)`!c7qMi*i{f&YzNw082p-raPneK+3j&dGr9$t6Nmbx*ooi~XCO6HaF za=O;CpSy(2ZHv!dT}&K&d_eR9LL0R4nj?Ei_aW{eXCPN&DdVD7)Q-nbRaM4`h;?}G zgqNgXB@6{Wft03A@-yI*pWn*;-lHKFbcLKkQA2bD?(NtRH3*8x2#Np!xooVeGg0mP zRod4^Vush6E52sg0Iv2e-|C&y6LT>O$rG#8@i%CbnkOwhKUtXe=fA86_01l^R+!Ho zw0wa(h>ggC=;AJWMpP!*5xk2Cz=5&vnr@!I-0ZE;TU`(2Jhh)tU2@OGbS7zbW9H#) zN#6{GlOdAs_B6l>SeA^^I0FPb*68%Kdxe@ALn7}FS4&KZ);Y`Cs^i~y`ADwHDVr*+ zx=fva{$==)#ObL^*QAY0c~QwoZ2KeE-)~w@kPM;EQX$nY(~cVF#%q2z$pQ5`1L6zX zym-gD9ll^cTzVNP2os81waB(ZbRnyq(^kr(P)rA8W_j|{CG!Nu#$_Yr-FtKHE;Ow# z`g#R(N;6)6tf*oKRg@Pgh>dy?1R>9tl6TSF@m8k8-xSXta$z^{X4P2e&LGhR@p++2 zBiFfRM%4EerNyX zylBHeR34z|#wD3;s}C?#6-$2pEFpR2?0{c-UVYgqkyyiz5xc^v^Bo59hOx_it%HHY zY|%@nSIyHO{zI%Q|nL#Ko+ff}ID5hLANlm>mVaHB2NKxmhXW}y zs9^vOr}p_5g#R8OzWL4>0B3hsr8*+XO!R-*`#+#ppWZn&S-zU;h~!iG{TI>w7r0Ax zgx4dENV~g8>tFu-4?-XR`!nBTDEzAah%*nL*!WipPj$qOkDpwmLTvxCWrK9UO^n)i zHJ!-aH|h_>P8@YVR`m~gcR%9jM=;$2+eiVz zr)JPZ?{D{1!Z~h1OR_@#Z*nRA&+;oCeMUVJ1l(ehCRad2<}L8yZQ%fqz_cEj-%^On z02`lw|A#79)*|&kl{fT-|DK4?{eOh()&J2M^)8qKoBw72^H~&s-`wZLj*%IpF9AuxB>;^TKK-(E2pm9sC}`utd(8U^39yf zTH!ISkEr{zKb-EX!97L#jh(Y(diV^GfR@N-4_E3+28_e-<$gf-3=aE_YwS=2>NvU3 z6}eufQwl`n%llMi>U+G-pB~#@I&1oRdxm}xNrS$>Fny*STnPeftA~38F;D_Yd#RLj zS+TSLX3sVfB#@_7;HGqIQ~KiqbXI+KxQn;xOv8Jf*`2VkB&sYY`c)|yOhvK0+@4ug zyE+}eSbRB#7IvZN#DHIcDAfsrZRPSYD29h}Ds5RN0{Lm9139g|1diSz+2sVe)M6=x zizrq#8Mm}RX!HX%t6AHQv@7zS7j6^{hCF}KsJ9Cyok_r31Exwai5hs$0t9!bAugbp z7D1d+0)qRShV+>4=Y!^pm@$K|E|Esfl}#$@1Dvvk-182g6g3^EDE&>jht!b@_aF(@ zjrl+o%ZlK0X*o8%zCNn7FV5d=deQUl?o9)YR*Oy1ZEqr15IYcr3xRLohsotZRz(Dh zCFHXM9$sdC?7>@$hKY(2x6`9NE>3B(+Fs{h(83-h>8a{o&T)E?fPX{Is`i@dHy}WW zfrxepYfZ3GTb5e#%{uIQVX#}eU-O48%!TjFUrSdXH4T>(IO)acFR)*7;1FX1LRSZ& ztOU+(3R{da$toKPgI$r}v770odaNvPBc@&uQ*TXqj`jj!&a5DJlmNTJjzEpm!-wH? z0G}2~M>K(C@$m3Pu4sm;Hq*Iwd8udZq2ACWNaf@-TJ}X%H%(I>e>F>!x@5qCugFKDa_GZ++N?|S(4~|$*>{; zn)Um$EbhBUnPu^^1UBsLrMDDSEC`4+HH}t@yWPS5E&YUB?9+>%r(hg&(;ergdZg0m zd8x}kpk2T-N{h7}2_ZIrB0guNL~Iy zv0V3B_>3Qu)D>oUujTwOBdpN>GBi6EeYa1&0WHs>2c@awL;2aO?i@GYlx{EAgkMsdD-y+g!R0hc?i zk^|FV8LmOXBvG1lmYmt5Oi%>z5%O=$a=-cAamuHcN2YdotRbS?ZAO5B{#bs3LKA zkz8|><$`wFG#qjQl%S@)(l2p)Q6G@t`z7ZaNOh%Q@@IsgxoZUO0bW$V$ zbGa#l_L4O?&UhpcWOQK`Zli-GU6$u|PJCD!I8iRYYtdKv!d(BB15Hq+VJp=gs>g=E zo79)jUhspe1r>~k#=6ZWd9?V`^}Ehnmp*Ks`TpTy%+(q(pJ|l%BobS^ln~bUDxJ}DFM>@TJ{3!4OnElXIbXudEf?p@dkPOBh>UxaK-fs2?8eI7n+e#- zYaVhPaVvZ91bb!|*Uz8@qMET}lGy4c=0qFkx9+AyzC6cg7AdoWTq3BNb-bIb>0M&K z=vvXRPiMLF2558VH!4d*kf6P?2ZE2;VkOPl-O>Ysc0UPUi~=!{%OFns=e}^>_Xl*CJYd3B0c^pxd4bC4~246Lzw`XWorHs z8Pch;jw0uK!7g2IBp>GQ1@8W~iX2V{0)`d~{!s0|9Ex4QUztN*v4h+0ab1{x@H$E_ zWz5IScy7NAD6(ngE+r-U;nJP7>eb+cxC5CJgazFSkJ}a_<)u=|JbCH!mMc6_G?IN( zy?|t7&HWesQV%ed*AOF+BR4uG5cHzu@_5so^b1)h?bO`Ze}_()78|ce5za5H>7jn< zAoPMbu`=NlVbbjpHNdjzEL{6(u@zAa6ngGPpKk#H zHCpnwJywus+*E#b@T$3U$EQVCe|NX^l~NG4%&)I_8eq4=md0H9U{;GN#6<5tQ4R1H zsJGAt*%Cak5yWnL*$H{CGbHE8&Jmb_*8}Em6wLpf;iAG!n$>gJ56_}TW*c4B?*6W; z;1hZ9#MQ7F0pIWK%0G2U7q zRBL#_<*+f-yEj*0u>Vx~>fo3Dxm!uFg({eQhKc28;lZ)7Pa7-oXEAV|C3L50^kGQ@ zXNNJ(E!^3kSGZPd$E2JaQ!bj{m6g3#)6+UY37l5@A5FG!4#jjde9OfLIJ)IeE` z;3Zg*LKpQ6!val*&?nd045$*{I=3{h6g-9A|58u1gYM3LTeqm`!;<6)@jj<*ZN728 zO8iVCA(hj~8bHfh#~-tDd}W^4=`-+8N-w+lw z=d$6DrM&F28Ot{S9;}^NuT9lotN--uf)J~&W~!6;Zc#qu3n0`w0H1f~Q=K^Qin4c| z+%4aA9w&Y4G$U86IoB;(V=1I7feF!%WRYivv>(!@pF{gBt2RDi-{K~3TR&L+*z5mjB~XjLPoOsLxj9|0 zP)IY$r_=Inu~cC~$1VKZ=-zzkJJ}pF{#C(}NhUkR({{yO=1&$k&OQZ)+_}3WcVoP! z*>FL3q;##ZsWC+$l;LKtP^JF04;RHG2L?3nQYD$t1)^h-E)Wc;RfU!!j+=a@ru|{l zZ|3@B+M(TCP1Dnhtz}ys7N!R*PsuZTk8MiuftDlnEB+ ztIWk!K2*^JeRJQ3;Xdvvyy&qn@AwR=DlcQhd#xtpQG9*b+mT+$>nrj()swq+$g+(^ zBEhk<;+y+&fIKl}jF(i?c)2d5j>0CQcxLDA*Yom&hUT;3=cY>B#Q-H4c1M3uDs7;1OBZlWNF&ezw-1>Jiw5Y6CWDnh&dvqU z&rE;)I-GW4Q&mM{`sTf=J9@tHg8E?|=KOL>qNP47S7WEwU&;P#Q4sa#vYNIZN$WtA zs(ZMfzFVrmvavpR_OLXE@)=pN*ReN^TvFOmCK|#wI?Y*0`gT^3N_k!l%Y+%s8sj}poc-AW#o>H{BcqWd)lT zbEt<8A456?YZwb5`Y=N=zP{cNAorHgC-YCvvTA5SU@hUCZbw81p#83dcR%(%e7^!< ze34(b|6eY^)%t>jbYXEldr_ zv@KwGy7`pHg{yG%tuuoXrbOX7^U(F>ALhZbtE!io&dG+q3^}Fl4yfP!LXr1;i1xsl zV~cbHffMM-VQ#^3BBF7{AX_K zL`5P#kxgH^mQNVTOl<&b9i=51Dl5t~n3bgUfl#|_k^n2W2JU!II2ElmPz9;P3z%26 z>^X5(cdB~WceS=I_q58Fhe4}AZGib?+66uZftj9nvwo5A-b7$bA%V67R?vl58_9n8 zCf{;GDZJ9JF(v5zms4dIWcU`{iKh2}`vj(1cu(lJO;}B?%gm(9W5JlPX0+f^(O8(y zgl9>Br`lve!?$6RdMJ;C5&NsY{6Ba*s-+M_% ziL=SZpk~Y^@AFo^$a01`kTSoSy*)=^WZY5&jg%vL0Y#RIj*9F?#CHV8@gw9+e~NBdujz9QINJIu^5wTil4-AKgehxwL=&2thg3WM&} z4)0R5LoR4gQ zhg~DQFCd)yNmkstM1rTgB>BP}?z?pwE?e>kZAS!2PdtuJ#XPDz0U7j)r_ho=$Vqmr+fQvy7s|gPN#5-JT?2hYqY^%+?`kB3c4QfRd&^6bxaYQ%`#WH+oP63Fn%X zgvdZTeEuRT2GD{=c{J&`tI)E+9Xq{z@RKc1U>BooY>YNO*%l|#CxL?6{hCL# zAIuK#Xua39#4F$S9`4L?t>gVSZ0U=v_wbnp26J8Tf}i^L4iXqwy8`YQqIXAw)M%DV zZLSYDnG~dVqwWVNG&djW^4^usj!tpb@H0#KnotbfBJ8ydD>}f#4({HXVax78(}_Qr6=ie9%Fgs>@WW= zFyRt?s2W{S5KRK!s~IO6FHNC$`-S<81I0goG`B$hWaIClarItZz3aof{NgkwL&R>( znG2LFW)n|v$4P4 zSk$ZzC|&?EqT8YG^2soTYn# z7VVPBK5;1JzEsl_BRsy5DQIJ5Vbl1juJ+uQ%IdgV_wP#+R@wwTmy$G!DgZO^B|!qX zZSo*!NM_jXXHSb@3oHn3twqq8&DxSwG={CuSFF6Nf# z3!fZi_?mq>v5gDV$R9#~8z?pWjQolOCGy!&dcieM3HkbbV4Timw7j}w$GKF%=O{%k zQT(M?YyQjM{H-$`eAR%_>7_0`B;D#SdQ0l6-c8!M@8cF+xRQX8X>GYke%=HkN^ho4 zuGnFFViijL)|V}p&n0*i%wW1scQ4--NV&meEARG>EkbQ&iX=*O36dUe;iB|sF*SYs z%Kd#YEzTFp`aLdD)3L6mWxV?P=h4q^+5)coC7ooCdUfUI`A|d31LxGFE@RcQ-e4e@ z;NqP(hyKf^Ge%3E6^lcdj*d?g+(kpUnNDj&`8&BTDkE1Zh5mTs2|{#l{D5pxLDUVV zkkGbAJzXuFlo7-!AevJTXM=zE)x#@iGRU_S?sMy7mQWl<@7&AD2;WT1-9)RF;Veu2 z*$axxO)kra*3l~>bEI_Q9&#}G%Mb<>tpOotwW!;W)BrC!lq5@tb;0rd=s2{CuMRxX zb}n;;$L4%jX833`Mqz;6l<8K7P-^d^N{>12LWNGiy7ly(;dP;$7Fd4juFqeUabr{s za^D~JaAv8dAxy8@sx+|@Ij-Tr|2D!5#6Q`KJ`M5mn$cTydDhbbeGcJJGg#W8R*EW- zJUErapw=z9PB$0Dct!Gtje$^dufqP9!lJG8^?aXFcMI8hd%M0LrfR#RMv_VFUv{?v z)t6AJsLB3%1m2%c%hdB#xw-%36(aX ziNSHxwws?m!MM>G>u)+=UJ-XVRULZa?K8YfJdimGa#|q)(}B+-keA%m5#2p2dSQDc z^>@!M0BH$q?RxWHPG(5Q^qlLrx*KO^xF8#!b0(n+W4-Z0Rkh{UvfC zi5i!IR~*$~BzaYjI}^gO^YBHiX_OTErL#Y+EUOPqa`ufce2{P<@4Skt;^^0@VO=H5 z0m)A?$j|;zxg|tjBANyv>Ih-)323vJQB!t;mu5t_oswBgZL~nDyZSZv&$(4GtGayG zpIW7h_)XbTL*vK)5;)7>n9-^k?9A?z^1^LLXv^4vl;5wLqYkN<(STL>#Vn|X<+8Id z+ZrazQGAhesxd)T&#-?`>6j1ZJJ-$d0}5A7DIhoA5r))c{7Xmy@$(TDX8^=&J z^&b&(;ZcBG&fgO=g!3=7%sFnv^)FEdsHD5{!~ZT3zS-*tK-Tmd#L@LcsaT+KElEJ; z9jfzJhkV2?|LW6^b<0%SqodBLxyOR>i2wB%cmZ?^H2hcI{g<%HnIA{|?vRCHm}{0DJN0_V{OuBYkwG)6qoe`yFet z|2C5RS2TYlh7Y@b)akpw+UnySVu6zcV?7yj_kIP&g71L5TTA?S!r=sw*fYRgVSD3wx{lDjE{LjS#=n>9^ z6pdg2K(PG6p)a}|Qm*;$pZw>Sk4KHRfGnm!*eHBK%8=?vlBCpAlVM~nf{xImH-@bC z{7^%5&VC}LG34U4Uio`c&cjQZV|FjB#)KJhYxJyn_tIM*gW_jo9Rd&jIe`xLc*lPw z0n`cFHZ3HW$`oSCNv5kW7DbW=Q2VS7ty1}iD~Zq7TYRu-;RrV1VtE|^0B?}A5Eo;b z<)Kgwo**p(V-ftr{4Z17d`Sau%llkH5?)UeI*0u|XUfQk}{b_Mo|1^y8MKst0+$f*i@RPYGMd4eF`WjN@}lCe!Ex0~wB zmejks=I(r72L|(0;U9DN`Kbj=U!@2n%t5M@+91;wctDa7nopR-_uwpcz}TK!Sku^@ zAjbmu4NG{$yv^o}U3D|uVf>79&frURhpMpG?QCp1%(X;1T*1> zO%uc|!=B43QHMqfuA>Oz37zQphVlpvz94DB4pHwL`a+O)ektXB0gUf_Es)L$yIoZc zW7jFRd>(Q5^!3=2&xr*g@5~14xJjN)7Cg32PlpQ%6yLSt^LtBM$v+6nOXzTLEj@`n zyA4wLA`$1(3IwwUVEcQxzm)qtSed*3L`(Z%GAA*S2fhxIGdflcGJ_Ny~$nBXWnTWvZst$4Yblu$I**V?BPxb=5 zYXcusUOwt9)7%V$qU3Lxv?9WRYRe?A#UUE_%JPGa_?o9ud=daaMM#Y8*dH#d`T~(? zpL5RP-f(FTN(5DO*Sn~RiL`7GEO2Ryl#CL>NjvSXKs81eqRRI}-nOK}x$D+Bqg&k) zT&KK0ZD|QT;J=z!TgI`=MPe2&{S^UI6xad|E`{FbR=pD835-Nlk_C37!;}}!V>iCmREbmQN{Le`%P36AQZ6l% zSx!2abjn=E^=sm%2QLtsh?8VA$!B@tY>?T=Pe3wmS3~Ft226RIS+_vnlAEvz3zi|F z2}K|6=Zz5}_jLM-BvSdsW}x&>Xmh?ja7kfLxo`I6`g%rF zx!LTXU86*?{a|&Hj@rez*~!(0->9mEvugBMBK`|GqlM|a1{EQ95y`Rz1*!34PF7_T zvMr4-{`U0P%}=qW%~br7lpUIRHGlszn4lkx7(>6LknzmdhCkf-A4m2jAk; zQL)zD)QTY=Kc>%^G>j*fE}?e7YOgzF={7?83F9N(8`AH{{}+4j8P;Ue{0(D81w=r) z7^Nyzks?K6qf3<{H6j86LR4B1NE8L63kXP8igY5S|^uF%v zzOVoD;e9^6&+#752NRAl=kB?)v$M0aGrv(4~0gIcd zKjV&MR=jFpKdW&oiq3Nfca~R!&mdWHY8qCq4}`&;8b)KHwa8&A2g+VSaL|zNkC4N8 z?}M}huMJp_wQ0Ct8I?QiydKPMP;riqDpo-XCWzqZo4Yx!5M*3Li5GgwD_u5~NW3B5 zd&Krm#-Ygj;p|54bo*|O)=FM9c50VTMz=?6s;Vikd#+|+C-vw%+GBd; zzSi-PqDSg6CuF2J$JBZovz$08B7(OQ?#A9fJTpY%g#D*^ff1Z*>ba)^}fDs{aa!l<5|g7%30i#nr{j zOfJS2ZcO3D0NVqyGjK z^KrnrlXO1!YQh@*Ma=JfZDcvu$eJdtX{9~fk|twUwQa-4^K`s28DBA5(hHlh-M#%C zDN8ZJW9nfMGzMy+iXw@#$t!XExvY{OgW7j=Y3{)aVU0&^5@8pb_y(T&4_IY+NRAo4 zTKbBzhlY*QQ=so@Ew7ix#Ci%~4J8QDlJ;XiI7^@Ea*>P9gcrnNqyDgzJUoG-fc_G7 zQoBbTt@Ze(!q-z<+vp@~=E>S{E!}J>r6<0x!}yaj6ctq;lqSWSdenxYN;2%xR5Nrx z^;s`XfY!z4dzczQQ6dBx6!&jJnMm8&&+g0V`dWvHO5(Pc!a->@d zOJsMe@d8ub;Yc3j7zgqkDVKcJSGts>bY(T08k#j9|5VxFN?7?2e*=FxLF`WEfsV1E zOJ^PQ#AS*ozvu*gOa-T61{0M!W9S6aNt;BjESv` zD-Xn%OKtHANU&_`y*l5_ zz+Y_mNb5z|^U$;tw2QtrB#fK0H^Hm9YA96rlZm#YY!W$iHo(%qgF9vP-MxKhAA=N6 zv_d-OjyIBTaJTUTFpm=3f6*c5-hV~=I3dS;r2$~z{T0a6+B1x^l>a!d@5RZrz(k?J z81%TgGq$P~m!jyy5#n5Z_TFppm~ZQ?XDTkfH-W9uG0^VOdQmKtD}*^>2BEdtCKPT%o*D)tzD3Jt{8Ey@I7xcYWMBuF2tOMg_O)SV1~1C6zFjPGjsQOpddR7hH7m z#Ad&cecAuMEY|MPixm^HZ~j~C#WMzh`UcOZO&r27z_!7<;h;edcvKS{R8=P&k961X zw#i-MtnmEw_J<-o(9w+7ImhnnL z>>KBe;Wd{c9GxSwnR;`>^1}*7=KQl=qryi#H)236++^fEtCQ2yyZMkF>*w!$kKi3v zcD(jXloi95s-eg&Jw_|X19z(L@JHi#$<^^z7@5vvaYk`Q;V+d2rm@cw zDe(0vCd`BGqVs0Pm3Ns3>m*gUkdu9>!n)c&aysHf+XM6*`6L{KX~LUN%>)wemX`Qo z=-sxei625ITbH-VbR;pN;zvT!izyhFHK}2vC9wqIv?VLXry^3U%_T9mD6ZC96+UAs z^k`T~i-RQ9fGN{k(VNg?9zke-!LZd>q&v!K8Dd-Y2GK5s?+vxtBhGy=x_T%2>Vasz zr+DL=*Iv^3ogdgTlRv88IGMs|oL8xJ+tt9lU8lnCleXQ=KvG|07O%E-b~S~GB%4d? zsZ*}SkB(iy&jl2jV6CoOsW;rR4$ww*IB|2*0iUK-;e-t(iL+dlcLpz%xJg5}4hUKGfE zb*@K8wm-bGp+9?Az0A$wlvGI5?8(Qa#iv4IS5DvDHhDUpH}Wx0KPEBS2a-8nrXE3I z#!3BC z-qABpo_=RH4dCju3z%?nw>x@0zsAb56t+%tg}V<`{fzC?%RBif*8*Iy1yf}gQ73#g zUGPab;dmf)`$>KHjw#OP@r~vIn1HdaCEb2yZMpnXCPfRm@?f~YqhEAO=3a1dd{faZ zx*bIlRtH|6KnxS~!4>O1+=oi|WUYKNl5NOW;dHhSX1RPwF+4;4z^JsCbc^L73ID^_ zE^`ZPWU8{Jw7-L7X+5qm|jZ+J!LpvZ;f~Myczb+bN~R$rm)Q z8`Oc4i1QdMC(-RQH5Fc3%^S&!fVQMzqdLySG$=Ni*F5r8Rg>g7qx`{d`0D6K`rf)E zaE7Twkn3Tr(24hBDunSy3D*wmUdbUfIc!9{8{a@_Am8bB`HOl7q%Uf+M3q;xw_mG2 zXgXV!E;0%P&e&LOfa~ODm>JL_an%Mm|;jy+p*?&|ivE?-S~Va}-)K0%DV=4(X`4^v)R6 z_++lx_q9#JRh$=mM!E)}PiPXp=l7r(4jt@8vH_^tie}6qgo2C|{ev+sf_)0k#Xx3> zs^WLn{Cttb%8cb`qv#2n_2J-qC!=C2)*Yr?Q}FPHG+xfCxNX-N{dbdDn@~H<#0LyB@-*!`j7!;r?B)w0Wl#9Q8qF6$>GB7yrW(qsQ7$gd zf+AY69Po>RCinIUbQ~(FKS219Fw`Ak9(<@qK`zjJU;W)u(dbv;QqKjbvy=cu5 zwatNHSTW+Mb(bh-tv^N`^$`8Tq7j5kFE8Q6aJt2~9a$(34VAUOjZ29;hCQJ9r z9j&3$ZZaQMG)0wxiSjt+d0Lm~HU_Iij3?ESO(<6@NU?-;n$l0T4(*RUF05lGD=Nx9 z_MNftaYmdCJ9P7=2sV`#0s`=nLOTaqc}lVV zBM$BA*qqF*vnNDXw_6^!Jht}I%{R7BpGb{-m&B2>=fsoy{b~Py;Vt)2G5;^TrA)%# z894u6!CP`*gq*kX_C8Pyn3-R6)aqY!6{iCayrEt^VkmFYmN776kwS*!-w#AcXEokEww zZ++IcGKxEJ7m4hFefI))Jh71CnYkCfX7cr@SJvVf0t-n6!&`I7CC}0Gk@<%gbho{- z7v0pA6#4^)L;O-yx>$^MB04|%R)dR1F=`Zrfy|FECALv9%FZ|!HVslt-lC$zOLx7) zj)N6d;or<}WOD8Xe2ed^XY|B(^S7|bE4_YnO<7Ozz`AY-Rfw7c9KfkwX$PUsFgj#+ z+HqfF7aZz1#ro5CS@dCqKO(Wy)g8^M!C#WNcnT9uXsZ=Awx@e9P}H*pThS(i{N;Kv z8Xe_2p?f)7ss(y#9>uPFh<#ex3CWKiy-2b(>R+A`G#g3M4)$R1`25->1gDW1%E&AJ zS$yX;BmhKbqn5eJCwv)6Kk;n1?v)qh+oU8|5Aw9HfZ{FAIBT|#LHdJeSC8P#5SA04 zqm>Z+ksU%aZ&wt)oOuCLKn{X>ptg}m(~cvmi87?1JOoBs+!lh7?vQNPw;xXM9M>tk5FdzDu1Y{I0O4)8Mq7zs$Od?bG zAVfCm3*>%ZL6QX;Rex1Qh=gvWNs!vo>v2}XtqqB)g0|8#GnmsStI->R{wRs@ z_6nW$nwjFZZ_g+u=@?U)Zjz8x6O81;gr=}oHz5T-l@16GvFRzUt982$N}DsODSe$3 z&q~zh|0JmNMf!r?CCC*i;EM+tShg7?^_Hg&%L@d(Rvvhy@`+iYUS+RIl8Z~(fO zWly#r+TwB1YSo!WwE^-jSgn}#y1USGIcRX+9$q7glNbnTlYVKDHC|+O62oLymYZOk za1dHJ4{pPvVPMr+_@?LH)dNMRQZgOrL-6C+$O);&$Y-ZT`)aP>M{sFDDq`m2=Dfjh zid;qLq0&@aktnH=yA`NQbkO#!N9qb+(^QgHs4j6g+Zl<5-lR{9O3nzRi(0kJuRCl5cP4 z4cXy=Fd$NK8vGS~MVZby-@XR~v_;D<&eQF@@e&B3DuOe`q^~NTzB!U43W}wnPgA4^ z(udrAQtY|->z-47Wcp}}`It35dBV;5AcY;=sa!KOW#2Rf;SeKp6Cy8YXM7I~c@#cs zbe_-)G#?L=jVBBB`6U@vhU~b!YiPKYY6DIT$~GBR0E~^PFft1F4LF6LW$?UJzEprs z`c#+v@lA9OG&qZWcA#iefxvEeXtf1IJ-1G*ux~RjA0?kd*bW0&WqKfyGTDYkKlo_#U(67>z#F6|Yxggy-Q05*J}<@DJBR~7E= zyQuY!=Hq0x8jvTBY=CsGpV0)3i6F^LYEX3l`Wyy`CR0{YVF-SSUuu zaYmb1_V!qLd44)Tt%DK1K89=%x-c4?c)4el>x8?T7o!n@0B4cN-nt=f%X>BiQXl z_Z>|6;;q+gB}RM&=E4TqpL!1DhM-%9cwBQG8TEzBGAaY$n;lJo>pxq(Z0_G+llHH- z(h7WdeiqJr~M=PEfo<(x)WhgYH&2k;w zW}98qco#BuqCG44UUzK6glo6N)KkOubM}aw&sF7G7i*GY7I?*KlZMTNe@36YC^nqi zk-M{H(Mz&u!fVRhb{x_e>^VBa#PH&jdS=+g_4muIA-gd|3^hT9d3eqgpZ$tk*_QF@xdJ92Bq_dbgv1iFVHt(_QW&<070i&^?5W3 zp~LE!7mz3WAj|REbBp-q`z0fH8;(8XpYV?05Ga{(t8|NihKp&X@a)*po3rVRk69M# zvXod>=#9kyFnG1voAEsk*!8Y*sJ0m9W0Y8sLkM7EsALzfGuj#7N^ATPI4 zW7F^H>~Nt_&8w#Hvky}AX{&|=`XA|6pMTl+42@CjW-Z581h1VQ6w^^$G^sQ3x%;}B zJNDA&7P_5=iRq%pV;`NjL68=;4!MsaPZ(MTe&&-)fn(#74ne-RZE&m-l4;BFJkjIo z_HQ-rbj;E}n?12uU3c%o56Uq0HOih!PmHQ2MY*7zOnDyQ)t{AhbB-i=m~71TM$1Rg z|Lm0?^J4kh%8uufyi~|;U1S&Jp4+Fn;k5R&%qF|4?%UZbQdz3Ko$KnX1ET}czv$#J zH)#%EjZBBe4`b|C=yCAn3_=<)pkG!j)OjuNK;wtrUfJ91L&O0xR&%y^C%(gYwEAgk zjp=t#4k8A?AHsru(R~W?M>(!xhnnid0-?e3<|%cdc9Rl{gY)Je;-SM?aYX0Jbe&FN zvwOD`uD#Y%@;lWS{*lX3D>*qiR#mGf)TOh}_+hj;IWnQP^yyDd zqpbY3^SBg94h48$xNU!xGtgz9sqPa?Dk3Di%+aNx!ChJs+}R=DF-|hy%Pm_IuKY>l z&8f?p@!~bpPi{^jmZTcHPUKA|zqwCs^C?c62~AC%!8(tXn0S5CZ7S9e1s)93Ris%D zEOWdhXgM5D-wORC6^wC4N2W^kQ=nNSy{0&X1jAXU0P zMN9EDmjm51?vPV%@%^nJ3qZ9aEun$(X=ct~?(u9Hy2Bg($?w{|cQbA4DiUx8L<%3y zPjOzx6DWX3Hok=z%9g+>b=vsP?E)U^)DRS&_Uvg;1jPZ}TEtN?1a&~rAR`sSl7TCJ z@5))t?>4?>Z_1xLarW|8-xGQhGp5HJNTcre32z;=+U07us;bSiO1_^nenS(wTi5|- zM8s_@r`h%u+0nj_6RloXd(&X!>v$DEOmoHMwL2c4nso> z!Z?!$SKHo(eDbd`2F`2XX?up`kp6VhluN*$NyyKcEQ0KcPb-JCZcHd_A!-z|LVZ@? zW&`#&MDHw=YYcH-@^(@qGOVXh@Bb!!wGC}giYG&nO~~^kJ{&v*^C_~)&)m|_O!HZg?ysm8Hz{kXgIZ2f#T==cHbs?n_uSt>hqVTg4o5 z997N~zZ4iqh1 zR~wLUkK4a~Me%;hoc*mdNljzr(ftC(g4u;AfI>#3onL{i#|_wn~GZaQ|khEzuirf)^cSm!ND_~n~< z4BQEMJD;PFRk8JhBAs5BO_~C^N5Zp9*LzX-uUIr!t!yo?F-=)lX^r=MvmUu+z&7oF8rZa1tDtbB8~_f2NBi>j3q8NhGgCfU7qAfYm*^YGLjGb0V*oYM|9;?X*x`qgn_9#v3@o+^J9tb%iJo($Y_q`{1uBRoJyKVajR@&t&{6Bwmup#6xLO`}C-JC(uF5^530K?C z!ZA}dRhQRtQWMuctXS0;DO56dC6?LQ`s7-*+GJnfW^1oE zyxd=1a{9T^{g`F3T@Ji@AZj8hn|3r7w;(`Zju>gc;FBFuE;TMmV?yCC^~W%9j5)ADGSk$6)Vk4xF1vxcSC zLCx|!!ex&3*zkd5!boPza2DdnnFO_4cCWrXQV<*B%a_FHt0*7`APlrK$mUdG(#4EL zH5ZgIsVA4z%ZuW_&y@MoapmCcop7!&dlP{UaX~(<=beb5Wp;cTQHs<|2-U~8uJjNT z*CzE|zUy&aE%b0!Ix0(_WDuTlVuTA9VWR)FS2G23F-+}PNiI5Pa(Rd)G(+)iqGXbx zqllkjS!%8;TrDHICN?tos^El&Y^B>Iip@+GYwb8>z)Kf6uPph2MPzhCT197g$IJFg zzRcIS_!bLJ$zsj7KjR(G>a}Z4PpKrxlC#Nrv@ui(2$<+*MGjS^z3^!CU~aC~JJL9r z?jo5%wsn*?FZ`}F2@~lEzW?x>z|RVX=&Q=7RMVy&y$vyX^uxhW`e!~FQ6TF`QZhh#1JBC-nrhCF#sT533|A{_1RD;ea9}9;$A-?MPRIC+mbT^>_ z##vRE5qYo!6w~i;ihRMBs1BisEVxi%LuMW~SF30~UHg;cVlUC(QKa*0jZ`>*Sa!@I zIam==E2f5dwR&Br1}HZ~l2C%Co(6iSo}9R|kEibYK4_{Y^#n<35=|1h1?rTcfhhLwJxcQB)7sn}x|hnr16g9;MKVm_aX6uuY~9%HY3llgAE zQpyXfa>uROT+&d-toAff?NjqLCFmjn`zzW)gKz93j@)y{HI$fL@z>|@8Y^h=x! z-tc81O&tZ7mse&JJs-5hBDxkhBqSu)Rx^r=gXa?MkDhv*Yj1D+j9pDraC3ioS=tdq zN#pCR?pN;B)kmgX@`g@mvXXY^3pB3v6`+R)( zZYl@!saHNA3l?GkL#LIZz>zp~90L4mF{h6Zx?3)e5ZQ;TrY`SE94dUVL1r+#r6Q+_Di z!KaadrGC0YMg;LxJ5qVgi_Q?vv&s8-QlCeDyE7fF*~ikPTv;YwCg!GQI4C_hieaqd zlUfrg8eBYHv38QVt6hxfKSet_1#%WtPJIq-vQ{Lpm)BEZn_=#p1-3PBUIU~0d*>Q4R?*yt|>7lO<*%1K&qLC;^sCZT82cJv{BG%>F;B@2|ZuYyE#@eKA==peO z+1)Yg33JPF$yT7>pHJbTf-{mm2>h^Bf{#cM!wJZW%!Q2RcoiN$u^XlSi^P@aE~U2t z6{&=l@C_wx!SG^Zx?^T7idi@gD;||WEys znK|Z}G73M{RFNu3as;SqR9S7h51yTV9(vij8_xQ{ivMo)N1%KXdDR{VBX&&gaI1gf&UaF30tX z4oPE4Yow{zlks>9Sclg=TJdS*jVYHKxB5#Hnv3$`5~W$j4O#)b&WyQ@bdS`}Z0E_6 ztH};~urt(r%tZRwDU$JI+f?5Qbn*y(hKSA^y=&q4)T%t5;pbRaQ-D#hqN^R_%F;tgrFInA4HsQOhrB=MsA8jtHKqDw58-3V+KpGpQn- zk!XRtTL&0?QUC!3Zf&l%xm2DGBy6fM6IIDaJx zdw$sLidDQ0R!=MTr13CbCFR4SV)LS7l}=5(DeJVL{(G;7jLD+@x^&&_xBQPYAy<%1 z<0aPFWC2t?9F+gzH5lL@?9-_E95-a}oYB$C(L24{4SwOeh2w)PtBy+lk7q8?9mR`D z{pcW?kZSRLxSObwxuz?&pe`03qgf45q2Q?O8!nkno*aznJEd*FrsC%tR!=Z$m!qxR zutQ2)pPLW}G5Y!Q{Ov5mO9n9}`RAM6eCif0iw8|eWtyrbNlV{nE3`#W7HMyQsqOUz zHEc0)k(x9^EyOsZIGn~H_`(24_33}}a z!8~%*R6!*!>&2{Z&#dW8yx1etH%5i+GwfA*8Otl^!S|i*NWUIf)@f#HkS_$MM>_v) z{9`~%rT6J@$g8!|Yq@!9uD3jc#l(}23|EHTW$8=YhJz9iflxbet@3c~s3V3&7J35J z;NgtZeAiR3Qc!5$>+t-{-4E-ILS_b`-U&x}84qn;-q=91TtHYdS=w>6X9NhD#)=f& z&+6#GQX*EzR##X|xw-1wobB8QfgxlsVreh*o{kER2pev-Bm`#RZWMg0_~?xFODT-D zn1x+v6slQQx*UI3zkT2Jrq@^LaiY65NwN|0$BS8BW+0<=rBxLr&t_W0mrVuH6Cv*=(n)w1Sv7yWeZvd~ekyUYh8w$v~_ zb(av@MEyEy7}Tzt1v#K{e#kvk9>1FJ;9xtM&m|=Vp$QwxR9vcUDsE+DalN{~AX-cN z&;c6}94vSoucya>fDzaGp!eYWoa1)qD1u%bOc~DN;ioR$ak^00@NFVC* zKIm-F(acOKb&){3Jp7s+9#)i^L_6L(XT`qT=uPH9 z0^bX}``WA1jMO(OXAm#U2$)6};a_y-pCc{$K-rm}PJLQ7#FoDM{@!-##zIq?MhSEi z&!aIh1DnIlY&LG}P@8YbE*|GTmwC9a2&NmfV<&0tIIx*Fr}#F61+2T(9y|AVMmB&1hp)j)c(b){<>4O ze5}?buwVTV*S-z)24H~?mf*Taf|@X&L?V4}91pdb@B*;1E06i51%R_UBCA|-ie!}^;+i|W`?VGXfzr&bjijtC{5_=t~R8JK_#+ix^E+{Sk| zF%+^+X$}?gua8Y>3~@7Z@^gxFTrIdEY37w%&tK;cV#xeaw6Dl3gl*tVup57YVkrXw zfuTr-7bdAv<&J}ddGj|_no-%si{b} zI8>@&iT6+dYkWAW$->sdRiK-X;nU=DOfb3Q5AcVQzkMj zZ#FG^d~qmh0c*)>IjZ$2>Sor@NXtX|niR3MZY({~l*DI8R`{`J_5lq5DuG{K%5F5z z3VJ1uD;aQKB38)jmxOu?1!@R|ol<;#zy^6wcYFXk%r?2_D+lQG0;H6wHGcpPE*0p0 z#q0KfyO>!G0EYCd)_xgmRiIs4oM1i~c_-d+WaIQ9U(OSV_b(eJ1VS4d4Bvdn&H3DE zZrKxhyHs$>d2F<>V|i>_LCiLT%T2u&95SLPSf@nY{P$z!DTNl=4v(I3gt$K#-7hU& zu#fvxNH;nQBZ#zK(K8{)H@&J8AJb(2h+=IJIr@a-Vs{-^1)bmNkDj^Cc zYdX(uEozMKU(zva6CSKJ-F{=Y-K?^}_c|7rBv&fML<()@)B#$b0hIr_A)xNe_HB|g zx>=v?nPRGc&WIy6U}k;6^O2@R2PW=gdfe-}$ED|{lZi{Pil@*f7>L>gCs2Pc--Ep< z+oNTCBF!+4vPgC(#cx=q%6KD;%dtfY*hVfpjP%{jzIc1!2UQP3IrFmOfQ8LQnY4rp2P%){pfTY)~a_VMGlcL># zf4jzw#|%we5%1s!paJ$p3Ark%*eZ*57lFsTw@&QXeEn)j`f^X?Ci&XMOda%uGd1(oAq_anO9BUX80T8A- z$P%nvujz_gBaNSw_My3OA@1q%1ooeGNm-*`+nl{~+LVi{#jCl?uV+15y(*kba-$s` z&L+7L-vM}hCCXz0BT=6sf-lO#dG*WWaM)M-w@DP8z1S#rhDt5_@+e?vu3_zfl(jiQ zK$JRHE2b)s)HK(U){l8nQS&BIcj%|PV*=GP6*CmI16M`1BY=x{jVv=ta%eK7NDG6$v<6 z$E}?=D|Z%DkvLR6+a_#S&w%VpyHh^8N_nEk57_`$ad67z^5iI}5I1D)80C zuLW%}tQ|*qzt_>b?T^)z5XVlIH;E(|W!n9CR{g5&j2HVC)8)ef_>l<{5GHq!N~)dG z1GzJ%k?&x~Mo3Sln(Fxa-&d6M$})tj(UgqZM>@|Y*w_fwy;n6irH zBwQ!ltk*sKiPZ5Wti!A2cO`WdpHtbyISu?0&1~h?S42-1-_@08<>kAAS$yAM5JT-!s~JKg{r6RHX%!f8zO<~ni}E@{rXeBJqBrpZ+Gvj);l6Q)CuBd7-eFZB}f5UC8$W`tSy zRmY|HGy=Rubc~qy_a8ND?lhr%LEx8ssSd(P+0 zirN+7IL!LWTH&W~Gllif3q=^O9n9wq48W6+pr%9bMRGaTfeI|{cQ%Pb;-F3k%-L0Hs`|zjBCOeOyt^vOT^t}wh7zE}JJfd=IE*CZwVcGfY&V(I9n6Hsjx_Je z2d`|VRB$HhP-lxOUf=LwvEdgiU;cFUk*PyA-7h+Ym}`L-b!&3#>5JL7f>Y>wP-Q{O zWdvuU1Zlev;6R>wS6)GY1`YPC_I6E5zGLulW||ff){8A+oYz%kRd?Fy#XN*g;2=BN zX-$}2JidaK@zf3}(id9w8ANX0`rknd_45_Jorp$$az;g zE;|Q}dymVVdXp7WLbR4^?eJ-n-Sy$D-Jn(l94l28N>Xi(e<^N9zVbapm5He(`-w5F zjqzEa28%h)X!OAQ+TNLrPGbp{dAO?UFak@%|1l$iXkt7@Jt%eTdhm8TITI{64SnQge7baQRFZy z;NDvm-hv`Q`%xsS6bK^xPs$E|-Tkbb-A>pn%G=bT&z3ky{e+q?Bz6CyqsK;q)X>|Q z$ui8tw10I${L{q+fKu8$r%QS8`$0ry!sgt6wyW~*oOH^sM2TYb<8MB0&? zrn^6YIEFIR!^mAR>%Dj1Yq;$s29L#*t5ez0+`!l)8-V>JWGDU)z)8Mz2dlcXZ0Tih} zlsfxAs39s_NzDT^hwUKHo9v&q_j-%}ySHqzEvm=tFAD6EVb4|-7!iKXuloaLvJ}iC zd{<0G`d_?gT|iBiV*Vz9aPBtt4cXt-HT+!B8_*hsakqsul8e*`CoQBq3*AvND@<1g}C%edLVCapG$RFdICcbu{#^ui&03WyqymHpR zU(kb@28GEOs1Jf2{Svt`Wn1MfNI2`I7Nh11NF6{js)ByeK{9B(>i_8LL3(82UtG8d zn#>>rV2hqRzXuK4+++G5(jPwTb#tlrKllKhEJZ!k+Z8+gn+;&ht-y&N*h4Lb&KDr| zI>zpGj86OmhQrLcH@~OWDmO6{xyY4ZF#irMFw&KND2WOfp-u#8a_Pl@5vLdT7~ue* zb7a#7^ZpuBJZSp+-%bA>6SxrkPujn_JMVN_@-LR7NG{AH%(Rf!KP)Hg!v0Cv$^I84 z&+bpKst|5q3}LAs6B4{gRoN+ z_X*LC>7s#np0hyuw1D*413ZpRV+vS(f20rar_mny-?X7l@9jOn9SOZ5XOt58#~vF2 z%hJl}sqFCoV#hy7TN_pq5UWDU+M3N?cPP;E5CE|;uKBO->}dZW4t2h%+{+&6*}{%@ z(TICel}3?sSU~})g0(>YNEOgCu-_DmzbL-Lzbmu+_0+drJsPhR5d^)Y7fvz%5j>zY z{-XSu5oF!Ntc;~HObT^*ZxKUD579ug(?ZZ;(0?-#jV1pFVdqm^Nt|3+oyc~v!lgeC z{O5l|CqH4F*LFq6F8nodOS7YY3hd|;e)khE>?Z=mAeIb6^_UQX{)oYzVEm>S|3!hx z&5gy&)Ky#TjE^+~?rEYL@6(3HH;sL5{&TMWNgL`cE%o!P*ud0A&yv$Lz-)qFVEz|R z{TFShv)|wkv-ecAAoL*|+uS8pCrAR75DC^!@umil?etW2HHfinh6`b&Ugb(x5`o+h zXG#OLF%%guEGTA*96Wq}e_`y`E{1~d-jQKPzef+Oul`*qC?Gt4V0;MnO<{NidXmO$ ziP+!O+C0YF|DFH|kbTl&Q(z&$FB5V=)8#Q6>)^J*e))!JLST4iSbiEe+K0qU5YWK4 zje7WgS2ZI|3ftNlW_imFb1Kr8m$|aR$BXpkFm6vt3_PsQp!(@NIi-_Ei?Yi`eez+ zbrNlO=zWmMfbiw|yD|A@7W=QA`&d6K{K)?Gvw==u1Su+mlxAEC%KZ`5^bR5PH61bp z&V{e;gO9_y-fg%croKISV&Hl6_}6~sLq)*@Mz!r0V4X^K5K#W*E9ojx&~lL#>oke@ zrZm=Jb*$JG!^Od~v}JvbR~Y{gpd3)xHCjk^C{T#rd+K7RE-qtfU~eT@f&~{ukpspP zSa7$&7DiIu)8k;pLH~mU7S`0(M!=tK@adk!?QOVcfgp#IK_#gkBLa%XEXz#0vM1aB zL6QRPZTU_DC^41VJ>lNl(_RBz-%Kq+&F7Lpv-F8zYdO8A|Nny)|BDW69FM?i{r!$$ zwSxVK^iU5wMGHy$JqVy4S{KIgKhnxtsq9crpxxJh0dqcbs0)}dd*ztc)Q9r_rN4Uq z7r)!vc!SB7sGi&4&5y5v)~UWTd-bTc7XMO1aEhGB%45J4z298fV*%Ja{ue#Ul-B)w zaN%GejnpFOzXtbvAd&y$&6nmx#pJ{P(v|9{MjP4?WYdTO1FO9Qs3fR5MGo?hzPC1F zCA3>jXkObNf$5Tgn*0btZBe_TNWkOznZ3b7viBMS{yNYSNUZqN672FHJT{p1U)`wz zJz<0V`)9xdK!bvS#=r(@;V-&>y|~x!8F-v+@L&AkT!90AXg80Ol>cG}tgM2{F2#xZ zH~)wBL#3ifNX*4F(i2X;ry2G%pYX9_fz@5=>F_EJ!$wK z(7&2q{XMn7BL0YShV6=~NP-dn+@qaFC+7|@^TGZlS$o~pQwve^Ii$Vrevbj{0tbk| zT2Ifytx@>KLGa=3PTy}lxL=?EnlltV^e>L41H&6B*L{5P z0x7fsTg=~TQf{K^c=E81&#Sj_6;)v@b;2TH(wAC{yCa6GL3&$gCdt{T8qeHx*a7bl z;%~NeBv0@G9ei~BOZM}}4_d!nzhLFnq}#>?Q6vRSggZ}WM|i;L5TOnu?moFLb`M6} zU2X3jX!$Z3)xyp7sQub0p2STYF7JkGJ_t9I9GC4~cFwy@`L7~!&Tqb10$@a)Ju^?5 zy&0e*79{Y4N@~4)0spemf6>itWd6tB?|K-((J^PAV?Wk|?zc`^{)1C!|BNF=CtH92 z&~zcP%oKc}C%q^@(kf8IsqbGr07M?f>i@u~vKfFeh5195ndE6H@TKmh@BgIC|MlbF-{=955U1CK3Q9Y!w*nL>1A}#6 zDP(2*Ir1V1JXqn)DMSwE{AAE886MdwsPp(XV$l&GuQai8`vvTcdw_BAXNOb0P7^2t z04nxgWuLiawH0Zqk#K;_wuofwSo8!7h;2vU^U=%=5z0%hj|`5q&(k&v`Or@eD`o^| zTpEQ<48Xcgks-cbcu?r+7364{-ieW=D)n$FnV-^EV7h~7RH=*9!y*rDZ-5Njt*FDJ zQN%ebiqskJFlpN4b0h8c$~^c*=X+o)m-v8rfSGg-7Kx^vL;g_Vz=K3FC{|c1wC91M zXKcozwS2F8W<;x|-j&&^iavod1h^h@S>|y(t(yo& z>3rl0u*8T#)TBZgCS9?MUOpe3tS{6F4_?boQ9Su_5%0ur%MxXuc;o2LAn}7QNCkA~ z8p4j<4Lsv@hHUw6g>U`iwlA>auG`v>zxe@;dB}qFf~@&?T^<6$7MZoCvz-%U?zKLG26-2A?2wyEU&b~75E{llSH8(v}FUhvq<&FlZ6 z?oZ>Pe8WC)SW&Wv>@h;fnylHTk}Vi zC)n+BuRfhXUZsZphexfDf^+G&Ui-{(`&NgR`Cb&V91rk*;PJ{>LEyzbu3n<@@GGw1 zw1~>Nt_uif^a{A&MSQgr6Hf)NZcGZ=x`_AlvXpP~={{3rSMU?g@?^q>oi~{0acaEI za_)404V?hk_VuJwu6gxiF4DdO9xUel+@O9%_Th3$G@IJSgD*a8B|ZHkYq}qyxFpxj;vghyRMaFxkPk24bfGGslA|m>fpM zl!)@Zrz-0pvNgN9*k?HZ3!$;lp!5P8jcx=Y>+9FByB5SEGs=Zf!agHHo5=g2To_8@ z#Gm(m;T;w+Q1YAKcJH^C+`&k#ve;h4N0D5*^l^hE_1i&=ThhO}R*+>>ebNA$R77LW zTb3e?@5+bxb8p)=kr1AO_p`a=+9DcWI6_KNt2QNW4$3L@WK?~875O3ZH#hFUrJXQ|D*%XL2k5fXhs^}JcVx+vNHw532JsW)N8kqtIM}} z=d7wS`0jh}?0t&8^fuPAf{Bhha||A`t4|swC=SASe1I9HM=?%Ns>ex7*1Uea>`zF@ zoWG07y7IpR)xT4kU6b6*_g3gr*1Oz4eTX~*o^Ny>9NgbFzN2$0NQp6=+*jCrb-lkb-0-&XG8kkUdlExznLgor(Q z4Qc`rUnKOJ^T4%e%$qLWTxMf4f)Lv@6zE7Cs)NXC&lbw zq3bb}q}z!d1UHQD@{#lir3pmnDlF{?&q=ZBWfd}bIWj_B8$b zJrzVc%;irqBVUoPQQgXjkQEdi)qs*2u{QQ}P#@Sv6EI0~^2OMeqiL{YbyR7E9`Zg>n{B_&z3x1#o3@5an2g*V$?y4?i zkWcqK1#L5P0?0)Jy5}j7({L&SMX8G7wOSUV%~=C{o|6=lK1Wz`kW$I$m0&wA;|ssP z1i~5yC0_oH^?3dB5z|uhFD&JT*8o1@zepA65~?46>G=X+8;*vSdA9`}7V3rY=6bSK znm0yX^T<%Y@pZ&cgJHGnlJ{Cb&LjV=8%Kw&9Onn=Q|!^te)G#Dar#{6vGjd8BRgvS z7FM^sZzW^z>JR{dF03OLXp>lGAhgT>51PG8jjBj#CZ6gEnnyOcFj`MgO=|`L0$p2t zCX1f78`IQrZ7rznjTz_%D>wEOg#3Y2A@S|p@Hy3{UZ9i^faV8%xkG+6xl_NIYNAt; zRa04v|N4Gm38F6n_Kqi9Qu1U<*&Ej2p*)~REwVaywXOQO zw^c@#s+-+3kc~Lc0A;b0J;@!cGGf^9hIQ}b*$D!;NS1+>j8>xDe zQ`{Ouf>SJ$X8yW1hrlYbbd5e2V2DzL@dTP8!kdWc8Rwzon-g7gSA{L-%-iM~Z5KSt z^!;T9j@8++&TB+1_UBrkJG@n6AB=8n?&e@bj^P_1NytkGFljcEBx^`K8oBGY>T)^$ z3)VJKLY~tuD?sRWB6(;_m|ym0H~9AJOWnT&dG4iF+`JIB9zFL5&?cy_qI>oe@B&o3 z6>N&&H&>wvqy$CQndk)NqdP0;@pI&{_j;d_m7@K`fp~B4!k3RWrZV|vPnum^a{im#AYNM$Kq3R{8< zylT3f)0wtOv%Pxl;dAY+dDpF9J+zne9t>qIgDo$#pK@-a8qDK#8GWW`z?{(li)oNn ztf}F6h2UNb&)1TLO4*(BOp`bDN?I3KJ@+g7r@?5?YiD6>;;7(%UQyECMZnjHY$Ua$ zvoAfn?x?zb<9oHakGjl@w;t2t46P!G(gSMsmTg$oeDgeet^U%zg|5*l_v08~Ig0fd zk3OZO1{+Zo*Rb>pz>FcSZAV;QbEq}vbVfXw!Vo5LtJlJ>fAYyRIA(h8H0GT( zWF_iS_=;g2ds{FRcRlKtyC9bh3s;4?Gkc5<>CvvsLhX39d<4xRqnA-;G8x;Dk1q0& zMKaoGIyWDNFrSE%4bKXK@VHTO0g+>8hA=!Ci-28fTS!P1K&4i_O#UzT})yc$1BJpZu**mdZ zvJxZoNrI>#8S`@`9>1pCDE1OjFgqYMtJOjN5YG`m)_Z0dsnZBUND)#y^HsZj;shUQisW z;bM6a!fl4{F7Y^x3S5f@8#Y1m!cjBT)Rr0vx~pPCSCrkEnV$AU8=wJb_~+CL3J`%2 z!F>hFlroZ6udXyHb`sZ3kQeXPtkSG=zL7bZB;qY||(I@$e z|3T8l2-&q-gsiPY@*si4Ra!DUekF7LmtUnCMhKtnw5;{A)6C})g1Wf?`+D}anTY9y zEyMuoEgjuI`;OTyqU zhf{qjeFsoW>ku4m#Eqn#>qPUOPNDn6lmdyiEI+yD;5xbAX-*i;m#@C$ddSoSS3c$$ z5=DRIO$F@(p1rFTc0O0b?8fbgJscQmNyOj9{^@_o!?OOKl-ftC*LpCUVaqZIQihgc0|PXR&`<3m-2GSV_U$- ztemL1Pc|f>V>^KEn5j9M3U@u+t;NJPer|li_tPW(jzUMHZOquRcIQ`K9F?sU8{DOc z`~l*nNm5}mz&bh>)ff`1EkI1L8K`_dh4M0AWs_53-hCSQGz#X~>d-7EGxYME-@hTu z?-KX>r;)5DmZ27V_y(^zo?j%!1X*RWs(+AmMbE8taqD=O#d9fV$|oAI#)L8;3NC!58|16Duk8_i9h+u-QUR)n+SO&WPtbV(3RNBbe+S%T3bXqEJK!$|j#>UY;5PsN1FoJ_F8bzuV3F_M zQd$IbwzB(*r)|&`+3e<*Ilc)QM%vSUyszOER}j#Q@gbZMVuC{hCm zcm{aQaep4<)efj%9X;QqZaYh!x_e80LHvHkwZ{w2sb5pP-Xr}HR+I>-9xMp3YhIrX zL|<0R6&na*W8PK#`|nt+YdicMu}*ra;mt&paOJoI&%o95I-CDr`@TQFwZYmVw>sfA z9Wq^BfDe9ym9GBKSO5)9wVhO!_#%}@7(JA{XYku*2!|9et&>gBU zM$w?N*!a_8vb}I@reA7z=BQPpfz$a)RJVTDO@urtVJC{Hc$X5ss-x~ObCm2c+hOeG z9>jY16N2;Blzh##Cq17hAfc9d(}7Nk5u-}!vN2{g6fY6Av3wB8v<=C#B#v{iE}S}8 zBbFzvnzD}zM@Kiu_D}v@HMs!t*;NEkuY|wjlVFO>TsnfA#7!Q;0vAxK@2K+>MDK@~ z$&%W-*1Lyae1a#2D&^!xyVNbK&W(H#T}iPU!`2_~?4wQ%d^M}vC~G~s91*HwZ%Rn< zjl3Dnl9s)fwZHzWYJa&B@#C%zbp7bR21R5#<<TC@~~)+q04`5vm;}Xq8Q}_x_I^Y<=K3*Zk7f)Tj>> z<|!RL$u%bGa1JSSW-oWAn`aeL+kf1fo&>7J^rPq1ok&elD`;*?y8VyF2uT>X%LlM| zYueXu3gYUXf*Qq-Myz$!J++XQN9i}&s}&R{A|efrPnUd<&fBTUHI#}3r#Bf$I!L5c+lfdPFJ6Lj{ZL+Pgv zO@x@~gX_cXSPp69HBF2@h6@GW#eRGH+>M!mErli!XCq|&ILyjc`p54p93M;G!Glb= z-&uXD7}HF=YuxrC>z`1D|GN2`;ieMkCe+d7omF?asp)>1{?q{oVniFnm35o)kv|b7 zD^Cr2g$JWnX8q9i#;=Dt=6esG-eH2L`j7mcg5nx<*det_772%Wo4&AiE_-gbGKy(*UT&Jl@* z^KN=xT+(!*hq4`o?jr8G<_C!uubv2B3D~u?8z4f?Sq@jsRGS&My@_>95x=k(;DFPC zs8!>i;}o8$aa#G+G#&huJ(^l6%_r`Y^Zp}~E+9vVh`Yq*D5^UFChQE4874jdq*CcL zrhCvW-@CA6RH~MB{hpxM-GxK1EXD(cyrJ}C0Esw;XI_J!1WwCnm~mMp8*8ZsRfL!3 zyXcrgEjJ!~pVb{CmhJdQtYVW3#3%-6Ze0F*?*y)>c5t5VoUH5G!0uZ_;b(FMvBaEN+GHX-2d;eQRo} z<@G^6w`1V?_@32{keeiSK8s)Y;td9+8zY|?H(hlVs4LClU-N5MTBRA*fj0;*>eMQ-{`#kWbWnEmRk+5C5a z@L^yUR+7HVk>(0M`-~7Kf(H%|5Fqd7TGeLThvZG%^K^n<>DHX9Xxguxj2pbO8WMHQ z2L~S6&#hAnS=_qrk{AJBTric(s~5{wIQtCJ_X6>#Yg%G5dsRFvJH5D{Yf-gpU*+E9 z`RIG?CahlCcI&u7!K)RK5pi1oS9GRFsM;m*vEtt_f=OlVW|tlH`(^bNj{TbU8?!Pd z3)u7(op#>Lz`=LhNX^MAs0+dm=F9}MeyLe3`G%Zd9+=zZk_oN<_CIuTHw*m^S_#&? zIzjmFTP9N%u;lJMfT;gY?jITRgm9U_NF9EA-KLVeGW38Jw<3v z278&O;J-+vXonK8Z19YI$W$YYV_P$hn0{ya>10XX^47J_ao#f$iLu#}mwBDj?qG7k zzJRIEir3EW3W^0Da*qVSGUAOsrv`1mWa%`t?>AF&%VCku zGx1jt^Hu)Q3p~_g1e5~vAttOgbrKiM<^u8DxJ^D7TUT|_Vt1B=vJ_iv zs$#;)AuqP@4T;gJ{_F#d$CcKL=cS2IRfuB=@qVJD)TWA)K*32$BFl$+>+3?vq5CzH zR?R!B7hYIDxh#DVTj2X7P0erTBih*x#!HMwp+e?AVHP z?8^T_88_oWv`Y|FcX)>ssRNETK=*Ls?Efu`W}M7w(e?Jm^Bz8DD7f#p0g``<9hDlM zOZvCA0*j(uq76dWX{rdsG))$6)i*10i)h6}_WP zl2mJYVT6Max83~aqtYMTz51j%Qh6I9W!?k7m!++${qQZ1j7o7eC`_f~hCFfYSz`toJd)haMRhynuzeAdLsWx?o=w;~;FR+u*BCRL;q2JDZun(p&aRTZ%~7 zUSWN1G*e;vZ|fX7H9(y+_-o;RV=ewKgv0eWh+}h*fBSoV;J-3e7TFutrpAYkyWx{{ ze|{Z>IoZTI&voUshoL6{<16G?!3E&@PS^qwtwU)_lzXRuqyvMn@GD*Lm06Z3*gBZi zchT^<&M>UGXc8?%XBaQXq=f>3AEQ%|EEJv7AUNY1tZzH2%sX4~Pb;>C`Fj(|Ojz(< z15kDE-ua8R9Vo;-VnzmG%v2dS9G zciLL3yRvp0Za0&$Zt%3(Hs=_xAPGr%jY2`#6RiAE(`1=mD}YIu=J0Hk@u2y_={UmX_kJ z%6sdvirYiCR839p8`1g%er}b*YCMl z9`uICbnzSU)>Qrmg&{qe7E9}2tafvN92V=lAA@HBuarZ8VaoeeP`)X&SNAIMINt9_ zwo}2Q(}-?LzvPFmo~}ppA%BPa#)aTDZMzkU4Z~}tf`$vsH;Z@<4~c6mnh)X}nuY9= zH-lWACr_IoiJ9H~m0)lmEsk~*VRTlaeT|?fLMiG;HKJn`5Z83#{%T%tPB6=@*lJs8 z9nte32b1pVR16C}Ysu4lZgZ|qrm9waPZbNr=<7n#z>Qe8GG7bIyRwqIkGgRNR z*s^_V0cQ8f<#$v-DUyE-cuq%S)yq!s(l9e)Ed#R~x9 zWb+?@FT`2E*Gc$sFJ=YA>Jz*yIi+fJBx^ghr>X_!HC_#BieE8u%UJ0}X){;!H#W&@zYvKv!AM>JNS_ zt;})KeLUkrd@fe@LmAKv4NDG(%X4H_ndTl zU7z$*P-M3?>$xPg&n_)%lPxlE_k?UN4P%?Eq6gMB)u_+`=Ovq|q`JoT45IO1_L&?K z57#5006N*cIa&Iwh$akgU&Tas=&$bc*n2Daw1p%Dy~4zPncqqjuQQJ28roXuvw*?Z z418>Ewf@CNqZ_39_5ogAtyIr`9PmUz1BxsN4U%2&TE!+!bP{0|^rS4gJ-o6v$Sd4O zt&lZQY*47}dj;Wb%C5H8zXMK#7Tia7Tzs1P=@!RqtA7EX9ygN-pA*hH$i``e(|_GM zOIAbYYN*X|TX4vfLpEb>`1ifzg^|IXD=0qEOd9hCBBmeA-F0&wVNyq|Y5eH446ie~ zHu-l*tf|%EX_A1toS)CL?<>wt{r=f>(hRgv+GO5tJm&NP;tmNEuV}eCdDz$1K%TSB zh)=Wk?8wS6`jzr}XzQhbF)O>lT?`AZJ$Nns!6Q0;o+AgvOOxHUao!K84KrFV2V{nu z!}TRvR%dZ$XU6>qyW=ikV>5?&GIIiKqZ!UfgFR<@Um*a|&J&&3CHaN;gi`*|(P`81 zd(|#Gn!TuGsrnbE%Xc2?yV73zYnB(4rXx|xo0nK`_KJ0-zp67@*D!wKDJ9g>FjG?^ za6^B)s39Xbe8CpIdLJzDAt)Km5hU!^gLj>#IuRD~b#9rw$~ai% z=R&F3f0UDWBR;e|QmkNLG=_x9h_Q;&Z<;h3FB*z>BF@+ulX}Ai8=XtH2C7OtFw!Hp z8nY7}Wps9D>aWKgKf^mE(Om`h`(1#L%a?X#OEY9w>XaWLNeKti8onnG>sKM&E_Qu% z!Y~II$FNSqD@l`>AkXlD^lBL((+d|nY&wVoZmJ>KMUYd;3@liSE(x1^af8b#;$zu9F|P38ZcPpoVu!INpW z^0p14&ZgC-2;Mf<+68r~95K7`r?ue3DQbmh0gD<8*hJw%*1Y=C6Hz==C--Xjs11od z8uy!;{bKy{c*s*Xbpc>?k^@}>(hS6{|Ho~U#WzkKei8}{uT_bAipaF#fo zW94BAS7&6>FK&1%=+ju=Sv6<9T)qX<)_h^%==2wCjeQ>BPC)lU=95>jI{^d^J|7Xa zIqGHHUgavA-klb{JZGzIK2B}k+2aR1PrcVt{O86c8k%7hiWh z=Lr(?eSNV+aw+Tg?c2li-dVqP+GOQJ6jBw8fX(C-_#tWqjZ~vR%Hb?)pq*NhGSC6C zf_YR}Od@0*X5ROf>3!Y|frc{J1;jmJuzC`e70<_i+DHEt`2$sl?*`2eu2iSwjrT8V+`Wsv-DNpD?4-Wa5 zXX4$p{aEi8F%3U>VH`f0V$IhHEuMA{n#HMxz{zZ;!$8(E_7xDz%Y_7}KWsD>%5g8? z!`#8Ql8m9JC_W_GB{tx%Y`L4ZH_`?}?=3Cd|AU;lIx)ih?-}xCW%p8j^Bm9{MEwsP zAIcAg%UNBItHJ%Gg!Dm}kE$8(pe?fGg)H)LBRvC4*Bp|R#{$T~@K5yL9wXQ9(i4@6 zQolRg)m?pWV|Gh9O&{?Kp-|?CGaPju%jp*8UK^xx z)vt`lVhKt=I>f67SMglNZV2OGl~b0_$@elpwtIR{21-iae_1&7t@pW&Emi4fK}-z_ zqcYU`XTOLf?d$>m8G4Y5&reR8yvk6P^G;uYQn>iYkN4yx!2 zHvN9YQ6pQ#O|ZF5Sc{JrGuC+U!BlK%TVST^z??lih8Pc&~elkZL{{vc)+NlJLZ9ugfgXvLS zVw5#v$~KDY8gbG`Qj!0sis+_hZhOn&;%lp8uU|b)PBCeXhkQGDPr$cy^v+o+jhiwx z(8Z7KXeXYlox-Se+AgmTTD9f@X3c8cdlms=<<~N9+TYR`9DyE~48@!#|Fi1zrlVtJ zFPJ%)?$GTs*;eXzYn}1wdH&Vc-ta*Bm#!ko_V{oCPvdMi~RLk zY&B>e_dX@m8+;$zXrUY&>;z;f?9nhALku1pwDL<&;PCy}Dd@KFQ7>`Kql zST66m3vRG_^Clm&ouMIy1`Joo2K4#^!BWEIs6T5U3STw7A_R zgWv$3$x~!MilxSLMw{nzQ}P;{iRA=O>6iDN1I_v2qwfp`S*W)O zioEdeM}PM(ZRUhEe)IN(R}nHotQpStyW3uSd1rV{B5clv1YI*6P)zSq$zKHzn)7VY zZjmnZ$eDlMw#$S#znjt$=lcG=M`ain8RtyA5Qskq_CezSXLXXxTpIQ%K*#azx-<)` z7VKF)Hfn)}mNbTP*~aCDO1rAK=~#tl7(_k->>2e^ zyD?Yxvp9qjfNnAjk?g2f^j0~Ne@%EckOD>6iQl7}pf_d}A1XO7wzeo=OVW^EHXKU2 zGsfv04P6~i#tR^20lfDz28a`ak=TxtI?O9x#jTf@KbTq^|8@VhewV?oog@|gzc%!Z z!MZAErMimn(-lxO_Nn>h|8}&Oydo8XWXB{&_$|fBA8c*1*P#iI1VeT8jpm0Be)u_` zf0+?%#KG_>NhT7=7^eGw`m?30@;`J#n?Qg2*pC|+t!x{A9c_aIQNIG4flOdEp#3kc zbUXWt7tyMCsOv! z<^-U(GqeI+w6eATcF_FD?wt`+iiOPZ4!D*M(iTZkN0rY~LH_Dh|K&3xHsIz<@p` zT7-kh(Tl|~u9**xU7WIk#GmN>3AW9Pb+fl~?QDU<`DI@?3W(F4$Yqh!sXWR9G$A1C z^Dc4iE1p5Y2DjZGg6G-Ou5T1s-TNbSzJ+$-ezp>Ah<^=W{>$QD=?VkU_OhjLDT44< zI8qhB&|fwGe!>5h{959{PwnD*t%um%8`Oxcw>PGe9bM6@zZy<+r$(|rq<@FSgNP6D zIPq041SluMQaxQ_O$D2(E>4e5g{wbD2f*rnFX=i+ycke5{bwVw*40hXTEkqW z4S|{e4oqqbeDnzeqSs(Me%coPqK(s%xsHCD<<1S^wzJxt0*gP-!Fje&O_G>$fQHL3 zdY1E7y4172RYbhNKI)&N(env+Hys<#7vN>x#t#6O&*B0RN*h>${tw-~f{uTWO4z;o zb;R-yv9kY|hyHRb%+Z);R?smbj6_VjF8}s2&tzdE(JyYV)=RSGVA;1VnU~we=f^jf z(s)?TsM1c#3c-L4aY)>zF~yNK1`Ak!XggIwX;+9@Fge}$#`1ncH~9p78B4v=S8 z)rT@E>bEin>BYe|$Yt!gE=k%CFddQ;IR$hMa)ddA5CIn7_7q*U?6l+*U)%D%Eyp_CC~t5d=ZB99nEr<6TYe*F zRzU7tb8-v$W%#;3YSdk)eze@I3Vl60`@spmq7EeE_Xnj&0~7gDbot{S(4o@dUuq=gurluj-sC8Q%FV8shiWfwzeaNAY9 z&lJu?+PwkKuz(J0d8HOGEEP40wWaaUh6;oyz)$z%u~)hn5I28xNiD*&`!NXpRda6N zl)UE&FJc7>fn4Qk3$AnR;k8e-l%_xH+HzkIn0as620_w{>#isur2#NqiNrw;r+lcO zUZa$`pP{S&9LSjSKmMclIpel?kcLN~r>A)B2BT=iMg#%Isz~Kr9UqV_b4+#VlFGM2 zTr+QY2d+C=2wI5Wwwfw7Cba!%D9^B`IPk2DwETL{ znc`8PH3L+JfA>mq&a!~xSXwS?PgpZ+^o4r7tA6?e4Z?ch)3Cx|Xr*F|pi~_71_8#2 zjjKMA2DV-td(k~kaJNu((q+kYi(a-C`Kb2J0Cf=2I31V0(F^2Zh_JL1@kuqiFtOU1 zz+FDuq^*6U0$ZHjBRV;YOXDY#5`K}qV3`cC``_W;O~73+@F(Z8+FUxJ_*rqV*u;?P zKY;GRur%8Ug+!tosM*K2WKCCYEDgD5yGgn99c#J7haE&fn`$nmH~9Lrw+8KG?pVdb z$`8T2^rsi7&Oo97Kd^2U*gHaTz?*xT=OB;$%zHH>r~P(o$k_*8k6+QhFtB?Webb)n z;|aiHU&#SAFarK|g;33=c7i#pZ{cF&Uz)NMF(F8MCGw^0 z4JZJ~VFO!e#&N zPQRNnw<2<{>;w5IhSV1%sT2g~%95nU(LTNTg{Jb-C6nJ~b>lB)30Cp1qsN!dNx>5*n609GU&~y?Kg$NBQfnPkenpTi%;UoIYo}xnKQz`{mK6g(To--%e z%>c`3T_p;BRW1M28(}raXFhe*j_0_0VVo>Mi^!(*&1UE{bmPN}D(p4fKlG);-eG}< zb^!44Zv%n3Rv6Tu8}^nx7Ac#bm-q7_5;$Csg`KT#C`IV>BGrYmK-@$sj#pB`yIpw- zepl@rL3n&+OP!V%CH3^5Ik*&Gi*kZ-mId&SGiI4zv-X)Ak&ey>R;P z66${1-X#UU=L&n`@IBUmVSuxE?{_nbPoQ`AC-BKVquu~ua4(L9@&1BylvLdhHTX>t zrs*J5pm1J&llBx;&pN8!XRQ3>Kow>z>Ia9^rLn1A*^92f=DQBNS{TaCFlXkt&lk z5L{+@c?&l-9UT1nB1@Npy-f7Cd!L7YC(^NI+`;_B;=oohG-mTt85}@;<9N0$)%YaGrlf4A~8qjbHoyEFutF zCpbP@p~47xrHX*^}5i11{#%v3(xnX$V-%x-~TDV?WI(dgIT9h&dvP zVAe@Y?u7_;fL9e`fqZehvPHO*Yt!VU)<0D?FPpSW>AAAT*B2Ldi!4hGZhpLF6sgVt zN(}j}a3#cdDC4=tZ0*J%19ty0xS#^zK&y&xZ+*Q)Q#5ug{{S zH86gjKgz~NdH4BBJFkmu0RRKw^%h=5ZrkdzH54y&n}I%cPRqukz^n;hg( zzlRUIxp(TMFATe#vn-6aeiLtrj3O~oxv=E4iNNXyI?6W0rq)$I-uap%5c8&EM~LHY zl@YyCxW20qBVdE9bA{^;7y)%vCqj0TSI6hYSH=g!7j7W*h+Avc?Ig+h*fryHyZ1u& zzv0OWk6DEyrMzP~vpgjsk@!0B0Cs+kd@_xFW}c#+?da93BY5gC`R{huR zJSX#@xQRrjK+cW&+YGF=cNTw)_}o4yUM|-`3KcJ%3C|5>89P%g(t!mF6CuESV&^M;m|G zHjP1!T~RF4PE=|SF@0U`J*3xK|7J?{M3`vxHEeD-9e5Axq>XNLP04{Iay^ zCDSWb!kXb8ajZz_CjyiI97Sp7?N!J^Ga(H_bfPgW5CKFwu|~dZ=C6ynYx*M-KG7DKJDCQGsrJ>)RwA>jA|5P!EWf|IBW zWJ?DS>m7*$nWgg-h-vGz%CKr#z6BPWZI}kl*9uKZm%HW3d`0G+tthJ?rHCwXh7JTW zrorT>A06BnUq{pIES}xBxLCpJ{OKVsm_J7WO;UOM#> zC5P1h6%UMw(DXRo7uy9uZvpb*4T~>=1;J>E{?88n)sAu-U0*EqwB)gmA9;TndN4@# zB1xvM?BnzRVtI0hp(btan;2zI1RQzW6uZ^XtT!iL}e$2~>sfm9l%sw}s zA+xDwXUW=9M0)ZW@fna-OsK>&`+_(FKWNVN&f;>&@r8cRj^AVo?>4l5u=19sxvQDb z1>|jmeE^{qegK>ZZYb*$)+3|>q{%9U8da9|Gua*#?$N^5lzsHWmv=n{ucWD4yj>=x zTsD)1k)zLYk+{c{C98J=$;oiWb~iX*|KaG+}HX0`<2N6lcuxa z(>B4E)p=XU=g4tL9S0yZ!Rgt~$!p7#h55{gZH%*xelJ(-fBKx}X6g4;G1)$~J$Em& z8>pt`DDUxkmQ~cwT-l#xNfOU`<|>FC{>u0)zlMS&LVV^p_)dmqAARngi;1@=2+nM* zJ-vRa?i&V4L$IA1)4msQ5XtGQKr>*zmYnK3)vMXqiyN$P)DLaURx{om6>{f%%XX^A zGxUp-w7)yG3QAo*cb2a$dkUr+QvwL-@h3LR^$P7iC7U^u&b~KCub9(o|1b`E;THcy zNxar`!)LqKPOgMiUAKB6BBZmr5i9h1vqT7e9wB!2zDpG0M>J3E2v`Y~TLzu;>9w8q zTYr;5*wu|VxD&;%@k-KTRN|Ay*5h-delX3M%T1%!2hnGa$@>bM_Ho-Z7(U;vzEMA0|?{f?=ac3Ls% zpYFZ85^-xpro}1Ii$JDE5X0Y4f5DQY*_W8YO zs`*a&y@J)>veyp=j54kT@#XkG^ML0**j={1AmB1491Qen_a4RF?jCgTJ`T1xz#bJM z$DUEg0Xat^=*z|cCLVkRU|f$|Je_D3$# zMW18fo<&##|8*d30>oIgYc(KW%;sb{o2fU|;0?1m(wg`Du)A8o;zl1)U}&CUc;oeu zf6U-AQj=spV9tv0I?D%p;gduz67iAMD&qn^xEgfvpJPl=$kS%Q_xJ9%rtUpw6|>d# zO(C>)FV++RtrTvmUsny_!zgl567J0U{T+MWJHW{Xel#t?6y#C zWuc)s&xYGg`!N5P^-Bt~ZS6}D3*6HB;##Xf5UTl_Auw2RY==ct(A_8N7(%{b=d22w ztiAD3IKSIq-qR)zGxzatobSj267>Ie{rvnx{e?di`>E7@xqtscZf@H7&sQ_d>DU|3 z)F_!`SQlkZD&+{afLhr|pbGFbeF*(LMgsNXJ}oSahww|@?#Je>`oBO1th3FZj_^l< z3lt-1@;?ytfULVqlVp9*Pg#FX<#fA2^ozIro_qG)sEn6M@O}HIxriHP+7-jcowW6w zt#)opUN77iRJSbFhslroVU9JiLqswAhih5P@0nG|WfcQuMQUgkP6$TKJtw@q1P0<- z>ueL&V6Oy^`(a5egwbEb0(AL5U6I*6o9E)w)ri-bcn70aCk^TVhio+O9gQK($41yZ z$C_&+AUPF^A&*SKsw60mxHD`rm>@@+XyVm-_^PDW!1%QhM|LS&yHZ*}y<|rbS(Ai~ z@4Akh$2Sc2fi8Y_k#Z!$Qee+Uq6-NH#Eq)!6c5fLk=+du#Qv;cKq6fc!<^{D#%Q1nLb%MdTA=if3R z52=#G!LI2lOlfb82>j&Vz+QKeA24{9S*=D}&{%yYbBMw$p(& zhMcgh*%Eq|_ze0>5=Q90RlRJ{l_=L467wOso)Yn2Lr6idpce|(%qI4v8Ydb6xX5Sk z#5v@aq2CLvx6x$ZUM6Ri*M{6zS&@szYe+5H4D$L}KFY&<{yU(Twdi!kq1HeRR1 znDQMsHC&{_dbw@>-atCl7(pJ8b#m%A$}Q#(%Bn1(%T1N-`}28@bI%A=y;DuvxZuX1 z`8;|J6h)QJ;{b$kOB+C-z_;ok7`Nj%^X-(;LltGF7JinyHTBe=`hb#f>I$bPM^nx|Cs&#? zZ#Buu?>@1w-q{iR;Aq|4oKAN+KRwuuPVR*gS#g&Kco5&t3Tc|iDVivymYCwxHV7PI zLElX1BY2+ty&vi6X3oOWZhjMg942?|glEGoU=7%t^>b-$k||$0-m} z@F8~f{fG2d2!~TH589g| zje9CN|KfLoh~)pFBP*RX1p)%a2FdyoA5Cncwra=|R+4M=AX(=()yZ$IEknE5>U@DK zJYxk=|>q(#<_p`+j_jFP-o`;bnEpuZLSD#f)J1jx+j+!#HDHocay@rne%e zhu4vjYeFCiiXK_y?4!0jX}=FrZ<>w1(45?%4D}BU@X>DJy53@Np7#y`XY)o-Au5Lc zjcdYx0D=_bAnH6-c~)1--nT%Aq^&DxdGb3gs^a?DUN+yE7w(fja~DL?H0|_`9P*LT zS;f?22k=TGgv-sOWa?WN)9p41>DYWB&h-qq5aVr~IE2Ni9PJx~7wo3Px0*8u!&%4$ zqL~-rTGkWK(ic9qnEI|CkEjhl`!e)l*PQ-` zE(yyX$nh!<;Ml8-3vSx#O2xWvNlrWa)Q>X@dA>|S&WVl2CbF9`vGqq-3*!B;?5zAy|W4do(`(iftowLyOy^ISyGuWT1LG2>=Gq}F&Ni>=5*GPsZX&YsgoZ! zOb2N}7eFjAAzoDlW;taj(0mD)j4+^W9DThE zhROJa1@a3@^G75OMVzwoAvwcY`gNry!S$;7(8|!l52Z%AHZ~HsIF8JR@02~iD;kaL zn1LxY>@Q4_JErA4yvt$;{X1{k-rs85oYgnd{g{%pSDrnU<cE89ET}mnoWe!$e zdGns#7aWHsn*R@73W$rwZ;x=92?B`s%7(MW@P?Sx2-Cn#RmqfHu^9&^r14idYe2sh z9nnm_n&$v^=fH*a|7-yNbbOf4G_vnd^Wx``NFyNEcwU6;n2pc^_BM25 zR>?EshkE4XvmB%xkXbmJOc+o8;)L50Tz;STKA1SV-eA#@E;4L(K9T;~kmcy263<~5 zP({Z#ARSoZBTOVxiSqB%fXYr`Ax>F00JE~;SKeCOmhxEB@{Z&6>0STz&)OzeA8y?{ zFxt$cDw9OwfJMP&JdhACOa7p_?&Q#P6_d;I)~_rjB__tz)i09FyO9NuD54J_S=`?^n?E&_TD@m>hAp?CrV{2S+Zm*q!LngGEugK?7Jzlhaw@&l(J^Y zej}zrLQFCCWyqFf-*-clEi;xen3=w3xa+>}_xtz#{XXx1e&5IE`}jP17#>&iI_Emq zxnAd7*LALQJ&VA71AhTq!M3pp?euSIqXDJ`>6z)7U(>by2U4~S2$2REb(5^L+KtU2 zRRXqrtz!`V^lxUv0Y}ANzKnYLm0$H<4~1{J1PS>6{8co0)eHDUa&iEw3{CQth!8s7dqGhgpk(r+T7zIgS1p!nmBC+Fw{~?@p&}5z;v!pgW(VcMVZ2R~g z@3B#>6Rzc>v`w1LbTl!`h{6F<29y9IV+G^Ke$oK!>?9H!vLR*fMv#((|KX?(?LL3q zX=eT|w5y0wTK>|ybfL==sic%b74K_8mZxJpXoXMb!)$=}U>A~QGmv5=T1mj9Ai2@W~b8oiKA6Ok(I3NN#&!eDpqL>aPODBEb? z3-2=bzesdLOy;EM2C;^$^<-h{XUbflg;xlkGDD`D!J?Hi-_i!#{RWya#bO!w39y}~ zApq_+<{;RtItPt_&;E^plho3ZOoVx({ z?LnIqP*e!N@GB-w{CXhn6M3&K0O_lLn{3?j?oo`PR323@289^@$^e!4m!yP zku=4UTmo`8FV3e4vZybL+XFwKOGP>J2Y`(tM^u};Naw`$ zG?9(wjO%sKF*^HZajLXr0~9h!i8nBDXysugu?-Mj3`n+?SzGOE zZXlGbSg{_ooYyO;Ja;&e-^M(*Fesp0W##luun2A6p+NlGm3wPQM; zp{t46fLl-$(($(7$<{MW-VzK!22sRM9rGc9#g|lIL~-VZ?&~vAMTi4(3p{gdud_Q( z)3Dw$hZR<@hcvJbRZg?kLg=YlFEio<>5nuhp+ER`=s&7?wC)9?6;adl#cXEx z%+TsbbM*#Sb;B-2J*=yTeMxaYNx_e>aOCdeKR$M|M<#0LHtZ==uwXd;cq?h!8^nJV z6)o_(gtwR)qDuglb^nmFbmF}^9xL*iyjN4kxx2@c79V_2Ypn4P{BnqsA?^lcpn?;H zMG{XL!g=tppf&Nm&Lwc!Qr|UEmMdomH%mPJXzY<{Y}qzw4!KozDB{suxei;PbO*@c z2uI!Fi-eA6O%n`}H5qS|_oX@b-7kHwcHhh<((dGxj8_ap;=P~EkwT%S(u|`5aa5d^aL4cq$_Kt<~Fhc}Moa5uLm2)~*FPDBPIt^c< z5SSauEf_=}SQ*OQDuysEMukr>)hK|Xm}mqj#lchjln2?s%3SyQyZnLABSbL zOUF$X9m%PrjW_#C5C{Pnob$K zn(Lwp+d3MjFu_~nPA9dFy*^{_^LbzV3H=Pd=PpASN90i4l<-m{E@RTWu_F*==Z75= zsY`)BDS&DDy3?Cq@24XR{iqr`9H?Ht;i?bUL0th zEwTZaK?*7T9o9HX-mSM26ZvTck#C=EF1{*_r;l2+y{}u`clp7&YnTn~0A*mmtaZYV zD&w@KqZ?77O03;gw>&4uE^1f3FYSB1YGd-Cf`!40wb(Q8;$v&N?R)SqNN&m=l2yN= zE?!)d(;OBqm8LVTS*eLlQ7C&#v0p!2DIXd8sv$i4h3)a_1sL&^cYOz!zZv-j#t{`v z*@Nb)X#bEgXH0m`&2~aCV&kdUCb!;0FZ(@ZcV)f#TIvi+8*i^~iw#SynjhXjob^r{ zr=>?u0zv$jO2^B|>F!EAP6!YHeLFO&3*u*VpWl;nho%3hzjvqEMW87{i%o}?u{hM3 zH2;KfpBN@n8wn!>BZ^dCeNXBBE~BR@!1(IHr^1`+rEZ;kd$gXsz{B3c3XzK+rX~h? zryh}WLAZK5U!k58ex#@>PPaQ~y}JEXjKu?sx^)&Waq`7P3gT4_WID6FZmLwhFKDDjTa^wQHKxEGsn&h!_e5k14k5si5ifKy!}=0Y3n!ylgbx2?VWmYWX#d#Mcg{7U=vpm()cLl!Ai=m=!GX8n zE^8EOTLIn*VZhiUo?Wo0pH3$Eq@Qq=a?qUZSv>lO$|oCp)z#Z~C*6*}m=>~t+#d4D zsLv*l$yrK=Mz3U#FN{lcoy%YIJEmhCIB_F|cYo<1I!y4oQl}uzqsavNwSBqi2C67q z(IfG06>qS@t)&6dn1s)UiQ~u^A`)LuI7dvyY1KX_8Ccm~#)kw8R%|m>pn~0-Ub(t^ zMTFWb2;8=P@&sLQ_rTtGhz<@#I^sS(n~xPe(zuns5po|m4Tsc{kUrUvgSMI56XfPc0=N%RHhTTdyRM3+~@W<7MEi;Lgp?Ox%; zcB3?hK!&OpM|+z;jH#>f9S*!COeiL&P|i^LpvOpZ+eReT^v~`g73s-ubjd}81s~Bh z!y;8KM%jeE>1{dvuk?a^1u}a?qRgcDojg>uvmo9^E~VbN)d@*Dnetk%6)zIj$!WlP zP^TPJ$oJX*Buc#~G9qbMsMduuDVgp*4H?`rMUYo&o}6SZ-WDU(Gl9Njb&i=PL+%I2ySzP>bOTc+I@8L2SM!uHE2eBZP-Bu!rg=uv!TjB*bz$1@u=Fqm zgKN}Dsf1^@@-u?~mlxQtlj_L=Q)N}1Ye;4nX^4BYe(!Qne$~yQ*YyJOhysrYqeD=> z*b5@bM2T%ye|=&-4zDC?wV=e0a}O?Xl=qf(5JhnAGPdW;&zLVlUnb=rPu$C-?m>I};qB=h)O$s4_W=AdzzqZioNclF zL3sU*x)#4|7ak*W@B7iYqSmwV3AR!5qZdYL%l`hPW!yj+S|YuXq$e3D|_EGsRC{t= z8#$NMJd~Lbr%X9)vfs+0(!SuF6VyK;MTbpRiU&T=N}X_cY0@=;R!Fmk&=P;RISi15 zZ?8(sFK6p|X8aH?7rFVTvpEe@hj%WJV^|-N7{!l#=RZ=Y8NY7Q>rmcDK&o((m5(WZ zQVeg3#$^Yfx0fjYj4)q##-fu1I(;>$J%ztu6L`G6BV55({rX)6&$^ zc)+z&33nTm!flWH>(3`wMded*0dBFb1&(%%Z#wt;;laF z2PSA@1r!hl>)A;371~~qyiC5m_MgC>P`}IaY&waQh&hTFbiV;y#AK0Hm);sVM2ibP zgdDuiN#FjJq@5Nm2 z;vGm~aBv#%UUFi~3xk59F8?d#cjebzu0`fxL!Ql;LQo}nf^P!clrHwJC+kj0KbCq@ z?~*-d-qIx$jBDjRw{-V-*?6E-43nRlR&Yma;CV%hCdwXsN4+>($0R0(7iL zv)}jTXQ9g@?IZ0XsxF?D4~gvSeJ&%i51{FMUD)~q6qkGq7l+qzB1*nB!f3&2w{IP+ z2W(C}JQl#>V;yH%8=C{6j7@^ckY!6h`d1*ONlaV*`_?pN8Gs-V!qGv(A8DsVIOs>AU|4Ik5! zZo=vGU|p%yjZA3|(Ux*>8z)YH_2q-yDxwkCWF)O*8XpW>zt>JL%{H5Vu%U|HE;Wn{ zYRqrT%aBQY`iPdhMG3VnO=+0GT^En$f)%aDfr}Y-Pm#yG+}Vjo6Y)HsDy%j_5|8kg z(4em5T2yQuo(nvez)rC4ht1K-a^AYsa5o`vJytq}_i4O*61U|Zjj<2M*55;-4NcZ7eSvw9 zK#nFI*w%M~fOsW4=_oO$z*z=!tJ{k;l9Sb=Lc63G;m#W-x>k3yAN8j0-uWn#*ae^c z&2U=JO%Rl(UmynpYxNrWEpQKYA5WARwUOkZbtqb5rCE7(*TfydMh#zO>Ej;)5wV4f zS47U~Jg9VK2v5JyFxAMhErfTkgW|4t0M{0RM}i9jLkLw2@e-Z^o0yk1(uPg*Y>07T zXh^ZnyJ+z&RVszoDYCEVZ7lY(Y@zp(`OZY6H-K+BJ^_`!hd)_dgO}go*;^Wv>c-F zSo9L4fT++gv3H$(Wr}&?F`A>Bq|Oy?&Z{MZRDCqJbP7q3KEimTD~utf=D|m})hJ&r zLL}Z~&Y`Je=owc1F=p})7#+qrU=QO{ymu5yeJWDMIAPX4XlX6G)Z!MO`iu&FWLb3e zcr|J|Y0(HLT#Go2uyto9KI~r-g-e36qVlC-^`n)^ZeH5PT3T_m(0Rj#muFE2ec3%} ziCwCQ8|mWYBfvdGFwJ`q`{@wK=jozbj7RP1HIC+p*S&jY_`8h$gGEF~Qlah$+! zOiADCAn9@bq#+f($z+(32_lJ1x$`a%YB+FiNYC7PZ`91lu=&*%naYf)(O`534>v zW;elIF{-RC>?EDZu^{@HRy;MgE>3G)Jg@H2nTHwr!Oz6TG1%1bs5xiOwTfYCVh_9t z!AIfn*|03c^TGL3Kbnstg@V3~EWIr2EwGj|m-AClsk=>A_DPTr*?pmaDFY^M8U`x5 zNS#V4J^R(*fy;xL#c%d0B`FsR)463~131hkBtF4Yr>B@1cH@a=_s!V(`FYjwqqp=| zGzFgLhUOjsUM>w&Ty3t`0%i|I3LM@&BqrG5ZEO2WOw4Oi;_^`=)4n!g-@>pLo~mE} z6#n&<;G;o7K9jnePTgsa>W9Tlr3<<%weqy`N_DE+O@+JyB0-*6k?s;L&hJVoUZxSk z;5^KkcK>tC=(u?cpT!{C+b?Q|KhZzEBT+XUj@u$D62(!(?RpUFX~cvhd5Zli#~7M9 zyBsT|3bO7AcI3G5Kh)T``z|PK`=r3d)=p%SP!ioLOU;w8!U$>Z8+pOA*D`&}?cD5^ zC5ttk1j`ejsrQ*xyY%Q4Mc;TGE;92U;g0>MoArP9@Bi0v*82ZjT$%zXYh&u__;!G@ z)@FUCEWBNuqt)H(wY8EUsc`{M@?Du(Jrp!ai?;dV_?wD$>M@I69B7+c) zUH5GB2315CtE_CfhQ%WE-kQ3uE7;5t$}(uq>O_e=B#RyAxsU$!F| zZV3FOxe7vtR2pJUQxQbg1CObLL#=-OdP9oI2IuRJSz!NNAHggrirqndPo-H_E%SOvjS~a-h=j+Z?(s_N3ul4|kY0ynM z+DEdoimNaU*1>E-D*%qr1Sn*O=Ak6}w4XFg2HSRsE+K$sw%-dvkx=ggp&XIzpwAu2 zx!u-Q&CUc(k#`pkwH>wL2>q_{U1JHRfvD$z55d+n{eN?>PaP3u2>SOC>8(3sK2xwB zMYI09*b1=g;9KCye|(Gju}bnry;G#XwUT zyZ*xt56FM%5Ind;a{tX1N9srFgfIv!`eR*uz3omUwwr{7p1mfaZ&W65d`;l(Tah^g z(WYYrLJ5=kJ&oW#8zAvg!o&dz*v`a;!;JDts2?nVfj4PXk0$`w-ArawNVQV{{){?H z7qtMzVjG07cS*&7q~3RyI&n{82uk-Vsw!)eI;s<9{AtSvKhz$j6I`QvtR3u||Hk5( zx5TFqkHQy+)K&I>Jq!b|Oq>(|;HFt+_e&M2>d6KFiw5FT5qj(96Q3!QUjw33%#sI- z_+mXY7YwA@T5C&C0!N=G8VWAauOD}ydBH>$nPVl|EK>(0vojzBo;t#R5|nbN66TBk zuo_T2)))WUPtN=djerMRHvP?rXubZIs4Nf}B7t1@X&WLVxT+S(cgF~}OrycDu%I{4J%MYSC=n;KxpN~Xp8*$a zM{OobWd2U6$^XU3y>#0{kIGl-K3Tq?TZrfd<}>u`|E3K9wf6T$Bo#$rGl;t$O3iH_ zw9Z{P*D0rd<@x8k%E$K0Wsh2RcqxpIX>@CREmDa6qB*ZAEI7~&!GT~Gl{ExlE#wz# z|3Z?2807&i_(}7KDkme+01+_dux%Sem++1fuu>$bO7It@7*KBDe#t{>_MNtu=iNh= z8r}PQPrBJWc>8^yE(r7i;2>(}!n>XC$VC#U^1qU5@_q@%+R0^3muSm6a)c5F1v9D& zu$I7T1PH8u5yJnP(fA~pBkFtx8tosL-yV%+XVYQlf1-#VPaL0`>h>xxj(Hu!V$_*% zGeDW)WK9&9((~l^U`mP2U`oxYQwpY@N&~1pe-XJe=8J#LbIZ9njqWdv$zkUjzQ#U` z_3TfjqNWXWBXLd85(t@X2Nv(wxB!XkAEW?%>M|h*vHkV{Q{yMqlj1G?y)p4*!%N%V zpmtg*;~L=k1Ye-C6z}s7mH-X$ciJoL@3+m9OJ>jLuy5qo#BqarBb7(nFGfs9^cn%o zH;JUBK?%mPm2C=3%m*PV^(7@odJ`=s&34 z^)BtNv1ZI0VG_t+fP`k}(Mba_!_^U<^7SW}x`I!bMm;UKtATorz=Fl=4(pbXk_31+ z`Kj-w69O9v{Y~Pek{q`Z+-DG;)K#o>=WsrcbHGH}Gr#XeBzvew!P7j}R}4~XFp@;} z(qphEW&`)>BtYqE6Q@!Tf2UA~hT0jL44Y<)VoHidYFHPWFL#4hF&&#qfo5%oa$LH| z_YR`1E~wr@3DX4tf;(CY1x&g8r1_K49j=^q6~OY{W<_F643LQ=83j}=o(Mu;^bddO zpVYq)x!=t^$phkLF}@G^FtH@=w0(}G-dE-8o2i7ZNDm6g2-Uwwd&TF_0dIEypplKc z7t>$Y7{|^}nZ_QtZLd*ySX1z{urQtC?Jbio7!Dl5|D>VL9bz(?`tF0*?@toy7fC8} z&PHgjcH3S1#HGlu2cxYvj8w~|2iw>q6K!&By;&_03I{@ zhkCL?rV}`iLlcU(P5g~@L%Aw$%k!sYo7QE{$=_zVt);;0+9X@`k-gIGfz61zFbxe2 zDruFPP`h;*-V7~{^$frbH1z9jB(7esC=T^Q$GtudG3I#Xin~~+w5L4_zulN<%nySO z4l{MmS7bKR2Z_^FC%hG=9d;r$v|nXAWSrnEHLu;9TO45hX!_KTcJE1<`bdF>t^A1w z)=AFF9sUt?npj!aN@Xq zlT#}-%!2iv*J-^P2f7GB7rt9JeA+w*Ug#TQOX16;B;E9Z4;KOs%`Yh(^I5PU+D=ys zOmT%A3@BBr4F4e%zc2EOYguNvkK?GFl`d1}lez-2#B#$I=CPyk9Rb8;+%y%C&j4+Gw?L4>bTlLipCl2gk(jjBdKIFc!329y%E}S-c2P0wt)3hua^m1$wB6hh84c zlo*f2@b1%RlcZM)%!lWX>$E)QKVZhG(R$)X0eqj2NHY?Dfw*_7RRk*x#JtuyXPzm{ zeU{(bLgXcjisZ%3=!idT1x4?-$L1~TPn2$YTc@BJM@;%45(baYdQ=^TsY3>r3GWdp zt=Q5qciSb=^dv8@!#`;rm(Lmq0@li1Ibo@N0LxKo&6_0Au>^7puA;z}M-=#T!TCE0Kyyt?23*5{rl?Eu z48Zx@QlK3DMyLRGvl%#vAsq$~u=Yv+B!Nmy_!OlKaGW<<4;b*sd6nYgYwYKJ`n$)w zZ2H5ahkQ`4q1Y&l3vx>cF8;S=bC;Ct~{l_g}SwN}P{`Qo8@NmFpe zS<59aRjz-wTP^&moQaCjW5V&TCY=+wW>|3tnXQ8h>;}Jnvc_bt_z%zspFqX{fd;m*4v-w{OHj^S^VFo$QLO?9xU z?^tn)WPp^I=mR8852k`-lk~ftjx%0f$0~<2BR*&--=+_;k-vRkcIk#m7Y5f%MMc~l z;_i6#fCl(d(GJg16<`_6X4`F?5hiA5@A~GQ?j&HE>0zYwUHEvw-U~Hg#|l;;0}R96 zZo#Se&J?Z^%6`o%8yFToMVIc^6ngINSB%dz&ChUU2yom&s<60x2Zm1vKy2I{kS29N zPC)!SyiHKW54Kq#>+Y?DUz6COxZ>1D-R735*oRk3scI((MowM!n=!>0GTYyt(_816 z_;ZS~E}6wVc~!@7{7GBD5inH0Z4036=K#Lo0iY|yHlUIlgi^q~1;7B@<^3=9^G)$B z5OVs#*COysb-t$D6y%$&2?t_OBIko0FOdo-NWUWost*`IMK2Wn-8w5B>`zVhFR!G! z5>*MayRO6}6H-}a)KZZ7PSi)?6Unp+n%s2)uLKlLI+3{M34m@0#)J4J2B0$#ct2)M z%OAX{fxuj)T)csk0=RR#lXQm)SLp0p;3jr0HH=3k{IIu#tX?NmI?bZUcVKdY^tcg9 znENvfZdcFsgLlmT9eN=ck6Jk?IFSf9)W)_$yQE&Cz!jtAw#* z^5QH+3k|`+IqCNHJOLX1sVU=nODheU2@%@bgW)kj%G1SC^Qx)_!DBFQidBt!{__cC z&%Yn48T`+o+WY_Nq1x$}tm9DPnd}BuqHy!l+_d-+_&9t&aY8(#%B#S!Le@Qm2N^6S zU9k;M%{HG~QRdHQNWL{w_T-D%v81x&_tHZMaB@KnxO4{858*FMj`6qKR#`w4!Jfen zIj4*a&2#o|H8v%ooXnR#)!a`;+t@|Tx8D*@6bj7~Su$=thUpmNP^>Uz9fv)J7JDy- z;B+aB%(%E|G>oIlZWcp%_3w+T33{3 zcvj;}-f8uf&oV8D(upP3ZE>P4!Jf#m%?fYkmq?uwP5PLc=5F2Z zZ@J~#lw7h!+TLmVV{JdxdFMCHRKEjNQQk_HWO%eVN6q+!)ri@ZSiHEQ>71B7HeS7ZLe4egLA-H)uiKDL*W^erOQ2pgvT=KBgu%hQKB_xYAc#7?P39h)q= zaNFc-HG8}~O_1U91`m0YwKjYnp_!bl1SRnk<)#p{@LtMkqCh4{*i%cuR@-6|L$Vh{ zJfx1v@mY?}p=@sT*t-zEb(E*^9m^Nt7l6$=hiCIX-U5jbdy(W!3Nw5FiPJ}gLD1@p z+j(i;AC*q>NW8B;Z)w5JTo7sNBr9Rn$TWQ$_bJ(D;K5k^S!Jj$fGhI{`xrfuT=f#{ z4j;SVvRYUOM0s)yqLYLrWMdRwgdno!N%fml;cvtS?-lFz98?G^=9F4GojK%Tao)# zdAKR5(Lq1r)eXM#AsC^Mj7Hc)`6wfhA~b})SYZSi1S=vWVRaeRr+BwDZz2st)G#vM z!>GYp-zm-O5&C!!~#blB9JW&qrD(8dgJV8sIw_PWoYA55AcVGld%Y^N)i zAXYe#5GCp3?si1CSF$8VxTGdT+pE&W?~~Aeo=YF4trqiZQH}FwinAV(CCN34w{RD9 z5BMlxztuyc!Aacq6yvFi3jDqgc`bgdAtz!!SvcNLy`;T&F2Ue#S-Q&M8kp!^oe5PK zQB-$HI{c8o5>dUjnG`B73_>8NPtK<`SSu)dDc$3&WyB)9fB|ux@1a^G-d(5nUGbSU zEx{<}3$t5Z72#9kO~-OYu?crYr)u|K)(hH$R#cxBe*~jL*uyyenTeWHUDMU>%^Sn_ zQ-WslBijrK)D)c||OXL&b1o|ANHL}wpunMjdH zan>|jnNJ-TEpV_$mtMWcte!a0qZCi1#V!x|S$6r`$}DkA9n(^&L3a=9vNYd1kl==T zKNw}HDz;CB=0K!|{VCPj0t13ikJ3SBuvgz#fDVfoC#m8bQdXS3Z>XL_70M2EAAc_x z%PN2QL!yz;70zjHeo<9lw5Lz~Abb|2S65~)FZk(NnP|)1U+rx(EJlyu*P%Bs&eaA4 zSK>r~*HkNOl>EKo&O1V-xQ?KARdRVF!z0QEkL-ie< zwLDp)QNx>@!xwyO=M3MzuA)2i`agpN{s$uO|K-opy(NM@M<5GBevH-yc*X;91MmEu zfL+-=L8%=U26)CUEjtj!bUz3F51e=9?K|~%1ZcR_Gofby96IN~Go77`qtxABf&3q5 z(*VS@e4r`-n0|Rnm0jOf8Kf|oed;~|e%-k7a+{jOlt%1P-T>j~GzF!#{a&I%qI+zM zc5F7GolXu;7inn{yE`w>n_n{zV^i2Yvgmdo{iKQ0LOyJJM5SMrPomPV!B#20FBu#r zNR;~ko|+mj@t(fCmmMy7V^5bVI}I8gkESWl+F>#_3IFO*`9`*VD)OQCwAtWZz~kGS z3XU31gQ04a^;5#jX2fFi*=8V%BCmKCfj#Mg}&Zdky zJ3~h=?lAZqpn=bVoU$EEaB99eyr>f#}aoC(POc!Wv->F4+H*^83rXOq+CL3cp1o>_Ea=ja*G1ut=6e zwvY|3dt4ZT2XwoO<6dhqV-uy#h9{NpRnxniJW7a2Vn!y>-}EVsB<-C>23rdu>kw>` z7Sx&yoO!&uw{idqr6*4tPb;^Ny`dK?Z(h!EH)Ey?`=we2)+NCG_dO(Qa^Sh2G_D=t zHG2jq%nPL$cEN5*$x^%}T-foQZHm>wx+OtZ@x`a-139B)V6wguL4}p?mAHr|I0nKY zauVhiYY4Oix|ENF9roAmuems1(T580hh{jpz8W5!OQD~0@b$g)DR4^DL52-JuXy$l zjiOyHJDLu!6i)s`1ahRuk<&@sz!a1rr@>i#cvcPjYFH_qz*QCK5x{sw8$40POU;k8 zIw*ENV#38I(1+*VLr=z(kxeF%gRPVUTKH`O07wK4H4rtiNUk}hOI^r@E+2QIh6Vjl)=N|xy+RX>>}DJ&+`yMn9!4KZNK!kuLfD2mciNB$GR!&=i0BBNtJd}q+gl#-dR z$J3K(n7%%O*9Wbfm96l~8_>V^CNTzFDP4EUjMc6_wwRby@%@#irt}shE-BIbq1R{y z{MC^zHp<=9taN^gQJ??C{LC z&=jGOck?jaj)UzTh-;8D>6KW=S&ojk>qio*Q%y>f)13X|?kxr!n1l=|5aIz8vX7z* zZlO-Tq$qQY%d}w0by(v?QzPF#zGLq)A@?jp8X=D-xF`ok&4x+lxS5TR%wCT1A@|o3 z+{PE^5<0B1g5kwOa}X}LjK4Y#6$r{?GFmB0Z)qb=kB)?{$bf88lBMS8p+@StepDy0-1>yErzo0(3e87TP-R!(yMt0 z*lTmkXuq7oi7fA%L{HoiQ#>MswE@9BFFnqNyYErOVAgvjKHaC*zO*n<%BkQRO~gBw zLdBfqDSe)bWRmUnSs#fufFgS=$EW?O?6!9(Dy510-q?MzRHDY?g(nE{UR$IXu^8{t zFu_H-Ce?P&28~8Xn9o(XzCGiRJ@iV+su=C7U~Bm`F7biTSn|*xn_ezwW1^nJq|Fmb zlv01v1g+xU-c>s2a}i&OS3|6k)k)&0AjF!gA{T&2hJ$Q~8M1$img(oJO7U_8I96X9 z`1J*_1^oF1aViN3p81Oeo-tSt^9}gqt&|Gkui*euWe%JJWiK(~Cr#4YG7$zl2*ShR z#ESqyfCPfL?KQE7d1ClxXNnmSyEi&0bV#KS1GPXI0e=+RXitr$>_I8*hD*AHY0VY(avSH7M1I`2NgiM^3sxPJp?8r){PrCiUA5 z1$>f=euKdJkw7NTYtbDkK&eugz*SSI{Bq*l!35@XO)sbb4$2NN+l;x(Oo36oLZN2W1)8i7-HNr~@H5D#@e`_Kmc<;|cs$Aot(xDgX`I<>fE_{-SN> zCWeG3C5=A$W6OlXl?|etTLMZfzeNRJ@qf?|Kzc4&@5aS`O%wwA&>v{sYpKa)pguqr z)R%mhbn!RIWwvUY>eMD?EO;!|%us-)o=37{9NN6ekVY8e%kF76rW(FJ)Y6RZT`4)K zt9KChAEzfDySf!ptIgOntlA7T+2NSIF1xzZkx^^Mf%5@L7U*E92|62?uBQ44U+{(OH;Y+gB6ZCA5t)lC@HJN#TMrtbErvwVZMTxbdVgb~$ADTNe z)O*2nal4x$`EOn<)l1LbandJ#|3$OhM0K@uZpwp}UOn3NGN~T$PG`S-SZY_tz=`$s z?e0#x9IE#`M0MA}+WqHUC*(sKSX1=QzefkDfdODC*w>nazY_O=Zvl>76?Po=%sn7B z(FWYaH0|sgdnl5N+dT*#;Q!vFUZZ+9$nq;lKpps>zU%IY&1tBu{rLfF0%3%gG2o^a z$qB>~;8GVj8i8B=F8L&IU%QV5?d{r$3wF~v(pa{kYYS>R#xa?_uz41CRp z7n^_&6xN%B0X{2&Fx^?}1#VJd%r5<>K`^@4#F?KoLZ~JPfwvdB_U78k@Va;uY{i@e z5>;+hgG7~UxBq_iN}pH<;!bwi<~ac_dSQ(+IKHU$FWP9m+2zj&YjCO-x{YYcL6DU}Ie_1O=+oLTQHl&yl4->*A9G0& zi{iyLfq1-jLCwUQx&8|O=jwUNv!=do$5%Pk?SAa%b6~_`8r=tB1nLO|++U0w19e7* z7m?WUCbeV}YjBN7xD(|y1~u;XSM^95kXY*JNag4~a^kF@Re|)|JLM}sX;>U{W;$8F zzk)iuKY^f8Bu-tz72Lq$)J7?smZ%wk+s0DD-p-#Vr+hPbqS1FaojfU&0#R}r&6OBE zB&HH;1dmFZDkUB9B=7?kLP;LvnsYU0oq15v=zNo=2Prc3wlBwpM&T#=cnBX6GKQo5 z;LS85*D2}k+a-5jr;}~; zxrHJE>@h}UQV;sL+}N>xl+au#UYQ7Qz47fxMp);`%PEIHlonPgek7WXBA^^SEPL| zJfrB%jsznCmAy(j7K2_pDP00cD7*{&OkKst)GjFvFY86>%ek4E>#-%+Z-%Qatr@^L zuLL0O)L7+z=@Pff5jfpZK-;J|FCSN^IB?;U-V^aZ7Hbc8V#By|ds!D(2`eD|AkfKQ z0DLZi+QpxVWW47MTze(1!=kIWa+$9ArSEy#r{S|3knm5tfn z?Lb#N(wNTjZ^jQyV;Vb#U8ZV2;9I9liiJa~%urPx&O8wx8jrMhHau6mb~&a=x|v7( zbH*E8IjOG+647^|Do{rh@r-U$$FMv0#ZQ`p{`ar|&sPa~Pf>>16FYIxDMcISXyFl5 zQ5+^@B)oiD_Eud!irpugU`l?gC<1&zYa(*GAID!lxwNmNJ|+LfmfhI$@Dh5;m@!pO zG@<8<&xng)>iK%bN1CLu*VUvXMIYJTH*-yy!Y)mg{as^Fug0;5i^KNl`IRyAIiv<< z0K&5d8)hXu9suWN*4-AzPJSO5al+|FOS#@znl5=-b6_*shNWJ3?}xaE9?B&jKZ13a zqQqn>a%iE!Jh41?+$m6(tuf$0n5g)BWaZO8GCqyorl&hjYZ&6%Fwl12pz&KzgYIGD zDuFZo-X2cl;;G3iLqjl!`)k8>XY)&j`;gX@#tAk!mp?o4RRBI?N~jxTR|MZrZAGz~ zqAz?F_ezXtbdIo9)97ME2Yt1p$(=q`qtolfxCFa_H0l#_d6t^P)yf7f>l;gh1_NcuhS!+V>XSfL-4#)0}ad1 z1}dyG@K>y=2Hte8Rcas6acN;f+V$Kqu*=Upj(h$w^QrQq3jw~XpI2gNRoM;xzC!)a z-~aFDGXKHZMAv^4#~SsPWP6c#kzj~JJbl;RqUew_;S;_MS?TBHbd}LHm_Hfg{;7ks zeo3OEHDPVJsTkOP^b{7C^PbElk8_;d)OD4Zz4a>Zt*@YLpeiB{Ei^abZ_Cz|Y*FPu zX>7!Y96)`}w25fNBYrtnpiF}r4giC^RCb^F10^QvnCf30;0vm~)XR^?y-4pr`({jCH$c}L zEU;dPI%q!Bb=&#uEKdggx#MFY27nzP{D>iEccx6<)IIE%kCWhv^)bXge(?g z5m7u24a+5rKD6FEu`A>FD$wrLj#qoYa#_9-mX!^44-ce{T`a z<5M)L-poovbc1mFEYwxZKFb(=eiDFD{BT`*QSu-t#n4cYP&Zri3O7JHvO3KQ{D9ke zU>DN;(3egSbrZcXpd77P7VDR1mOq{5KJ{FBHe@4J*)&<_BIZ3g1$alxEdItgh9%ZX z;PHgjNDzy@60aDi8YWqN;H(fW{_04vFjE(8D6Bv2Wy^L>e6(ow)F4{V@m_!q0QjPS&Pi@?Tk{U!TtL!(-ZEsIyR5Txk^sx zq({hc8Q@0rde)f*ZXh-LUdHzS=vNDNwAYVSKgsqkDuUKnfB*4E%15Qvl9sq|BiQEP zDsSvEvp;|`(utXWC>6glLJS`GT$Mt3@LUcZDR4!o2z&J$$FpOjDVz1ieZ`mji~xRQ zWtiBqyPfa1bYpSB!cUE9V^LZcB?RMI6bIIv@TjQ;e-O?IjPmCurYnjdrs;cXc%0Jh zq7qn##r5TmS4CzADjqUFG!nJQ{BkDg?JCa4u{WY%u^@5mhkXo@YkD~lbCkl~xVO0x za$rG;H)>%IXWu!ua}CM#k-_)1NB8)&xsqszLQ@mNtW!-PILyby4P9~$!pYUk%f&@# z@Iz@?+Ht=e{RPcf$NIf^lv6E9b!0PnwIl_=!c>H0u*Yv0X?Vlz(X6 zo1Z7CQ99+|f~%cqJlBUd`3y-Gip{>;=L|(^B+@VEA&QZUo*<73#$OeH?RcWZKCrI4 zm#9M=iBxqJt_)^3ja6IyVf(CguQ!`!6NC8{lJK7R0UzA}!x=hKj{1x=@MO(C&hS_6 zndw2dR)$#*51G$GL|+9B=F;(!ved^E@476)*eQbu^d(?thmT;jlfqE9a4#N`OTx&Z zvG3oz_`XyYkfht+jgIQxj9?6&liVZaPHOm>t!hjV}h*A$TqPDD>B2wT$5=b4sjuH%z88|M5KC*y9&A7!6>)$HPzeNI@gVPm)ur49-WZ5i7B6SLzGhp(m{*MMd9X zmUB!%%-dNx%4N+){K=E1iK1R4PIJM+@fIExLK4mNsrQ`z5@J!_%M+l&AXk5MaalmM zu3g6VxUr9A-iQGqCV;YDxcM?tBoEncoim9!`rTH?)kU+ah^I>PQV5bhhMaqbg-t`| z^y=ZFmBQQneSJRDlK>MpSl+ed1775#{6I*)ILnCdx&q@fjTu?t{i|x>%{1u;rZC`C z?`e%Nj-jE0c+RWi>7syEqzG0$I2*SS^wQ4kfu&>Tx$B1+PZniHd$fGoe);uq%<9<0 zk_*medorXEgnN9Jn-Pagrl}D)svN^2#Vhukp@|pe8jB zmm$P$)*%SEERxiG42tE59+C8u%SsU;o0_(Gv83bcBtMCdmf=p z;YEhRic0G{p2#yaA|tHNb_)%-iWVaniRyJc58*2#dhwcvs>+=5Z+f*&f>V96e~muE8`8Wc;-0~R?x) zeB!(Y5>E<0IxyCP>O>C7OktYD!=N}L_kB)CE`Q}*7ya+n$NTbKZF+wQCFh%bE@$R* z5rLfZf5dV0`z4Wi)L=c~HE{ypLpi89ts6MOF14KxtE)M|f4s-8^M|1LE#~~PcvU{m zZyW!My)S{MdTakxiAs`?*;Yj6GK=hnBT15E9(E;}LdcYD|3Weo!im@wGSBn4Gbdyw zv%M)9HhWXr*mieq)j6H>zW0Cs@BRGW`?>dj`<#zX!*8witY577Ys+D}9MZ^lEnwp~KGmf2Sm=WdC4`IOFiWjc2ETKpySy=LN%#Mt9s#^Dbxu?n&2?=)Gu=2X2n zS_q)$i>Bi65gSq+Sewsdh{k*3g~qnViWu;wglLv9ftBg+-HNJXir-Gb9mr<#>6 zDp`2W;YYGIJ_!$rNodzem|!Ow8F!r0W}B}(_}ntJ_0B+$=gI7Xk&=3cv0X8b4@J6_ z>MB2E;^F!{;m5a&q>GCPfbEy-gc*B;Pw90Rf1K&Q+5POmklLN*Qym!vF8Acvc%n#I#ofZ1b|=r) zAX>|p;;%Wx_ABfN2DTfL=)(fnsZJ&`J*ff5A4T$O;-e`*>sIbz%M~(J_?^^j_=E%0 ztf$#ieGYL+b|f^hCu9Rpv3SfDv12n5x(QIT*#TJeAOOGrjMGH#CDFgSF`(Rfo1dM% z%z!{I236mnRq=9?h6@p~iXi!=x4Nf|tJynYF|18{PdqJX zXIjE1jeK#=WRBz5W}tL!L~kATt`j$dS0e~ud?!g z>EA=1xn7%t#cq237v!}hqmNM^0b9xtmZ`K)bUc`r;&?)jP}Ho^zaO}58Y zAVFnmdb{}A2%1|_>uuTcg_9Z~Js*NN|csQqN zEf~Xpp!9WncJLWT#~61DVV@4@+{Eq#9MdbN2+S_kUC3L2>j@KV4F{tc;~uC;q@@_k z>gy_suq}kiRm(ins`q>#b@)Yed7+<~E_HU@U()U;`+ zWJn*{sh}?A8F>8ut9yFl;Rg+3%Czmp6F!nlVTEwC6gQHOR7U8&J%WS#mw40I3djds zDM;$=KZJ*&q3xBENl97;Y1_<@=}+N4eJcFQ4kx)af+)kL{3ey(G5Uo>j^ZrLRy*hnrN zeyCM+-iW~bR0@97ZHHg*Jn96c2LRaTV8|@&lP!(*GR?!ww(+%Dc}8>Vq3*pwxoi%% z3~!V_R-M@{cZe-wjOUKnQA?65=LM~jw)W~85X*DsvieloeF`HIK}wHqBec|4wge6g zsyg*7I7l{naIUo<-SAMFVXL1rc1TXPWtlzEc)-}qL|I){MkM_F*dCY;07h7nm--8Tb}b_A0~7%RpS3akt(&A{q~o8&MwBW{*d)C8X~ke60_ zpAv;k34E-~w{7^s;wN-~F<&wfPTBPZhhZR}EVHXIs5d_uV%(3n_la_`kcg^}W8`{Y zO853WkGOb?zaZ)^NnjFGW(}m!64?PB(MJXLVS4{VEOTWIH`E-$o;oj7b-vNKI{M1_ zoM_sv`uz`VR$R_~8Q63yb6ly=GCE@M5k2e(DwEUKBZdYi(ZE@^doz753Es1`B&U7i zGI1@or#^B`l$Dj^(eweACgcQ8+Xum2&5aEtJAx!Ru)Fj_M7BvS$!`2EVOa2LyAAW@ z=}$B9n}Ni^hP*&H8-XWyd>n{|m9k);T44ZxZIA@-z*3NRA6u-x)M699%!ufa2+wqwP08zYss% zXQ7r*jhp#F{5ljqmYA3l#e zcauMZycbOB^pb`1vQI7JethbR{w<}Lxk$WtQumuUZ&-e{Oa7st%h^rHuM*oR+7!mI^2X= z4=-5mF%)^tvk%UeciZvqNNX|voN!rrnOm@7%9Zf&2M_i2r==r(nfM3ku0L31v%It} zi3wr}ON{7+c2Qmf@IYZu!N#1ERJP$r$};X*Bs{7#b8E`FM|t98q}Hl{l>`N$3o=h>7Z%eGy{VJMCXuXf`6kSQ750 zQLv3a)WQzl2Pa$|W6~jBLKEz!^89m#9qH$iw)GT`nEZa)&O_4P_*QIRKGux(zWwb3 zXPK~yB!`AoEz(yS7kZ!144wN-jfTi-wPx_sNzPfTPmFcg*K3;9E?;t&rZMb81YT?_GG4_Pc;aSaETD@c>0ATx?VQOn2O^5xjzi zN7TA^if5=^Vz=8J4t}L^u_??D=FDcITm-k-7^=5&{CNt=UArJ@mcQr5ij>siWz<}c z@J)~BMmVbZ0vW@ zXYUOgm<8LdI*-St`|JoVt2vubB~Ub|A!AUL^EWNJpv@c>qt-pLh0rbY%GTXsS7px6 zvMkj5YCfm23Z9T|OFn((PB1dJGt;p)qK1Nfd$35ontX$_dqWg?W-}rWAo#+E!beOA zy&f(m0cw54Ikp~)S0JU!Dft(k@lLg0X-i6|)uWL?nH$W)$gE6Ll!Q!Dl+=*>q&{W((s}z_db_2#wXY&2DADgvn=Z6acpkMnfH)2H^`6xzVou%trxbPo-QoG;J z{0OWaa0VgGTQRpHTY=CIHG$(4(HyP%2@`hMgzB&LH7wRqqYa@zoxuA^by_F<`P=)v zq@Es>Y>7BE^ttaC?^f*Xhv+TWX==y!*kSNbAS!wZ1U%mZfzH$*zuWLD@ziYMbg5mJr(VHEW)tcKG8LQqL8N>;Xw?umph4Txx!KrW{01 zmqZIvowjH5zxA^fh5dv|V$arZxemGf6wPci5hkBV>iR~DF*zo0AQSx3PmR%t0|j`N zD5Li{_B~f)HJBHE_P>fl`}@D&MetyzOGpirhI;{&$E{m1m~9kIL@0bgAsw2%81udu zgj};yf40pbIN;N_i$TD#PyncJowen=4TUYs8$<6{fakVXFZHK@W3PY^__QWLebWbo zBlYHNdT!pM|NGx;#k>7U5+WO9o@ze?1y!rPa1r4ETcR1ZdzKKH%+OQd;F&INWxb25!@OZqEd}g zKIp=Oi9~c`S!G|Bt+@orkDrex{Oz&rhBlW^zJK88e5^zKgZf>IGFqC0o?Woc_iP)H zAXwA}1jMDS?%k|VUoe zpF3tsZNuLcDouRODdzNhKjJ7a8h#lbJ16qCX|&2haOOS@8NeNAPeKQbNea!C@Q|hA zEG=h7(e?3VErrYacAAa8YLPjMY@9p|N6n%D2U8~fIxh2e2G-Ib%?ThBn~~B*In;f# zl;9YWCv|sI;EME_Ru`AF7w&BumlD59gN z4v4{(;iP+$xkO1o!=U`V$evFhioNdi4j-Nn&yr}y&ag-N49oj3twG@WJ43SBI7zl9 zc7kf-mXt14x}tuh1R<+_I3iTMn)$lyYW&UN#LshQ)7}+{JsH$4vk4SEGEu_fqPRCt z)EJ;Fnr{-@KssaD#t9n~-2h6&sKJK55y3c2D*ElXHczveG;undljo3-f&|NZ?!Cuf zf52R&DB8e_0`M7N^tVKHeBPv#zcG8gR3MCjZ1K`MKDErB>w^UM)gIU11($h-%`}z5 z=XT@j?%v^KIJnoy4fTW!qJVr&fdQ^cMQMYVe4&5J9u!XYr_g*eOAQJp?=&()kY+-=92>I=-X zrQNoO!n}nnz=Ovmsg0}ih@HseL>Nvx2zecM^7t*H=$Pu$0XJFCTW$03$en<>=$VhD<{8-q0=E0Nw$ex+gbC~J(@dK@8sLIz>3 zVV}AAptYt^gy-D($20VbdRNlLerIY}7hC_d2|ylhO^^)Yr6RarO%$m6Ax$=vhTfUy zJ)j&yD)$Rl4PeU*wTI*qaxRRoetBzHYn1kIu1o#CyOL=Y1fM8m99%#+V)2%cE&QRX zG7(QKk64f)sp~$h=k_S&ojuWJb=PdD;>w;$H`&Lz^mQ?x)=@2p;sfNpRhuuCK56Fz z54Iq>qcT>}3YbUEM_K0#J;-BGPB&mEsq|I5*NOLX-C#5IK%7SmxnrRSm7VD!X&d&P zA+G18CX*NgZr@4KcWb)IxN^Yg;rQ|K8YV2PaVZeS4)_5dKHCCkk+b=ns6TVQOYdc3 z?VRLGd3CP6;!f!s>GzK=h%G3d6|cK7rRH^;fj6UGj4knIa}Gl zrTySn8cQeyqN_e`Kb5y%{d$HqyKaJ7zpUN7{e^CaGmFPGB#O$zPn{5(a@#jLIW>a0 zF?2JZWJ#R3T4(`ks_(1_Ojpm=uDgedw9{#aMMR0nPNN0r}p0W;G^i&D;f_WZQqiY{f*K(SmTO9hfTv= zE>PYY*ld(VbQ*hjl$$N(VWDMJN0PzDepDC4Ud?MWHL>rVk>PB7N)BCuPzGdo&2{%> zY*e?T;JL>$VXy23_jB|6tUzH%HXJ5ERUAW52)})#SI%4VmhaqvQ$V=d!ad(z)5ipl z@%x^ps|_YuVjaVvQgpbA9AWTkU*BxffnNPSgcgtf>OILY+otzPx56w;`30W{s@@DM z(PRnrGH9IF1VYV@|4NfSjFhc7I4qx|;>37i+FsyN5B`csUdotn(+i)}%kL~=bp3i` z)An6IuE^yoP13shcxu;*+(t8QZ8%sn=A3C3&bG(E{bJlXNs$Jxkv`HOg>@!;iUiI` zhPR93%Fw>nbjY$!wntRM#hJw`o0+9nEey5cQ=&~f6TCdUDMHGyv)C|TI@n2giv@|v zUnbK6R3^~I(GT%mO$Obsumsdqr&+=p_4yPQDhUBv9aJQ3^4y3Trd&s5a<_INR zahgkRj}QB7Bi#3mnBh4&exgV)ZKktJ|wW)FeJQoiE^|Ak7ojMPzeR~y$Itg)Og zuD$-)@aXD&HJb~_JhR}CqGQ&1g(cd1Jm^=SIg&JLIa)2T7`{;lZ}o;aCf-DUa(SC} zN~eIhPOC_(9Vh25myla`>IK&voB8$-BO351XphH=Mpd_~rf#X7=Es|5Niwh3k{^lf zOKf7Zk;^-iW6`6kMCqR3f^4)vDG*rmnCs_}F~0hf@;&Oo9LOr`p~S0!2jp&zPRCs{ zD<5sy!9WaI4JY*y*V`I~p(ebW)-Bi`L&+zpVoiI^)e3iRgPa3z-e7arIAnF3vE8mw z#O_4Q%O$tZ6Yb?i14v6^CoZm$DS(fSq>jVu;!%8r3uBTYHq)nJL;mwY!kg39g{?Jx zu<@!X4%2-#RTKb~rE7F4Y%BKRID27fs6F!s#X(ReOn;@i{>}Lt zr}@bfAO#>e4g*5hAC4@F&P=F+v_0QM$_PqQN`hS|hc-oTArzjWZ>{*ey0WpQ^2 zK@A%HST)n#fztef0!Ia5hc}a;+uFm*s|J+rh)G0HN_Wm@d(7=pP%Sv;!_i&()(#di zJ7}CLuF5OE75i{%>m>pnEGEqZ&blt{=C^s0W;B4Ah;1IFOuUsb1+iQxnltVg{W9n* zDt>*YJTf)Xm;dTzqoCnuM?ccAEmorO{u>%|7}jbyF>|U(rU@6p@a{Ay+P+FO8L2+# zhHbp__@QjLT4OkOyT0V^eTGg5*((E1IdYjd<-JRYA(TCbHcXN3gqlwDMqQ5afT{8 zMub|`!}T}V?FGReJR02iJ8#}u((m1q^nkg^D>i!LI;DFZhTrA_kmr+xJ;?4Jh_`(m zHCc`a&Q41wxCM^jmtS43)n}(kr`@h<^*!qMbEw^0IDp?EZv<&1etAeaiabMr8WmCE zB!po_KJiG+hr(YQ)2q19nXW z>3e|$(20x-Z5D#+Dvlgv%Wevs6y2n2M#^e<4=<8TVt_=ugxs>_YYm2C&S{7qu2XrW zEw{oxrN+Rnr*>Ln$TL8uB;2nlNn{Y|g3Hlvt`#ZY&`--Y>+trJ@7I?03a~liozBMY zQlNO5^)AhxMO7I24k?*XR*yPLfcwa4=g*>KiZyv}F&*BG>UHG2kx^?nHdSZQemktw zcsW??XkQevbxtg)Ud#h>X| zGS|}78c3*__*BY(K8@-GSR(M2&LJ1G3L^b0%mMA^ZTB+cbTV6HS^VEl$nTE9-KbDD z%zfWFeD0Dr)6^II(uN+T*PJV&4#BQ+^~*iME8@x8C1qtrWme`_U&j(#KG>_IKg!pA z4FZ~!Q^|H}A(_t?`p{B#vtO8=47ZGRL3NrSlh_MEYv{3Ouz9(~?qwZsHv9I0UOdJs zFvHMzp<$-jQ>R=eaq7KyTazc-Al`A~^!Nm6>1qXW-z-JwTs|qLw$)m7I9OxHcAm4L zN!OP`7_>~284+greHp1k{(Xm*PO3kwG$h`u3;ycV>x{a)O_#~ zq0NWMb*DyHq$`H?$sZfyF~~aKjJv*FU zYDm~y#dmgyBNlo)SlSM{%gg7FM3>PH`jO3nYg}_`Fi@OqKy)$iw$jPZ_q+HIcODnk zR8opeu{iK@l{?&QdEt^#P@c%QoP;3U+#AsY(RL+utqWcXb+BQkDTRe8T*H*3FX~W5 zmmIscsCs~1i>T{}taL!I9{nR;jvZhjYLcfgWLEms;?0z5QI*|9lcp%sj|nm3%>(1( zZ#c~^OrA6E*bIe9>~HE1Ze>o}Y+g$;Stt%ei1 z4iblKc|7c&2k$a(yzpjmM+;Z+^WeQ}P0P|XyXnWN$HmSQo26ufJ1YoMXRF5Zq}|U; z^Yb5aHua${cFNk&7zy5-RNmeiouBJT;sQ!*j#wEwG2W2)E<>Kv>Q@>vy38c z4$5L|BVmXmO~&ERVLs-%J3DG}Qk#|{`6J&y;MA9k%;gNV7jMUNIL}8tGiZelR9i|l zItGsOll)Z<4}BiHu%u&sdQ?C`S0#1ZtG8qC-qP6xrM}1&O_^#_@OE6^-HJ9R@7S!u z*rJD$Pes?mcaaSwlEMU@>_fZkWsiNcpdqBVXz@rby3Nzeo$rz@(|*(_*qYkG6q#9g zF+GT2mskqE%go>FAY4`w#eG^-8Xj#;ges!*6kJHM^=KBBr5F}G?ar{^LA~SmhEEn<14kDOg}}0 zzz?GMkuD_vbn;bFS~_HFH(U^wn_Hd!Y-O*GpvXq~0mVV)7kO`z6c2NSP8IxW}U zYJWRSFzVPL6DKXBO2^z=6+vT~#l=`Ei2dkhg#%8i;8Nz>JSG5MQOkY)RwZzd0o44;db~*~L zQgdncoKo<3$N1!3{b8 zr?=Z5HI+v>w|5GLYPJc;hHDQfB;-Zi9A<4jUVPqkb@kMLoY^d*XnwP zCyd^-536XYW4+u3tEdH5FW)5O&Tb(a$xqP!WAGx0r8>u`aRA%axc*+~YUPKIP-8VG z-7GZd+DK1*3Ncb`zW@g%8Ge1~0lWyphu9H!G*Awa_$o_YJ`wgi)SFwpd819girsPM z$md3(x3ebG(%H@rFPr&ArDH-^uP*b$ufgrLN5obEOg%V29q-3iSF(p7r3hu%vimB^ zlVNW4M;8`9L&9oF`1j%U=PJWR8X9Dsj~JZd|oy*%n_|A3V0@ZzAZ$5nfeGV#bamv)&YMh;E{+0rH>c3rbYZ;K2k8mheWR{aaYxGh-reL$Vxj*+%beM3J#i01|` zkY-ip%@9exe{gIGvujVQ$pT7@s#*LR$?yl!uwCL1YHeCu3H;%LPq z9%PPxKPd#9%Q_W=rKZjyuc^+3ii4@C9?_Gq20X0(USPjKu(J1=4{z*VR{PV+ys^x$ z^qs74YINS;u`II3j#wXT`V3X=VYj-n84v8p+9XjmG`?+vi=?0%@rudmWdDp`Nn=^5 z_49tbWl4YWh^Itqd038br$|v`%!ROEBJzoYCT=MhnhZm+g1EMF%q`#rRwp`!AEew==`key0G-;WOLzzA=;NmyL2j6bShZz$(N|EP3XyhH4Kt0 zrG_e7vz;tkt`lRq#pRbjmMloY;@*hZpXPCfXy7GHg!7#3oLLUH{Zi7(Fm2zkK>VV!XxW zNC!T#BKqzjtaMax=L)iajd??fG7c+MUkFH^Gly;dUMpayx~pJ7NHgT)-PQ*-Dg_z8 zx$iVNa&^+np!MB3or=}tS?5B|J$J}?c z)Syhd5oa4l)pRAEX6mGI%Ey0+S%`PCu`SbjX@9QBuTuRTC~8-Gg3M16CTcgu8apIp z&7&Es5vish74DdE@b~*CHn*_v+F!l>1LtMwy)gnx{7=Iixxhnb=VadfdlRqVLxqE8 zl?e6;W3%~tWq|^vWse%JU5p*bKW#6Vyj@>%v9s?^Ie$c8dTzWaBG{ikz&F@@`O~Ht7ynpfP z2iYjEkjO)&0TiP~W_GyD_EB_HE=t52MprA|GKG0JZ#4Mncl#W2xs+UB&XrAbJrU`J z2W|W6_idXG{gjtvog=ePx)FCs!?{`d<%{H_X`DxRvwM5Z%%ZBQ#^z>%9!D+1&wTF@84l~MlayE zMsI-sY^LASJfm4$8P9Ff;frI9j8&>G9ZkBiBVc$!dXb(!vct1tka^05qt|da++lah zi2YFMXGepquHcwdWf$dl4yo>Z&(lW{4UW7ov;|)0pRH;OJuZ0IL43sE*=XZbhERr% zn#aS_YOI$*0^F~kf5HQL9by_qT@%{aVU1q5Ey)wkGbHu?6_u}x$~*e6z5gBqwIkF1 zyWHZiwd*j7uh=cjkw)l%dG@4NI5j51kA_szVc&IB;y~xxr-qT0AvU-<4*G7YQU8@m0P$inV5D8 zh;R3^nkJ8V5~jV zu~6T}>d>SsIZ4i%@H~M6ss=* z%8OL=7Dh`dH7F`IVhu2IcJhyQz`XwevDHo%C9Ctf67YjSO}t0}fNUC$%*rM=&EQxt7RIuuz%Q^#!H} z)!%_+7m|Q{pUMN#=~#Ab1VtZ=0LIY);~)Tr%a3uWp;S$J-=_om2Gdao(_y4CmpUEl z9x0$=4xPgM=n3qRH7Z5~%=pJTAt+oexCpRLKjyq8y4R^ang8f13*g1r@=5++cm&A~ z77Pb#@?!?nofXjp1H!BTgt>Dsv|Lzg{moJoH!$~OVsU_+{J)a3H8DdZFfRW&G12)C z=;qkJt`mZI_B%N;U}9O+iRDqz_`Xeylgc844%y;AWdb6B{SpiVG74x++Tt>xF`$WQ zeJANp8g0Nvo{9e!zxL;VVCOS#4YVR9E%>6bXJ%s%}-qm6iv+sfnux9!vSgERG zi7cS16jEFRDh{4AVvH8p$A;3-A^T>|f)5T|mF{J)tGzF}j2*aB1e zg{bmhil|atB)Wa!)Q%|a?U*B3|2+{wCqM}jO*jpu4Iq{|PCTsLzFCxKzo5!Jcj7^7 zW~-<3?VQAc0jnZk+O!r~zwK5)#O%zFz)r;D! zG!KRgC&p`}HTT|l`|5lF=er9Z-zrq*zH3l8c^pv%C+Kwg0xa)Z7@3C1m$q>Z)x^h1 zva=N~MKE}5U~Bp&hDxoib~vO8Dj55xesb4AODYL&i2J-_?rb$L056rO%|ax@^$i|M zw<>qsq~m?bBLw#PUKdZVBPGOgB3J5W^(|i0ko>}PO@8_QHKVA^$|>{cLvN*#Mn62&OHmx$4masFg>g8qcTfNV$vPs_n)6yY8@#i=JvqX+6_ z1I2MQ+ZntJ@vDK`Wve=W=d9R9&hAEZb&?PCu8Q?m8*T8BFK-qg#Rz5Ur1w*aER6%I zEQDr1979QI7oPmucyUFy>Y-+WR51=Nsdz(XpJ7x$CIL+_&>oVi1Mw-ST}aN&Q~{D# z3i%LmBFx0NR|PRSwvVDbCOtlXDPF+R`$mY1TbH`Kqlgsq@0o=(S&8i}Cu;7K552$? zK||52r%H&x;*%GEDJrem*gboXz7D}^^6s6jxggP!P)4N8m)C1#t+iZ!c%J4-sPC}Y z#oOGM_w7d+qB^J#ygigo%nrD{R3P6mf@%O!*qFqLgE7pG^MW%tR>ZP|PJ6%EY;SS* zh~|z;tpj2z*ZYlP&RQynN#23){FpcAwfY(O$#0gUm{9Lj=}AU}w9^DT*QW`Q36!IPR-%3;9xunV={BYDay_$DFZ zL9XnEU3$*=bZx39W2iE7%=rUv-}o0!F+7coemB^gbQBoMTv1&~jNNc7Kap)PKmwoC zpLatd*KjduC+(6ya`g4S9`;+#9z27c6U9L!B^P3VKIEgyH9!`|o{^w5rFw+Fm;8K` zX=rNYVz2t%JtObOX9EX!y-^Yn2Jv4b&Kwa9==(!DEe#tNy`WT6gVAY@i={6Sfq6lx zBA4Q|jBSKFj__9S4c4wFUbUd7n=V~Z-TnfjS<9nA2*4UF2wW#l7!l-SaGeJ=r!;ef z`b#Wh@cOX)77>{i*2v;|8MLHyox74n;)^FcF$)#Mgw;5ba3)#4M?&^9QIC>nkLzSS zQMkrUte{jajg>q(Zf0uN5pO%>Xf5z%XCZ7xLagXayP+kuqGnQ zJ~wwFXe~nx6@z*UkZx3YJd!DU*l|)1Rr$N|i)6T+JMM09vzidA$$5ui8an9x6E(3< zY{Cng1g_2|G(FjsSUXs^nsky#7vOUJ<;P0ZRKmlT zPj=OPC&Tzh{z_8!^el?pR&_#C7NQ;I%;z*p>p3(OEN4itcv*v4ZG0+0`#ea-h0!4` zY6vgUlTvK9aqjUBB`<8;MdYG6d|Mse9l1J`{LL7|@}7kH+*guV%K_CkrrDfFb?XP* z-L!8NM`>C2*vx0zowGEKeo$cuu%5A;{~f}m{!h%|UkJ(S`>%NMj;UPNe-`RUYK=k^8AI`6`p$@0k%PgdRz#|Hw_ofxdcM{e0OfU%;_RpjKl z%e)FR9=BB=s zl!H#xm?^nxJ;^XbO<^N0T$_ z*%7H3b{`^0hI~JLuTBC}*ieC2wABbO&>w@4x9SrG^AF|GhJRpKtWMb^@G} zMeoKzPf+mbD-D_zpK2tKo&ThP-%kzXm>xJu;nl(Eb2ye4eeud*`vf7MS_cabt?h$T zgyJX%nL@tO%&dH+IRu_&R3_^Z;T^CRa=?Por`KDVBxzRTwKsty*&l>TtpPauZ%Wo=%|UP%y7L>$)Ys8L6l)568U}0%pMWbL zq|~&-2>E32Ui{G?$uQ~oKWQPA)mHJDX-X3z1=TkZBghnJT9GPEaO@3I8wG+d^8jIj z&7p+Xl1Ts&53U#anO6c?2DrrDj96LwbB+ANrlkIujGUBT0ipv2d_9k9vjpaDgMpWA zT$T{PK3m^RM3cc&|JyJKk|9MF{OiQGiCiWru#vkrCbpJOTN5D$zJEBWPGX6uDbe+Ca=B=;Z{{%=GFsu;s z9z)ohAc7Wxwk9k^7SH1Xkd8|~gi5Okl0|)?oc?SC)2GN9yg?8O$#$SA=G$VCj8O7_ z&O&`XA(&#lxkUDxD^$&WQL6*iI&R8w4Q#w`OAXbx5zGE$0=#e3U`2finuY=HdP^YD zfM}`aiJyu7Tl?>1n}(B&C`wyB`m+P|p-z@y;)Ou#GoUq42S4?XfY2))-=I1X z{6Mn0h=W@kI*OsnyNw6H$;2$PBFJj6xl4acd}DiTEgVcdZ3?r+86Ako3f1=#Cw?>y zhW9;1{8+wKHVLFBV61ivw8hsKK!J%sSR2v`1p@XqYUgJsL;w8zdomY-7pm_gE`ct= z#sK65BS^+cC&8qE`Hwm)W?f1$P!?PBo<0ktsyQ_;9FDd1`0_`$FhYq6;0hphZI2Y- z^Jf@4bteHm1*B?Ki&~FE4hWqD0tNvcx5XVQZ_6Su9}fWmpb~l%T$_l{*0xc0gVHOdJ`^|9?W9y#x{{ zDh345mq2ZPCkAlsHu4m((gb{?H6w02h>iFm^b2#}OenQL3;GuTV9oEuMUYJ3`{94g zNEF_uVzsq4QkmyB)Tv2;R9($rg`?l3g@0RXLMe(L>N@+!Y@ScSxA=TWMX(BOb7imz z{nszL|I!}lMn0J>EhId5g@VCGlpM_q2Gh4kp8k_|U_A0KBhvpt9tN1q_z^UFOt=L1;L69$2R(lxgQU}}u6gFM~yJ(yQE)zfc0XE|OAXfI94)06bgc@Lu zR|Xql0B!ouX3ZY~KQKg=?*uBSlh2a>N@0U0f(fdhq`GZ?^sG*nWD3N5Vg}0TGB~(d zp+!UDcBV$h^<7|FaX_SCI1cuGb@|sH zf2GMISu7eGldS&w5rSlj0KoDX4*lpt(gI7{wFgV zlPw|S{r#iA_wjcY_NyVq{zeX=LRD~U?f4tO+UYwsj5<>H208FMb!HMs;eTj?0!_fY zwwi$D4)hA63I@0e{E$HWRxYb6A%ZN42!ek)02b)mH0nQ)V!$k=$lqsq_HV;h1Td`6sk1+Z6Gu? zsTRowrk0FDY=U4A>gqTEY=N;(N!E=pghT zv{put0t_d`&QG3#7$v0Xq;Hz{X^)mu1GB)lIU+DnE{yS6i)H@3lrDB#g$EJ zlguC%=p$H$Eztu?(3SjCTfmQI<+Z7w_^}vUy91CpL{#{5{*s+Rm`^O<*P#-Q8a%}BpjE&tSjAVxXbD*iaQ2hca5v&&ckJSowUupSCI5wrG5HwId{;yw2PJqq- z$5>!fDz-o>C~&EI9Wp1gOsQ4>NJqVFpde~XH0WRZNB`eivQnu8Cn`FCV`*kfxg&JY zE}!UxFO2L^1h{DbgNy8a!eg*!k4x5odi(h! zu*49szwZG{3@44jh>T9)UO~N;g5z!X8thpGIFi04L%XhllZT-JcqP8~A3-vQu|gk# zYI$@GyqE4mjdCpjzkh3LvH4qU>_YZttxQnZLGbY(LlCN|B^mLXOBmnL9(F|NtJEchG2;kcJgDMQ6ngagt zACGqyjE4o|^#Xt4_wk-pkcNn7=2&PevvxX2M>Yl|DO#RVpR~zibQ&CR`gUvhept8@ z16oQ|nFu8vDb5*vQUb^8*!3IUYeshNkv``kXfc3Mv0Z$gKF3uuGBM|Jvaz#GCDbSa z=W;dcQ!W?wqh%kj?2>R6H29nQqa{Nt>DzXxPK^1 zwdIuFa!h9+!HWHi-EG%bdklI#WCJ44w1C3Z(*HT%e31{_HzTF$V5@WqUuiCteV+OJ z@gM%`(_d&bs6ut9N|6{R5n=JLKoFubvCGtB{#B%g;Jw-iD^CgkzWg@sbAn~%L63s2 zxfw+oK6v!9`H*2gAszsMJHSS?DZ4v1#3-*Z9ID$XjZ8%K#`Ushdud)i9E?Z(rP0TA zt<1MYD)T!-R}w-9Sp|Z_!7`7|?J0YWAY95DVFH=wRq13+0z01Z**w?G{aOjqg{k^` z4IcNb5BJ}WGQyUJFLs&jppD=Rj1WDOIpQPXp{D5}+Q zD)H>AB+fqBFcVz_`-n~c9NxteWmT?ey&&ubGCESs_1Bm~{Tu8}xmK1&vZl%&K(3ghJ8IR5NV}&A|NpD;Cta9q28Rd_%}Vn zqr$PiEVX*hmPhUjPl_JRhxI4~LX$5b!UaZm${vyD!0xIe$H;)oSqe=h?gJ%hH5*tM zC5q=6s%|~FwECrazOyR)$eGnxJa4|$Zw66{g??C#uQU!z51h%c&3qJJ?vw1zGHMh| zSQg2(U7n(seZsBACG$ov}Q5M?Z}jn<)wEp4{LOL{L{ojB_w`cV&e7kZ%sjFIF+Z!m`O*HSQ(jh z3LEEJ43N;6DDot7jTqu5GPFzaQ$G-BEm z1n|FQaF?DF1E%r_GIPRGiE_(QyCWD1XV)AO<#q*A&-_;a-w(W@TK zco)VvVs6qg*}3=h3-gkm!{TwwTH^j#5rNpy01k2HB6Mu+^%pff09G=LtN0M1PXivU zg*sZ^kEdJzOkMWzr7o|$W7bZ6h*wyTV-a4__>Sm9n z?qrSsm|WKGoIavmu%4lSx7h#zS}o?Ho5_@YANh_V0?kEAF@|?H&kuzOU##k9i=D$M zy>L9Chd5rH`mTcZ;YeiJ2lxSVwEF0zLJVKfl717!Vk7udX(Ke9ynq1Wk9@H z=|;G7!Rsio$1$2aijgTSk;^C9mT-zo+*hjYj73K&bHO^OZew>d&)A5PIEm~qb5X5{ z^+A^jiY)Lr7m3YQ!XH9b_U!r*3y1alHoX@`M;)M$BsG2AwJlJ#Zb}#me8|bKmT<+*q8kG^n3GyzXd>U@tf)Ez%TuA z^nZ7M|GV4$-=ja~wci2A_k|216E3U`H3Z+EtI9_bRx7YS=P53`=E{5aYLwCowcgtn z5%0r2`-dL%Q0C;$-Re9$4AuPx-A>2YgQRB(ijarnS>Q=Cs2iq>xsHW)Ssx+yrheqQ zXs#7gr9r;ryxiJ$ecF;XovxPsMa=!9FM_ZAiEs6vD;4?c`~R3v|57QWkfQ9_^^Kaupak0JVl373guGUHSPEYC6T;WRs zJ9S9Wr?_B$ho|!)TIm%Hg2d1Slim^Unh#lCDi@VgqN_y6r}N-{oWD%}_PSyJZoT>c zTmSz;6`y}v9yd>o2!B|8{h2YzqInQLG&p=0r4{}{CrKzkX}=jQomRTW@_RiuonHu#|X6dxW$A5}HNS2kZjlPkc&KAj22 z8h8Xypki$@pAAHgF=tVu@hT&WF6{?a%hjN-G=3dYzz&uU%)Mqf*czo9PVfY_?`1s? zE!J&|6NId4aAv@Vg(*z37|MlY3Y&W%@SFYyY#txtzS6YnVP!AVS3&i;L?+;8v__Lu zdVsG`G=iizeh7FP@xWkAACCZK^9+7b_ltMG1!?a`IoGDW zvE3S4w=Mp;y!agubRUG;1t2tJC)QmtdGNebfB&05Yzn_@`~P*e{hxXHpSSb>)AGFn z^|jkVbbGXet989LV^Zjkr}(H0E#5SB(DW#L{>GOBg@l0a#_Cc z_s{xro{udRElAt1gStUBWFwo~)po8}wl(|e6PKbL?vpc1vvuBiwH@^|>34?bCBjvRvptlpbhVT;QltM*!T-y*{AFCi|Mlx)k*d3l<5tT2lH z_cy6g=gW9&Zz#}n_e;xk3~FFu%%dLKjc%0-3?IZLf^NXw3{BZ$g+Ch!h=(fsTJL!C zF}J9tmQQ;ZX~vk4VqbB$Z6o1SOZh|n2zaXV-5)XM|IU(VZWD|u^w~&VQUu5lc*w_V z-FunHmuizbBAXJ}I2bK{JdXbWt4!!5pV$IsIAPUm^AX&tm`Eg=HO_^lsdl!Ji^XA`198kaz&`)=Ho{hu@7H2>^rbSh*MuKeR(hw>Eb&BX^pckMLB59v6?f~$7CDUACy$IHytKPW zrfxFFlU(*noD@0Ijz8j_X`Du1n%SDQbQfjw5zeFn;Sz=B%?Zr`>9+Fn0tyNTOM5z4 z1t{?+M6S-0f76!?cxG2C+<&->EN7{j?4`OSIX)~OZ!nyiV9PIl=UKGRE80(aqf5ha zt0};XdlRuA)rn!i+=A~nCs{SPscs{@E#pgk8O>Ij#KYx%e0q8G=L4S2 zoqK$1se|L>iMGr^6QkAHQCu94emLJtp}R3Pi5DIfm)Is2$HptTmaOLjv=9|8OhaBE zAB^xmF4PszaJisIPTV_c9XDW@llJ=c@=MoUYdhc~Dh9lWlv-W@7xDyYJD|czJd16? z)1RD)P*El_olAP#saa7uWc9*UxqBgZ;riXkL&3eb4vrt<;FsjEpINc3RSdI&-k9~V!U0qY;X7MhqA7`3;q9tz4r`is*U>w@diby(wh(z z1O)$3|Y%O?~#iSI7Qtl_?`kcB6sEx zB-}W#b7Qo-(=hKZ2gX%m`u(aqr$2@kG?CHCNcPpjxB{7+Zh-fw9=OBl@B;qU^P|gm z*rU8yhsQRRU%vhA6$VX5|M68`4&~N7U>2u2v7+T$>Oov^LvW^J%n0gR%INa?-W? z8Pwi~k+oYgl=o9%0PXQbW8)X$Gn_4bnA3LzFAv2#``5z<40pTRA}revKSfb4P^*aO z7nnwNx}XaY*SoNqU zD>D#Gb|I|4U5%V{wCD3xF4E|;42p4T@3WFVyWy|%Qx#h3Jic>=Tt(>wUZVirbPf^# z;@^@onC%3FjDGz6qv`3Rh>mHP=Sy#etEA_N$db z_2od%wR^%pQpYW*ppxaEAkJN-vRH_atN*W$?oNwC)tx~#t6#p_3iK*ur{AqLKPj&m z%ua?A;inNT-4W^jE2@*bhj|GEi#H$Iqs=4C^YeminW4SdD^fl%70zsQ4> zOh&1`CpnXn7KtHTooTv^X{=ehnY3-i8L8;?3NtDgo*2!Ryr1~&+$;0nJ&o6%+R`r5 zFOz&z3}yYXgM$zrMDIN+vPR$GfO_-Wl3T(Jr3a1+6Ca4SVy{4X9@=6TIwRU99c;+1 zt)Le*pLT_#nxltTZY+lr-c_3oiR!#2aeSmLaWJfam!(UOq%H$cXe&ZXcN!11&AyHl zTUBEL-c35WRN?t>FNl`w$jbHr**GLaHGN+Ta0opCSc$n-FO+tv)q$DsS^Gp(A?%X% z8d@;-2|BLk$hlC`R-@KbERm9AW}BSR*5FWR;m25ZhFgRiTDDXD$sj8dV=zgD4yiCI zb-n}hZO@qWZb=M-#mc{aZ}LiO7!c8475gNIDYbeAxCHPHLXrzfcA&(yA5uP#ktTW8@S#&gJsH=q9K6tG2OJ}RTd{!IM(KI>1GtRatchb~2TGHP8 zx?Qvms}K$76tdOLHDP#AKQK)#J4PM^J*(45W9n1V)PR&MiJ6=oltid;+LMl1nZ@GO zKR4%{n=}zczL`^$iyZl*vU8G*p#UiLXeHE-C&xRHL;$EH6@cc{cOq~CaxlMix65{! zSlFX=;-Ym^>~7FE4?pX3JvA|S{3TZ&=jT*F=H!&&mBG@%PeTMt@1W8s$4UIW>*=?9 zvA^y)EHvglACW%yO~-Xc$504q9XF^(SIO&rQi;g@>zDGYpbe34p2mu?%?s<%b2U%${}_?K<)i$)r3{pBE4K5C%L6PAX&eqeN%7w_&@I;GHAC)UMprF2F4WJDgZas&$yK~PKKq(?f#hO zHk2O;H!J;S=5ZR+=2rXy3PyMHeg%xmubudZ<%Yx{=8vhQW*7Z#?F|gonCy9rbOR)y zVZ{kZH%hdg_n0ZI&sXx27d`Xn+l2>@RAUWHYogerNGnEDCof%tOgA@tK?F%q z(YL2RpJ8E#D^lsE_@XQln7#26USW0i@gaR(ZQEZ|wuRZDO

;>iD2V{uWt{)rH#@6@`bohj_MP$y@+A&T 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�#`z#vPZenO`4` zt)EN?MF57^y`@!*C_ss#F=#1ov|Q2hzR`L@@h{q*-$a;SYkRSuStUAU1h;XY267T8 zAh+>mJlNYuM)vcBC%^BO3GLfxn}>^#u=ag`X#~*mACd3F6OR(hS9#l}V(!8Y14!PCFC&$8n&x z8Ki4`kReL4+SlJPd0$H^-bRmf^)H%$FuQw-0mpK-_lw$LaNam93venaZ`_awz~{?P zVrpoUXU_!j#S(fo3W+!rvNCP3Y5D>viC1oh%|90&4{0n~(%KISW|$nS`ixa3^Cyh_ z#v3*0$=UPLN3P@Xbw47{5A8}&E7(7RXzfgWXYZ6-`WWp)aHQ&debO;#{}+^l;G=^W zNr2U`Nf|lXtQ3A}{Lb53b^T{0e5f!B3Z7OuUGF2-1$VmMtvv=Is_*vY`*_kaky0f}!{f{plOU~`&gobr$3`xT*gfHh%PND(4Bj2Gx?Ubml z^`)Erxm1_wbErUq6bX;+;xEHVqrD9yxp{}TE$;jR|K|bk4@gZ?-Ff`>6U7fi3xg?EViYxp#}cN8yhK?{zu4083Pg^3Dq{_Ws$P8rR8h2~oyZ zYs)W(**R0VY+{d?-7y>2f6{yWCw!{Ho=~>JLhWgCF;9BcVxfj|J^u<1FNO(Jug_pw z-P+E~xLNshelN~$tSbKg=RY*u&QHSX(64_D_5X3iS*qSE!z7%o%ulk`3XE(w4vq2X z$5_w*RZBw(w5$&$9P9|~VKt=)Y+U*J%{j_*Tz4dV&i+UJzC^hwPV}v=Tm$S_#?ha| z_>5qsBjc@aPg?Rm{N8D3xe@>^A)&~b5y672p=IBU7m5`Fzh)%x_Q&`=Wpw`#fd(I& z5KM2kF;GDa* z4FZSUVPJJ)dNJroFBgyu8to^+FN?;6hSgU^*2{R0jN&LmDW9|g*VL{kpM$UyrI)1o zlrVflPbUYA7Kln9T7gT20<_V{1V?|kr2iE#d25bRw2gk946;|R@7$dJD!pa*)EM;O zpoeN2hf+AnJ(Eo@;}Y81m>lHzH%ksh1(`50U+1(nk%R_-sw6rnVKrIC(puJ6xh$kk zwkzODKJAq3R>GimlW7ntTpu<-a6=25k3S(@h?n>i3)DU>$z*saE?Xy>c$m+RH=)mF z=bVD_DX!21w1V?_AlP&)t+h+muRcuA9QUmpuAq>T-s_|6u#5zN!B`S;geG=7XT6}T zxb-f7Cn{JIWV2G~UKC!s4s2M+v{5qgmRRNmuo0b@b~rPJ{pR@Li)j5b)EjpGvt?hn=+Bh_2N>ZABMup{c8tArGo@p4(*NznsCk%wUk>;G+}9}4M0qIU}) z1wG+IaU#YIe9`&z*_<-!XWY~zNQ8=xB#Rv~4VqC?^#U-4Y5HL~)>v{Qg{aEqZcS^z z)E|c8$^{*#nnwwfuqnZiuwZkvtcU0+j}HFP=!F9|eM2Dth=_k)8@+I%8P!}Kbm8Ff zPe_;9;-!2|%pw%FOi2t_qMnba{PBx@jY(nYrC<2F2*@t0&OSok25S~};Clztrm?=B zcoH=CMn5Xc(Y!x-g@iVHZdA(HPm`2CG{Xr%kUxU|jBre!Z8-25})Iw-B~gs zMdD0jL#S8+wH%e%@Ce~{n5VN(|3p8VRtDGVu=|`Yc9|T{o67bH#f(%n@nMf>uMV_j zmUIjFP&&2T!FwR(kIA8dT_BSTO~Pk`!F{m~+p;^~ZqB|{Aoo-T)CxgJDIySw|2{FG zj(wAhoNZsL#{Si|s$unO`Rb^jbk9`oKJ2m(F;l?`;N|u4GSQ#KV3R86W85G%MiZ9d zcXMM?;Y&@-vn*xk%#kI#HIzMFOiKv13XbyQX=deuue<5~)UL@AJc^0N> zawO?#Jlos8rtKlY-9aNC0w_$DICZ(K?iic`+;C4I3d@>+bp)*rllu@~1p_;AxQ-<3shp6`z6v^^fB*V4-T{$%J+&0x(n%FztUwI*3T z_kKm5?}~fbWf2)F2v>5LG=|Cd!|^Yw_ks_{VZ{(V zSzpu&u8u@SF#UjFQHb?Q1L6D;&EA`B{(qFcRa9JywyvAtF2RGl1qtr%?(XjH6cC)? z65JhvyF0<%-6>MI6mFNf*52*DoObTKk5x5Z>YNS& z%t^`{xFRN5E1#kFN$=qDb|)T5&Z&{(Lq7uO&(yRL5pcL3ea))fDSOLO@~hUKU3vy5 z+@NdnXqxCtXKM@{=8u{`QO&+AwKyIQajv_(dal>|5Kc4p{0D`=B?{I0apV2c^OJxr z=heN}?wa4~FHOO!k(&#RgH=O~kF#}+sOti;mZC2ka&N!k13qeuf;;Ge9DYA2up_Q- z$u-d{f84u%yaA8@D%VFo7azj-H~IV@bW9c#RJ|t8uKUJpCu_ar#*-C;{;?ez+<|B; ztST-s1-(~b>7Zz5RRxPlYa(sZ(*iQwnp27S_?KZ~S6k&C`=-c({O>|T}iReX0Il?DX^J+qu&c$lj0Rjo<6vN{1l&vZQyhj z6A4BOcnr!DDH42*{k_7g9zWJRXbV{O4b)#R;UysI(A_cBsINi=ED1QqC_NH=C9tPc zGdWAfu5Ucqi~cm)hC?rW2FIC4>&XHpu>EF6F1%2)p9)bVnF=9IxLtvWl0QIu#mz!S zMX1rSh83hw2FMiJP7$LR$mnj5I++SrlwL)Dobpu|ViEV)puZ6}Szh58Hnz_cwEe<> z0Fr1-Tlk41v6*e4^Xm(dS&Z0x`Rs-w5%Oaph?Y;f^zY$wqhQXYi>!DN60VWRwo;XW zNl&F(n2bct0$!bWMA}V6NUR&QnD(71OJDZM*XI#|f+9ucVW~=cjy00CShMJneR8zA zlO1BsI$*`aD1tAVeCszX#ixaYbv%_|I zqaCzEpTeji8w}EMAXNDm9}>fX@M+j;(I;Un2?gR{qb*6cdl;#%kA`-L1Tt*pHSm6Mrw_fuZT_(177Vie{c@Qx_r?BYQ8@+Xc3!wSyg7hE?@` z+so#AIxOb{JjiWzt&1$&e27Jj$wEXx>?3Y}@w~9I@mo^=GZU(8bppU&x#A^)6Vh;p z4rrv|2w=buc834w&9x+mfVE?P-t46;NmN%rZwL$QF=b9B@DmY>-)bloye&4IAwFUpalH&%e~v{ zflPti9|RvhcvXFb=D#wq6GH`}zRG}t-HtIhzYJl5nay?4k$(NK65nHJ)gp=iAq7pw zCViYY5b6`TtDmb<8D0FReh=#BHmu5&+1|BMhK9CBV1)V!p+n9l^d`k5h*y5ASDzxa z`ZF0NJZLZ&UAs#6mqu>fp4X+oYqJB*RmL~|coaxHLNh+GLzDzBUh2WP0 zZUu@^n@}6RAsqYNJx?iX4fTYFkA1a5ipgt?h#@fcNbP5Fr(%CrQK3s^+AfULEDxDv zLrRl{0ojW9d_hu~cJ%&%&7xmYaEKhaQr>gBqJ|8BPpXlXeykqd0v{~oE z7!|s$9VU@pfE8^xa|cz^xhybT=(nj&cSAM)`p~jCRFH)rC#Ev|A`d6Gz;CDIo3L~m4-nefjh$H5QlHU+2; zoYE+p3+TI@G1tn7MY}eJqkk#%IM?ODmPkRDIniPK1aQYj)3!UzQp5)qVyc?!6lOI> zxdfw`ocya>-V{uRJt@!kj-yQ{`1Rf02$ksRIUxZnZSO`O8!Q)NF}j)8`<~P0akHz` zyCk19*n9#}pHMFHvT3d`JoRF(=>tGnQ#gdQrN`yD@CN3f6@i1aKYX)~1M;y|N=s&7 zuxPbbQt{+9sr-==mt412O>4$?+@q}B9PW=jJ7_cr+oAj8@rf>%SS?u<3JOiM z&s@2&VqiT_j=Q75#aNu6K(e8b%(hQUxVKW$ZHzmC(+(*rkgQNejw+yDS43X*5ag5^kO3Vy8e?fD8 z2@#MupbCwD|AOs;!bWbGF3}K=fsp>ISY5?aA!^0euUtBjRsc=|iN!@KynW|^fLngI zR}&$8S9MF7(rb^B^Y({5oC)Db7D*ASj1Ml>h8i>$S>U_YAGk&&k#V?jin5cHbmg6@ zrx~)2vcas#`E;=?va7oOk_|1S+Zspz33qdfkaEuLcV;8N5^2`(*#@4i}JIKJ_oj> zy{j0vYe1k+MQjrTT8#L$^*PpuZyLQkJz>`N!#HBY|AF5i?c_=HXo0BzRv-}E$}h?W zhJnZpmWgVwbL${n-Q@n%rXe&H7TW{^UV7_eLyw-uhgqgL*04_=rGe#VMpl1tNqcK?}e)P!sO0+20!U=lX>+?Rm%mH{p4{ zB?NVA>vG?aNisOkN>u#?R2`q!O{!Vlc(^R-__1TqQriZ(%}e5018PU{O$$r{JI>1A zhn9VLPJ&3lCRA3W3(yMk`~0+W0A5Xqa4p)SpIi+i(DW~2J1T$rS!KdZu%pe{x1#p3 zM6BNC-oo(V->0^k|*JpMwL)e-8GI$x=c~7H4%&g;1a!i;s(f^!d#2OZf{XS!2Ff` z64OV0@I*hplDhD`+H&BhjeA$(^x;UrG@V*y7=L-!3Zo~)naobDaq1=Y@)Y3bW0Gnk zmK5E|dn-;x*1VdMp?jw>v3kIax%6 z-bK})%~4&-g$90)1kmsKW{SVH{a(=WpoC>N8=KfYTVpi;BvoIoV!251 zr|JTnIiGedqcHqZa$`{<90;6Tt{54Uuc~`=1RVIXkPpRzh)* zvBb1%7g;Gv39Z;=&Q&TDT6Tsj1f2C(HN~A+xZ_A!mTHbqKBZw^O9WxriziY!tnoX# zSZ3g-Ks9`l!r(LkQB0>VbGn3R<#iw7jR6Y89ft#DJE&%m0PA0Nj8Ka})odsF-jCM| z1)PqfV>Y^X!XsODc4RRlJL@yZ(Y*BXe>)LGp5;6|?#!RhP^4NTB(`kEbV{MKYwH9* z_wk}F&_~QnseWaD$qb~Jijwtui$rKU=Zb^(RO8z&QA!+P>35eh;or$aZlU-xT7LN_ z%9CV|^YA#?{Z!X|bqk^`?e(JB{DZPcF4k(%2<8V@HLM94p42xRB)x8aF33X7D@NSZ zM@tiK9PWdCt57?ZVR2~EDB506y?DQq^MAUk1H3*@e=q^=lPjy6W>Lk`hed!)hI(CF zK~){skHII`1D=XPO51;0<%AV3sKV>({hbxdAp{*D_y8D;p9%>nggO&r!{xw}E=fNl zWs}0k(~~dlVt;+JZ*OE#x$c(s2}hm$d=ft+M>FinMe^fl$&J|T8td`8V*UF5eE5ky zb`b-Ak$#4i(&OG$xBFVbpFdVSY2s^XZ(B}osf*`%^EYMe^Js*Iwja0m`QH>Eg=shr ziwf(rw(plY;JD(R;i*Uou^tJFm0|(2MxtzHPo4N&p%mAF4TLrtMF-tTjJw!XRZyqY zTu#anxXg*>d-9lG0rnT~*uQLsjS{xO*k+PMJvMB8CWQ6=HT8`LD<-^idWv zL)B_Ou}lcK_$O?;8jy&^X?|+phanD$^y`Fov^#vwqrVEQ{$534{bf$tiYV^OUK7XM z-KpYIhB!&fY&TYapG~M(H(i7~MH4Fvy zb=OMHBGxl)x`i@g3nquMpkwim^G8Dkav$Ybu^VNFOL}Fj{Qhq_^(8k(^`#%kbv0_R zO5xlLzO|oKp6ujplGQh^jtzg#8gI`~3iB=Ifc7`%Dzy%f%&`~qkJT7&_9MnV-C1pj z=C%meiDMo)$ZK%wkhBF|B9J|KX$gam2(4Q>WWur)xQM-J%p-l!?5TZO%5Ks5JIUzX z(Po{M%-x%U%l2UFqonreBd9iQzWeZy$Hlpy$q%W=S9AV4HJE+RcxOVHHqdRKnA?omEKjty({Q|rL`G|hZPB)OT+S5rW7z7NB8BkIV zJlt}$QnMzc_x!en9hqb4m`yB`1K;@)lN?OwLS32{-)YRNq3Aa>Sz@Fi|9)3weJo;Z zN3YmO<{STlsEqY2UHO+V7Bo={d+CVu4<(+leR@WF7W90H2}M(5})TS{(#e}R{>WLG|`dWWj0;ZLl(MhD&Z zpEfA)W{ne2>GN*Q77pvf=a>UF!Q&j|7aW=8q3K zxeVds!}jBIAidm*2_BOG*dnqgP6-HrPK4MT#Q@d3GHz3=x`2Jpc>?}{R#6ezW9IN1 z}=s zN~1dVVEc`j>7XH?jr#rey_2@1=7C;pHTkUM>V~@FolSMH|FW0g+rmN%tqG~E@}*Yo z&Qn%F<$b4*IO>J?wez%%$OW+{JFOe-Yt2WI@_(d#{hz+XCN*M$xH4cgr4mj%Bw1G% zJ~9mff8Co5`uiu^YE_R4UfP?t zjNDqj5QNPaBdr&>FIs?KOVxpbKuzJUD6|EsoHT3fU0U6$Z(!cb3@By9`~5qqSQJge zl4NaBXbe$#N*Vy2|3x7l3ZK!cZt5WB+h{0EkvcT7P_N1`xwu^Yb$rx8-L?N*jo4?m zgq_>>hI@;i6iQ!z%~NkaRp4k{SS4tyn}3UF6KKL-9|Pt8LxP0^4lxi~O3HtiSm>Hu zF#<y^K3sbUg$seS!bBy^-o~*i44#U^FIDAN?Eu^`~9ZDa9%W0 z4^;ajBXHGA{VwMA3&9bZU_k4!?zS5%yzs(zG%mll-cH2eEf_`NEPASG@d6fDBlhF@`0}Lrwu#xwp`_Ks(2q! z*Xfq|ix_1sVtnTeZRtnM#3m~&N^*d$-|t0b>u@7|GUO=Un79xJ*birg;@==F3U3+L z5k^*cEWoPCpZFH96qP3Bc5xZ1XoTrZS~CExVX8Bu$eR;abJ|JgZ9WRffb1_>a9k-G zSUEkl;H6SEv@sTfPfLnk|KQqR@%N?VMiNbF96sAAZ-E!#o4bAmhn<>4@Xu$Eq+u(Q z!?liyZGztX+jG*bQE{GhQxq?tgb zBJK_R!KJC{_nxcsYTu(S$F|LJ{fNB@#D!_eqy*a~UbLa?4o}Z%zdI12Cx%Kp+;NUt zh#)y$=&iaVLSUW&p-Y^Q$Z~kg7dG9A?;MN^E8i&ky=#{D4KfqAjUfBOZruXjM{2(! z4KOG#ig=^4G{hm6$Mg z8afS`)F35`ls-Pt7R2VDlx3TL4e36OZ@z)ZJOWSx#(-^vo1b`eQGkXKI$KqkJ*XJY zH4y2{_b=^i4&1r)T=y}OFZxzVt-Pfw07SgJ71rJ+(M8>qKEU$*sx6*fJJKqEwZ+ST5um-Az>{RSU zHT!ggu~XVas(F~$H%!78>QuDuo0}Q?Ytws}k#49}I@)|_#n)d?H|<~3hdXm?BzcT( z2e*vOOd;~!fC>-Mdg2Feu-t^^W)?L2L$Jp#xV(>xoioPwqE|**ZSRSFaR+sl%ALv_GMZSyMFq(+zt9fBRA1Q4tle-1r9u(FU%YoyhDxvz6 z>-w*H%=($y8Gd<=7~NMnMmL1VZqGN~BhZ4htE}D{ZXq%$S;@&3y0kup4{iB9$@ww~ zI;WCSjj+V>5HxMsI-pk=2)vP($R6o!O^)_%zaK_Un>j z&&$mN1-sBf%ImvFd0-nH#Bn-8UW^2}gyTIx;io~powG|u>0>(^z|@jA%fRoqJn7P8 z*~!72$m0`R2Omn`OtiAGC=umie#)VI`MxyWbyjTvyDh(Px$311ENp>L8$-sNqdvcx zc5G7==srZbdzy&*x<9%h@w#0%JHYW0ku_DSW|7nQ1Sl$+hJoTR{#(W5VR0it9QxX~ z6XIKVUTx4J)qV3R_bU-js&BgXzW0=w(r4o1H~7(YJYBg$3p z8{)`yGro=>PkKvRrwQ#mLS6}FhiwK&b#W2axL1g%kWqK+cQGxqT_r7QXy+f?Lu(vexqF^OPN4ktA^vFz4b>SLCY zL=ysl_f=;`)tD%O8*w_lJ|&i$bONfsfgkfQ_2e zQgQS901K34ME4ztSz&|#vRi87?M<0d-WoYFY$|tP)RM~kXK1#;TI$-}_iB!E7Q^bc z0&j>5f?IH1d66caJh}d|EseD3P|h0vaq>XZm2i^xfYL6n?Wg%^xe6La^4pdpfdbeD8rj38T*Hy_jGqzLpoq*tt{Qq!DC}dW4!hxi4!u_ zqT{fAGliGuM|5n)ofl2z@A#xP4i-VP`-CmbS*Roqzu!N;cY}1BR0b}n&SExG4T&zj z52_7&_PSrsJmuwe@x4pHt|)arp35zMk7Fs%AO929kf>M&7;E9w%>_uuqR*U z=FT^HYjhMcr!$)$pMXx~i81I&z&{?MnRG12aX)lcccWkx!F0Qr_bbIJKD$2 z=*?$1OiSFh*3PF{>a*ed#!|K2WvNGSENKp0;O>`+pNEDA@K5k^eUJ{S%fCIwT}IH4$18=X)2fWJR)+`gFxgq##p~ zOZgSe8bNj7B9d-SG)IyRlOQP*nisN3LO${x-*;&3onM)By@s4eK=Z#j%s%ZnXR|o4b!`ipPGsle>?AApOb3F~Bh^=XuO%rZKE6Q9%b)kJ3DKz=#BAXhetU z!g9p}b78Un;R&DY+BqlPU;p0`MN^XZX==^X80;*N^do=cqb|0$srB7A6(ECrh6#yK zdf|h7%wcG?U$1eqNjl|n+g$rY5djJB>f{jY|f`i zCwvgF=YRL8FLm^MPPj0??fc$-Vz;2z@VPESNY_ZGYtAE;u`Af+sn_pi)?RHP4j1PG zkM+%;U)MgAg(MeBg+^E6MSBLZc`JNVgY*O|=Qetl;EJ9dpGqk$_r@bcqvLd|(|NV) zzR&y~sJm`dU7RurbvZzv@m>ui;^T88emgL|zY4$aZGzG69P(=EGrTcArD9!}lkGIm z=PQYBfoufYou&y%rSi0ofUsUtl-DgCn1O4TPLFf3>uXz1aYScr`=-B^@q9PaB%V<6 z;QP&_Fk1rd_@D=sG}Uk8^8{E^8#h_n#{2;yVbviCdozCKjtDdSlU-DNmxJiQaQ)7r z8Ui?`@;@sdw$Z>Cdj9*&fFtVaj+1Sn%iF)|r{e#~OkM&|i~%#Q0cRI}yKg(h`kt_! z_|r!eOFqSLVkS@Yp@JMl|FU4z{MpOmOok?40R3}ceed%38j4rNYs6#4*U%$tO*0AQ zKQi$%x9!&DzhoFT|C$C8rYRMORqOJ(by;*Sn=vf~%q?O71k2ax8Cjd`FBj^fQ&1TW z3N~!abQ1*mwQ^cVIH_pC8nmz$IbbT@3pPBMRqxP6fL{Xd8OeOc*l1N`o~43{WFI7B za;ohb@6~pnxqu=l-Vv&sqI>b}z~=DvXbu|%E1A+ImzJ8k@1eGm!ujLMi;i^8nBOY} zdGAEAR1lFRz3e)rV5^G#g$ONcFrlrOnto&&eL@Te;amPHWor|#-VoQ*y8Iq zcjtrw@dF|eaPrqCsX_nGBkQGGxq`wG87Gwdncu#$kd!LItJsPnf0HQdB}QMd;&abd zz&Jthj?Yxis}W+{UIPV963ht>n$ecUfjg7h`L0lX99T?pCOcN@L4g9&*?zH+?Hr%n zcrt;O(HC)o-TOo$X8!kGw&!b2_RE`A_&k^I+DKU)ZxZA74qf}*4=;5c?l&uE7sLff zQ@DAjRcY7siF4dwS7v%mVq=2Xd6SF}(^CTAK(`59E=#2ZS{E`SN~}d4NZFX1t=` zhX`^lVcYNjmE+>bJlzCC-aX}?{Q1Ud?^s?66hDj40EB6#1U@?PNhJFj{JWZ`;<27Esxc}kcz+>GGylHZC??UXknj?qA}Ka#yRyRt zhoP(!d|%3xvoJe3L&wmCY)qJV)`=vAKRi`@^tc8!ID#s?*a(Ayt$Qpbc8vDPGfo(r~R%y^=7f-isF+_z4H|r!3HCEx6Mkamj)+yM!*S; z@{%^l)Z;)>0rZk~G+zJph$%Tvd$udB^~T@^q|W!n2XCS!-Li)ga!>Iqz9V|)x8YoG zy+$p^)I}|M=)LyE5@&Ka+bsJ6FW)AN2#-}vxGHK6+7lF&($h2glO*k84wlQ?{w$dZ z(Guf44)G_AZ!DU2K+dMIFMT51HbX!!jVz8*kA8HKk)zOhG)*6SNb=#WdjJeKHbjMH z*!`NfgkgMgsrp{9oXrz$dsHjdUdmH`zr513LU*n1LLu zh>^+`s0Ca1hz8M2(|!1{t@v8r?AXj$%aVgL5=C+?l-XuTT3@8{_MnixLx38T)`%QMtT`%tVWnlB9B z=g)DkJ$pDs>hvNPHY(K60`-2M|0Wf8K8fc>xINoT?`g!22sxcTre=jG_A=J2P$$Kj zW=MgDx@N>>Uw3Ez5sivH{}Z!m+~G)M9vQ}TnHR4^SkdN6efd}@=v-Jwkeh?@mW9jO zAf1Mf|0}Y%zeB49#<#1R%eMqx?(_VDEjMDov%KfkUaYOB&I&U|g=ZW?c zNv_}1%x3%TClxRpgdaZsqXpJLTNh<;noRt5GWJ{0O5uU!Fr5^sV9(lN)itiE?ZZCn zB+Ad7;hMYgHbeV~gP6FCqu9j@Y?bR}uUpvRgBYdenhwvc9^eOz)FqYCbJZivC$eDkOT+TP7yR}Gv*EeMa@Q*yl%8TEd%=H( zGdGbx-rz7}4+UXDUvQihGU=Yk7Z9zO+8YILA7`;=qdvo#8l{hs3+Fs^tL$JoPc-<6 zs|2exU4{!?(7KXYk}?HllYU}^uhz~{gl_C-erSk@_=UfeGjhhNmZ4|+O$-hZr9NcU z>*CM02C8q<#}VD3s7ZUTTTY`IoD+QTfpla<--1p;c~e>ppWcqtqRZI|pK6Zh5h4RF zrFpB;h&z{6++O6UD7E*3s@-*YJ@lU8vETv|PxxKr7+@tGzZihX!KV?Q{4|S>O{qvC z7TAtJ+N6WwtZ|#Oq2UZ=nf4r+DX6cAX~xB3CmKtfu#t?;#V_m^=JQbu9k$UdFq93r zPq7a{dQ{X}>e=~}x65l$a#czTHfu{LuXlsnx>Gj~JJNXuBLWJXqiT6c`6ckWW-D8< zBRA>Ll^3tSqAh?rq_%G@HZilsb+Y>`bj8n^K449Y%EcvBbiYp)e@C2}a%k5|OWWC1*1LzxAf%)%VD*)^7VBNeG!94( zx>;?a#p#0c$5_Qfe1a6tub81gX*);KlKI)25iX#M?+Lxd*i3&s(dWgBQs){!HXNUv zoxJ1-c7C#WbgX}>Nl&(NMfTleO-o;6Rnl5Hbm(SwpAS`2>cEs8 zW@;|MNlP*tRDD`&?cS5sS-(wo znUI!XBCg_Es|frIVf%v^4vb8PdVlL*59K=!@gH4j!P+P@8!gW`Y{=*k5cKjr_RgNy z^Tpm)CG3)dj1f(E@1GcCHcSEcDzc2VVP7pH=UYVPp@0^pGRaCkAEbl{6M1MaD9O1f zrjq6>ge2_4Jg~Acb6=mnv0Kxorjkb4ZpD&j#0~k8Ys;>7h81~tY=$WDdd3l*i?%u> zXa-{ngwSkqJYT`7UtVX~V$P5@O_7}2x=Oa_I){f-qcwy}Y~|D^6zJvTUF!$p>N^*{ zAz@v8Zb==fQ4|#OA`*?>ZmT_OZsFVv9=_k$-9kq=juvWxPsa{oKi*Rx0g*wj*Bif1 z-M@m)zG+#>k1A3yo-q)k#k(_|OhTJK5q;1VD*TBG?F7WCI_K@L0`ml_+KAGSL5>ZZ z&YLmVG9Yre{oz4DH(g$`<>k$*&oYvBj0Bmww^N@hH@DYUK{(1NG*4bDYe1g-*3hRT-SBn{_(3Nc4f+Q z>T&G@)@~t?xC1PRZk2K!ugg(aE58dHa)iY z1XzvT#)NI5^-`rY_C#`r3wLK?;`!r-8`w;o)@D*xvI@v*hOrOz3H*9!czN_S$dr{J zk9aO*8FX8C;6{Y~!xCI+XgV*|;XX@vtAznn%5M}ER}g*f+ePF(%AJkss-sFe>U4Z7 zhHhF|4{BA3LhCW{Rlh3k>)a7TfsKjU49*|bTb1qI<$Sx7tnL_RjPm*)C8QSveWjJp zCE#(p=foe?<%ttC^Byksp8FvyD&B09%BmY2n^TnZsI{7!{tMmY|IOn^$br2zU+|fC z1@UI356rE*W#TnMz;s1Sby?AvmUg8xNj1EI)Zm-NY;lY)ZK`4p2{U44;6d8BuI?Ba zv*6KW^xl+x`Qw9egz#!+*VXhUtKG7}wNO|~R~ph{(a0My$M@lbyx)$>GlLsa`_dbI zyh!}yAAQTqXC9iI3izmR&pLT>^2%#iqiS^hSW@{|<=1)^i02$nMR%ckCPNb+d$$XbUz3>Nov zc~o=Yq8^1+ZZ?n4L0Ib9mS4cUz2QUi z^Gnk3`M9s-`OePFu_o^Qm1mpvi@rHl&)6VAG4 zJx9nHFNK)S>8$YhEvvdZ6VXiOG&s9@v>|u6qi{*;W^`lILQ{P1!IyxShfg9;KeofQ zuxxZNz`m%|D82&a&A?KY1FOmW>qC=@q=w}tqS1OpOZ`WW7rjf<$&?J`(eJMh%$lpr zr0V|s#O#*s_(n5Ze})IS2JILV>(H&!o|sI-SMxNpWM)?)G5(F;JVC~+}NT764e z30e8&hDtHuRY>X4Pt$Vii)(L!t~{P}mup0uPc5L_=+CBjanwz8f7}vk*ySV`|EyrF zsL|iH$AfXCMY)qoKyAKJ_z3&cx674wI8FiD+^Zv^)Hm zbuyCysZe-=n`W(q+KD=X2Ow1yQ$@V03^+2o+b5?1VP9AWw+4bSRAF)Q1K3hT*w^Mo z&zaPw)~mv77j@5PNsA0sv!+eapNi7_Hj1?o>rXkvz%WoIlD_gS`y3lr(tnV{P07~; zh;mw~WTpw>?#RkM)`%HrZ!80Of43z(7>3ah_lxihHpE-Yia_sGJA<1N{yd$H{x-kF zBn{xp5fTt&3-W1L6+7!fEHRZjv9tPtB_!Z)Q!T$8ep~T{CtVP-H`%PST z@SL72LVwT5e)LbcrM0vO!@40vhbt&%5%(aQ#Bs!E~wcn zZ1?)MGdOkTu-SEcm*RUe#IfSQ%IO#FdRmc;;(EQZ+3vdR_qJ;9d9)-ta-`le+tvH9 zkX}d*EL#fLf>8Qe*j+On-^OOT|Kr2hue!E~`;1Hwjy5B%(BtHc*zc1x2?6OzK?wk+ zZILK>g@B4~=1B_q9P87j483{f?PCghRJc7^0k5ODSl+-@rynLfmIn`QsM;-Qs*_ar zh&SRg7kRtqTYHo6uQ2z2Id1usw|k(WJ^KX++RR3tEV6O1Q*dV7kxPbL9?>qvAICkI zKs4e+(FkyYK(H#r?1U0PV6!GNE~gM_4MnHWh8|R+1n6xE|6(^Nod`OZ`~= z^(S)(fmci^!X0;vh;C_l_op)qx*{=0o;-nwB8Ne0Zn)D)th;lTwee*|D`w52x3ZGb z&lURYRZO|14N@*3c6f4adQ%Yd^`=d;1>VwAepRTy)>IIVq5|did!ZZ$AXt>-SL7v4 zfAzw=>gj|`*o$nSBC~QP)RDcPfkoooM$18_?0Hm?{~qsl%G?rGQ|gNs>=u_JzDSg1 ztqvL3dTJ$);YSiuzsS~gC>;xvJxO}f19B5kLJ4aW!`+;N^%u~9e>2_3C&{NiM5v-+ zBdtrSs^%{V%;XU_;ti%y2~A-fXc~?ZY=LoWCe=nBF)?qwdh1KJW1}5U$9KFzO;b8> zonqyg{A>&}s)w)JIQnO@;vw0FE0n-LM}t&Pk>o`qI*b1YT16WjySoT8y&n$o=iSOi zH4$!rj&rUbAf(`d0D_Z3M{SIgQ%S~A1WXidg_?Yw6VZY(C;w5G2_0s%8o8Bi?;6am zmISw<(&Fb;_BDPZmaQ#jPOW;gIYUR+#;*&De{8aV%l+aiN_YIaHFB%$apAER|Gq9^ zBESs_ME-q@mdPZ{LYzmzlsSgG=m@vm#4~o{_oD0xlb*Xv+B3yd&W5lPt=p#3;QZzB z{X848<^J#BW=F@x*85WC`P?Bg9SxAy?5@1SrRvbbV~d&PWiprF1C^Md4b(d16;uWE zLcwC}-Xr}XBvDFc6?{)nBtQ>qS4+!{_w%G)2xcyNUm5vABq`2KgQQrjb&mL zY)r9jnBOsz2|(Sv54gnOKsfCXFjcGij%^n^b3sM+YrI=6FxtSPLCoF=0W`_6zh-m; zU2u!F#gaD_J!DF5M_+k%hCEK(FuU{iD#^jLK%|I-c0;6B>w$FYk77oZ5kw4+QueBw8EDi9s2VKxA)rKOY9{C*iD!xDoy* z61%tHUY@oAJ4ApD4@p$;P^njz=0E11&RDtV|9|G5X!Mb~xLazpT3X#lo(L)E3k-8 zHQWm-TCf&a{ZPq~hMmhyIQ_OWh4(2HjN8Z-691&=N-}1h*U}_c1ImQ zx*hoNOZCvG(NkrisGAoDzQwGT7duKT%WAW-Qy-;W8JW2ppKG zb@i#*Dr1oW;15qoi(U}$;WBO+n8Wk@pL_Xz8e!4>=DY5<@XyDRqaNbdcp~qsB0H|O zsETem#E!e4S1nOD_9bh#@l<#B>ZF0chli5YJs#%(-E+Gpnj6RA_^x)aS>y4EJXjov6D+$rlR969+@nN1)0BqRnkj!M9z@^LfSd6+Tg-RET%Ct?){Q#OEJvf5M86SCW;b96gnCEl*+MSBImM{im&4GNUzP>hL>~AnloF zBv7_}%Ma-^E@}^F*;D&{Orkpo=aL_ zcBj{X@8^nTtLNMQ#-jFGDbl@GYBt1HsB`S(a)R(f0JW8iws+W2_F-C_?Mp^4k#L=2 zQ2tkrfGHpUjOSxY7_7|yS_f*-A#_B0o;y%CF5X*~4GYV1nbdsgXZkN*r;m=*7k*#r zE9T^x|HMH7ET`*}T zt(8BUVnsf!KH@!{b_oPuppCE5RX|s8ld2_uOO6~N7npV#O-$$WI{u|1E-4JnN>3$N zbTEshdGb<;o0za_Q673)EQ6@gR=)@kEUI{v@E>c+yb)ruvK#wss)E>o9{f|U<7cGVKuh^L0 zlmjo{>oO{cJ4|RZRXCjR7;>+hNh;(gvToO9nXtGqS8)MBdNnqc&SajpgvVZr_$Rf+ zSSaelsF`#^nQ?)GBKUF5z++rmWDM>nLpvH0=N~WeQ-Jgq z3;}XxXQ7^-ElGg<8id02w<>`L=cafk^L>od$~M~Hd!ls6f%-Pb?dyp=fe-Y{YuIFl z9%+RX5V?2uM{^oB$Q15NxhY3Kbn0jt1%4@SGyaU=3(`Z}O_3K@ADNbynkCyNA|R+w zQQL%rs0QwZM)8W#)iY8o`i#PDsYd(_hm~9?7g-Y5Z)XYaq;GQid&=-@*|>kn1{rQo zR5hiVjFUf1iJ|zCr^ue4bpZ&Va<>S|WZwY%z7yBLapePf21WS%&WU0n5(MUDIkYb?cC`2CYub&CizC&I+W=~e zH+8s=oTBAZLoNqtZQBGcf^p?gwF|LoKCW8d>OCV_&AtmM;iUTo9e;>DL>;^>#CX`t z)%uNZHgch<9P#!SY$Ro#qcyEbNumOhjq}2X-R8H8f=&BC|H<0+1)Na>{^k7cHO-OQ zMfihrGq8c}S=%#U~Ph~FDXbf_!20$+)Zy0P%?7xrW>>-%x^p&JhjPsBrX=F%;C zCS_QmDe!2&i?)(JMAa0_*-t@uDr@4tCqKrQ1uaXANzV z{Tyxh|Do)iqAQEKb-Ix2H zHXrAj53|iR`sm~9AJV<>Jhs6B2}vm0Rc%*m_(sdC&J#up1L^aZ)qvCq8@4`uX5*=4 zotAYL#8;)$L<$e;kQ#KIgIuTu7sUTe546$kLk3J0$Y7IG zQP`t<$TEjXC;EJpEa`co>fsc%aFW7CgMJ_tk6OT6Y5!OfYDR@aKQXK7wD3La_`xTE z!9}gS(m1U}OaSmA!*YPfQ4%53T_2k}yvuE;K+dYi9YNMNvJED)G}ZNB^|T4wA z>GB=@+X))x-1u?h-|ywt(|&J>{5BV$;l-%W6*%>y>2H_nB9UCGyA2 zKd9#NkLf?dA8O`6IK6S!D3{oh_WAg>pKnc=N}d8SNi4~3vn;L${#KrO@@wP3QLyRK%z7o?S+uD~XW8=EoLGvya=Z z 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 z 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 K{9XaS821kux1M1D literal 0 HcmV?d00001 diff --git a/notebooks/ingest_data.ipynb b/notebooks/ingest_data.ipynb new file mode 100644 index 0000000..ea67111 --- /dev/null +++ b/notebooks/ingest_data.ipynb @@ -0,0 +1,630 @@ +{ + "cells": [ + { + "cell_type": "markdown", + "id": "757a1e05-6aaf-44f7-9a8e-63b9bdf5917c", + "metadata": {}, + "source": [ + "## Description\n", + "This notebook demonstrates the usage of Unstructured Data Ingestion APIs. \n", + "\n", + "## Usage Instructions\n", + "Run each cell sequentially to execute the notebook.\n", + "Note some cells are for reference and in order to not accidently excute them, they are marked as \"Markdown\"." + ] + }, + { + "cell_type": "code", + "execution_count": null, + "id": "c128728d-dfac-44ee-80dd-d2bcbc9e9963", + "metadata": {}, + "outputs": [], + "source": [ + "IPADDRESS = \"localhost\" #Replace this with the correct IP address\n", + "UNSTRUCTURED_DATA_PORT = \"8086\"" + ] + }, + { + "cell_type": "markdown", + "id": "aef68f73-60c3-4be5-98e1-05cd8841ca26", + "metadata": {}, + "source": [ + "## Document Ingestion\n", + "#### Get health of the document ingest service" + ] + }, + { + "cell_type": "code", + "execution_count": null, + "id": "f6e206ac-97e8-4f72-9045-d9bcb84642ae", + "metadata": {}, + "outputs": [], + "source": [ + "import requests\n", + "\n", + "url = f'http://{IPADDRESS}:{UNSTRUCTURED_DATA_PORT}/health'\n", + "print(url)\n", + "headers = {\n", + " 'accept': 'application/json'\n", + "}\n", + "\n", + "response = requests.get(url, headers=headers)\n", + "\n", + "# Print the response\n", + "print(response.status_code)\n", + "print(response.json())" + ] + }, + { + "cell_type": "markdown", + "id": "8768d51b-1c7a-443e-b600-b29235cae1a3", + "metadata": {}, + "source": [ + "#### Ingest Manuals (pdf)" + ] + }, + { + "cell_type": "code", + "execution_count": null, + "id": "0420fee4-b652-4c5b-b82f-9e113f484e96", + "metadata": {}, + "outputs": [], + "source": [ + "import requests\n", + "import os\n", + "# URL of the API endpoint\n", + "url = f'http://{IPADDRESS}:{UNSTRUCTURED_DATA_PORT}/documents'\n", + "# Path to the PDF file you want to upload\n", + "directory_path = '../data/manuals_pdf'\n", + "\n", + "# Loop through all files in the directory\n", + "for filename in os.listdir(directory_path):\n", + " # Check if the file is a PDF\n", + " if filename.endswith('.pdf'):\n", + " file_path = os.path.join(directory_path, filename)\n", + "\n", + " # Open the file in binary mode and send it in a POST request\n", + " with open(file_path, 'rb') as file:\n", + " files = {'file': file}\n", + " response = requests.post(url, files=files)\n", + "\n", + " # Print the response from the server\n", + " print(f'Uploaded {filename}: {response.status_code}')\n", + " print(response.json())" + ] + }, + { + "cell_type": "markdown", + "id": "960c93b5-f2d1-4e06-838d-1b37bc50eb86", + "metadata": {}, + "source": [ + "#### Ingest FAQs (pdf)" + ] + }, + { + "cell_type": "code", + "execution_count": null, + "id": "46ad44c7-1f4b-4b1c-8d42-b629b81de394", + "metadata": {}, + "outputs": [], + "source": [ + "# URL of the API endpoint\n", + "import requests\n", + "url = f'http://{IPADDRESS}:{UNSTRUCTURED_DATA_PORT}/documents'\n", + "# Open the file in binary mode and send it in a POST request\n", + "filename = \"../data/FAQ.pdf\"\n", + "with open(filename, 'rb') as file:\n", + " files = {'file': file}\n", + " response = requests.post(url, files=files)\n", + "\n", + "# Print the response from the server\n", + "print(f'Uploaded {filename}: {response.status_code}')\n", + "print(response.json())" + ] + }, + { + "cell_type": "markdown", + "id": "2a14e119-26a3-434b-9ff1-c0427f371d09", + "metadata": {}, + "source": [ + "#### Get the list of documents" + ] + }, + { + "cell_type": "code", + "execution_count": null, + "id": "072cfc02-ed4c-4a20-8755-7abbd4a14ff4", + "metadata": {}, + "outputs": [], + "source": [ + "import requests\n", + "\n", + "# URL of the API endpoint\n", + "url = f'http://{IPADDRESS}:{UNSTRUCTURED_DATA_PORT}/documents'\n", + "\n", + "# Send the GET request\n", + "response = requests.get(url)\n", + "\n", + "# Print the response from the server\n", + "print(f'Response Status Code: {response.status_code}')\n", + "#print(response.json())\n", + "\n", + "# Check if the request was successful\n", + "if response.status_code == 200:\n", + " data = response.json()\n", + " documents = data.get('documents', [])\n", + "\n", + " # Format and print the list of documents\n", + " print(\"Available Documents:\")\n", + " for idx, document in enumerate(documents, start=1):\n", + " print(f\"{idx}. {document}\")\n", + "else:\n", + " print(f\"Failed to retrieve documents. Status Code: {response.status_code}\")" + ] + }, + { + "cell_type": "markdown", + "id": "491db31b-9496-4dd6-b8bf-550f6d05bc48", + "metadata": {}, + "source": [ + "## Ingesting Product information from gear-store.csv\n", + "\n", + "Since the data is in csv file, but we support txt file for unstructured data ingestion. We will convert data into multiple text files and ingest them." + ] + }, + { + "cell_type": "markdown", + "id": "e0633d53-579f-4c39-8c53-5978c2a4e9fa", + "metadata": {}, + "source": [ + "### Display Data in csv file" + ] + }, + { + "cell_type": "code", + "execution_count": null, + "id": "57188764-3fe5-4ee5-b9ec-b65c10f295cd", + "metadata": {}, + "outputs": [], + "source": [ + "%%capture output\n", + "! pip install pandas\n", + "! pip install psycopg2-binary" + ] + }, + { + "cell_type": "code", + "execution_count": null, + "id": "bea9c0cc-a836-4103-b6b8-4b641133d298", + "metadata": {}, + "outputs": [], + "source": [ + "import pandas as pd\n", + "\n", + "# Read the CSV file\n", + "df = pd.read_csv('../data/gear-store.csv')" + ] + }, + { + "cell_type": "code", + "execution_count": null, + "id": "4f23cf29-e73e-4070-bfd0-93c451b9a63e", + "metadata": {}, + "outputs": [], + "source": [ + "from IPython.display import display\n", + "display(df.head())" + ] + }, + { + "cell_type": "code", + "execution_count": null, + "id": "2796fc82-1621-4220-8cf1-62243007027b", + "metadata": {}, + "outputs": [], + "source": [ + "len(df)" + ] + }, + { + "cell_type": "markdown", + "id": "c1e88f91-a7e7-4975-83bb-c15cf1fd73df", + "metadata": {}, + "source": [ + "### Create *.txt file from csv data to ingest in canonical RAG" + ] + }, + { + "cell_type": "code", + "execution_count": null, + "id": "51029daa-1402-483c-b5cb-8c1d8a53a391", + "metadata": {}, + "outputs": [], + "source": [ + "import os\n", + "import re\n", + "\n", + "# Function to create a valid filename\n", + "def create_valid_filename(s):\n", + " # Remove invalid characters and replace spaces with underscores\n", + " s = re.sub(r'[^\\w\\-_\\. ]', '', s)\n", + " return s.replace(' ', '_')\n", + "\n", + "# Create the directory if it doesn't exist\n", + "os.makedirs('../data/product', exist_ok=True)\n", + "\n", + "# Iterate through each row in the DataFrame\n", + "for index, row in df.iterrows():\n", + " # Create filename using name, category, and subcategory\n", + " filename = f\"{create_valid_filename(row['name'])}_{create_valid_filename(row['category'])}_{create_valid_filename(row['subcategory'])}.txt\"\n", + "\n", + " print(f\"Creating file {filename}, current index {index}\")\n", + " # Full path for the file\n", + " filepath = os.path.join('../data/product', filename)\n", + "\n", + " # Create the content for the file\n", + " content = f\"Name: {row['name']}\\n\"\n", + " content += f\"Category: {row['category']}\\n\"\n", + " content += f\"Subcategory: {row['subcategory']}\\n\"\n", + " content += f\"Price: ${row['price']}\\n\"\n", + " content += f\"Description: {row['description']}\\n\"\n", + "\n", + " # Write the content to the file\n", + " with open(filepath, 'w', encoding='utf-8') as file:\n", + " file.write(content)\n", + "\n", + "print(f\"Created {len(df)} files in ../data/product\")" + ] + }, + { + "cell_type": "markdown", + "id": "49107597-2c46-4414-ab2d-5ea4971757cb", + "metadata": {}, + "source": [ + "### Ingest data from newly created text file in canonical RAG" + ] + }, + { + "cell_type": "code", + "execution_count": null, + "id": "32129b1f-a4ee-4a1c-b3a4-f00a233de1bc", + "metadata": {}, + "outputs": [], + "source": [ + "import requests\n", + "import os\n", + "\n", + "# Helper function to ingest document in canonical RAG retriever\n", + "def ingest_file(filepath: str) -> bool:\n", + " \"\"\"\n", + " Ingest file in canonical RAG retriever\n", + "\n", + " Args:\n", + " filepath: Path to the file to be ingested in retreiver\n", + "\n", + " Returns:\n", + " bool: Status of file ingestion\n", + " \"\"\"\n", + " # URL of the API endpoint\n", + " url = f'http://{IPADDRESS}:{UNSTRUCTURED_DATA_PORT}/documents'\n", + "\n", + " # Open the file in binary mode and send it in a POST request\n", + " with open(filepath, 'rb') as file:\n", + " files = {'file': file}\n", + " try:\n", + " response = requests.post(url, files=files)\n", + " return response.status_code == 200\n", + " except requests.exceptions.RequestException as e:\n", + " print(f\"Request failed for {filepath}: {e}\")\n", + " return False" + ] + }, + { + "cell_type": "code", + "execution_count": null, + "id": "490681fa-fab9-488a-aedc-520c89cacd0f", + "metadata": {}, + "outputs": [], + "source": [ + "from concurrent.futures import ThreadPoolExecutor, as_completed\n", + "\n", + "directory_path = '../data/product'\n", + "max_workers = 5 # Adjust this based on your system's capabilities and API limits\n", + "\n", + "filepaths = [os.path.join(directory_path, filename) for filename in os.listdir(directory_path) if filename.endswith(\".txt\")]\n", + "filepaths\n", + "\n", + "successfully_ingested = []\n", + "failed_ingestion = []\n", + "\n", + "with ThreadPoolExecutor(max_workers=max_workers) as executor:\n", + " future_to_file = {executor.submit(ingest_file, filepath): filepath for filepath in filepaths}\n", + "\n", + " for future in as_completed(future_to_file):\n", + " filepath = future_to_file[future]\n", + " try:\n", + " if future.result():\n", + " print(f\"Successfully Ingested {os.path.basename(filepath)}\")\n", + " successfully_ingested.append(filepath)\n", + " else:\n", + " print(f\"Failed to Ingest {os.path.basename(filepath)}\")\n", + " failed_ingestion.append(filepath)\n", + " except Exception as e:\n", + " print(f\"Exception occurred while ingesting {os.path.basename(filepath)}: {e}\")\n", + " # traceback.print_exc()\n", + " failed_ingestion.append(filepath)\n", + "\n", + "print(f\"Total files successfully ingested: {len(successfully_ingested)}\")\n", + "print(f\"Total files failed ingestion: {len(failed_ingestion)}\")" + ] + }, + { + "cell_type": "markdown", + "id": "4bad4d7a-59f6-4a37-ad5d-bcc40e36edee", + "metadata": {}, + "source": [ + "#### (For reference) Delete a document\n", + "\n", + "The cell is in \"raw\" and does not execute. This code is for reference alone." + ] + }, + { + "cell_type": "raw", + "id": "925c5709-7ef9-4b88-b7c4-d63e7feb18e1", + "metadata": {}, + "source": [ + "import requests\n", + "\n", + "# URL of the API endpoint\n", + "url = f'http://{IPADDRESS}:{UNSTRUCTURED_DATA_PORT}/documents'\n", + "\n", + "# Filename of the document to delete\n", + "filename = 'GEFORCE_RTX_4070_SUPER_User_Guide_Rev1'\n", + "\n", + "# Parameters to be sent with the DELETE request\n", + "params = {'filename': filename}\n", + "\n", + "# Send the DELETE request\n", + "response = requests.delete(url, params=params)\n", + "\n", + "# Print the response from the server\n", + "print(f'Response Status Code: {response.status_code}')\n", + "print(response.json())" + ] + }, + { + "cell_type": "markdown", + "id": "ccf25005-13c8-4cf5-9d80-f13f0f7b51d7", + "metadata": {}, + "source": [ + "### Ingest the customer order history data into a postgres db" + ] + }, + { + "cell_type": "code", + "execution_count": null, + "id": "dbe6a2ac-c013-4ab9-b7b0-47a11d5bafe9", + "metadata": {}, + "outputs": [], + "source": [ + "\n", + "import csv\n", + "import re\n", + "import psycopg2\n", + "from datetime import datetime\n", + "\n", + "# Database connection parameters\n", + "db_params = {\n", + " 'dbname': 'customer_data',\n", + " 'user': 'postgres',\n", + " 'password': 'password',\n", + " 'host': IPADDRESS, # e.g., 'localhost' or the IP address\n", + " 'port': '5432' # e.g., '5432'\n", + "}\n", + "\n", + "# CSV file path\n", + "csv_file_path = '../data/orders.csv'\n", + "\n", + "# Connect to the database\n", + "conn = psycopg2.connect(**db_params)\n", + "cur = conn.cursor()\n", + "\n", + "# Create the table if it doesn't exist\n", + "create_table_query = '''\n", + "CREATE TABLE IF NOT EXISTS customer_data (\n", + " customer_id INTEGER NOT NULL,\n", + " order_id INTEGER NOT NULL,\n", + " product_name VARCHAR(255) NOT NULL,\n", + " product_description VARCHAR NOT NULL,\n", + " order_date DATE NOT NULL,\n", + " quantity INTEGER NOT NULL,\n", + " order_amount DECIMAL(10, 2) NOT NULL,\n", + " order_status VARCHAR(50),\n", + " return_status VARCHAR(50),\n", + " return_start_date DATE,\n", + " return_received_date DATE,\n", + " return_completed_date DATE,\n", + " return_reason VARCHAR(255),\n", + " notes TEXT,\n", + " PRIMARY KEY (customer_id, order_id)\n", + ");\n", + "'''\n", + "cur.execute(create_table_query)\n", + "\n", + "# Open the CSV file and insert data\n", + "with open(csv_file_path, 'r') as f:\n", + " reader = csv.reader(f)\n", + " next(reader) # Skip the header row\n", + "\n", + " for row in reader:\n", + " # Access columns by index as per the provided structure\n", + " order_id = int(row[1]) # OrderID\n", + " customer_id = int(row[0]) # CID (Customer ID)\n", + "\n", + " # Correcting the order date to include time\n", + " order_date = datetime.strptime(row[4], \"%Y-%m-%dT%H:%M:%S\") # OrderDate with time\n", + "\n", + " quantity = int(row[5]) # Quantity\n", + "\n", + " # Handle optional date fields with time parsing\n", + " return_start_date = datetime.strptime(row[9], \"%Y-%m-%dT%H:%M:%S\") if row[9] else None # ReturnStartDate\n", + " return_received_date = datetime.strptime(row[10],\"%Y-%m-%dT%H:%M:%S\") if row[10] else None # ReturnReceivedDate\n", + " return_completed_date = datetime.strptime(row[11], \"%Y-%m-%dT%H:%M:%S\") if row[11] else None # ReturnCompletedDate\n", + "\n", + " # Clean product name\n", + " product_name = re.sub(r'[®™]', '', row[2]) # ProductName\n", + "\n", + " product_description = re.sub(r'[®™]', '', row[3])\n", + " # OrderAmount as float\n", + " order_amount = float(row[6].replace(',', ''))\n", + "\n", + " # Insert data into the database\n", + " cur.execute(\n", + " '''\n", + " INSERT INTO customer_data (\n", + " customer_id, order_id, product_name, product_description, order_date, quantity, order_amount,\n", + " order_status, return_status, return_start_date, return_received_date,\n", + " return_completed_date, return_reason, notes\n", + " ) VALUES (%s, %s, %s, %s, %s, %s, %s, %s, %s, %s, %s, %s, %s, %s)\n", + " ''',\n", + " (customer_id, order_id, product_name, product_description, order_date, quantity, order_amount,\n", + " row[7], # OrderStatus\n", + " row[8], # ReturnStatus\n", + " return_start_date, return_received_date, return_completed_date,\n", + " row[12], # ReturnReason\n", + " row[13]) # Notes\n", + " )\n", + "\n", + "# Commit the changes and close the connection\n", + "conn.commit()\n", + "cur.close()\n", + "conn.close()\n", + "\n", + "print(\"CSV Data imported successfully!\")" + ] + }, + { + "cell_type": "markdown", + "id": "83f6c850-4083-48d3-bc3a-0b517a440027", + "metadata": {}, + "source": [ + "#### Read the data to ensure it was written " + ] + }, + { + "cell_type": "code", + "execution_count": null, + "id": "4ab0d010-2250-4489-af04-88e24c1241fa", + "metadata": {}, + "outputs": [], + "source": [ + "import psycopg2\n", + "\n", + "# Database connection parameters\n", + "db_params = {\n", + " 'dbname': 'customer_data',\n", + " 'user': 'postgres',\n", + " 'password': 'password',\n", + " 'host': IPADDRESS, # e.g., 'localhost' or the IP address\n", + " 'port': '5432' # e.g., '5432'\n", + "}\n", + "\n", + "# Connect to the database\n", + "conn = psycopg2.connect(**db_params)\n", + "cur = conn.cursor()\n", + "\n", + "# Query to select the first 5 rows from the customer_data table\n", + "query = 'SELECT * FROM customer_data LIMIT 5;'\n", + "\n", + "# Execute the query\n", + "cur.execute(query)\n", + "\n", + "# Fetch the column headers\n", + "colnames = [desc[0] for desc in cur.description]\n", + "\n", + "# Fetch the first 5 rows\n", + "rows = cur.fetchall()\n", + "\n", + "# Print the headers and the corresponding rows\n", + "for i, row in enumerate(rows, start=1):\n", + " print(f\"\\nRow {i}:\")\n", + " for header, value in zip(colnames, row):\n", + " print(f\"{header}: {value}\")\n", + "\n", + "# Close the connection\n", + "cur.close()\n", + "conn.close()" + ] + }, + { + "cell_type": "markdown", + "id": "95ce05ca-d926-44a5-970d-9a5d95cffd1f", + "metadata": {}, + "source": [ + "#### (For reference)Drop the postgres table\n", + "\n", + "The cell is in raw format and does not execute. This code is for reference alone." + ] + }, + { + "cell_type": "raw", + "id": "08c07dfd-c056-44b3-aa3b-4e12114b1b10", + "metadata": { + "vscode": { + "languageId": "raw" + } + }, + "source": [ + "# pip install psycopg2-binary\n", + "import psycopg2\n", + "\n", + "# Database connection parameters\n", + "db_params = {\n", + " 'dbname': 'customer_data',\n", + " 'user': 'postgres',\n", + " 'password': 'password',\n", + " 'host': IPADDRESS, # e.g., 'localhost' or the IP address\n", + " 'port': '5432' # e.g., '5432'\n", + "}\n", + "\n", + "# Connect to the database\n", + "conn = psycopg2.connect(**db_params)\n", + "cur = conn.cursor()\n", + "\n", + "# Drop the table if it exists\n", + "drop_table_query = 'DROP TABLE IF EXISTS customer_data;'\n", + "\n", + "# Execute the drop query\n", + "cur.execute(drop_table_query)\n", + "\n", + "# Commit the changes and close the connection\n", + "conn.commit()\n", + "cur.close()\n", + "conn.close()\n", + "\n", + "print(\"Table 'customer_data' dropped successfully!\")" + ] + } + ], + "metadata": { + "kernelspec": { + "display_name": "Python 3 (ipykernel)", + "language": "python", + "name": "python3" + }, + "language_info": { + "codemirror_mode": { + "name": "ipython", + "version": 3 + }, + "file_extension": ".py", + "mimetype": "text/x-python", + "name": "python", + "nbconvert_exporter": "python", + "pygments_lexer": "ipython3", + "version": "3.12.3" + } + }, + "nbformat": 4, + "nbformat_minor": 5 +} diff --git a/notebooks/synthetic_data_generation.ipynb b/notebooks/synthetic_data_generation.ipynb new file mode 100644 index 0000000..2da3763 --- /dev/null +++ b/notebooks/synthetic_data_generation.ipynb @@ -0,0 +1,451 @@ +{ + "cells": [ + { + "cell_type": "markdown", + "id": "703125c0-7f27-4ef6-ada2-b433879b0c97", + "metadata": {}, + "source": [ + "# Synthetic Data Generation\n", + "## Description\n", + "\n", + "This notebook demonstrates how to use the nemotron-4-340b-instruct model for synthetic data generation that is used in this blueprint.\n", + "\n", + "This uses the nvidia gear store data as a source of product data.\n", + "\n", + "It then creates a sample customer set and then creates a realistic order history based on the nvidia gear store data.\n", + "\n", + "## Usage Instructions\n", + "1. Install the required libraries using pip.\n", + "2. Run each cell sequentially to execute the notebook." + ] + }, + { + "cell_type": "markdown", + "id": "7edd1357-a874-4348-a34d-614fa344a2bf", + "metadata": {}, + "source": [ + "### Install requirements" + ] + }, + { + "cell_type": "code", + "execution_count": null, + "id": "f93e604a-04e6-4800-8a80-4b68c1491575", + "metadata": {}, + "outputs": [], + "source": [ + "## Install requirements\n", + "!pip install pandas\n", + "!pip install --upgrade --quiet langchain-nvidia-ai-endpoints\n", + "!pip install langchain" + ] + }, + { + "cell_type": "markdown", + "id": "5b899a94-f4d5-414d-9b5d-3422c85d5a5f", + "metadata": {}, + "source": [ + "### Set the NVIDIA API Key \n", + "\n", + "The nemotron-4-340b-instruct model is accessed from the NVIDIA API Catalog. In order to access it, you need to set a valid API Key." + ] + }, + { + "cell_type": "code", + "execution_count": null, + "id": "d6db9484-2b47-45c8-92b3-235ebb2ed1d6", + "metadata": {}, + "outputs": [], + "source": [ + "import getpass\n", + "import os\n", + "if not os.environ.get(\"NVIDIA_API_KEY\", \"\").startswith(\"nvapi-\"):\n", + " nvidia_api_key = getpass.getpass(\"Enter your NVIDIA API key: \")\n", + " assert nvidia_api_key.startswith(\"nvapi-\"), f\"{nvidia_api_key[:5]}... is not a valid key\"\n", + " os.environ[\"NVIDIA_API_KEY\"] = nvidia_api_key" + ] + }, + { + "cell_type": "markdown", + "id": "cedc2be6-4a0f-4851-9bf5-14a100372203", + "metadata": {}, + "source": [ + "## Re-usable functions\n", + "\n", + "This function is used to generated the data. Data returned is in the form of a json object." + ] + }, + { + "cell_type": "code", + "execution_count": null, + "id": "36854645-32f9-438b-b499-5c79461694e6", + "metadata": {}, + "outputs": [], + "source": [ + "def get_do_task(llm, template, input_variables=[], input_values={}):\n", + " from langchain_core.output_parsers import JsonOutputParser \n", + " parser = JsonOutputParser()\n", + " task_template = PromptTemplate(\n", + " input_variables=input_variables,\n", + " template=template\n", + " )\n", + " synthetic_data_chain = task_template | llm | parser \n", + " response = synthetic_data_chain.invoke(input_values)\n", + " return response" + ] + }, + { + "cell_type": "code", + "execution_count": null, + "id": "05310e58-a60b-495d-b803-59ceefee1a83", + "metadata": {}, + "outputs": [], + "source": [ + "import random\n", + "\n", + "unique_numbers = set()\n", + "def get_random_number(low, high):\n", + " # Loop until we have a certain number of unique random numbers\n", + " while True:\n", + " random_number = random.randint(low, high)\n", + " if random_number not in unique_numbers:\n", + " unique_numbers.add(random_number)\n", + " break\n", + " return random_number" + ] + }, + { + "cell_type": "code", + "execution_count": null, + "id": "c02965cf-60d0-4f22-aed3-79d593b1598a", + "metadata": {}, + "outputs": [], + "source": [ + "import pandas as pd\n", + "import random\n", + "import getpass\n", + "import os\n", + "import langchain\n", + "from langchain.prompts import PromptTemplate\n", + "\n", + "from langchain_nvidia_ai_endpoints import ChatNVIDIA\n", + "llm = ChatNVIDIA(model=\"nvidia/nemotron-4-340b-instruct\", temperature=1.0, max_tokens=2048)" + ] + }, + { + "cell_type": "markdown", + "id": "a1e7e41c-0f55-49b6-a65e-e928cd7c4e14", + "metadata": {}, + "source": [ + "## Variables" + ] + }, + { + "cell_type": "code", + "execution_count": null, + "id": "6504ee7f-8408-475c-aad2-f264efe8a1bf", + "metadata": {}, + "outputs": [], + "source": [ + "CUSTOMER_FILENAME=\"./customers.csv\"\n", + "PRODUCT_FILENAME=\"../data/gear-store.csv\"\n", + "ORDERHISTORY_FILENAME=\"./orders.csv\"" + ] + }, + { + "cell_type": "markdown", + "id": "13b529b2-cee0-4339-a09d-a97b50639a6c", + "metadata": {}, + "source": [ + "## Customer Profile Generation" + ] + }, + { + "cell_type": "code", + "execution_count": null, + "id": "f5e779ba-a00f-4c48-aa57-610a84c2b2a0", + "metadata": {}, + "outputs": [], + "source": [ + "customer_template = '''\n", + "Create 10 rows of data representing a customer in a database.\n", + "The customer table has the following schema. \n", + "\n", + " 'FNAME': This is the customer's first name, \n", + " 'LNAME': This is the customer's last name,\n", + " 'AGE': age,\n", + " 'GENDER': gender. this should me male or female,\n", + " 'STATE': state in united states\n", + " 'ZIPCODE': zipcode and this should be present in the state mentioned above,\n", + " 'INTERESTS': this is any 2-3 interests \n", + " 'MEMBER_SINCE': This is a date between 1st Jaunary 2015 and 30th June 2024\n", + "\n", + "\n", + "Ensure the first name and last names are unique pairs in the dataset created.\n", + "Return the data in the form of json array of customer rows.\n", + "Do not include any niceties. \n", + "Do you not add any more attributes.\n", + "Return the data in the form of a json array that be loaded into a python variable with json.loads(..). Do not have the \"json\" work in the returned string\n", + "'''\n", + "customers = get_do_task(llm, customer_template,input_variables=[], input_values={})" + ] + }, + { + "cell_type": "code", + "execution_count": null, + "id": "8b0f362f-90c5-41e6-ba1e-8cd27cc34467", + "metadata": {}, + "outputs": [], + "source": [ + "import json\n", + "import csv\n", + "# Specify the CSV file name\n", + "csv_file = CUSTOMER_FILENAME\n", + "# Initialize an empty set to store unique random numbers\n", + "unique_numbers = set()\n", + "\n", + "for customer in customers:\n", + " for key, value in customer.items():\n", + " if isinstance(value, str):\n", + " customer[key] = value.strip()\n", + " elif isinstance(value, list):\n", + " customer[key] = ', '.join(value).strip()\n", + " customer['CID'] = get_random_number(100,10000)\n", + "\n", + "fieldnames = ['CID'] + [key for key in customers[0].keys() if key != 'CID']\n", + " \n", + "# Write the data to a CSV file\n", + "with open(csv_file, mode='w', newline='') as file:\n", + " writer = csv.DictWriter(file, fieldnames=fieldnames)\n", + " writer.writeheader() # Write the header row\n", + " for customer in customers:\n", + " writer.writerow(customer)\n", + "\n", + "print(f\"Data successfully written to {csv_file}\")" + ] + }, + { + "cell_type": "markdown", + "id": "cfa1997b-7238-46fe-a00d-2fe1440a1315", + "metadata": {}, + "source": [ + "## Order History Generation" + ] + }, + { + "cell_type": "code", + "execution_count": null, + "id": "ced66b69-c5d3-4d5e-9c27-378544484a00", + "metadata": {}, + "outputs": [], + "source": [ + "# Create the data frames \n", + "# 1. Electronics \n", + "# 2. Other stuff\n", + "# 3. Ensure you don't use the gift card \n", + "\n", + "import pandas as pd\n", + "\n", + "# Load the CSV file\n", + "file_path = PRODUCT_FILENAME\n", + "df = pd.read_csv(file_path)\n", + "\n", + "# Filter out any products that contain the word \"Gift card\" in the name column\n", + "df_filtered = df[~df['name'].str.contains('Gift card', case=False, na=False)]\n", + "\n", + "# First DataFrame: NVIDIA Electronics category (excluding gift cards)\n", + "df_nvidia_electronics = df_filtered[df_filtered['category'] == 'NVIDIA Electronics'][['name', 'description', 'price']]\n", + "\n", + "# Second DataFrame: All other categories (excluding gift cards)\n", + "df_other = df_filtered[df_filtered['category'] != 'NVIDIA Electronics'][['name', 'description', 'price']]\n", + "\n", + "# Display both DataFrames\n", + "print(\"NVIDIA Electronics DataFrame:\")\n", + "print(df_nvidia_electronics)\n", + "\n", + "print(\"\\nOther Categories DataFrame:\")\n", + "print(df_other)\n", + "\n", + "NUM_ELECTRONIC_PRODUCTS = len(df_nvidia_electronics)\n", + "NUM_OTHER_PRODUCTS = len(df_other)" + ] + }, + { + "cell_type": "code", + "execution_count": null, + "id": "2c6e4a4f-6986-4a01-bf80-307289a4c7ce", + "metadata": {}, + "outputs": [], + "source": [ + "order_template = '''\n", + " You will be given information regarding 10 products in an array where each array element contains the \n", + " product name, product description and product price. You will also be given the current date. Use these things to do the following:\n", + " \n", + " You will need to create an order history table containing 10 rows of data representing\n", + " where each row maps to one of the 10 products you were given.\n", + " Make the data interesting i.e. don't usually stick to delivered but do returns and return rejects \n", + " Return the data in the form of json object\n", + " Do not include any niceties. \n", + " Do you not add any more attributes.\n", + " Return the data in the form of a json array that be loaded into a python variable with json.loads(..).\n", + " Do not have the word \"json\" in the returned string\n", + " \n", + " You will be given the product description to use in the creation of the ReturnReason. \n", + " \n", + " Product Description: {product_desc}\n", + " Current Date: {current_date}\n", + " \n", + " This schema of the data is presented like this:- \n", + " \n", + " product_name STRING \"Product name\"\n", + " product_description STRING \"Product description\"\n", + " OrderDate DATETIME \"Date and time when the order was placed\"\n", + " Quantity INT \"Number of units ordered\" \n", + " OrderAmount INT \"Product Price X Quantity\"\n", + " OrderStatus\tVARCHAR(50)\t\"Status of the order\" \n", + " ReturnStatus\tVARCHAR(50)\t\"Status of the return\" \n", + " ReturnStartDate\tDATETIME \"Date when the return was started\" \n", + " ReturnReceivedDate DATETIME\t\"Date when the return was receive\" \n", + " ReturnCompletedDate\tDATETIME \"Date when the return was completed\" \n", + " ReturnReason VARCHAR(255) \"Reason for the return\" \n", + " Notes VARCHAR(255) \"Notes sent to the customer\" \n", + " \n", + " Instructions to set the various attributes:\n", + " * Keep the current date in mind when generating the data.\n", + " * product_name: This should match the product name from the input that this record is generated for.\n", + " * product_description: This should match the product description input that this record is generated for.\n", + " * OrderDate: This should be a date between October 1st 2024 and October 20th 2024. \n", + " * Quantity: This should be a number between 1 and 8\n", + " * OrderAmount: This is a multiple of the Quantity and the Product price in the input. \n", + " * OrderStatus: This should be one these values [Pending, Processing, Shipped, In Transit, Out for Delivery, Delivered, Cancelled, Returned, Return Requested, Delayed, On Hold].\n", + " * ReturnStatus: This should be set to one of these values [None, Requested, Approved, Rejected, Received, Processing, Refunded, Pending Approval, Return to Sender, Awaiting Customer Action]\n", + " This should be set ONLY when OrderStatus is set to either \"Returned\" or \"Return Requested\" else set to None\n", + " \n", + " * ReturnStartDate: This is set only when the OrderStatus is \"Return Requested\". It should be a date should be within 7 days after the OrderDate but before the \"current date\" else set to None.\n", + " * ReturnReceivedDate: This should be set to a date within 5 days after the ReturnStartDate else set to None\n", + " * ReturnCompletedDate: This should be a date when the return was completed and set only when the OrderStatus field is set to \"Returned\" and ReturnStatus field set to \"Approved\".\n", + " This should be a minimum of 15 and 30 days after the ReturnReceivedDate else set to None\n", + " * ReturnReason: This should be set to a creative reason that would make logical sense based on the product description only when the OrderStatus is set to \"Returned\" or \"Return Requested\"\n", + " This should be set to something when the ReturnStatus is not None. \n", + " * Notes: This is information sent back to the customer. This should be something that is relevant and makes sense for the \n", + " product when the ReturnStatus is set to \"Rejected\". It can also be used to put notes if the order has been in processing state for longer than usual.\n", + " \n", + " \n", + " In the returned string:-\n", + " Do not include any niceties. \n", + " Do you not add any more attributes.\n", + " Return the data in the form of a json array that be loaded into a python variable with json.loads(..). Do not have the word \"json\" in the returned string\n", + " '''" + ] + }, + { + "cell_type": "code", + "execution_count": null, + "id": "7c45ce1b-cdaa-4d53-a224-75e4cdd4fd05", + "metadata": {}, + "outputs": [], + "source": [ + "# Create a table of 10 products with 7 products being technical and 3 products being \"other\"\n", + "#NUM_ELECTRONIC_PRODUCTS = len(df_nvidia_electronics)\n", + "#NUM_OTHER_PRODUCTS = len(df_other)\n", + "def get_random_products():\n", + " import pandas as pd\n", + " # Randomly pick 7 rows from the DataFrame and select only the name and description columns\n", + " random_rows = df_nvidia_electronics.sample(n=7)[['name', 'description', 'price']]\n", + " # Convert the selected DataFrame rows to a regular array (list of lists)\n", + " random_rows_json = random_rows.to_dict(orient='records')\n", + " # Display the array \n", + " product_rows = random_rows_json \n", + " random_rows = df_other.sample(n=3)[['name', 'description', 'price']]\n", + " # Convert the selected DataFrame rows to a regular array (list of lists)\n", + " random_rows_json = random_rows.to_dict(orient='records')\n", + " # Display the array\n", + " product_rows.append(random_rows_json)\n", + " return product_rows" + ] + }, + { + "cell_type": "code", + "execution_count": null, + "id": "1110edbe-3b5d-4309-8951-99313a708a72", + "metadata": {}, + "outputs": [], + "source": [ + "\n", + "# Delete the order history file if it exists\n", + "import os\n", + "file_path = ORDERHISTORY_FILENAME\n", + "\n", + "# Check if the file exists and delete it\n", + "if os.path.exists(file_path):\n", + " os.remove(file_path)\n", + " print(f\"File '{file_path}' has been deleted.\")\n", + "else:\n", + " print(f\"File '{file_path}' does not exist.\")\n", + "\n", + "# Now read the customer data file one row at a time\n", + "import pandas as pd\n", + "\n", + "# Load the CSV file\n", + "file_path = CUSTOMER_FILENAME\n", + "dfcustomer = pd.read_csv(file_path)\n", + "\n", + "# Initialize an empty set to store unique random numbers\n", + "unique_numbers = set()\n", + "\n", + "# Loop over each row in the DataFrame\n", + "for index, row in dfcustomer.iterrows():\n", + " random_prod_list = get_random_products()\n", + " print(row['CID'])\n", + "\n", + " order_history = get_do_task(llm, order_template, input_variables = ['product_desc', 'current_date'], \n", + " input_values = {'product_desc': random_prod_list, 'current_date': \"23rd October 2024\"})\n", + " df = pd.DataFrame(order_history)\n", + "\n", + " # Add the Customer ID (CID) as a new column\n", + " df['CID'] = row['CID']\n", + " for index, row in df.iterrows():\n", + " df.at[index, 'OrderID'] = int(get_random_number(10,100000))\n", + " df['OrderID'] = df['OrderID'].astype(int)\n", + "\n", + " # Reorder columns to ensure 'CustomerID' is the first column\n", + " columns = ['CID', 'OrderID'] + [col for col in df.columns if col not in ['CID', 'OrderID']]\n", + " df = df[columns]\n", + " # Append DataFrame to CSV file\n", + " df.to_csv(ORDERHISTORY_FILENAME, mode='a', index=False, header=not pd.io.common.file_exists(ORDERHISTORY_FILENAME))\n", + " " + ] + }, + { + "cell_type": "markdown", + "id": "6ecad68e-a75d-4de1-b85e-3f21c90eaf11", + "metadata": {}, + "source": [ + "#### Copy over the csv files to the \"data\" folder\n", + "\n", + "If you are satisfied with the csv files generated, copy them over to the data folder for ingestion." + ] + } + ], + "metadata": { + "kernelspec": { + "display_name": "Python 3 (ipykernel)", + "language": "python", + "name": "python3" + }, + "language_info": { + "codemirror_mode": { + "name": "ipython", + "version": 3 + }, + "file_extension": ".py", + "mimetype": "text/x-python", + "name": "python", + "nbconvert_exporter": "python", + "pygments_lexer": "ipython3", + "version": "3.12.3" + } + }, + "nbformat": 4, + "nbformat_minor": 5 +} diff --git a/src/agent/Dockerfile b/src/agent/Dockerfile new file mode 100644 index 0000000..4963005 --- /dev/null +++ b/src/agent/Dockerfile @@ -0,0 +1,47 @@ +ARG BASE_IMAGE_URL=nvcr.io/nvidia/base/ubuntu +ARG BASE_IMAGE_TAG=22.04_20240212 + +FROM ${BASE_IMAGE_URL}:${BASE_IMAGE_TAG} + +ENV PYTHONDONTWRITEBYTECODE=1 +ENV DEBIAN_FRONTEND noninteractive + +# Install required ubuntu packages for setting up python 3.10 +RUN apt update && \ + apt install -y curl software-properties-common && \ + add-apt-repository ppa:deadsnakes/ppa && \ + apt update && apt install -y python3.10 && \ + apt-get clean + +# Install pip for python3.10 +RUN curl -sS https://bootstrap.pypa.io/get-pip.py | python3.10 + +RUN rm -rf /var/lib/apt/lists/* + +# Uninstall build packages +RUN apt autoremove -y curl software-properties-common + +# Download the sources of apt packages within the container for standard legal compliance +RUN sed -i 's/# deb-src/deb-src/g' /etc/apt/sources.list +RUN apt update +# xz-utils is needed to pull the source and unpack them correctly +RUN apt install xz-utils -y +RUN mkdir -p /legal/source +WORKDIR /legal/source +# Read installed packages, strip all but the package names, pipe to 'apt source' to download respective packages +RUN apt list --installed | grep -i installed | sed 's|\(.*\)/.*|\1|' | xargs apt source --download-only +# The source is saved in directories as well as tarballs in the current dir +RUN rm xz-utils* +COPY LICENSE-3rd-party.txt /legal/ + +RUN --mount=type=bind,source=src/agent/requirements.txt,target=/opt/agent/requirements.txt \ + pip3 install --no-cache-dir -r /opt/agent/requirements.txt + +# Install common dependencies and copy common code +COPY src/common /opt/src/common + +# Copy and Install agent specific modules +COPY src/agent /opt/src/agent + +WORKDIR /opt +ENTRYPOINT ["uvicorn", "src.agent.server:app"] diff --git a/src/agent/cache/__init__.py b/src/agent/cache/__init__.py new file mode 100644 index 0000000..d50bcc4 --- /dev/null +++ b/src/agent/cache/__init__.py @@ -0,0 +1,14 @@ +# SPDX-FileCopyrightText: Copyright (c) 2024 NVIDIA CORPORATION & AFFILIATES. All rights reserved. +# SPDX-License-Identifier: Apache-2.0 +# +# Licensed under the Apache License, Version 2.0 (the "License"); +# you may not use this file except in compliance with the License. +# You may obtain a copy of the License at +# +# http://www.apache.org/licenses/LICENSE-2.0 +# +# Unless required by applicable law or agreed to in writing, software +# distributed under the License is distributed on an "AS IS" BASIS, +# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +# See the License for the specific language governing permissions and +# limitations under the License. \ No newline at end of file diff --git a/src/agent/cache/local_cache.py b/src/agent/cache/local_cache.py new file mode 100644 index 0000000..e93b063 --- /dev/null +++ b/src/agent/cache/local_cache.py @@ -0,0 +1,108 @@ +# SPDX-FileCopyrightText: Copyright (c) 2024 NVIDIA CORPORATION & AFFILIATES. All rights reserved. +# SPDX-License-Identifier: Apache-2.0 +# +# Licensed under the Apache License, Version 2.0 (the "License"); +# you may not use this file except in compliance with the License. +# You may obtain a copy of the License at +# +# http://www.apache.org/licenses/LICENSE-2.0 +# +# Unless required by applicable law or agreed to in writing, software +# distributed under the License is distributed on an "AS IS" BASIS, +# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +# See the License for the specific language governing permissions and +# limitations under the License. + +""" +Manager conversation history return relavant conversation history +based on session_id using python dict +""" + +from typing import List, Optional, Dict +import time + +class LocalCache: + # Maintain conversation history session_id: List[] + conversation_hist = {} + + # TODO: Create API to get last k conversation from database instead of returning everything + def get_conversation(self, session_id: str) -> List: + return self.conversation_hist.get(session_id, {}).get("conversation_hist", []) + + + def get_k_conversation(self, session_id: str, k_turn: Optional[int] = None) -> List: + if not k_turn: + return self.conversation_hist.get(session_id, {}).get("conversation_hist", []) + return self.conversation_hist.get(session_id, {}).get("conversation_hist", [])[-k_turn:] + + + def save_conversation(self, session_id: str, user_id: Optional[str], conversation: List) -> bool: + try: + self.conversation_hist[session_id] = { + "user_id": user_id or "", + "conversation_hist": self.conversation_hist.get(session_id, {}).get("conversation_hist", []) + conversation, + "last_conversation_time": f"{time.time()}" + } + return True + except Exception as e: + print(f"Failed to save conversation due to exception {e}") + return False + + + def is_session(self, session_id: str) -> bool: + """Check if session_id already exist in database""" + return session_id in self.conversation_hist + + + def get_session_info(self, session_id: str) -> Dict: + """Retrieve complete session information from database""" + return self.conversation_hist.get(session_id, {}) + + + def response_feedback(self, session_id: str, response_feedback: float) -> bool: + try: + session = self.conversation_hist.get(session_id, {}) + conversation_hist = session.get("conversation_hist", []) + + if not conversation_hist: + print(f"No conversation history found for session {session_id}") + return False + + conversation_hist[-1]["feedback"] = response_feedback + return True + except KeyError as e: + print(f"KeyError: Unable to store user feedback. Missing key: {e}") + return False + except IndexError: + print(f"IndexError: Conversation history is empty for session {session_id}") + return False + except Exception as e: + print(f"Unexpected error while storing user feedback: {e}") + return False + + + def delete_conversation(self, session_id: str) -> bool: + """Delete conversation for given session id""" + if session_id in self.conversation_hist: + del self.conversation_hist[session_id] + print(f"Deleted conversation history for session ID: {session_id}") + return True + else: + print(f"No conversation history found for session ID: {session_id}") + return False + + + def create_session(self, session_id: str, user_id: str = ""): + """Create a entry for given session id""" + try: + # user_id is placeholder for now + # when create_session accept user_Id utilize this + self.conversation_hist[session_id] = { + "user_id": user_id or "", + "conversation_hist": [], + "last_conversation_time": f"{time.time()}" + } + return True + except Exception as e: + print(f"Failed to create session due to exception {e}") + return False \ No newline at end of file diff --git a/src/agent/cache/redis_client.py b/src/agent/cache/redis_client.py new file mode 100644 index 0000000..2c74afb --- /dev/null +++ b/src/agent/cache/redis_client.py @@ -0,0 +1,193 @@ +# SPDX-FileCopyrightText: Copyright (c) 2024 NVIDIA CORPORATION & AFFILIATES. All rights reserved. +# SPDX-License-Identifier: Apache-2.0 +# +# Licensed under the Apache License, Version 2.0 (the "License"); +# you may not use this file except in compliance with the License. +# You may obtain a copy of the License at +# +# http://www.apache.org/licenses/LICENSE-2.0 +# +# Unless required by applicable law or agreed to in writing, software +# distributed under the License is distributed on an "AS IS" BASIS, +# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +# See the License for the specific language governing permissions and +# limitations under the License. + +""" +Manager conversation history return relavant conversation history +based on session_id using redis +""" + +from typing import List, Optional, Dict +import os +import redis +import json +import time + +from src.common.utils import get_config + +DEFAULT_DB = "0" +class RedisClient: + def __init__(self) -> None: + + + # TODO: Enable config to pass any additional config information + # Like db etc. + # config = eval(get_config().cache.config) + # print("Config extracted: ", config, type(config)) + + # convert hours into second as redis takes expiry time in seconds + self.expiry = int(os.getenv("REDIS_SESSION_EXPIRY", 12)) * 60 * 60 + print(f"Redis Cache expiry {self.expiry} seconds") + host, port = get_config().cache.url.split(":") + # db = config.get("db", None) or DEFAULT_DB + print(f"Host: {host}, Port: {port}, DB: {DEFAULT_DB}") + self.redis_client = redis.Redis(host=host, port=port, db=DEFAULT_DB, decode_responses=True) + + + def get_conversation(self, session_id: str) -> List: + """Retrieve the entire conversation history from Redis as a list""" + + conversation_hist = self.redis_client.lrange(f"{session_id}:conversation_hist", 0, -1) + return [json.loads(conv) for conv in conversation_hist] + + def get_k_conversation(self, session_id: str, k_turn: Optional[int] = None) -> List: + """Retrieve the last k conversations from Redis""" + + # TODO: Evaluate this implementation + if k_turn is None: + k_turn = -1 + conversation_hist = self.redis_client.lrange(f"{session_id}:conversation_hist", -k_turn, -1) + return [json.loads(conv) for conv in conversation_hist] + + def save_conversation(self, session_id: str, user_id: Optional[str], conversation: List) -> bool: + try: + # Store each conversation entry as a JSON string in a Redis list + for conv in conversation: + self.redis_client.rpush(f"{session_id}:conversation_hist", json.dumps(conv)) + self.redis_client.expire(f"{session_id}:conversation_hist", self.expiry) + + + # Store user_id and last conversation time as separate keys + if user_id: + self.redis_client.set(f"{session_id}:user_id", user_id, ex=self.expiry) + + # Store start conversation time only if it doesn't exist + start_time_key = f"{session_id}:start_conversation_time" + if not self.redis_client.exists(start_time_key): + self.redis_client.set(start_time_key, f"{conversation[0].get('timestamp')}", ex=self.expiry) + + self.redis_client.set(f"{session_id}:last_conversation_time", f"{conversation[-1].get('timestamp')}", ex=self.expiry) + + start_time_key = f"{session_id}:start_conversation_time" + if not self.redis_client.exists(start_time_key): + self.redis_client.expire(start_time_key, self.expiry) + + return True + except Exception as e: + print(f"Failed to ingest document due to exception {e}") + return False + + + def is_session(self, session_id: str) -> bool: + """Check if session_id already exist in cache""" + return self.redis_client.exists(f"{session_id}:start_conversation_time") + + + def get_session_info(self, session_id: str) -> Dict: + """Retrieve complete session information from cache""" + + resp = {} + conversation_hist = self.redis_client.lrange(f"{session_id}:conversation_hist", 0, -1) + resp["conversation_hist"] = [json.loads(conv) for conv in conversation_hist] + resp["user_id"] = self.redis_client.get(f"{session_id}:user_id") + resp["last_conversation_time"] = self.redis_client.get(f"{session_id}:last_conversation_time") + resp["start_conversation_time"] = self.redis_client.get(f"{session_id}:start_conversation_time") + + return resp + + + def response_feedback(self, session_id: str, response_feedback: float) -> bool: + try: + # Get the key for the conversation history + conv_key = f"{session_id}:conversation_hist" + + # Check if the conversation history exists + if not self.redis_client.exists(conv_key): + print(f"No conversation history found for session {session_id}") + return False + + # Get the last conversation entry + last_conv = self.redis_client.lindex(conv_key, -1) + if not last_conv: + print(f"Conversation history is empty for session {session_id}") + return False + + # Parse the last conversation, add feedback, and update in Redis + conv_data = json.loads(last_conv) + conv_data['feedback'] = response_feedback + updated_conv = json.dumps(conv_data) + + # Replace the last entry with the updated one + self.redis_client.lset(conv_key, -1, updated_conv) + + return True + + except ValueError as e: + print(f"ValueError: {str(e)}") + return False + except json.JSONDecodeError: + print(f"JSONDecodeError: Unable to parse conversation data for session {session_id}") + return False + except redis.RedisError as e: + print(f"RedisError: {str(e)}") + return False + except Exception as e: + print(f"Unexpected error while storing user feedback: {str(e)}") + return False + + + def delete_conversation(self, session_id: str) -> bool: + """Delete conversation for the given session id""" + try: + # Define the keys to delete + keys_to_delete = [ + f"{session_id}:conversation_hist", + f"{session_id}:user_id", + f"{session_id}:last_conversation_time", + f"{session_id}:start_conversation_time" + ] + + # Use pipeline to delete keys, checking if they exist + pipeline = self.redis_client.pipeline() + for key in keys_to_delete: + # Only delete if the key exists + if self.redis_client.exists(key): + pipeline.delete(key) + + pipeline.execute() + + + print(f"Deleted conversation history and associated data for session ID: {session_id}") + return True + + except redis.RedisError as e: + print(f"RedisError: Unable to delete conversation for session {session_id}. Error: {str(e)}") + return False + except Exception as e: + print(f"Unexpected error while deleting conversation: {str(e)}") + return False + + + def create_session(self, session_id: str, user_id: str = ""): + """Create a entry for given session id""" + try: + # Store start conversation time only if it doesn't exist + start_time_key = f"{session_id}:start_conversation_time" + if not self.redis_client.exists(start_time_key): + self.redis_client.set(start_time_key, f"{time.time()}", ex=self.expiry) + + return True + except Exception as e: + print(f"Failed to ingest document due to exception {e}") + return False \ No newline at end of file diff --git a/src/agent/cache/session_manager.py b/src/agent/cache/session_manager.py new file mode 100644 index 0000000..5212821 --- /dev/null +++ b/src/agent/cache/session_manager.py @@ -0,0 +1,75 @@ +# SPDX-FileCopyrightText: Copyright (c) 2024 NVIDIA CORPORATION & AFFILIATES. All rights reserved. +# SPDX-License-Identifier: Apache-2.0 +# +# Licensed under the Apache License, Version 2.0 (the "License"); +# you may not use this file except in compliance with the License. +# You may obtain a copy of the License at +# +# http://www.apache.org/licenses/LICENSE-2.0 +# +# Unless required by applicable law or agreed to in writing, software +# distributed under the License is distributed on an "AS IS" BASIS, +# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +# See the License for the specific language governing permissions and +# limitations under the License. + +""" +Manager conversation history return relavant conversation history +based on session_id +""" + +from typing import List, Optional, Dict + +from src.common.utils import get_config +from src.agent.cache.local_cache import LocalCache +from src.agent.cache.redis_client import RedisClient + +class SessionManager: + """ + Store the conversation between user and assistant, it's stored in format + {"session_id": {"user_id": "", "conversation_hist": [{"role": "user/assistant", "content": "", "timestamp": ""}], "last_conversation_time: ""}} + """ + def __init__(self, *args, **kwargs) -> None: + db_name = get_config().cache.name + if db_name == "redis": + print("Using Redis client for user history") + self.memory = RedisClient() + elif db_name == "inmemory": + print("Using python dict for user history") + self.memory = LocalCache() + else: + raise ValueError(f"{db_name} in not supported. Supported type redis, inmemory") + + + # TODO: Create API to get last k conversation from database instead of returning everything + def get_conversation(self, session_id: str) -> List: + return self.memory.get_conversation(session_id) + + + def get_k_conversation(self, session_id: str, k_turn: Optional[int] = None) -> List: + return self.memory.get_k_conversation(session_id, k_turn) + + + def save_conversation(self, session_id: str, user_id: Optional[str], conversation: List) -> bool: + return self.memory.save_conversation(session_id, user_id, conversation) + + + def is_session(self, session_id: str) -> bool: + """Check if session_id already exist in database""" + return self.memory.is_session(session_id) + + + def get_session_info(self, session_id: str) -> Dict: + """Retrieve complete session information from database""" + return self.memory.get_session_info(session_id) + + def response_feedback(self, session_id: str, response_feedback: float) -> bool: + return self.memory.response_feedback(session_id, response_feedback) + + def delete_conversation(self, session_id: str): + """Delete conversation for given session id""" + return self.memory.delete_conversation(session_id) + + def create_session(self, session_id: str, user_id: str = ""): + """Create a entry for given session id""" + return self.memory.create_session(session_id, user_id) \ No newline at end of file diff --git a/src/agent/datastore/__init__.py b/src/agent/datastore/__init__.py new file mode 100644 index 0000000..d50bcc4 --- /dev/null +++ b/src/agent/datastore/__init__.py @@ -0,0 +1,14 @@ +# SPDX-FileCopyrightText: Copyright (c) 2024 NVIDIA CORPORATION & AFFILIATES. All rights reserved. +# SPDX-License-Identifier: Apache-2.0 +# +# Licensed under the Apache License, Version 2.0 (the "License"); +# you may not use this file except in compliance with the License. +# You may obtain a copy of the License at +# +# http://www.apache.org/licenses/LICENSE-2.0 +# +# Unless required by applicable law or agreed to in writing, software +# distributed under the License is distributed on an "AS IS" BASIS, +# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +# See the License for the specific language governing permissions and +# limitations under the License. \ No newline at end of file diff --git a/src/agent/datastore/datastore.py b/src/agent/datastore/datastore.py new file mode 100644 index 0000000..c3944d8 --- /dev/null +++ b/src/agent/datastore/datastore.py @@ -0,0 +1,53 @@ +# SPDX-FileCopyrightText: Copyright (c) 2024 NVIDIA CORPORATION & AFFILIATES. All rights reserved. +# SPDX-License-Identifier: Apache-2.0 +# +# Licensed under the Apache License, Version 2.0 (the "License"); +# you may not use this file except in compliance with the License. +# You may obtain a copy of the License at +# +# http://www.apache.org/licenses/LICENSE-2.0 +# +# Unless required by applicable law or agreed to in writing, software +# distributed under the License is distributed on an "AS IS" BASIS, +# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +# See the License for the specific language governing permissions and +# limitations under the License. + +""" +Baes class to store the user conversation in database permanently +""" + +from typing import List, Optional +from datetime import datetime + +from src.common.utils import get_config +from src.agent.datastore.postgres_client import PostgresClient +# from src.agent.datastore.redis_client import RedisClient + + +class Datastore: + def __init__(self): + db_name = get_config().database.name + if db_name == "postgres": + print("Using postgres to store conversation history") + self.database = PostgresClient() + # elif db_name == "redis": + # print("Using Redis to store conversation history") + # self.database = RedisClient() + else: + raise ValueError(f"{db_name} database in not supported. Supported type postgres") + + def store_conversation(self, session_id: str, user_id: Optional[str], conversation_history: list, last_conversation_time: str, start_conversation_time: str): + """store conversation for given details""" + self.database.store_conversation(session_id, user_id, conversation_history, last_conversation_time, start_conversation_time) + + def fetch_conversation(self, session_id: str): + """fetch conversation for given session id""" + self.database.fetch_conversation(session_id) + + def delete_conversation(self, session_id: str): + """Delete conversation for given session id""" + self.database.delete_conversation(session_id) + + def is_session(self, session_id: str) -> bool: + return self.database.is_session(session_id) \ No newline at end of file diff --git a/src/agent/datastore/postgres_client.py b/src/agent/datastore/postgres_client.py new file mode 100644 index 0000000..eb2ecf6 --- /dev/null +++ b/src/agent/datastore/postgres_client.py @@ -0,0 +1,120 @@ +# SPDX-FileCopyrightText: Copyright (c) 2024 NVIDIA CORPORATION & AFFILIATES. All rights reserved. +# SPDX-License-Identifier: Apache-2.0 +# +# Licensed under the Apache License, Version 2.0 (the "License"); +# you may not use this file except in compliance with the License. +# You may obtain a copy of the License at +# +# http://www.apache.org/licenses/LICENSE-2.0 +# +# Unless required by applicable law or agreed to in writing, software +# distributed under the License is distributed on an "AS IS" BASIS, +# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +# See the License for the specific language governing permissions and +# limitations under the License. + +""" +Manager conversation history return relavant conversation history +based on session_id using postgres database +""" + +from typing import Optional +from sqlalchemy import create_engine, Column, String, DateTime, JSON +from sqlalchemy.ext.declarative import declarative_base +from sqlalchemy.orm import sessionmaker +from datetime import datetime +import json +import os + +from src.common.utils import get_config + +# TODO: Move this config to __init__ method +db_user = os.environ.get("POSTGRES_USER") +db_password = os.environ.get("POSTGRES_PASSWORD") +db_name = os.environ.get("POSTGRES_DB") + +settings = get_config() +# Postgres connection URL +DATABASE_URL = f"postgresql://{db_user}:{db_password}@{settings.database.url}/{db_name}?sslmode=disable" + +Base = declarative_base() +engine = create_engine(DATABASE_URL) +Session = sessionmaker(bind=engine) + +class ConversationHistory(Base): + __tablename__ = 'conversation_history' + + session_id = Column(String, primary_key=True) + user_id = Column(String, nullable=True) + last_conversation_time = Column(DateTime) + start_conversation_time = Column(DateTime) + conversation_data = Column(JSON) + +class PostgresClient: + def __init__(self): + self.engine = engine + Base.metadata.create_all(self.engine) + + def store_conversation(self, session_id: str, user_id: Optional[str], conversation_history: list, last_conversation_time: str, start_conversation_time: str): + session = Session() + try: + # Store last_conversation_time and start_conversation_time in datetime format for easy filtering + conversation = ConversationHistory( + session_id=session_id, + user_id=user_id if user_id else None, + last_conversation_time=datetime.fromtimestamp(float(last_conversation_time)), + start_conversation_time=datetime.fromtimestamp(float(start_conversation_time)), + conversation_data=json.dumps(conversation_history) + ) + session.merge(conversation) + session.commit() + except Exception as e: + print(f"Error storing conversation: {e}") + session.rollback() + finally: + session.close() + + def fetch_conversation(self, session_id: str): + session = Session() + try: + conversation = session.query(ConversationHistory).filter_by(session_id=session_id).first() + if conversation: + return { + 'session_id': conversation.session_id, + 'user_id': conversation.user_id, + 'last_conversation_time': conversation.last_conversation_time, + 'conversation_history': json.loads(conversation.conversation_data) + } + return None + except Exception as e: + print(f"Error fetching conversation: {e}") + return None + finally: + session.close() + + def delete_conversation(self, session_id: str): + session = Session() + try: + conversation = session.query(ConversationHistory).filter_by(session_id=session_id).first() + if conversation: + session.delete(conversation) + session.commit() + print(f"Conversation with session_id {session_id} deleted successfully.") + else: + print(f"No conversation found with session_id {session_id}.") + except Exception as e: + print(f"Error deleting conversation: {e}") + session.rollback() + finally: + session.close() + + def is_session(self, session_id: str) -> bool: + session = Session() + try: + exists = session.query(ConversationHistory).filter_by(session_id=session_id).first() is not None + return exists + except Exception as e: + print(f"Error checking session existence: {e}") + return False + finally: + session.close() diff --git a/src/agent/main.py b/src/agent/main.py new file mode 100644 index 0000000..edccafc --- /dev/null +++ b/src/agent/main.py @@ -0,0 +1,500 @@ +# SPDX-FileCopyrightText: Copyright (c) 2024 NVIDIA CORPORATION & AFFILIATES. All rights reserved. +# SPDX-License-Identifier: Apache-2.0 +# +# Licensed under the Apache License, Version 2.0 (the "License"); +# you may not use this file except in compliance with the License. +# You may obtain a copy of the License at +# +# http://www.apache.org/licenses/LICENSE-2.0 +# +# Unless required by applicable law or agreed to in writing, software +# distributed under the License is distributed on an "AS IS" BASIS, +# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +# See the License for the specific language governing permissions and +# limitations under the License. +import logging +from typing import Annotated, TypedDict, Dict +from langgraph.graph.message import AnyMessage, add_messages +from typing import Callable +from langchain_core.messages import ToolMessage, AIMessage, HumanMessage, SystemMessage +from typing import Annotated, Optional, Literal, TypedDict +from langchain_core.prompts.chat import ChatPromptTemplate +from langchain_core.prompts import MessagesPlaceholder +from langgraph.graph import END, StateGraph, START +from langgraph.prebuilt import tools_condition +from langchain_core.runnables import RunnableConfig +from src.agent.tools import ( + structured_rag, get_purchase_history, HandleOtherTalk, ProductValidation, + return_window_validation, update_return, get_recent_return_details, + ToProductQAAssistant, + ToOrderStatusAssistant, + ToReturnProcessing) +from src.agent.utils import get_product_name, create_tool_node_with_fallback, get_checkpointer, canonical_rag +from src.common.utils import get_llm, get_prompts + + +logger = logging.getLogger(__name__) +prompts = get_prompts() +# TODO get the default_kwargs from the Agent Server API +default_llm_kwargs = {"temperature": 0.2, "top_p": 0.7, "max_tokens": 1024} + +# STATE OF THE AGENT +class State(TypedDict): + messages: Annotated[list[AnyMessage], add_messages] + user_id: str + user_purchase_history: Dict + current_product: str + needs_clarification: bool + clarification_type: str + reason: str + +# NODES FOR THE AGENT +def validate_product_info(state: State, config: RunnableConfig): + # This node will take user history and find product name based on query + # If there are multiple name of no name specified in the graph then it will + + # This dict is to populate the user_purchase_history and product details if required + response_dict = {"needs_clarification": False} + if state["user_id"]: + # Update user purchase history based + response_dict.update({"user_purchase_history": get_purchase_history(state["user_id"])}) + + # Extracting product name which user is expecting + product_list = list(set([resp.get("product_name") for resp in response_dict.get("user_purchase_history", [])])) + + # Extract product name from query and filter from database + product_info = get_product_name(state["messages"], product_list) + + product_names = product_info.get("products_from_purchase", []) + product_in_query = product_info.get("product_in_query", "") + if len(product_names) == 0: + reason = "" + if product_in_query: + reason = f"{product_in_query}" + response_dict.update({"needs_clarification": True, "clarification_type": "no_product", "reason": reason}) + return response_dict + elif len(product_names) > 1: + reason = ", ".join(product_names) + response_dict.update({"needs_clarification": True, "clarification_type": "multiple_products", "reason": reason}) + return response_dict + else: + response_dict.update({"current_product": product_names[0]}) + + return response_dict + +async def handle_other_talk(state: State, config: RunnableConfig): + """Handles greetings and queries outside order status, returns, or products, providing polite redirection and explaining chatbot limitations.""" + + prompt = prompts.get("other_talk_template", "") + + prompt = ChatPromptTemplate.from_messages( + [ + ("system", prompt), + ("placeholder", "{messages}"), + ] + ) + + # LLM + llm_settings = config.get('configurable', {}).get("llm_settings", default_llm_kwargs) + llm = get_llm(**llm_settings) + llm = llm.with_config(tags=["should_stream"]) + + # Chain + small_talk_chain = prompt | llm + response = await small_talk_chain.ainvoke(state, config) + + return {"messages": [response]} + + +def create_entry_node(assistant_name: str) -> Callable: + def entry_node(state: State) -> dict: + tool_call_id = state["messages"][-1].tool_calls[0]["id"] + return { + "messages": [ + ToolMessage( + content=f"The assistant is now the {assistant_name}. Reflect on the above conversation between the host assistant and the user." + f" The user's intent is unsatisfied. Use the provided tools to assist the user. Remember, you are {assistant_name}," + " and the booking, update, other other action is not complete until after you have successfully invoked the appropriate tool." + " If the user changes their mind or needs help for other tasks, let the primary host assistant take control." + " Do not mention who you are - just act as the proxy for the assistant.", + tool_call_id=tool_call_id, + ) + ] + } + + return entry_node + +async def ask_clarification(state: State, config: RunnableConfig): + + # Extract the base prompt + base_prompt = prompts.get("ask_clarification")["base_prompt"] + previous_conversation = [m for m in state['messages'] if not isinstance(m, ToolMessage)] + base_prompt = base_prompt.format(previous_conversation=previous_conversation) + + purchase_history = state.get("user_purchase_history", []) + if state["clarification_type"] == "no_product" and state['reason'].strip(): + followup_prompt = prompts.get("ask_clarification")["followup"]["no_product"].format( + reason=state['reason'], + purchase_history=purchase_history + ) + elif not state['reason'].strip(): + followup_prompt = prompts.get("ask_clarification")["followup"]["default"].format(reason=purchase_history) + else: + followup_prompt = prompts.get("ask_clarification")["followup"]["default"].format(reason=state['reason']) + + # Combine base prompt and followup prompt + prompt = f"{base_prompt} {followup_prompt}" + + # LLM + llm_settings = config.get('configurable', {}).get("llm_settings", default_llm_kwargs) + llm = get_llm(**llm_settings) + llm = llm.with_config(tags=["should_stream"]) + + response = await llm.ainvoke(prompt, config) + + return {"messages": [response]} + +async def handle_product_qa(state: State, config: RunnableConfig): + + # Extract the previous_conversation + previous_conversation = [m for m in state['messages'] if not isinstance(m, ToolMessage) and m.content] + message_type_map = { + HumanMessage: "user", + AIMessage: "assistant", + SystemMessage: "system" + } + + # Serialized conversation + get_role = lambda x: message_type_map.get(type(x), None) + previous_conversation_serialized = [{"role": get_role(m), "content": m.content} for m in previous_conversation if m.content] + last_message = previous_conversation_serialized[-1]['content'] + + retireved_content = canonical_rag(query=last_message, conv_history=previous_conversation_serialized) + + # Use the RAG Template to generate the response + base_rag_prompt = prompts.get("rag_template") + rag_prompt = ChatPromptTemplate.from_messages( + [ + ("system", base_rag_prompt), + MessagesPlaceholder("chat_history") + "\n\nCONTEXT: {context}" + ] + ) + rag_prompt = rag_prompt.format(chat_history=previous_conversation, context=retireved_content) + + # LLM + llm_settings = config.get('configurable', {}).get("llm_settings", default_llm_kwargs) + llm = get_llm(**llm_settings) + llm = llm.with_config(tags=["should_stream"]) + + response = await llm.ainvoke(rag_prompt, config) + + return {"messages": [response]} + +class Assistant: + def __init__(self, prompt: str, tools: list): + self.prompt = prompt + self.tools = tools + + async def __call__(self, state: State, config: RunnableConfig): + while True: + + llm_settings = config.get('configurable', {}).get("llm_settings", default_llm_kwargs) + llm = get_llm(**llm_settings) + runnable = self.prompt | llm.bind_tools(self.tools) + last_message = state["messages"][-1] + messages = [] + if isinstance(last_message, ToolMessage) and last_message.name in ["structured_rag", "return_window_validation", "update_return", "get_purchase_history", "get_recent_return_details"]: + gen = runnable.with_config( + tags=["should_stream"], + callbacks=config.get( + "callbacks", [] + ), # <-- Propagate callbacks (Python <= 3.10) + ) + async for message in gen.astream(state): + messages.append(message.content) + result = AIMessage(content="".join(messages)) + else: + result = runnable.invoke(state) + + if not result.tool_calls and ( + not result.content + or isinstance(result.content, list) + and not result.content[0].get("text") + ): + messages = state["messages"] + [("user", "Respond with a real output.")] + state = {**state, "messages": messages} + messages = state["messages"] + [("user", "Respond with a real output.")] + state = {**state, "messages": messages} + else: + break + return {"messages": result} + +# order status Assistant +order_status_prompt_template = prompts.get("order_status_template", "") + +order_status_prompt = ChatPromptTemplate.from_messages( + [ + ( + "system", + order_status_prompt_template + ), + ("placeholder", "{messages}"), + ] +) + +order_status_safe_tools = [structured_rag] +order_status_tools = order_status_safe_tools + [ProductValidation] + +# Return Processing Assistant +return_processing_prompt_template = prompts.get("return_processing_template", "") + +return_processing_prompt = ChatPromptTemplate.from_messages( + [ + ( + "system", + return_processing_prompt_template + ), + ("placeholder", "{messages}"), + ] +) + +return_processing_safe_tools = [get_recent_return_details, return_window_validation] +return_processing_sensitive_tools = [update_return] +return_processing_tools = return_processing_safe_tools + return_processing_sensitive_tools + [ProductValidation] + +primary_assistant_prompt_template = prompts.get("primary_assistant_template", "") + +primary_assistant_prompt = ChatPromptTemplate.from_messages( + [ + ( + "system", + primary_assistant_prompt_template + ), + ("placeholder", "{messages}"), + ] +) + +primary_assistant_tools = [ + HandleOtherTalk, + ToProductQAAssistant, + ToOrderStatusAssistant, + ToReturnProcessing, + ] + +# BUILD THE GRAPH +builder = StateGraph(State) + + +# SUB AGENTS +# Create product_qa Assistant +builder.add_node( + "enter_product_qa", + handle_product_qa, +) + +builder.add_edge("enter_product_qa", END) + +builder.add_node("order_validation", validate_product_info) +builder.add_node("ask_clarification", ask_clarification) + +# Create order_status Assistant +builder.add_node( + "enter_order_status", create_entry_node("Order Status Assistant") +) +builder.add_node("order_status", Assistant(order_status_prompt, order_status_tools)) +builder.add_edge("enter_order_status", "order_status") +builder.add_node( + "order_status_safe_tools", + create_tool_node_with_fallback(order_status_safe_tools), +) + + +def route_order_status( + state: State, +) -> Literal[ + "order_status_safe_tools", + "order_validation", + "__end__" +]: + route = tools_condition(state) + if route == END: + return END + tool_calls = state["messages"][-1].tool_calls + tool_names = [t.name for t in order_status_safe_tools] + do_product_validation = any(tc["name"] == ProductValidation.__name__ for tc in tool_calls) + if do_product_validation: + return "order_validation" + if all(tc["name"] in tool_names for tc in tool_calls): + return "order_status_safe_tools" + return "order_status_sensitive_tools" + +builder.add_edge("order_status_safe_tools", "order_status") +builder.add_conditional_edges("order_status", route_order_status) + +# Create return_processing Assistant +builder.add_node("return_validation", validate_product_info) + +builder.add_node( + "enter_return_processing", + create_entry_node("Return Processing Assistant"), +) +builder.add_node("return_processing", Assistant(return_processing_prompt, return_processing_tools)) +builder.add_edge("enter_return_processing", "return_processing") + +builder.add_node( + "return_processing_safe_tools", + create_tool_node_with_fallback(return_processing_safe_tools), +) +builder.add_node( + "return_processing_sensitive_tools", + create_tool_node_with_fallback(return_processing_sensitive_tools), +) + + +def route_return_processing( + state: State, +) -> Literal[ + "return_processing_safe_tools", + "return_processing_sensitive_tools", + "return_validation", + "__end__", +]: + route = tools_condition(state) + if route == END: + return END + tool_calls = state["messages"][-1].tool_calls + do_product_validation = any(tc["name"] == ProductValidation.__name__ for tc in tool_calls) + if do_product_validation: + return "return_validation" + tool_names = [t.name for t in return_processing_safe_tools] + if all(tc["name"] in tool_names for tc in tool_calls): + return "return_processing_safe_tools" + return "return_processing_sensitive_tools" + + +builder.add_edge("return_processing_sensitive_tools", "return_processing") +builder.add_edge("return_processing_safe_tools", "return_processing") +builder.add_conditional_edges("return_processing", route_return_processing) + + +def user_info(state: State): + return {"user_purchase_history": get_purchase_history(state["user_id"])} + +builder.add_node("fetch_purchase_history", user_info) +builder.add_edge(START, "fetch_purchase_history") +builder.add_edge("ask_clarification", END) + +# Primary assistant +builder.add_node("primary_assistant", Assistant(primary_assistant_prompt, primary_assistant_tools)) +builder.add_node( + "other_talk", handle_other_talk +) + +# Add "primary_assistant_tools", if necessary +def route_primary_assistant( + state: State, +) -> Literal[ + "enter_product_qa", + "enter_order_status", + "enter_return_processing", + "other_talk", + "__end__", +]: + route = tools_condition(state) + if route == END: + return END + tool_calls = state["messages"][-1].tool_calls + if tool_calls: + if tool_calls[0]["name"] == ToProductQAAssistant.__name__: + return "enter_product_qa" + elif tool_calls[0]["name"] == ToOrderStatusAssistant.__name__: + return "enter_order_status" + elif tool_calls[0]["name"] == ToReturnProcessing.__name__: + return "enter_return_processing" + elif tool_calls[0]["name"] == HandleOtherTalk.__name__: + return "other_talk" + raise ValueError("Invalid route") + +builder.add_edge("other_talk", END) + +# The assistant can route to one of the delegated assistants, +# directly use a tool, or directly respond to the user +builder.add_conditional_edges( + "primary_assistant", + route_primary_assistant, + { + "enter_product_qa": "enter_product_qa", + "enter_order_status": "enter_order_status", + "enter_return_processing": "enter_return_processing", + "other_talk":"other_talk", + END: END, + }, +) + + +def is_order_product_valid(state: State) -> Literal[ + "ask_clarification", + "order_status" +]: + """Conditional edge from validation node to decide if we should ask followup questions""" + if state["needs_clarification"] == True: + return "ask_clarification" + return "order_status" + +def is_return_product_valid(state: State) -> Literal[ + "ask_clarification", + "return_processing" +]: + """Conditional edge from validation node to decide if we should ask followup questions""" + if state["needs_clarification"] == True: + return "ask_clarification" + return "return_processing" + +builder.add_conditional_edges( + "order_validation", + is_order_product_valid +) +builder.add_conditional_edges( + "return_validation", + is_return_product_valid +) + +builder.add_edge("fetch_purchase_history", "primary_assistant") + + +# Allow multiple async loop togeather +# This is needed to create checkpoint as it needs async event loop +# TODO: Move graph build into a async function and call that to remove nest_asyncio +import nest_asyncio +nest_asyncio.apply() + +# To run the async main function +import asyncio + +memory = None +pool = None + +# TODO: Remove pool as it's not getting used +# WAR: It's added so postgres does not close it's session +async def get_checkpoint(): + global memory, pool + memory, pool = await get_checkpointer() + +asyncio.run(get_checkpoint()) + +# Compile +graph = builder.compile(checkpointer=memory, + interrupt_before=["return_processing_sensitive_tools"], + #interrupt_after=["ask_human"] + ) + + +try: + # Generate the PNG image from the graph + png_image_data = graph.get_graph(xray=True).draw_mermaid_png() + # Save the image to a file in the current directory + with open("graph_image.png", "wb") as f: + f.write(png_image_data) +except Exception as e: + # This requires some extra dependencies and is optional + logger.info(f"An error occurred: {e}") \ No newline at end of file diff --git a/src/agent/prompt.yaml b/src/agent/prompt.yaml new file mode 100644 index 0000000..ef20e26 --- /dev/null +++ b/src/agent/prompt.yaml @@ -0,0 +1,123 @@ +primary_assistant_template: | + You are a helpful customer support assistant for NVIDIA Gear Store. + Your primary role is to assist the user to answer customer queries. + If a customer asks about his products, his order status, or queries related to processing return, + delegate the task to the appropriate specialized assistant by invoking the corresponding tool. You are not able to make these types of changes yourself. + Only the specialized assistants are given permission to do this for the user. + Provide detailed information to the customer, and always double-check the database before concluding that information is unavailable. + The user is not aware of the different specialized assistants, so do not mention them; just quietly delegate through function calls. + When searching, be persistent. Expand your query bounds if the first search returns no results. + If a search comes up empty, expand your search before giving up. + If the customer asks anything outside the scope of order status, returns, or their products, invoke the `HandleOtherTalk` tool to manage the conversation seamlessly. + The current user id is : {user_id} + +other_talk_template: | + You are the virtual AI assistant built by nv engineers. You are running using NVIDIA NIMs(NVIDIA Inference Microservice) on NVIDIA GPU. + You are responsible for handling greetings, general conversations, and any offbeat or unusual queries. + If a customer greets you with "hi," "hello," or similar expressions, respond warmly and in a welcoming manner. + For off-topic or unusual queries, politely acknowledge the customer's message and gently guide the conversation back to relevant topics where you can provide assistance. + If you're unable to help with a particular request, empathetically explain the chatbot's limitations and offer helpful suggestions on where the customer can find more information. + + Here are some key principles to follow: + - Respond warmly and professionally to greetings like "hi," "hello," or "how are you?" + - For general questions outside your scope, apologize politely and explain the limitations of your system. + - Gently guide the user back to topics related to their orders, returns, or products if possible. + - Provide helpful suggestions for getting more detailed assistance (e.g., contacting customer support). + - Keep your responses short. + - Do not make up any information that you are not sure of. + + + If needed, here are some examples of polite responses to common situations: + - If the user greets: "Hello! How can I assist you today?" + - If the user asks for something outside your capabilities: "I'm here to help with queries about your orders, returns, and NVIDIA products. For other questions, I recommend contacting customer support, who can assist further." + - If the user persists in asking about topics outside your scope: "I understand your question is important, but I'm limited to assisting with order-related matters. Please feel free to reach out to customer support for more detailed help." + + Remember to always be polite, warm, and provide clear guidance to the customer about what you can and cannot assist with. + + +return_processing_template: | + You are a highly intelligent chatbot designed to assist users with queries related to processing a product return request. + At a high level, you handle customer requests for returning orders, perform return, checking return status, and addressing return-related Q&A. + You are provided with tools to validate the return window, and to update the return to the database if it is within the return window and order status is delivered. + Use the following guidelines + Consider only the current product for processing return. + Get the order status and order date from the purchase history below. + When processing a return, ensure the order status is delivered and check if it is within the return window. + Call the update_return tool only if it is within the return window and order status is delivered; otherwise, respond to the user's query based on the current order status and the return_window_validation tool's output. + Always give a complete response to the user. + When searching, be persistent. Expand your query bounds if the first search returns no results. + Always rely on tool outputs to generate responses with complete accuracy. Do not hallucinate. + If insufficient evidence is available, respond formally stating that there is not enough information to provide an answer. + + The current user id is : {user_id} + The current product is : {current_product} + The purchase history is: {user_purchase_history} + +order_status_template: | + You are a highly intelligent chatbot designed to assist users with queries related to their purchase history. + Use the necessary tools to fetch relevant information and answer the query based on that information. + Consider only the current product when processing order status. Ensure that your inputs to the tools include the name of the current product. + If there is valid a tool output, provide a proper response to the query based on it. + Always rely on tool outputs to generate responses with complete accuracy. Do not hallucinate. + If insufficient evidence is available, respond formally stating that there is not enough information to provide an answer. + + The current user id is: {user_id} + The current product is: {current_product} + +ask_clarification: + base_prompt: | + You are a highly intelligent AI assistant, and you are asking a follow-up question regarding product disambiguation. + + The previous conversation: {previous_conversation} + Keep the follow-up question concise. + followup: + no_product: | + Write a follow up question indicating user didn't purchase {reason}. + + Inquire if they are referring to one of the products from their purchase history. For example: + "I don't see {reason} listed in your purchase history. Are you perhaps referring to one of these products instead: {purchase_history}? + default: | + Write a follow up question indicating which one you are referring to among {reason}. + + +get_product_name: + base_prompt: | + You are an AI assistant tasked with extracting the name of a product or item that a user has purchased or is inquiring about from their query. Your goal is to identify the most likely product name based on the context provided. + + Rules: + 1. Extract only one product name. + 2. If no specific product is mentioned, return null. + 3. If no product can be confidently identified, return "null" as the product name. + + User query: {query} + + conversation_prompt: | + Given the conversation between user and assistant, find the product name they are talking about. If no product name is mentioned, return null. + + Conversation: {messages} + + fallback_prompt: | + You are an AI assistant tasked with extracting the name of a product or item that a user has purchased or is inquiring about from their query. Your goal is to identify the most likely product name based on the context provided. + + Rules: + 1. Give priority to the last product discussed. + 2. Extract only one product name. + 3. If no specific product is mentioned, return null. + 4. If no product can be confidently identified, return "null" as the product name. + + User conversation: {messages} + +rag_template: | + You are the virtual AI assistant built by nv engineers for question-answering tasks. + You will respond to the chat history based on the provided context. + For off-topic or unusual queries or questions our of context, politely acknowledge the customer's message and gently guide the conversation back to relevant topics where you can provide assistance. + If you're unable to help with a particular request, empathetically explain the chatbot's limitations and offer helpful suggestions on where the customer can find more information. + Never provide any product suggestion or recommendation to user. Your only goal is to answer users question based on provided context. + + Here are some key principles to follow: + - Respond warmly and professionally + - For general questions outside your scope or context, apologize politely and explain the limitations of your system. + - Do not recommend or suggest product. + - Do not off topic or out of context questions. + + Remember to always be polite, warm, and provide clear guidance to the customer. diff --git a/src/agent/requirements.txt b/src/agent/requirements.txt new file mode 100644 index 0000000..d021e81 --- /dev/null +++ b/src/agent/requirements.txt @@ -0,0 +1,16 @@ +fastapi==0.115.2 +uvicorn[standard]==0.27.1 +starlette==0.40.0 +langchain-nvidia-ai-endpoints==0.2.2 +dataclass-wizard==0.22.3 +langchain==0.2.16 +langgraph==0.2.3 +redis==5.0.8 +psycopg2-binary==2.9.9 +SQLAlchemy==2.0.31 +prometheus_client==0.21.0 +bleach==6.1.0 +psycopg-pool==3.2.2 +langgraph-checkpoint-postgres==1.0.9 +psycopg-binary==3.2.3 +nest-asyncio==1.6.0 \ No newline at end of file diff --git a/src/agent/server.py b/src/agent/server.py new file mode 100644 index 0000000..8ba64d1 --- /dev/null +++ b/src/agent/server.py @@ -0,0 +1,586 @@ +# SPDX-FileCopyrightText: Copyright (c) 2024 NVIDIA CORPORATION & AFFILIATES. All rights reserved. +# SPDX-License-Identifier: Apache-2.0 +# +# Licensed under the Apache License, Version 2.0 (the "License"); +# you may not use this file except in compliance with the License. +# You may obtain a copy of the License at +# +# http://www.apache.org/licenses/LICENSE-2.0 +# +# Unless required by applicable law or agreed to in writing, software +# distributed under the License is distributed on an "AS IS" BASIS, +# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +# See the License for the specific language governing permissions and +# limitations under the License. + +"""The definition of the Llama Index chain server.""" +import os +from uuid import uuid4 +import logging +from typing import List +import importlib +import bleach +import time +import prometheus_client +import asyncio +import random +import re +from traceback import print_exc + +from fastapi import FastAPI, Request, HTTPException, Response +from fastapi.encoders import jsonable_encoder +from fastapi.exceptions import RequestValidationError +from fastapi.responses import JSONResponse, StreamingResponse +from fastapi.middleware.cors import CORSMiddleware +from starlette.status import HTTP_422_UNPROCESSABLE_ENTITY +from pydantic import BaseModel, Field, validator, constr +from src.agent.cache.session_manager import SessionManager +from src.agent.datastore.datastore import Datastore +from src.agent.utils import remove_state_from_checkpointer + +from langgraph.errors import GraphRecursionError +from langchain_core.messages import ToolMessage +from langgraph.errors import GraphRecursionError + +logging.basicConfig(level=os.environ.get('LOGLEVEL', 'INFO').upper()) +logger = logging.getLogger(__name__) + +tags_metadata = [ + { + "name": "Health", + "description": "APIs for checking and monitoring server liveliness and readiness.", + }, + {"name": "Feedback", "description": "APIs for storing useful information for data flywheel."}, + {"name": "Session Management", "description": "APIs for managing sessions."}, + {"name": "Inference", "description": "Core APIs for interacting with the agent."}, +] + +# create the FastAPI server +app = FastAPI(title="Agent API's for AI Virtual Assistant for Customer Service", + description="This API schema describes all the core agentic endpoints exposed by the AI Virtual Assistant for Customer Service NIM Blueprint", + version="1.0.0", + docs_url="/docs", + redoc_url="/redoc", + openapi_tags=tags_metadata, +) + +# Allow access in browser from RAG UI and Storybook (development) +origins = [ + "*" +] +app.add_middleware( + CORSMiddleware, + allow_origins=origins, + allow_credentials=False, + allow_methods=["*"], + allow_headers=["*"], +) + +EXAMPLE_DIR = "./" + +# List of fallback responses sent out for any Exceptions from /generate endpoint +FALLBACK_RESPONSES = [ + "Please try re-phrasing, I am likely having some trouble with that question.", + "I will get better with time, please try with a different question.", + "I wasn't able to process your input. Let's try something else.", + "Something went wrong. Could you try again in a few seconds with a different question?", + "Oops, that proved a tad difficult for me, can you retry with another question?" +] + +class Message(BaseModel): + """Definition of the Chat Message type.""" + role: str = Field(description="Role for a message AI, User and System", default="user", max_length=256, pattern=r'[\s\S]*') + content: str = Field(description="The input query/prompt to the pipeline.", default="Hello what can you do?", max_length=131072, pattern=r'[\s\S]*') + + @validator('role') + def validate_role(cls, value): + """ Field validator function to validate values of the field role""" + value = bleach.clean(value, strip=True) + valid_roles = {'user', 'assistant', 'system'} + if value.lower() not in valid_roles: + raise ValueError("Role must be one of 'user', 'assistant', or 'system'") + return value.lower() + + @validator('content') + def sanitize_content(cls, v): + """ Field validator function to santize user populated feilds from HTML""" + v = bleach.clean(v, strip=True) + if not v: # Check for empty string + raise ValueError("Message content cannot be empty.") + return v + +class Prompt(BaseModel): + """Definition of the Prompt API data type.""" + messages: List[Message] = Field(..., description="A list of messages comprising the conversation so far. The roles of the messages must be alternating between user and assistant. The last input message should have role user. A message with the the system role is optional, and must be the very first message if it is present.", max_items=50000) + user_id: str = Field(None, description="A unique identifier representing your end-user.") + session_id: str = Field(..., description="A unique identifier representing the session associated with the response.") + +class ChainResponseChoices(BaseModel): + """ Definition of Chain response choices""" + index: int = Field(default=0, ge=0, le=256, format="int64") + message: Message = Field(default=Message()) + finish_reason: str = Field(default="", max_length=4096, pattern=r'[\s\S]*') + +class ChainResponse(BaseModel): + """Definition of Chain APIs resopnse data type""" + id: str = Field(default="", max_length=100000, pattern=r'[\s\S]*') + choices: List[ChainResponseChoices] = Field(default=[], max_items=256) + session_id: str = Field(None, description="A unique identifier representing the session associated with the response.") + +class DocumentSearch(BaseModel): + """Definition of the DocumentSearch API data type.""" + + query: str = Field(description="The content or keywords to search for within documents.", max_length=131072, pattern=r'[\s\S]*', default="") + top_k: int = Field(description="The maximum number of documents to return in the response.", default=4, ge=0, le=25, format="int64") + +class DocumentChunk(BaseModel): + """Represents a chunk of a document.""" + content: str = Field(description="The content of the document chunk.", max_length=131072, pattern=r'[\s\S]*', default="") + filename: str = Field(description="The name of the file the chunk belongs to.", max_length=4096, pattern=r'[\s\S]*', default="") + score: float = Field(..., description="The relevance score of the chunk.") + +class DocumentSearchResponse(BaseModel): + """Represents a response from a document search.""" + chunks: List[DocumentChunk] = Field(..., description="List of document chunks.", max_items=256) + +class DocumentsResponse(BaseModel): + """Represents the response containing a list of documents.""" + documents: List[constr(max_length=131072, pattern=r'[\s\S]*')] = Field(description="List of filenames.", max_items=1000000, default=[]) + +class HealthResponse(BaseModel): + message: str = Field(max_length=4096, pattern=r'[\s\S]*', default="") + +class CreateSessionResponse(BaseModel): + session_id: str = Field(max_length=4096) + +class EndSessionResponse(BaseModel): + message: str = Field(max_length=4096, pattern=r'[\s\S]*', default="") + +class DeleteSessionResponse(BaseModel): + message: str = Field(max_length=4096, pattern=r'[\s\S]*', default="") + +class FeedbackRequest(BaseModel): + """Definition of the Feedback Request data type.""" + feedback: float = Field(..., description="A unique identifier representing your end-user.", ge=-1.0, le=1.0) + session_id: str = Field(..., description="A unique identifier representing the session associated with the response.") + +class FeedbackResponse(BaseModel): + """Definition of the Feedback Request data type.""" + message: str = Field(max_length=4096, pattern=r'[\s\S]*', default="") + +@app.on_event("startup") +def import_example() -> None: + """ + Import the example class from the specified example file. + + """ + + file_location = os.path.join(EXAMPLE_DIR, os.environ.get("EXAMPLE_PATH", "basic_rag/llamaindex")) + + for root, dirs, files in os.walk(file_location): + for file in files: + if file == "main.py": + # Import the specified file dynamically + spec = importlib.util.spec_from_file_location(name="main", location=os.path.join(root, file)) + module = importlib.util.module_from_spec(spec) + spec.loader.exec_module(module) + + # Get the Agent app + app.agent = module + break # Stop the loop once we find and load agent.py + + # Initialize session manager during startup + app.session_manager = SessionManager() + + # Initialize database to store conversation permanently + app.database = Datastore() + +@app.exception_handler(RequestValidationError) +async def request_validation_exception_handler( + request: Request, exc: RequestValidationError +) -> JSONResponse: + return JSONResponse( + status_code=HTTP_422_UNPROCESSABLE_ENTITY, + content={"detail": jsonable_encoder(exc.errors(), exclude={"input"})}) + +@app.get("/health", tags=["Health"], response_model=HealthResponse, responses={ + 500: { + "description": "Internal Server Error", + "content": { + "application/json": { + "example": {"detail": "Internal server error occurred"} + } + } + } +}) +async def health_check(): + """ + Perform a Health Check + + Returns 200 when service is up. This does not check the health of downstream services. + """ + + response_message = "Service is up." + return HealthResponse(message=response_message) + + +@app.get("/metrics", tags=["Health"]) +async def get_metrics(): + return Response(content=prometheus_client.generate_latest(), media_type="text/plain") + + +@app.get("/create_session", tags=["Session Management"], response_model=CreateSessionResponse, responses={ + 500: { + "description": "Internal Server Error", + "content": { + "application/json": { + "example": {"detail": "Internal server error occurred"} + } + } + } +}) +async def create_session(): + + # Try for fix number of time, if no unique session_id is found raise Error + for _ in range(5): + session_id = str(uuid4()) + + # Ensure session_id created does not exist in cache + if not app.session_manager.is_session(session_id): + # Ensure session_id created does not exist in datastore (permanenet store like postgres) + if not app.database.is_session(session_id): + # Create a session on cache for validation + app.session_manager.create_session(session_id) + return CreateSessionResponse(session_id=session_id) + + raise HTTPException(status_code=500, detail="Unable to generate session_id") + + +@app.get("/end_session", tags=["Session Management"], response_model=EndSessionResponse, responses={ + 500: { + "description": "Internal Server Error", + "content": { + "application/json": { + "example": {"detail": "Internal server error occurred"} + } + } + } +}) +async def end_session(session_id): + logger.info(f"Fetching conversation for {session_id} from cache") + session_info = app.session_manager.get_session_info(session_id) + logger.info(f"Session INFO: {session_info}") + if not session_info or not session_info.get("start_conversation_time", None): + logger.info("No conversation found in session") + return EndSessionResponse(message="Session not found. Create session before trying out") + + if session_info.get("last_conversation_time"): + # If there is no conversation history then don't port it to datastore + logger.info(f"Storing conversation for {session_id} in database") + app.database.store_conversation(session_id, session_info.get("user_id"), session_info.get("conversation_hist"), session_info.get("last_conversation_time"), session_info.get("start_conversation_time")) + + # Once the conversation is ended and ported to permanent storage, clear cache with given session_id + logger.info(f"Deleting conversation for {session_id} from cache") + app.session_manager.delete_conversation(session_id) + + return EndSessionResponse(message="Session ended") + + +@app.delete("/delete_session", tags=["Session Management"], response_model=DeleteSessionResponse, responses={ + 500: { + "description": "Internal Server Error", + "content": { + "application/json": { + "example": {"detail": "Internal server error occurred"} + } + } + } +}) +async def delete_session(session_id): + logger.info(f"Deleting conversation for {session_id}") + session_info = app.session_manager.get_session_info(session_id) + if not session_info: + logger.info("No conversation found in session") + return DeleteSessionResponse(message="Session info not found") + + logger.info(f"Deleting conversation for {session_id} from cache") + app.session_manager.delete_conversation(session_id) + + logger.info(f"Deleting conversation for {session_id} in database") + app.database.delete_conversation(session_id) + + logger.info(f"Deleting checkpointer for {session_id}") + remove_state_from_checkpointer(session_id) + return EndSessionResponse(message="Session info deleted") + + +def fallback_response_generator(sentence: str, session_id: str = ""): + """Mock response generator to simulate streaming predefined fallback responses.""" + + # Simulate breaking the sentence into chunks (e.g., by word) + sentence_chunks = sentence.split() # Split the sentence by words + resp_id = str(uuid4()) # unique response id for every query + # Send each chunk (word) in the response + for chunk in sentence_chunks: + chain_response = ChainResponse(session_id=session_id, sentiment="") + response_choice = ChainResponseChoices( + index=0, + message=Message(role="assistant", content=f"{chunk} ") + ) + chain_response.id = resp_id + chain_response.choices.append(response_choice) + yield "data: " + str(chain_response.json()) + "\n\n" + + # End with [DONE] response + chain_response = ChainResponse(session_id=session_id, sentiment="") + response_choice = ChainResponseChoices(message=Message(role="assistant", content=" "), finish_reason="[DONE]") + chain_response.id = resp_id + chain_response.choices.append(response_choice) + yield "data: " + str(chain_response.json()) + "\n\n" + + +@app.post( + "/generate", + tags=["Inference"], + response_model=ChainResponse, + responses={ + 500: { + "description": "Internal Server Error", + "content": {"application/json": {"example": {"detail": "Internal server error occurred"}}}, + } + }, +) +async def generate_answer(request: Request, + prompt: Prompt) -> StreamingResponse: + """Generate and stream the response to the provided prompt.""" + + logger.info(f"Input at /generate endpoint of Agent: {prompt.dict()}") + + try: + user_query_timestamp = time.time() + + # Handle invalid session id + if not app.session_manager.is_session(prompt.session_id): + logger.error(f"No session_id created {prompt.session_id}. Please create session id before generate request.") + print_exc() + return StreamingResponse(fallback_response_generator(sentence=random.choice(FALLBACK_RESPONSES), session_id=prompt.session_id), media_type="text/event-stream") + + chat_history = prompt.messages + # The last user message will be the query for the rag or llm chain + last_user_message = next((message.content for message in reversed(chat_history) if message.role == 'user'), None) + + # Normalize the last user input and remove non-ascii characters + last_user_message = re.sub(r'[^\x00-\x7F]+', '', last_user_message) # Remove all non-ascii characters + last_user_message = re.sub(r'[\u2122\u00AE]', '', last_user_message) # Remove standard trademark and copyright symbols + last_user_message = last_user_message.replace("~", "-") + logger.info(f"Normalized user input: {last_user_message}") + + # Keep copy of unmodified query to store in db + user_query = last_user_message + + log_level=os.environ.get('LOGLEVEL', 'INFO').upper() + debug_langgraph = False + if log_level == "DEBUG": + debug_langgraph = True + + recursion_limit = int(os.environ.get('GRAPH_RECURSION_LIMIT', '6')) + + async def response_generator(): + + try: + resp_id = str(uuid4()) + is_exception = False + # Variable to track if this is the first yield + is_first_yield = True + resp_str = "" + last_content = "" + + logger.info(f"Chat History: {app.session_manager.get_conversation(prompt.session_id)}") + config = {"recursion_limit": recursion_limit, + "configurable": {"thread_id": prompt.session_id, "chat_history": app.session_manager.get_conversation(prompt.session_id)}} + # Check for the interrupt + snapshot = await app.agent.graph.aget_state(config) + if not snapshot.next: + input_for_graph = {"messages":[("human", last_user_message)], "user_id": prompt.user_id} + else: + if last_user_message.strip().startswith(("Yes", "yes", "Y", "y")): + # Just continue + input_for_graph = None + else: + last_item = snapshot.values.get("messages")[-1] + if last_item and hasattr(last_item, "tool_calls") and last_item.tool_calls: + input_for_graph = { + "messages": [ + ToolMessage( + tool_call_id=last_item.tool_calls[0]["id"], + content=f"API call denied by user. Reasoning: '{last_user_message}'. Continue assisting, accounting for the user's input.", + ) + ] + } + elif not hasattr(last_item, "tool_calls"): + input_for_graph = {"messages":[("human", last_user_message)], "user_id": prompt.user_id} + else: + input_for_graph = None + try: + function_start_time = time.time() + + async for event in app.agent.graph.astream_events(input_for_graph, version="v2", config=config, debug=debug_langgraph): + kind = event["event"] + tags = event.get("tags", []) + if kind == "on_chain_end" and event['data'].get('output', "") == '__end__': + end_msgs = event['data']['input']['messages'] + last_content = end_msgs[-1].content + if kind == "on_chat_model_stream" and "should_stream" in tags: + content = event["data"]["chunk"].content + resp_str += content + if content: + chain_response = ChainResponse() + response_choice = ChainResponseChoices( + index=0, + message=Message( + role="assistant", + content=content + ) + ) + chain_response.id = resp_id + chain_response.session_id = prompt.session_id + chain_response.choices.append(response_choice) + logger.debug(response_choice) + # Check if this is the first yield + if is_first_yield: + logger.info(f"Execution time until first yield: {time.time() - function_start_time}") + is_first_yield = False + yield "data: " + str(chain_response.json()) + "\n\n" + + # If resp_str is empty after the loop, use the last AI message content + # If there is no Streaming response + if not resp_str and last_content: + chain_response = ChainResponse() + response_choice = ChainResponseChoices( + index=0, + message=Message( + role="assistant", + content=last_content + ) + ) + chain_response.id = resp_id + chain_response.session_id = prompt.session_id + chain_response.choices.append(response_choice) + yield "data: " + str(chain_response.json()) + "\n\n" + resp_str = last_content + logger.debug(f"Using last AI message content as the final response: {last_content}") + + snapshot = await app.agent.graph.aget_state(config) + # If there is a snapshot ask the user for return confirmation + if snapshot.next: + user_confirmation = "Do you approve of the process the return? Type 'y' to continue; otherwise, explain your requested changed." + chain_response = ChainResponse() + response_choice = ChainResponseChoices( + index=0, + message=Message( + role="assistant", + content=user_confirmation + ) + ) + chain_response.id = resp_id + chain_response.session_id = prompt.session_id + chain_response.choices.append(response_choice) + logger.debug(response_choice) + yield "data: " + str(chain_response.json()) + "\n\n" + # Check for the interrupt + + except GraphRecursionError as ge: + logger.error(f"Graph Recursion Error. Error details: {ge}") + is_exception = True + + except AttributeError as attr_err: + # Catch any specific attribute errors and log them + logger.error(f"AttributeError: {attr_err}") + print_exc() + is_exception = True + except asyncio.CancelledError as e: + logger.error(f"Task was cancelled. Details: {e}") + print_exc() + is_exception = True + except Exception as e: + logger.error(f"Sending empty response. Unexpected error in response_generator: {e}") + print_exc() + is_exception = True + + if is_exception: + logger.error("Sending back fallback responses since an exception was raised.") + is_exception = False + for data in fallback_response_generator(sentence=random.choice(FALLBACK_RESPONSES), session_id=prompt.session_id): + yield data + + chain_response = ChainResponse() + # Initialize content with space to overwrite default response + response_choice = ChainResponseChoices( + index=0, + message=Message( + role="assistant", + content=' ' + ), + finish_reason="[DONE]" + ) + + logger.info(f"Conversation saved:\nSession ID: {prompt.session_id}\nQuery: {last_user_message}\nResponse: {resp_str}") + app.session_manager.save_conversation( + prompt.session_id, + prompt.user_id or "", + [ + {"role": "user", "content": user_query, "timestamp": f"{user_query_timestamp}"}, + {"role": "assistant", "content": resp_str, "timestamp": f"{time.time()}"}, + ], + ) + + chain_response.id = resp_id + chain_response.session_id = prompt.session_id + chain_response.choices.append(response_choice) + logger.debug(response_choice) + yield "data: " + str(chain_response.json()) + "\n\n" + + return StreamingResponse(response_generator(), media_type="text/event-stream") + + # Catch any unhandled exceptions + except asyncio.CancelledError as e: + # Handle the cancellation gracefully + logger.error("Unhandled Server interruption before response completion. Details: {e}") + print_exc() + return StreamingResponse(fallback_response_generator(sentence=random.choice(FALLBACK_RESPONSES), session_id=prompt.session_id), media_type="text/event-stream") + except Exception as e: + logger.error(f"Unhandled Error from /generate endpoint. Error details: {e}") + print_exc() + return StreamingResponse(fallback_response_generator(sentence=random.choice(FALLBACK_RESPONSES), session_id=prompt.session_id), media_type="text/event-stream") + + +@app.post("/feedback/response", tags=["Feedback"], response_model=FeedbackResponse, responses={ + 404: { + "description": "Session Not Found", + "content": { + "application/json": { + "example": {"detail": "Session not found"} + } + } + }, + 500: { + "description": "Internal Server Error", + "content": { + "application/json": { + "example": {"detail": "Internal server error occurred"} + } + } + } +}) +async def store_last_response_feedback( + request: Request, + feedback: FeedbackRequest, +) -> FeedbackResponse: + """Store user feedback for the last response in a conversation session.""" + try: + logger.info(f"Storing user feedback for last response for session {feedback.session_id}") + app.session_manager.response_feedback(feedback.session_id, feedback.feedback) + return FeedbackResponse(message="Response feedback saved successfully") + except Exception as e: + logger.error(f"Error in GET /feedback/response endpoint. Error details: {e}") + return FeedbackResponse(message="Failed to store response feedback") diff --git a/src/agent/tools.py b/src/agent/tools.py new file mode 100644 index 0000000..55ae3e1 --- /dev/null +++ b/src/agent/tools.py @@ -0,0 +1,285 @@ +# SPDX-FileCopyrightText: Copyright (c) 2024 NVIDIA CORPORATION & AFFILIATES. All rights reserved. +# SPDX-License-Identifier: Apache-2.0 +# +# Licensed under the Apache License, Version 2.0 (the "License"); +# you may not use this file except in compliance with the License. +# You may obtain a copy of the License at +# +# http://www.apache.org/licenses/LICENSE-2.0 +# +# Unless required by applicable law or agreed to in writing, software +# distributed under the License is distributed on an "AS IS" BASIS, +# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +# See the License for the specific language governing permissions and +# limitations under the License. +import os +from pydantic import BaseModel, Field +import requests +from datetime import datetime, timedelta +from functools import lru_cache +from langchain_core.tools import tool +import psycopg2 +import psycopg2.extras +from urllib.parse import urlparse +import logging + +from src.common.utils import get_prompts, get_config + +structured_rag_uri = os.getenv('STRUCTURED_RAG_URI', 'http://structured-retriever:8081') +structured_rag_search = f"{structured_rag_uri}/search" + +prompts = get_prompts() +logger = logging.getLogger(__name__) + +@tool +@lru_cache +def structured_rag(query: str, user_id: str) -> str: + """Use this for answering personalized queries about orders, returns, refunds, and account-specific issues.""" + entry_doc_search = {"query": query, "top_k": 4, "user_id": user_id} + aggregated_content = "" + try: + response = requests.post(structured_rag_search, json=entry_doc_search) + # Extract and aggregate the content + logger.info(f"Actual Structured Response : {response}") + if response.status_code != 200: + raise ValueError(f"Error while retireving docs: {response.json()}") + + aggregated_content = "\n".join(chunk["content"] for chunk in response.json().get("chunks", [])) + # Check if aggregated_content contains the specific phrase in a case-insensitive manner + if any(x in aggregated_content.lower() for x in ["no records found", "error:"]): + raise ValueError("No records found for the specified criteria.") + return aggregated_content + except Exception as e: + logger.info(f"Some error within the structured_rag {e}, sending purchase_history") + return get_purchase_history(user_id) + + +@tool +@lru_cache +def get_purchase_history(user_id: str) -> str: + """Retrieves the recent return and order details for a user, + including order ID, product name, status, relevant dates, quantity, and amount.""" + + SQL_QUERY = f""" + SELECT order_id, product_name, order_date, order_status, quantity, order_amount, return_status, + return_start_date, return_received_date, return_completed_date, return_reason, notes + FROM public.customer_data + WHERE customer_id={user_id} + ORDER BY order_date DESC + LIMIT 15; + """ + + app_database_url = get_config().database.url + + # Parse the URL + parsed_url = urlparse(f"//{app_database_url}", scheme='postgres') + + # Extract host and port + host = parsed_url.hostname + port = parsed_url.port + + db_params = { + 'dbname': os.getenv("CUSTOMER_DATA_DB",'customer_data'), + 'user': os.getenv('POSTGRES_USER', None), + 'password': os.getenv('POSTGRES_PASSWORD', None), + 'host': host, + 'port': port + } + + # Using context manager for connection and cursor + with psycopg2.connect(**db_params) as conn: + with conn.cursor(cursor_factory=psycopg2.extras.DictCursor) as cur: + cur.execute(SQL_QUERY) + result = cur.fetchall() + + # Returning result as a list of dictionaries + return [dict(row) for row in result] + + +@tool +@lru_cache +def get_recent_return_details(user_id: str) -> str: + """Retrieves the recent return details for a user, including order ID, product name, return status, and relevant dates.""" + + return get_purchase_history(user_id) + + +@tool +@lru_cache +def return_window_validation(order_date: str) -> str: + """Use this to check the return window for validation. Use 'YYYY-MM-DD' for the order date.""" + + return_window_time=os.environ.get('RETURN_WINDOW_THRESHOLD_DAYS', 15) + try: + # Parse the order date + order_date = datetime.strptime(order_date, "%Y-%m-%d") + + # Get today's date + today = os.environ.get('RETURN_WINDOW_CURRENT_DATE', "") + + if today: + today = datetime.strptime(today, "%Y-%m-%d") + else: + today = datetime.now() + + # Parse the return window time + return_days = int(return_window_time) + + # Calculate the return window end date + return_window_end = order_date + timedelta(days=return_days) + + # Check if the product is within the return window + if today <= return_window_end: + days_left = (return_window_end - today).days + return f"The product is eligible for return. {days_left} day(s) left in the return window." + else: + days_passed = (today - return_window_end).days + return f"The return window has expired. It ended {days_passed} day(s) ago." + except ValueError: + return "Invalid date format. Please use 'YYYY-MM-DD' for the order date." + +@tool +@lru_cache +def update_return(user_id: str, current_product: str, order_id: str) -> str: + """Use this to update return status in the database.""" + + # Query to retrieve the order details + SELECT_QUERY = f""" + SELECT order_id, product_name, order_date, order_status + FROM public.customer_data + WHERE customer_id='{user_id}' AND product_name='{current_product}' AND order_id='{order_id}' + ORDER BY order_date DESC + LIMIT 1; + """ + + # Query to update the return_status + UPDATE_QUERY = f""" + UPDATE public.customer_data + SET return_status = 'Requested' + WHERE customer_id='{user_id}' AND product_name='{current_product}' AND order_id='{order_id}'; + """ + + app_database_url = get_config().database.url + + # Parse the URL + parsed_url = urlparse(f"//{app_database_url}", scheme='postgres') + + # Extract host and port + host = parsed_url.hostname + port = parsed_url.port + + db_params = { + 'dbname': os.getenv("CUSTOMER_DATA_DB",'customer_data'), + 'user': os.getenv('POSTGRES_USER', None), + 'password': os.getenv('POSTGRES_PASSWORD', None), + 'host': host, + 'port': port + } + + # Using context manager for connection and cursor + with psycopg2.connect(**db_params) as conn: + with conn.cursor(cursor_factory=psycopg2.extras.DictCursor) as cur: + # Execute the SELECT query to verify the order details + cur.execute(SELECT_QUERY) + result = cur.fetchone() + + # If the order exists, update the return status + if result: + cur.execute(UPDATE_QUERY) + conn.commit() # Commit the transaction to apply the update + return f"Return status for order_id {order_id} has been updated to 'Requested'." + else: + return f"No matching order found for user_id {user_id}, product_name {current_product}, and order_id {order_id}." + +class ToProductQAAssistant(BaseModel): + """ + Transfers work to a specialized assistant to handle Product QA. + Answers generic queries about products, including their descriptions, specifications, warranties, usage instructions, and troubleshooting issues. + Can also address queries based on product manuals, product catalogs, FAQs, policy documents, and general product-related inquiries. + Can also answer queries about the NVIDIA Gear Store's product offerings, policies, order management, shipping information, payment methods, returns, and customer service contacts. + """ + query: str = Field( + description="The question or issue related to the product. This can involve asking about product specifications, usage guidelines, troubleshooting, warranty details, or other product-related concerns." + ) + + class Config: + json_schema_extra = { + "example": { + "query": "What is the warranty period for this model, and does it cover screen burn-in issues?" + } + } + +class ToOrderStatusAssistant(BaseModel): + """ + Delegates queries specifically related to orders or purchase history to a specialized assistant. + This assistant handles inquiries regarding Order ID, Order Date, Quantity, Order Amount, Order Status, + and any other questions related to the user's purchase history. + """ + + query: str = Field( + description="The specific query regarding the order or purchase history, such as order status, delivery updates, or historical purchase information." + ) + user_id: str = Field( + description="The unique identifier of the user." + ) + + class Config: + json_schema_extra = { + "example": { + "query": "What is the current status of my order?", + "user_id": "1" + }, + "example 2": { + "query": "How many items were ordered on 2024-10-15?", + "user_id": "2" + } + } + +class ToReturnProcessing(BaseModel): + """ + Transfers work to a specialized assistant which handles processing of a product return request. + This assistant handles inquiries regarding return transactions, including return status, relevant dates, + reasons for return, notes, and any other questions related to return processing. + """ + + query: str = Field( + description="The specific return-related query, such as the status of the return, refund details, or return policy." + ) + user_id: str = Field( + description="The unique identifier of the user requesting the return." + ) + + class Config: + json_schema_extra = { + "example": { + "query": "I wanted to return my product?", + "user_id": "1" + } + } + +class HandleOtherTalk(BaseModel): + """Handles greetings and other absurd queries by offering polite redirection and clearly explaining the limitations of the chatbot.""" + + message: str # The message sent by the customer. + + class Config: + json_schema_extra = { + "example": { + "message": "Hello", + } + } + +class ProductValidation(BaseModel): + """ + Utilize this to identify the specific order or product the user is referring to in the conversation, + especially when the current product is unclear or unknown. + """ + + message: str # The message sent by the customer. + + class Config: + json_schema_extra = { + "example": { + "message": "What is the order status for my RTX", + } + } \ No newline at end of file diff --git a/src/agent/utils.py b/src/agent/utils.py new file mode 100644 index 0000000..18640ce --- /dev/null +++ b/src/agent/utils.py @@ -0,0 +1,242 @@ +# SPDX-FileCopyrightText: Copyright (c) 2024 NVIDIA CORPORATION & AFFILIATES. All rights reserved. +# SPDX-License-Identifier: Apache-2.0 +# +# Licensed under the Apache License, Version 2.0 (the "License"); +# you may not use this file except in compliance with the License. +# You may obtain a copy of the License at +# +# http://www.apache.org/licenses/LICENSE-2.0 +# +# Unless required by applicable law or agreed to in writing, software +# distributed under the License is distributed on an "AS IS" BASIS, +# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +# See the License for the specific language governing permissions and +# limitations under the License. +import re +import os +import logging +from typing import Dict +from pydantic import BaseModel, Field +from urllib.parse import urlparse + +import requests + +from psycopg_pool import AsyncConnectionPool +from psycopg.rows import dict_row +import psycopg2 + +from src.common.utils import get_llm, get_prompts, get_config +from langchain_core.prompts.chat import ChatPromptTemplate +from langchain_core.messages import HumanMessage +from langchain_core.messages import ToolMessage +from langchain_core.runnables import RunnableLambda +from langgraph.checkpoint.memory import MemorySaver +from langgraph.checkpoint.postgres.aio import AsyncPostgresSaver +from langgraph.prebuilt import ToolNode + +prompts = get_prompts() +logger = logging.getLogger(__name__) + +# TODO get the default_kwargs from the Agent Server API +default_llm_kwargs = {"temperature": 0, "top_p": 0.7, "max_tokens": 1024} + +canonical_rag_url = os.getenv('CANONICAL_RAG_URL', 'http://unstructured-retriever:8081') +canonical_rag_search = f"{canonical_rag_url}/search" + +def get_product_name(messages, product_list) -> Dict: + """Given the user message and list of product find list of items which user might be talking about""" + + # First check product name in query + # If it's not in query, check in conversation + # Once the product name is known we will search for product name from database + # We will return product name from list and actual name detected. + + llm = get_llm(**default_llm_kwargs) + + class Product(BaseModel): + name: str = Field(..., description="Name of the product talked about.") + + prompt_text = prompts.get("get_product_name")["base_prompt"] + prompt = ChatPromptTemplate.from_messages( + [ + ("system", prompt_text), + ] + ) + llm = llm.with_structured_output(Product) + + chain = prompt | llm + # query to be used for document retrieval + # Get the last human message instead of messages[-2] + last_human_message = next((m.content for m in reversed(messages) if isinstance(m, HumanMessage)), None) + response = chain.invoke({"query": last_human_message}) + + product_name = response.name + + # Check if product name is in query + if product_name == 'null': + + # Check for produt name in user conversation + fallback_prompt_text = prompts.get("get_product_name")["fallback_prompt"] + prompt = ChatPromptTemplate.from_messages( + [ + ("system", fallback_prompt_text), + ] + ) + + llm = get_llm(**default_llm_kwargs) + llm = llm.with_structured_output(Product) + + chain = prompt | llm + # query to be used for document retrieval + response = chain.invoke({"messages": messages}) + + product_name = response.name + # Check if it's partial name exists or not + if product_name == 'null': + return {} + + def filter_products_by_name(name, products): + # TODO: Replace this by llm call to check if that can take care of cases like + # spelling mistakes or words which are seperated + # TODO: Directly make sql query with wildcard + name_lower = name.lower() + + # Check for exact match first + exact_match = [product for product in products if product.lower() == name_lower] + if exact_match: + return exact_match + + # If no exact match, fall back to partial matches + name_parts = [part for part in re.split(r'\s+', name_lower) if part.lower() != 'nvidia'] + # Match only if all parts of the search term are found in the product name + matching_products = [ + product for product in products + if all(part in product.lower() for part in name_parts if part) + ] + + return matching_products + + matching_products = filter_products_by_name(product_name, product_list) + + return { + "product_in_query": product_name, + "products_from_purchase": list(set([product for product in matching_products])) + } + + +def handle_tool_error(state) -> dict: + error = state.get("error") + tool_calls = state["messages"][-1].tool_calls + return { + "messages": [ + ToolMessage( + content=f"Error: {repr(error)}\n please fix your mistakes.", + tool_call_id=tc["id"], + ) + for tc in tool_calls + ] + } + + +def create_tool_node_with_fallback(tools: list) -> dict: + return ToolNode(tools).with_fallbacks( + [RunnableLambda(handle_tool_error)], exception_key="error" + ) + + +async def get_checkpointer() -> tuple: + settings = get_config() + + if settings.checkpointer.name == "postgres": + print(f"Using {settings.checkpointer.name} hosted on {settings.checkpointer.url} for checkpointer") + db_user = os.environ.get("POSTGRES_USER") + db_password = os.environ.get("POSTGRES_PASSWORD") + db_name = os.environ.get("POSTGRES_DB") + db_uri = f"postgresql://{db_user}:{db_password}@{settings.checkpointer.url}/{db_name}?sslmode=disable" + connection_kwargs = { + "autocommit": True, + "prepare_threshold": 0, + "row_factory": dict_row, + } + + # Initialize PostgreSQL checkpointer + pool = AsyncConnectionPool( + conninfo=db_uri, + min_size=2, + kwargs=connection_kwargs, + ) + checkpointer = AsyncPostgresSaver(pool) + await checkpointer.setup() + return checkpointer, pool + elif settings.checkpointer.name == "inmemory": + print(f"Using MemorySaver as checkpointer") + return MemorySaver(), None + else: + raise ValueError(f"Only inmemory and postgres is supported chckpointer type") + + +def remove_state_from_checkpointer(session_id): + + settings = get_config() + if settings.checkpointer.name == "postgres": + # Handle cleanup for PostgreSQL checkpointer + # Currently, there is no langgraph checkpointer API to remove data directly. + # The following tables are involved in storing checkpoint data: + # - checkpoint_blobs + # - checkpoint_writes + # - checkpoints + # Note: checkpoint_migrations table can be skipped for deletion. + try: + app_database_url = settings.checkpointer.url + + # Parse the URL + parsed_url = urlparse(f"//{app_database_url}", scheme='postgres') + + # Extract host and port + host = parsed_url.hostname + port = parsed_url.port + + # Connect to your PostgreSQL database + connection = psycopg2.connect( + dbname=os.getenv('POSTGRES_DB', None), + user=os.getenv('POSTGRES_USER', None), + password=os.getenv('POSTGRES_PASSWORD', None), + host=host, + port=port + ) + cursor = connection.cursor() + + # Execute delete commands + cursor.execute("DELETE FROM checkpoint_blobs WHERE thread_id = %s", (session_id,)) + cursor.execute("DELETE FROM checkpoint_writes WHERE thread_id = %s", (session_id,)) + cursor.execute("DELETE FROM checkpoints WHERE thread_id = %s", (session_id,)) + + # Commit the changes + connection.commit() + logger.info(f"Deleted rows with thread_id: {session_id}") + + except Exception as e: + logger.info(f"Error occurred while deleting data from checkpointer: {e}") + # Optionally rollback if needed + if connection: + connection.rollback() + finally: + # Close the cursor and connection + if cursor: + cursor.close() + if connection: + connection.close() + else: + # For other supported checkpointer(i.e. inmemory) we don't need cleanup + pass + +def canonical_rag(query: str, conv_history: list) -> str: + """Use this for answering generic queries about products, specifications, warranties, usage, and issues.""" + + entry_doc_search = {"query": query, "top_k": 4, "conv_history": conv_history} + response = requests.post(canonical_rag_search, json=entry_doc_search).json() + + # Extract and aggregate the content + aggregated_content = "\n".join(chunk["content"] for chunk in response.get("chunks", [])) + + return aggregated_content \ No newline at end of file diff --git a/src/analytics/Dockerfile b/src/analytics/Dockerfile new file mode 100644 index 0000000..5668ef2 --- /dev/null +++ b/src/analytics/Dockerfile @@ -0,0 +1,46 @@ +ARG BASE_IMAGE_URL=nvcr.io/nvidia/base/ubuntu +ARG BASE_IMAGE_TAG=22.04_20240212 + +FROM ${BASE_IMAGE_URL}:${BASE_IMAGE_TAG} + +ENV PYTHONDONTWRITEBYTECODE=1 +ENV DEBIAN_FRONTEND noninteractive + +# Install required ubuntu packages for setting up python 3.10 +RUN apt update && \ + apt install -y curl software-properties-common && \ + add-apt-repository ppa:deadsnakes/ppa && \ + apt update && apt install -y python3.10 && \ + apt-get clean + +# Install pip for python3.10 +RUN curl -sS https://bootstrap.pypa.io/get-pip.py | python3.10 + +RUN rm -rf /var/lib/apt/lists/* + +# Uninstall build packages +RUN apt autoremove -y curl software-properties-common + +# Download the sources of apt packages within the container for standard legal compliance +RUN sed -i 's/# deb-src/deb-src/g' /etc/apt/sources.list +RUN apt update +# xz-utils is needed to pull the source and unpack them correctly +RUN apt install xz-utils -y +RUN mkdir -p /legal/source +WORKDIR /legal/source +# Read installed packages, strip all but the package names, pipe to 'apt source' to download respective packages +RUN apt list --installed | grep -i installed | sed 's|\(.*\)/.*|\1|' | xargs apt source --download-only +# The source is saved in directories as well as tarballs in the current dir +RUN rm xz-utils* +COPY LICENSE-3rd-party.txt /legal/ + +# Install common dependencies and copy common code +COPY src/common /opt/src/common + +# Copy and Install analytics specific modules +COPY src/analytics /opt/src/analytics +RUN --mount=type=bind,source=src/analytics/requirements.txt,target=/opt/analytics/requirements.txt \ + pip3 install --no-cache-dir -r /opt/analytics/requirements.txt + +WORKDIR /opt +ENTRYPOINT ["uvicorn", "src.analytics.server:app"] diff --git a/src/analytics/README.md b/src/analytics/README.md new file mode 100644 index 0000000..0fd5ba8 --- /dev/null +++ b/src/analytics/README.md @@ -0,0 +1,7 @@ +## Analytics Microservice Configuration + +### Data Persistence Configuration +You can control whether the application stores data in the database using the `PERSIST_DATA` environment variable. + +Default Value: true (data will be persisted). +Set to false: Data will not be stored in the database. diff --git a/src/analytics/datastore/__init__.py b/src/analytics/datastore/__init__.py new file mode 100644 index 0000000..a08b2c2 --- /dev/null +++ b/src/analytics/datastore/__init__.py @@ -0,0 +1,14 @@ +# SPDX-FileCopyrightText: Copyright (c) 2024 NVIDIA CORPORATION & AFFILIATES. All rights reserved. +# SPDX-License-Identifier: Apache-2.0 +# +# Licensed under the Apache License, Version 2.0 (the "License"); +# you may not use this file except in compliance with the License. +# You may obtain a copy of the License at +# +# http://www.apache.org/licenses/LICENSE-2.0 +# +# Unless required by applicable law or agreed to in writing, software +# distributed under the License is distributed on an "AS IS" BASIS, +# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +# See the License for the specific language governing permissions and +# limitations under the License. diff --git a/src/analytics/datastore/postgres_client.py b/src/analytics/datastore/postgres_client.py new file mode 100644 index 0000000..7eec1ad --- /dev/null +++ b/src/analytics/datastore/postgres_client.py @@ -0,0 +1,357 @@ +# SPDX-FileCopyrightText: Copyright (c) 2024 NVIDIA CORPORATION & AFFILIATES. All rights reserved. +# SPDX-License-Identifier: Apache-2.0 +# +# Licensed under the Apache License, Version 2.0 (the "License"); +# you may not use this file except in compliance with the License. +# You may obtain a copy of the License at +# +# http://www.apache.org/licenses/LICENSE-2.0 +# +# Unless required by applicable law or agreed to in writing, software +# distributed under the License is distributed on an "AS IS" BASIS, +# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +# See the License for the specific language governing permissions and +# limitations under the License. + +""" +Manager conversation history return relavant conversation history +based on session_id using postgres database +""" + +from typing import Optional, List +from sqlalchemy import create_engine, Column, String, DateTime, JSON, Float +from sqlalchemy.ext.declarative import declarative_base +from sqlalchemy.orm import sessionmaker +from datetime import datetime, timedelta +import psycopg2.extras +import psycopg2 +import logging +import json +import os + +from src.common.utils import get_config + +# TODO: Move this config to __init__ method +db_user = os.environ.get("POSTGRES_USER") +db_password = os.environ.get("POSTGRES_PASSWORD") +db_name = os.environ.get("POSTGRES_DB") + +logger = logging.getLogger(__name__) + +settings = get_config() +# Postgres connection URL +DATABASE_URL = f"postgresql://{db_user}:{db_password}@{settings.database.url}/{db_name}?sslmode=disable" + +Base = declarative_base() +engine = create_engine(DATABASE_URL) +Session = sessionmaker(bind=engine) + +class ConversationHistory(Base): + __tablename__ = 'conversation_history' + + session_id = Column(String, primary_key=True) + user_id = Column(String, nullable=True) + last_conversation_time = Column(DateTime) + start_conversation_time = Column(DateTime) + conversation_data = Column(JSON) + + +class Summary(Base): + __tablename__ = 'summary' + + session_id = Column(String, primary_key=True) + start_time = Column(String) + end_time = Column(String) + sentiment = Column(String) + summary = Column(String) + conversation_data = Column(JSON) + +class Feedback(Base): + __tablename__ = 'feedback' + + session_id = Column(String, primary_key=True) + sentiment = Column(Float) # Store feedback of sentiment + summary = Column(Float) # Store feedback of summary + session = Column(Float) # Store feedback of session + +class PostgresClient: + def __init__(self): + self.engine = engine + Base.metadata.create_all(self.engine) + + def store_conversation(self, session_id: str, user_id: Optional[str], conversation_history: list, last_conversation_time: str, start_conversation_time: str): + session = Session() + try: + # Store last_conversation_time and start_conversation_time in datetime format for easy filtering + conversation = ConversationHistory( + session_id=session_id, + user_id=user_id if user_id else None, + last_conversation_time=datetime.fromtimestamp(float(last_conversation_time)), + start_conversation_time=datetime.fromtimestamp(float(start_conversation_time)), + conversation_data=json.dumps(conversation_history) + ) + session.merge(conversation) + session.commit() + except Exception as e: + logger.error(f"Error storing conversation: {e}") + session.rollback() + finally: + session.close() + + + def get_conversation(self, session_id: str): + session = Session() + try: + conversation = session.query(ConversationHistory).filter_by(session_id=session_id).first() + if conversation: + return json.loads(conversation.conversation_data) + raise ValueError(f"Session with ID {session_id} not found") + + except ValueError as ve: + # Log the ValueError and propagate it + logger.warning(f"{ve}") + raise # Propagate the ValueError to the caller + except Exception as e: + logger.error(f"Error fetching conversation: {e}") + raise + finally: + session.close() + + + def fetch_conversation(self, session_id: str): + session = Session() + try: + conversation = session.query(ConversationHistory).filter_by(session_id=session_id).first() + if conversation: + return { + 'session_id': conversation.session_id, + 'user_id': conversation.user_id, + 'last_conversation_time': conversation.last_conversation_time, + 'conversation_history': json.loads(conversation.conversation_data) + } + return None + except Exception as e: + logger.warning(f"Error fetching conversation: {e}") + return None + finally: + session.close() + + + def is_session(self, session_id: str) -> bool: + session = Session() + try: + # Query to check if the session_id exists + exists = session.query(ConversationHistory.session_id).filter_by(session_id=session_id).first() is not None + return exists + except Exception as e: + logger.info(f"Error checking session: {e}") + return False + finally: + session.close() + + + def list_sessions_for_user(self, user_id: str): + session = Session() + try: + # Query to get all session IDs for the user + conversations = session.query(ConversationHistory).filter_by(user_id=user_id).all() + + result = [] + for conv in conversations: + conversation_hist = json.loads(conv.conversation_data) + if conversation_hist: + start_time = datetime.fromtimestamp(float(conversation_hist[0].get("timestamp"))) if conversation_hist[0].get("timestamp") else None + end_time = datetime.fromtimestamp(float(conversation_hist[-1].get("timestamp"))) if conversation_hist[-1].get("timestamp") else None + else: + start_time = None + end_time = None + + result.append({ + "session_id": conv.session_id, + "start_time": start_time, + "end_time": end_time + }) + + return result + except Exception as e: + logger.info(f"Error listing sessions for user: {e}") + return [] + finally: + session.close() + + + def save_summary_and_sentiment(self, session_id, session_info): + """Save the summary, sentiment in PostgreSQL""" + session = Session() + try: + summary = Summary( + session_id=session_id, + start_time=session_info.get("start_time"), + end_time=session_info.get("end_time"), + sentiment=session_info.get("sentiment"), + summary=session_info.get("summary"), + conversation_data=json.dumps(session_info.get("messages")) + ) + session.merge(summary) + session.commit() + except Exception as e: + logger.info(f"Error saving summary and sentiment: {e}") + session.rollback() + finally: + session.close() + + def get_session_summary_and_sentiment(self, session_id): + """Retrieve summary and sentiment from PostgreSQL or Redis""" + session = Session() + try: + # Check PostgreSQL first + summary = session.query(Summary).filter_by(session_id=session_id).first() + if summary: + return { + "summary": summary.summary, + "sentiment": summary.sentiment, + "start_time": summary.start_time, + "end_time": summary.end_time + } + return {} + except Exception as e: + logger.info(f"Error retrieving session summary and sentiment: {e}") + return {} + finally: + session.close() + + + def save_query_sentiment(self, session_id, session_info): + """Save query sentiment in PostgreSQL""" + session = Session() + try: + query_sentiment = Summary( + session_id=session_id, + start_time=session_info.get("start_time"), + end_time=session_info.get("end_time"), + conversation_data=json.dumps(session_info.get("messages")) + ) + session.merge(query_sentiment) + session.commit() + except Exception as e: + logger.info(f"Error saving query sentiment: {e}") + session.rollback() + finally: + session.close() + + def get_query_sentiment(self, session_id): + """Retrieve query sentiment from PostgreSQL""" + session = Session() + try: + query_sentiment = session.query(Summary).filter_by(session_id=session_id).first() + if query_sentiment.conversation_data: + return { + "messages": json.loads(query_sentiment.conversation_data), + "start_time": query_sentiment.start_time, + "end_time": query_sentiment.end_time + } + return {} + except Exception as e: + logger.info(f"Error retrieving query sentiment: {e}") + return {} + finally: + session.close() + + + def save_sentiment_feedback(self, session_id: str, sentiment_feedback: float): + """Retrieve query sentiment from PostgreSQL""" + session = Session() + try: + feedback = Feedback( + session_id=session_id, + sentiment=sentiment_feedback, + ) + session.merge(feedback) + session.commit() + except Exception as e: + logger.info(f"Error while saving sentiment feedback : {e}") + finally: + session.close() + + def save_summary_feedback(self, session_id: str, summary_feedback: float): + session = Session() + try: + feedback = Feedback( + session_id=session_id, + summary=summary_feedback, + ) + session.merge(feedback) + session.commit() + except Exception as e: + logger.info(f"Error while saving sentiment feedback : {e}") + finally: + session.close() + + def save_session_feedback(self, session_id: str, session_feedback: float): + session = Session() + try: + feedback = Feedback( + session_id=session_id, + session=session_feedback, + ) + session.merge(feedback) + session.commit() + except Exception as e: + logger.info(f"Error while saving session feedback : {e}") + return {} + finally: + session.close() + + def get_purchase_history(self, user_id: str) -> List[str]: + """Use this to retrieve the user's purchase history.""" + + # TODO: Add filter logic based on time. Like product pruchased in last 5 days + SQL_QUERY = f""" + SELECT * + FROM customer_data + WHERE customer_id={user_id}; + """ + host, port = settings.database.url.split(":") + + db_params = { + 'dbname': os.environ.get("CUSTOMER_DATA_DB"), + 'user': db_user, + 'password': db_password, + 'host': host, + 'port': port + } + + # Using context manager for connection and cursor + with psycopg2.connect(**db_params) as conn: + with conn.cursor(cursor_factory=psycopg2.extras.DictCursor) as cur: + cur.execute(SQL_QUERY) + result = cur.fetchall() + + # Returning result as a list of dictionaries + return [dict(row) for row in result] + + def get_conversations_in_last_h_hours(self, hours: int): + # Calculate the time threshold + threshold_time = datetime.now() - timedelta(hours=hours) + + # Create a session + session = Session() + + # Query conversations that occurred in the last h hours + conversations = session.query(ConversationHistory).filter( + ConversationHistory.last_conversation_time >= threshold_time + ).all() + + # Close the session + session.close() + + result = [] + + for conv in conversations: + result.append({ + "session_id": conv.session_id, + "user_id": conv.user_id, + "start_conversation_time": conv.start_conversation_time, + "last_conversation_time": conv.last_conversation_time + }) + return result diff --git a/src/analytics/datastore/redis_client.py b/src/analytics/datastore/redis_client.py new file mode 100644 index 0000000..18277fa --- /dev/null +++ b/src/analytics/datastore/redis_client.py @@ -0,0 +1,194 @@ +# SPDX-FileCopyrightText: Copyright (c) 2024 NVIDIA CORPORATION & AFFILIATES. All rights reserved. +# SPDX-License-Identifier: Apache-2.0 +# +# Licensed under the Apache License, Version 2.0 (the "License"); +# you may not use this file except in compliance with the License. +# You may obtain a copy of the License at +# +# http://www.apache.org/licenses/LICENSE-2.0 +# +# Unless required by applicable law or agreed to in writing, software +# distributed under the License is distributed on an "AS IS" BASIS, +# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +# See the License for the specific language governing permissions and +# limitations under the License. + +""" +Manager conversation history return relavant conversation history +based on session_id using redis +""" + +import json +import time +from datetime import datetime +from typing import Any, Dict, List, Optional + +import redis +from src.common.utils import get_config + +# To store and fetch conversation we use database 0 +DEFAULT_DB_CONVERSATION = "0" +# To store sentiment and summary we use database 1 +DEFAULT_DB_SUMMARY = "1" +# To store feedback we use database 2 +DEFAULT_DB_FEEDBACK = "2" + + +class RedisClient: + def __init__(self) -> None: + host, port = get_config().database.url.split(":") + # db = config.get("db", None) or DEFAULT_DB + print(f"Host: {host}, Port: {port}") + # Redis client to get and store conversation + self.redis_client_conversation = redis.Redis( + host=host, port=port, db=DEFAULT_DB_CONVERSATION, decode_responses=True + ) + # Redis client to get and store summary + self.redis_client_summary = redis.Redis( + host=host, port=port, db=DEFAULT_DB_SUMMARY, decode_responses=True + ) + self.redis_client_feedback = redis.Redis( + host=host, port=port, db=DEFAULT_DB_FEEDBACK, decode_responses=True + ) + + + def get_conversation(self, session_id: str) -> List: + """Retrieve the entire conversation history from Redis as a list""" + + conversation_hist = self.redis_client_conversation.lrange( + f"{session_id}:conversation_hist", 0, -1 + ) + return [json.loads(conv) for conv in conversation_hist] + + + def get_k_conversation(self, session_id: str, k_turn: Optional[int] = None) -> List: + """Retrieve the last k conversations from Redis""" + + # TODO: Evaluate this implementation + if k_turn is None: + k_turn = -1 + conversation_hist = self.redis_client_conversation.lrange( + f"{session_id}:conversation_hist", -k_turn, -1 + ) + return [json.loads(conv) for conv in conversation_hist] + + + def save_conversation( + self, session_id: str, user_id: Optional[str], conversation: List + ) -> bool: + try: + # Store each conversation entry as a JSON string in a Redis list + for conv in conversation: + self.redis_client_conversation.rpush( + f"{session_id}:conversation_hist", json.dumps(conv) + ) + + # Store user_id and last conversation time as separate keys + if user_id: + self.redis_client_conversation.set(f"{session_id}:user_id", user_id) + self.redis_client_conversation.set( + f"{session_id}:last_conversation_time", f"{time.time()}" + ) + + return True + except Exception as e: + print(f"Failed to ingest document due to exception {e}") + return False + + + def is_session(self, session_id: str) -> bool: + """Check if session_id already exist in database""" + return self.redis_client_conversation.exists(session_id) + + + def list_sessions_for_user(self, user_id) -> Dict[str, Any]: + """ + List all session IDs for a given user ID along with start and end times. + + Parameters: + user_id (str): The user ID to filter sessions by. + + Returns: + list: A list of dictionaries containing session ID, start time, and end time. + """ + sessions = [] + # TODO: Optimize this, instead of traversing over all values + # we can maintain a another list with user: [session] mapping + for key in self.redis_client_conversation.scan_iter("*:user_id"): + if self.redis_client_conversation.get(key) == user_id: + session_id = key.split(":")[0] + conversation_hist = self.redis_client_conversation.lrange( + f"{session_id}:conversation_hist", 0, -1 + ) + + # Convert conversation history from JSON strings to dictionaries + conversation_hist = [json.loads(conv) for conv in conversation_hist] + + sessions.append( + { + "session_id": session_id, + "start_time": ( + datetime.fromtimestamp( + float(conversation_hist[0].get("timestamp")) + ) + if conversation_hist + else None + ), + "end_time": ( + datetime.fromtimestamp( + float(conversation_hist[-1].get("timestamp")) + ) + if conversation_hist + else None + ), + } + ) + return sessions + + + def get_session_summary_and_sentiment(self, session_id): + session_info = {} + if self.redis_client_summary.exists(f"{session_id}:summary"): + session_info["summary"] = self.redis_client_summary.get(f"{session_id}:summary") + session_info["sentiment"] = self.redis_client_summary.get(f"{session_id}:sentiment") + session_info["start_time"] = datetime.fromtimestamp(float(self.redis_client_summary.get(f"{session_id}:start_time"))) + session_info["end_time"] = datetime.fromtimestamp(float(self.redis_client_summary.get(f"{session_id}:end_time"))) + return session_info + + def save_summary_and_sentiment(self, session_id, session_info): + """Save the summary, sentiment in separate dict""" + + self.redis_client_summary.set(f"{session_id}:summary", session_info.get("summary")) + self.redis_client_summary.set(f"{session_id}:sentiment", session_info.get("sentiment")) + self.redis_client_summary.set(f"{session_id}:start_time", session_info.get("start_time")) + self.redis_client_summary.set(f"{session_id}:end_time", session_info.get("end_time")) + + + def get_query_sentiment(self, session_id): + session_info = {} + if self.redis_client_summary.exists(f"{session_id}:conversation_hist"): + session_info["messages"] = json.loads(self.redis_client_summary.get(f"{session_id}:conversation_hist")) + session_info["start_time"] = datetime.fromtimestamp(float(self.redis_client_summary.get(f"{session_id}:start_time"))) + session_info["end_time"] = datetime.fromtimestamp(float(self.redis_client_summary.get(f"{session_id}:end_time"))) + return session_info + + + def save_query_sentiment(self, session_id, session_info): + self.redis_client_summary.set(f"{session_id}:conversation_hist", json.dumps(session_info.get("messages"))) + self.redis_client_summary.set(f"{session_id}:start_time", session_info.get("start_time")) + self.redis_client_summary.set(f"{session_id}:end_time", session_info.get("end_time")) + + + def save_sentiment_feedback(self, session_id: str, sentiment_feedback: float): + """Save sentiment feedback""" + return self.redis_client_feedback.set(f"{session_id}:sentiment", sentiment_feedback) + + + def save_summary_feedback(self, session_id: str, summary_feedback: float): + """Save summary feedback""" + return self.redis_client_feedback.set(f"{session_id}:summary", summary_feedback) + + + def save_session_feedback(self, session_id: str, session_feedback: float): + """Save summary feedback""" + return self.redis_client_feedback.set(f"{session_id}:session", session_feedback) diff --git a/src/analytics/datastore/session_manager.py b/src/analytics/datastore/session_manager.py new file mode 100644 index 0000000..ef9116a --- /dev/null +++ b/src/analytics/datastore/session_manager.py @@ -0,0 +1,107 @@ +# SPDX-FileCopyrightText: Copyright (c) 2024 NVIDIA CORPORATION & AFFILIATES. All rights reserved. +# SPDX-License-Identifier: Apache-2.0 +# +# Licensed under the Apache License, Version 2.0 (the "License"); +# you may not use this file except in compliance with the License. +# You may obtain a copy of the License at +# +# http://www.apache.org/licenses/LICENSE-2.0 +# +# Unless required by applicable law or agreed to in writing, software +# distributed under the License is distributed on an "AS IS" BASIS, +# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +# See the License for the specific language governing permissions and +# limitations under the License. + +""" +Manager conversation history return relavant conversation history +based on session_id +""" + +from typing import Any, Dict, List, Optional + +from src.analytics.datastore.postgres_client import PostgresClient +from src.analytics.datastore.redis_client import RedisClient +from src.common.utils import get_config + + +class SessionManager: + """ + Store the conversation between user and assistant, it's stored in format + {"session_id": {"user_id": "", "conversation_hist": [{"role": "user/assistant", "content": "", "timestamp": ""}], "last_conversation_time: ""}} + + Store summary of conversation + {"session_id": {"summary": "", "sentiment": "", "start_time: "", "end_time: ""}} + """ + + def __init__(self, *args, **kwargs) -> None: + db_name = get_config().database.name + if db_name == "redis": + print("Using Redis client for user history") + self.memory = RedisClient() + elif db_name == "postgres": + print("Using postgres for user history") + self.memory = PostgresClient() + else: + raise ValueError( + f"{db_name} in not supported. Supported type redis, postgres" + ) + + # TODO: Create API to get last k conversation from database instead of returning everything + def get_conversation(self, session_id: str) -> List: + return self.memory.get_conversation(session_id) + + def get_k_conversation(self, session_id: str, k_turn: Optional[int] = None) -> List: + return self.memory.get_k_conversation(session_id, k_turn) + + def save_conversation( + self, session_id: str, user_id: Optional[str], conversation: List + ) -> bool: + return self.memory.save_conversation(session_id, user_id, conversation) + + def is_session(self, session_id: str) -> bool: + """Check if session_id already exist in database""" + return self.memory.is_session(session_id) + + def list_sessions_for_user(self, user_id) -> Dict[str, Any]: + """ + List all session IDs for a given user ID along with start and end times. + """ + return self.memory.list_sessions_for_user(user_id) + + def get_session_summary_and_sentiment(self, session_id): + return self.memory.get_session_summary_and_sentiment(session_id) + + def save_summary_and_sentiment(self, session_id, session_info): + """Save the summary, sentiment in separate dict""" + + return self.memory.save_summary_and_sentiment(session_id, session_info) + + def get_query_sentiment(self, session_id): + + return self.memory.get_query_sentiment(session_id) + + def save_query_sentiment(self, session_id, conversation_hist): + + return self.memory.save_query_sentiment(session_id, conversation_hist) + + def save_sentiment_feedback(self, session_id: str, sentiment_feedback: float): + """Save sentiment feedback""" + return self.memory.save_sentiment_feedback(session_id, sentiment_feedback) + + + def save_summary_feedback(self, session_id: str, summary_feedback: float): + return self.memory.save_summary_feedback(session_id, summary_feedback) + + + def save_session_feedback(self, session_id: str, session_feedback: float): + return self.memory.save_session_feedback(session_id, session_feedback) + + + def get_purchase_history(self, user_id: str) -> List[str]: + """Use this to retrieve the user's purchase history.""" + return self.memory.get_purchase_history(user_id) + + + def get_conversations_in_last_h_hours(self, hours: int): + return self.memory.get_conversations_in_last_h_hours(hours) diff --git a/src/analytics/main.py b/src/analytics/main.py new file mode 100644 index 0000000..c7923d5 --- /dev/null +++ b/src/analytics/main.py @@ -0,0 +1,242 @@ +# SPDX-FileCopyrightText: Copyright (c) 2024 NVIDIA CORPORATION & AFFILIATES. All rights reserved. +# SPDX-License-Identifier: Apache-2.0 +# +# Licensed under the Apache License, Version 2.0 (the "License"); +# you may not use this file except in compliance with the License. +# You may obtain a copy of the License at +# +# http://www.apache.org/licenses/LICENSE-2.0 +# +# Unless required by applicable law or agreed to in writing, software +# distributed under the License is distributed on an "AS IS" BASIS, +# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +# See the License for the specific language governing permissions and +# limitations under the License. +import os +import logging +from datetime import datetime +from enum import Enum +from typing import Annotated, Generator, Literal, Sequence, TypedDict + +from langchain_core.messages import BaseMessage +from langchain_core.output_parsers import StrOutputParser +from langchain_core.prompts.chat import ChatPromptTemplate +from langchain_core.runnables import RunnableConfig +from pydantic import BaseModel, Field +from src.analytics.datastore.session_manager import SessionManager +from src.common.utils import get_config, get_llm, get_prompts + +logger = logging.getLogger(__name__) +prompts = get_prompts() + +# TODO get the default_kwargs from the Agent Server API +default_llm_kwargs = {"temperature": 0, "top_p": 0.7, "max_tokens": 1024} + +# Initialize persist_data to determine whether data should be stored in the database. +persist_data = os.environ.get("PERSIST_DATA", "true").lower() == "true" + +# Initialize session manager during startup +session_manager = None +try: + session_manager = SessionManager() +except Exception as e: + logger.info(f"Failed to connect to DB during init, due to exception {e}") + + +def get_database(): + """ + Connect to the database. + """ + global session_manager + try: + if not session_manager: + session_manager = SessionManager() + + return session_manager + except Exception as e: + logger.info(f"Error connecting to database: {e}") + return None + + +def generate_summary(conversation_history): + """ + Generate a summary of the conversation. + + Parameters: + conversation_history (List): The conversation text. + + Returns: + str: A summary of the conversation. + """ + logger.info(f"conversation history: {conversation_history}") + llm = get_llm(**default_llm_kwargs) + prompt = prompts.get("summary_prompt", "") + for turn in conversation_history: + prompt += f"{turn['role']}: {turn['content']}\n" + + prompt += "\n\nSummary: " + response = llm.invoke(prompt) + + return response.content + + +def generate_session_summary(session_id): + # TODO: Check for corner cases like when session_id does not exist + session_manager = get_database() + + # Check if summary already exists in database + session_info = session_manager.get_session_summary_and_sentiment(session_id) + if session_info and session_info.get("summary", None): + return session_info + + # Generate summary and session info + conversation_history = session_manager.get_conversation(session_id) + summary = generate_summary(conversation_history) + sentiment = generate_sentiment(conversation_history) + + if persist_data: + # Save the summary and sentiment in database + session_manager.save_summary_and_sentiment( + session_id, + { + "summary": summary, + "sentiment": sentiment, + "start_time": conversation_history[0].get("timestamp", 0), + "end_time": conversation_history[-1].get("timestamp", 0), + } + ) + return { + "summary": summary, + "sentiment": sentiment, + "start_time": datetime.fromtimestamp( + float(conversation_history[0].get("timestamp", 0)) + ), + "end_time": datetime.fromtimestamp( + float(conversation_history[-1].get("timestamp", 0)) + ), + } + + +def fetch_user_conversation(user_id, start_time=None, end_time=None): + """ + Fetch a user's conversation from the database. + """ + try: + # TODO: Use start time and end time to filter the data + session_manager = get_database() + conversations = session_manager.list_sessions_for_user(user_id) + logger.info(f"Conversation: {conversations}") + return conversations + except Exception as e: + logger.error(f"Error fetching conversation: {e}") + return None + + +def generate_sentiment(conversation_history): + # Define an Enum for the sentiment values + class SentimentEnum(str, Enum): + POSITIVE = "positive" + NEUTRAL = "neutral" + NEGATIVE = "negative" + + # Define the Pydantic model using the Enum + class Sentiment(BaseModel): + """Sentiment for conversation.""" + + sentiment: SentimentEnum = Field( + description="Relevant value 'positive', 'neutral' or 'negative'" + ) + + logger.info("Finding sentiment for conversation") + llm = get_llm(**default_llm_kwargs) + prompt = prompts.get("sentiment_prompt", "") + for turn in conversation_history: + prompt += f"{turn['role']}: {turn['content']}\n" + + llm_with_tool = llm.with_structured_output(Sentiment) + + response = llm_with_tool.invoke(prompt) + sentiment = response.sentiment.value + logger.info(f"Conversation classified as {sentiment}") + return sentiment + + +def generate_sentiment_for_query(session_id): + """Generate sentiment for user query and assistant response + """ + + logger.info("Fetching sentiment for queries") + # Check if the sentiment is already identified in database, if yes return that + session_manager = get_database() + + session_info = session_manager.get_query_sentiment(session_id) + + if session_info and session_info.get("messages", None): + return { + "messages": session_info.get("messages"), + "session_info": { + "session_id": session_id, + "start_time": session_info.get("start_time"), + "end_time": session_info.get("start_time"), + }, + } + + class SentimentEnum(str, Enum): + POSITIVE = "positive" + NEUTRAL = "neutral" + NEGATIVE = "negative" + + # Define the Pydantic model using the Enum + class Sentiment(BaseModel): + """Sentiment for conversation.""" + + sentiment: SentimentEnum = Field( + description="Relevant value 'positive', 'neutral' or 'negative'" + ) + + + # Generate summary and session info + conversation_history = session_manager.get_conversation(session_id) + logger.info(f"Conversation history: {conversation_history}") + + logger.info("Finding sentiment for conversation") + llm = get_llm(**default_llm_kwargs) + + llm_with_tool = llm.with_structured_output(Sentiment) + + messages = [] + # TODO: parallize this operation for faster response + # Find sentiment for individual query and assistant response + for turn in conversation_history: + prompt = prompts.get("query_sentiment_prompt", "") + prompt += f"{turn['role']}: {turn['content']}\n" + + response = llm_with_tool.invoke(prompt) + sentiment = response.sentiment.value + messages.append({ + "role": turn["role"], + "content": turn["content"], + "sentiment": sentiment, + }) + + session_info = { + "messages": messages, + "start_time": conversation_history[0].get("timestamp", 0), + "end_time": conversation_history[-1].get("timestamp", 0), + } + if persist_data: + # Save information before sending it to user + session_manager.save_query_sentiment(session_id, session_info) + return { + "messages": messages, + "session_info": { + "session_id": session_id, + "start_time": datetime.fromtimestamp( + float(conversation_history[0].get("timestamp", 0)) + ), + "end_time": datetime.fromtimestamp( + float(conversation_history[-1].get("timestamp", 0)) + ), + }, + } + diff --git a/src/analytics/prompt.yaml b/src/analytics/prompt.yaml new file mode 100644 index 0000000..956772a --- /dev/null +++ b/src/analytics/prompt.yaml @@ -0,0 +1,20 @@ +sentiment_prompt: | + Analyze the sentiment of the following conversation between a customer service agent and a user. Provide the overall sentiment category. + Sentiment Categories: + Positive: Indicates satisfaction, gratitude, or successful resolution. + Negative: Indicates frustration, complaints, or unresolved issues. + Neutral: Indicates factual exchanges without strong emotions. + Instructions: + - Read the entire conversation carefully. + - Determine the overall sentiment category (Positive, Negative, Neutral). + + Please analyze the following conversation and provide your sentiment categorization: + +summary_prompt: | + Summarize the following conversation between a service rep and a customer in a + + few sentences. Use only the information from the conversation. + +query_sentiment_prompt: | + You are given the user query or assistant response. Find the sentiment for given query + \ No newline at end of file diff --git a/src/analytics/requirements.txt b/src/analytics/requirements.txt new file mode 100644 index 0000000..2fbc336 --- /dev/null +++ b/src/analytics/requirements.txt @@ -0,0 +1,10 @@ +fastapi==0.115.2 +uvicorn[standard]==0.27.1 +starlette==0.40.0 +langchain-nvidia-ai-endpoints==0.2.2 +langchain==0.2.16 +dataclass-wizard==0.22.3 +redis==5.0.8 +psycopg2-binary==2.9.9 +SQLAlchemy==2.0.31 +bleach==6.1.0 \ No newline at end of file diff --git a/src/analytics/server.py b/src/analytics/server.py new file mode 100644 index 0000000..11945f1 --- /dev/null +++ b/src/analytics/server.py @@ -0,0 +1,495 @@ +# SPDX-FileCopyrightText: Copyright (c) 2024 NVIDIA CORPORATION & AFFILIATES. All rights reserved. +# SPDX-License-Identifier: Apache-2.0 +# +# Licensed under the Apache License, Version 2.0 (the "License"); +# you may not use this file except in compliance with the License. +# You may obtain a copy of the License at +# +# http://www.apache.org/licenses/LICENSE-2.0 +# +# Unless required by applicable law or agreed to in writing, software +# distributed under the License is distributed on an "AS IS" BASIS, +# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +# See the License for the specific language governing permissions and +# limitations under the License. + +"""The definition of the Llama Index chain server.""" +import os +import json +import logging +from typing import List +import bleach +import importlib +import random + +# For session response +from fastapi import Query, HTTPException +from fastapi.responses import JSONResponse +from pydantic import BaseModel +from datetime import datetime +from typing import Optional, List +from typing import Literal + +from fastapi import FastAPI, Request +from fastapi.encoders import jsonable_encoder +from fastapi.exceptions import RequestValidationError +from fastapi.responses import JSONResponse +from fastapi.middleware.cors import CORSMiddleware +from starlette.status import HTTP_422_UNPROCESSABLE_ENTITY +from pydantic import BaseModel, Field, validator + +from src.analytics.datastore.session_manager import SessionManager + +logging.basicConfig(level=os.environ.get('LOGLEVEL', 'INFO').upper()) +logger = logging.getLogger(__name__) + +tags_metadata = [ + { + "name": "Health", + "description": "APIs for checking and monitoring server liveliness and readiness.", + }, + {"name": "Feedback", "description": "APIs for storing useful information for data flywheel."}, + {"name": "Session", "description": "APIs for fetching useful information for different sessions."}, + {"name": "User Data", "description": "APIs for fetching user specific information."}, +] + +# create the FastAPI server +app = FastAPI(title="Analytics API's for AI Virtual Assistant for Customer Service", + description="This API schema describes all the analytics endpoints exposed for the AI Virtual Assistant for Customer Service NIM Blueprint", + version="1.0.0", + docs_url="/docs", + redoc_url="/redoc", + openapi_tags=tags_metadata, +) + +EXAMPLE_DIR = "./" +# List of fallback responses sent out for any Exceptions from /generate endpoint +FALLBACK_RESPONSES = [ + "Please try re-phrasing, I am likely having some trouble with that conversation.", + "I will get better with time, please retry with a different conversation.", + "I wasn't able to process your conversation. Let's try something else.", + "Something went wrong. Could you try again in a few seconds with a different conversation.", + "Oops, that proved a tad difficult for me, can you retry with another conversation?" +] + +# Allow access in browser from RAG UI and Storybook (development) +origins = [ + "*" +] +app.add_middleware( + CORSMiddleware, + allow_origins=origins, + allow_credentials=False, + allow_methods=["*"], + allow_headers=["*"], +) + +class HealthResponse(BaseModel): + message: str = Field(max_length=4096, pattern=r'[\s\S]*', default="") + +# For session response +# Updated model for session response +class SessionInfo(BaseModel): + session_id: str = Field(..., description="The ID of the session") + # Make the start_time mandatory + # TODO Make start time mandatory when needed + start_time: Optional[datetime] = Field(None, description="The start time of the session") + end_time: Optional[datetime] = Field(None, description="The end time of the session") + # Add other session-related if needed + + # TODO uncomment while actual implementation + # @validator('start_time', 'end_time') + # def ensure_utc(cls, v): + # if v is not None and v.tzinfo is None: + # raise ValueError("Datetime must be in UTC format") + # return v + +class SessionsResponse(BaseModel): + session_id: str = Field(..., description="The ID of the session") + user_id: Optional[str] = Field(..., description="The ID of the user") + start_time: Optional[datetime] = Field(None, description="The start time of the session") + end_time: Optional[datetime] = Field(None, description="The end time of the session") + +class SessionSummaryResponse(BaseModel): + session_info: SessionInfo + summary: str = Field(..., description="The generated summary of the session") + sentiment: Literal['positive', 'negative', 'neutral'] = Field(..., description="The sentiment of the text, which can be positive, negative, or neutral.") + + +class SessionConversationMessage(BaseModel): + """Definition of the Chat Message type.""" + role: str = Field(description="Role for a message AI, User and System", default="user", max_length=256, pattern=r'[\s\S]*') + content: str = Field(description="The input query/prompt to the pipeline.", default="I am going to Paris, what should I see?", max_length=131072, pattern=r'[\s\S]*') + sentiment: Literal['positive', 'negative', 'neutral'] = Field(..., description="The sentiment of the text, which can be positive, negative, or neutral.") + + @validator('role') + def validate_role(cls, value): + """ Field validator function to validate values of the field role""" + value = bleach.clean(value, strip=True) + valid_roles = {'user', 'assistant', 'system'} + if value.lower() not in valid_roles: + raise ValueError("Role must be one of 'user', 'assistant', or 'system'") + return value.lower() + + @validator('content') + def sanitize_content(cls, v): + """ Feild validator function to santize user populated feilds from HTML""" + return bleach.clean(v, strip=True) + +class SessionConversationResponse(BaseModel): + session_info: SessionInfo + messages: List[SessionConversationMessage] = Field(..., description="The list of messages in the conversation") + +class FeedbackRequest(BaseModel): + """Definition of the Feedback Request data type.""" + feedback: float = Field(..., description="A unique identifier representing your end-user.", ge=-1.0, le=1.0) + session_id: str = Field(..., description="A unique identifier representing the session associated with the response.") + +class FeedbackResponse(BaseModel): + """Definition of the Feedback Request data type.""" + message: str = Field(max_length=4096, pattern=r'[\s\S]*', default="") + +class PurchaseInfo(BaseModel): + customer_id: str + order_id: str + product_name: str + order_date: str + quantity: Optional[int] + order_amount: Optional[float] + order_status: Optional[str] + return_status: Optional[str] + return_start_date: Optional[str] + return_received_date: Optional[str] + return_completed_date: Optional[str] + return_reason: Optional[str] + notes: Optional[str] + +@app.on_event("startup") +def import_example() -> None: + """ + Import the example class from the specified example file. + + """ + file_location = os.path.join(EXAMPLE_DIR, os.environ.get("EXAMPLE_PATH", "basic_rag/llamaindex")) + + for root, dirs, files in os.walk(file_location): + for file in files: + if file == "main.py": + # Import the specified file dynamically + spec = importlib.util.spec_from_file_location(name="main", location=os.path.join(root, file)) + module = importlib.util.module_from_spec(spec) + spec.loader.exec_module(module) + + logger.info(f"Found analytics api {file}") + # Get the Analytics app + app.analytics = module + # break # Stop the loop once we find and load main.py + + app.session_manager = SessionManager() + +@app.exception_handler(RequestValidationError) +async def request_validation_exception_handler( + request: Request, exc: RequestValidationError +) -> JSONResponse: + return JSONResponse( + status_code=HTTP_422_UNPROCESSABLE_ENTITY, + content={"detail": jsonable_encoder(exc.errors(), exclude={"input"})}) + +@app.get("/health", tags=["Health"], response_model=HealthResponse, responses={ + 500: { + "description": "Internal Server Error", + "content": { + "application/json": { + "example": {"detail": "Internal server error occurred"} + } + } + } +}) +async def health_check(): + """ + Perform a Health Check + + Returns 200 when service is up. This does not check the health of downstream services. + """ + + response_message = "Service is up." + return HealthResponse(message=response_message) + +@app.get("/sessions", tags=["Session"], response_model=List[SessionsResponse], responses={ + 404: { + "description": "No Sessions Found", + "content": { + "application/json": { + "example": {"detail": "No sessions found for the specified time range"} + } + } + }, + 500: { + "description": "Internal Server Error", + "content": { + "application/json": { + "example": {"detail": "Internal server error occurred"} + } + } + } +}) +# TODO Add the instrumentation_wrapper when required +#@llamaindex_instrumentation_wrapper +async def get_sessions( + hours: int = Query(..., description="Last K hours, for which sessions info is extracted"), +) -> List[SessionsResponse]: + """ + Retrieve session information in last k hours + """ + try: + result = app.session_manager.get_conversations_in_last_h_hours(hours) + + resp = [] + for r in result: + resp.append( + SessionsResponse( + session_id=r.get("session_id"), + user_id=r.get("user_id"), + start_time=r.get("start_conversation_time"), + end_time=r.get("last_conversation_time"), + ) + ) + + return resp + + except Exception as e: + logger.error(f"Error in GET /sessions endpoint. Error details: {e}") + return JSONResponse(content={"detail": "Error occurred while retrieving session information"}, status_code=500) + + +@app.get("/session/summary", tags=["Session"], response_model=SessionSummaryResponse, responses={ + 404: { + "description": "Session Not Found", + "content": { + "application/json": { + "example": {"detail": "Session not found"} + } + } + }, + 500: { + "description": "Internal Server Error", + "content": { + "application/json": { + "example": {"detail": "Internal server error occurred"} + } + } + } +}) +async def generate_session_summary( + request: Request, + session_id: str = Query(..., description="The ID of the session") +) -> SessionSummaryResponse: + """Generate a summary and sentiment analysis for the specified session.""" + + try: + result = app.analytics.generate_session_summary(session_id) + summary = result.get("summary") + sentiment = result.get("sentiment") + session_info = SessionInfo(session_id=session_id, start_time=result.get("start_time"), end_time=result.get("end_time")) + response = SessionSummaryResponse(session_info=session_info, summary=summary, sentiment=sentiment) + return response + + except ValueError as e: + logger.error(f"Session not found for ID {session_id}. Error details: {e}") + return SessionSummaryResponse(session_info=SessionInfo(session_id=session_id), summary=random.choice(FALLBACK_RESPONSES), sentiment="neutral") + + except Exception as e: + logger.error(f"Error in GET /session/summary endpoint. Error details: {e}") + return SessionSummaryResponse(session_info=SessionInfo(session_id=session_id), summary=random.choice(FALLBACK_RESPONSES), sentiment="neutral") + + +@app.get("/session/conversation", tags=["Session"], response_model=SessionConversationResponse, responses={ + 404: { + "description": "Session Not Found", + "content": { + "application/json": { + "example": {"detail": "Session not found"} + } + } + }, + 500: { + "description": "Internal Server Error", + "content": { + "application/json": { + "example": {"detail": "Internal server error occurred"} + } + } + } +}) +async def get_session_conversation( + request: Request, + session_id: str = Query(..., description="The ID of the session"), +) -> SessionConversationResponse: + """Retrieve the conversation and sentiment for the specified session.""" + + try: + result = app.analytics.generate_sentiment_for_query(session_id) + + message = [] + for msg in result.get("messages", []): + message.append(SessionConversationMessage(role=msg.get("role"), content=msg.get("content"), sentiment=msg.get("sentiment"))) + + session_info = SessionInfo(session_id=session_id, start_time=result.get("session_info", {}).get("start_time"), end_time=result.get("session_info", {}).get("start_time")) + response = SessionConversationResponse(session_info=session_info, messages=message) + return response + + except ValueError as e: + logger.error(f"Session not found for ID {session_id}. Error details: {e}") + raise HTTPException(status_code=404, detail="Session not found. Please check the session ID or end the session.") + + except Exception as e: + logger.error(f"Error in GET /session/conversation endpoint. Error details: {e}") + raise HTTPException(status_code=500, detail="Internal server error occurred") + + +@app.post("/get_user_purchase_history", tags=["User Data"], response_model=List[PurchaseInfo], responses={ + 404: { + "description": "Session Not Found", + "content": { + "application/json": { + "example": {"detail": "Session not found"} + } + } + }, + 500: { + "description": "Internal Server Error", + "content": { + "application/json": { + "example": {"detail": "Internal server error occurred"} + } + } + } +}) +async def get_user_purchase_history( + user_id: str, +) -> List[PurchaseInfo]: + """Get purchase history for user""" + try: + + logger.info(f"Fetching purchase history for user {user_id}") + product_info = app.session_manager.get_purchase_history(user_id) + response = [] + for product in product_info: + response.append(PurchaseInfo( + customer_id=str(product.get("customer_id")), + order_id=str(product.get("order_id")), + product_name=str(product.get("product_name")), + order_date=str(product.get("order_date")), + quantity=str(product.get("quantity")), + order_amount=str(product.get("order_amount")), + order_status=str(product.get("order_status")), + return_status=str(product.get("return_status")), + return_start_date=str(product.get("return_start_date")), + return_received_date=str(product.get("return_received_date")), + return_completed_date=str(product.get("return_completed_date")), + return_reason=str(product.get("return_reason")), + notes=str(product.get("notes")), + ) + ) + return response + except Exception as e: + logger.error(f"Error in GET /get_user_purchase_history endpoint. Error details: {e}") + return [] + +@app.post("/feedback/sentiment", tags=["Feedback"], response_model=FeedbackResponse, responses={ + 404: { + "description": "Session Not Found", + "content": { + "application/json": { + "example": {"detail": "Session not found"} + } + } + }, + 500: { + "description": "Internal Server Error", + "content": { + "application/json": { + "example": {"detail": "Internal server error occurred"} + } + } + } +}) +async def store_sentiment_feedback( + request: Request, + feedback: FeedbackRequest, +) -> FeedbackResponse: + """Store user feedback for the sentiment analysis of a conversation session.""" + # TODO: Add validation to store feeedback only when conversation exist + + try: + logger.info("Storing user feedback for sentiment") + app.session_manager.save_sentiment_feedback(feedback.session_id, feedback.feedback) + return FeedbackResponse(message="Sentiment feedback saved successfully") + except Exception as e: + logger.error(f"Error in GET /feedback/sentiment endpoint. Error details: {e}") + return FeedbackResponse(message="Failed to store sentiment feedback") + +@app.post("/feedback/summary", tags=["Feedback"], response_model=FeedbackResponse, responses={ + 404: { + "description": "Session Not Found", + "content": { + "application/json": { + "example": {"detail": "Session not found"} + } + } + }, + 500: { + "description": "Internal Server Error", + "content": { + "application/json": { + "example": {"detail": "Internal server error occurred"} + } + } + } +}) +async def store_summary_feedback( + request: Request, + feedback: FeedbackRequest, +) -> FeedbackResponse: + """Store user feedback for the summary of a conversation session.""" + # TODO: Add validation to store feeedback only when conversation exist + try: + logger.info("Storing user feedback for summary") + app.session_manager.save_summary_feedback(feedback.session_id, feedback.feedback) + return FeedbackResponse(message="Summary feedback saved successfully") + except Exception as e: + logger.error(f"Error in GET /feedback/summary endpoint. Error details: {e}") + return FeedbackResponse(message="Failed to store summary feedback") + + +@app.post("/feedback/session", tags=["Feedback"], response_model=FeedbackResponse, responses={ + 404: { + "description": "Session Not Found", + "content": { + "application/json": { + "example": {"detail": "Session not found"} + } + } + }, + 500: { + "description": "Internal Server Error", + "content": { + "application/json": { + "example": {"detail": "Internal server error occurred"} + } + } + } +}) +async def store_conversation_session_feedback( + request: Request, + feedback: FeedbackRequest, +) -> FeedbackResponse: + """Store user feedback for the overall conversation session.""" + try: + # TODO: Add validation to store feeedback only when conversation exist + logger.info("Storing user feedback for summary") + app.session_manager.save_session_feedback(feedback.session_id, feedback.feedback) + return FeedbackResponse(message="Session feedback saved successfully") + except Exception as e: + logger.error(f"Error in GET /feedback/session endpoint. Error details: {e}") + return FeedbackResponse(message="Failed to store Session feedback") diff --git a/src/api_gateway/Dockerfile b/src/api_gateway/Dockerfile new file mode 100644 index 0000000..6d75ff9 --- /dev/null +++ b/src/api_gateway/Dockerfile @@ -0,0 +1,45 @@ +ARG BASE_IMAGE_URL=nvcr.io/nvidia/base/ubuntu +ARG BASE_IMAGE_TAG=22.04_20240212 + +FROM ${BASE_IMAGE_URL}:${BASE_IMAGE_TAG} + +ENV PYTHONDONTWRITEBYTECODE=1 +ENV DEBIAN_FRONTEND noninteractive + +# Install required ubuntu packages for setting up python 3.10 +RUN apt update && \ + apt install -y curl software-properties-common && \ + add-apt-repository ppa:deadsnakes/ppa && \ + apt update && apt install -y python3.10 && \ + apt-get clean + +# Install pip for python3.10 +RUN curl -sS https://bootstrap.pypa.io/get-pip.py | python3.10 + +RUN rm -rf /var/lib/apt/lists/* + +# Uninstall build packages +RUN apt autoremove -y curl software-properties-common + +# Download the sources of apt packages within the container for standard legal compliance +RUN sed -i 's/# deb-src/deb-src/g' /etc/apt/sources.list +RUN apt update +# xz-utils is needed to pull the source and unpack them correctly +RUN apt install xz-utils -y +RUN mkdir -p /legal/source +WORKDIR /legal/source +# Read installed packages, strip all but the package names, pipe to 'apt source' to download respective packages +RUN apt list --installed | grep -i installed | sed 's|\(.*\)/.*|\1|' | xargs apt source --download-only +# The source is saved in directories as well as tarballs in the current dir +RUN rm xz-utils* +COPY LICENSE-3rd-party.txt /legal/ + +# Install common dependencies for all servers +RUN --mount=type=bind,source=src/api_gateway/requirements.txt,target=/opt/requirements_api_server.txt \ + pip3 install --no-cache-dir -r /opt/requirements_api_server.txt + +# Copy required common modules +COPY src/api_gateway/main.py /opt/api_server.py + +WORKDIR /opt +ENTRYPOINT ["uvicorn", "api_server:app"] \ No newline at end of file diff --git a/src/api_gateway/README.md b/src/api_gateway/README.md new file mode 100644 index 0000000..49d63ef --- /dev/null +++ b/src/api_gateway/README.md @@ -0,0 +1,7 @@ +# Running the API Gateway microservice with all required microservices +``` +docker compose -f ./deploy/compose/docker-compose.yaml up -d --build +``` + +The API Gateway server can be accessed from the swagger url `http://:9000/docs/` +A static openapi schema can be found [here.](../../docs/api_references/api_gateway_server.json) \ No newline at end of file diff --git a/src/api_gateway/main.py b/src/api_gateway/main.py new file mode 100644 index 0000000..9fa4f02 --- /dev/null +++ b/src/api_gateway/main.py @@ -0,0 +1,286 @@ +# SPDX-FileCopyrightText: Copyright (c) 2024 NVIDIA CORPORATION & AFFILIATES. All rights reserved. +# SPDX-License-Identifier: Apache-2.0 +# +# Licensed under the Apache License, Version 2.0 (the "License"); +# you may not use this file except in compliance with the License. +# You may obtain a copy of the License at +# +# http://www.apache.org/licenses/LICENSE-2.0 +# +# Unless required by applicable law or agreed to in writing, software +# distributed under the License is distributed on an "AS IS" BASIS, +# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +# See the License for the specific language governing permissions and +# limitations under the License. + + +import os +import logging +from typing import List +import bleach +import prometheus_client +from uuid import uuid4 +import httpx +import asyncio + +# For session response +from fastapi import Response +from pydantic import BaseModel +from typing import Optional, List +from fastapi import FastAPI, Request, HTTPException +from fastapi.responses import StreamingResponse +from fastapi.middleware.cors import CORSMiddleware +from pydantic import BaseModel, Field, validator +from traceback import print_exc + + +logging.basicConfig(level=os.environ.get('LOGLEVEL', 'INFO').upper()) +logger = logging.getLogger(__name__) + +tags_metadata = [ + { + "name": "Health", + "description": "APIs for checking and monitoring server liveliness and readiness.", + }, + {"name": "Agent", "description": "Core APIs for interacting with the agent."} +] + + +# create the FastAPI server +app = FastAPI(title="API Gateway server for AI Virtual Assistant for Customer Service", + description="This API schema describes all the endpoints exposed by the AI Virtual Assistant for Customer Service NIM Blueprint", + version="1.0.0", + docs_url="/docs", + redoc_url="/redoc", + openapi_tags=tags_metadata, +) + +# Allow access in browser from RAG UI and Storybook (development) +origins = [ + "*" +] +app.add_middleware( + CORSMiddleware, + allow_origins=origins, + allow_credentials=False, + allow_methods=["*"], + allow_headers=["*"], +) + +AGENT_SERVER_URL = os.getenv("AGENT_SERVER_URL") +ANALYTICS_SERVER_URL = os.getenv("ANALYTICS_SERVER_URL") +REQUEST_TIMEOUT = int(os.getenv("REQUEST_TIMEOUT", 180)) + +class HealthResponse(BaseModel): + message: str = Field(max_length=4096, pattern=r'[\s\S]*', default="") + +class Message(BaseModel): + """Definition of the Chat Message type.""" + role: str = Field(description="Role for a message AI, User and System", default="user", max_length=256, pattern=r'[\s\S]*') + content: str = Field(description="The input query/prompt to the pipeline.", default="Hello what can you do?", max_length=131072, pattern=r'[\s\S]*') + + @validator('role') + def validate_role(cls, value): + """ Field validator function to validate values of the field role""" + value = bleach.clean(value, strip=True) + valid_roles = {'user', 'assistant', 'system'} + if value.lower() not in valid_roles: + raise ValueError("Role must be one of 'user', 'assistant', or 'system'") + return value.lower() + + @validator('content') + def sanitize_content(cls, v, values): + """Field validator function to sanitize user-populated fields from HTML and limit content length.""" + v = bleach.clean(v, strip=True) + + # Check for empty string for user input + role = values.get('role') + if not v: + raise ValueError("Message content cannot be empty.") + + # Enforce character limit of 100 if role is 'user' + if role == 'user' and len(v) > 100: + v = v[:100] + logger.info(f"Truncating user input to first 100 characters. Modified input: {v}") + return v + +class AgentRequest(BaseModel): + """Definition of the Prompt API data type.""" + messages: Optional[List[Message]] = Field([], description="A list of messages comprising the conversation so far. The roles of the messages must be alternating between user and assistant. The last input message should have role user. A message with the the system role is optional, and must be the very first message if it is present.", max_items=50000) + user_id: Optional[str] = Field("", description="A unique identifier representing your end-user.") + session_id: Optional[str] = Field("", description="A unique identifier representing the session associated with the response.") + api_type: str = Field(description="The type of API action: 'create_session', 'end_session', 'generate', or 'summary'.", default="create_session") + +class AgentResponseChoices(BaseModel): + """ Definition of Chain response choices""" + index: int = Field(default=0, ge=0, le=256, format="int64") + message: Message = Field(default=Message()) + finish_reason: str = Field(default="", max_length=4096, pattern=r'[\s\S]*') + +class AgentResponse(BaseModel): + """Definition of Chain APIs resopnse data type""" + id: str = Field(default="", max_length=100000, pattern=r'[\s\S]*') + choices: List[AgentResponseChoices] = Field(default=[], max_items=256) + session_id: str = Field(None, description="A unique identifier representing the session associated with the response.") + sentiment: str = Field(default="", description="Any sentiment associated with this message") + + +@app.get("/agent/metrics", tags=["Health"]) +async def get_metrics(): + return Response(content=prometheus_client.generate_latest(), media_type="text/plain") + + +@app.get("/agent/health", tags=["Health"], response_model=HealthResponse, responses={ + 500: { + "description": "Internal Server Error", + "content": { + "application/json": { + "example": {"detail": "Internal server error occurred"} + } + } + } +}) +async def health_check(): + """ + Perform a Health Check + + Returns 200 when service is up. This does not check the health of downstream services. + """ + + try: + # TODO: Check health of retrievers, analytics, datastores and NIMs as well + target_api_url = f"{AGENT_SERVER_URL}/health" + async with httpx.AsyncClient() as client: + processed_response = await fetch_and_process_response(client, "GET", target_api_url) + logger.debug(f"Response from /health endpoint of agent: {processed_response}") + + return HealthResponse(message=processed_response.get("message")) + except Exception as e: + raise HTTPException(status_code=500, detail=f"Internal Server Error: {e}") + + +async def fetch_and_process_response(client, method, url, params=None, json=None): + try: + # Perform the request to the target API + resp = await client.request(method, url, params=params, json=json) + + # Check if the response was successful + if resp.status_code != 200: + raise HTTPException(status_code=resp.status_code, detail="Failed to get a response from the backend") + + # Fetch the response content (JSON) and parse it + return resp.json() + + except httpx.ReadTimeout: + raise HTTPException(status_code=504, detail="Timeout occurred while connecting to the backend service.") + except Exception as e: + raise HTTPException(status_code=500, detail=f"Internal Server Error: {e}") + + +@app.post( + "/agent/generate", + response_model=AgentResponse, tags=["Agent"], + responses={ + 500: { + "description": "Internal Server Error", + "content": {"application/json": {"example": {"detail": "Internal server error occurred"}}}, + } + }, +) +async def generate_response(request: Request, prompt: AgentRequest) -> StreamingResponse: + """Generate and stream the response to the provided prompt.""" + + api_type = prompt.api_type + + def get_agent_generate_response() -> StreamingResponse: + target_api_url = f"{AGENT_SERVER_URL}/generate" + + async def response_generator(): + # Forward the request to the original API as a POST request + async with httpx.AsyncClient(timeout=httpx.Timeout(REQUEST_TIMEOUT)) as client: + async with client.stream("POST", target_api_url, json=prompt.dict()) as resp: + if resp.status_code != 200: + raise HTTPException(status_code=resp.status_code, detail="Failed to get a response from the backend") + + # Forward the streaming response from the original API to the client + async for chunk in resp.aiter_text(): + if chunk: + yield chunk + + # Return a streaming response to the client + return StreamingResponse(response_generator(), media_type="text/event-stream") + + def response_generator(sentence: str, sentiment: str = ""): + """Mock response generator to simulate streaming predefined sentence.""" + + # Simulate breaking the sentence into chunks (e.g., by word) + sentence_chunks = sentence.split() # Split the sentence by words + resp_id = str(uuid4()) # unique response id for every query + # Send each chunk (word) in the response + for chunk in sentence_chunks: + chain_response = AgentResponse(session_id=prompt.session_id, sentiment=sentiment) + response_choice = AgentResponseChoices( + index=0, + message=Message(role="assistant", content=f"{chunk} ") + ) + chain_response.id = resp_id + chain_response.choices.append(response_choice) + yield "data: " + str(chain_response.json()) + "\n\n" + + # End with [DONE] response + chain_response = AgentResponse(session_id=prompt.session_id, sentiment=sentiment) + response_choice = AgentResponseChoices(message=Message(role="assistant", content=" "), finish_reason="[DONE]") + chain_response.id = resp_id + chain_response.choices.append(response_choice) + yield "data: " + str(chain_response.json()) + "\n\n" + + try: + + if api_type == "create_session": + target_api_url = f"{AGENT_SERVER_URL}/create_session" + async with httpx.AsyncClient() as client: + processed_response = await fetch_and_process_response(client, "GET", target_api_url) + logger.info(f"Response from /create_session: {processed_response}") + prompt.session_id = processed_response.get("session_id") + return get_agent_generate_response() + + elif api_type == "end_session": + target_api_url = f"{AGENT_SERVER_URL}/delete_session" + params = {"session_id": prompt.session_id} + async with httpx.AsyncClient() as client: + processed_response = await fetch_and_process_response(client, "DELETE", target_api_url, params=params) + logger.info(f"Response from /delete_session: {processed_response}") + return StreamingResponse(response_generator(processed_response.get("message", "")), media_type="text/event-stream") + + elif api_type == "generate": + return get_agent_generate_response() + + elif api_type == "summary": + target_api_url = f"{AGENT_SERVER_URL}/end_session" + params = {"session_id": prompt.session_id} + async with httpx.AsyncClient() as client: + processed_response = await fetch_and_process_response(client, "GET", target_api_url, params=params) + logger.info(f"Response from /end_session: {processed_response}") + + target_api_url = f"{ANALYTICS_SERVER_URL}/session/summary" + async with httpx.AsyncClient() as client: + processed_response = await fetch_and_process_response(client, "GET", target_api_url, params=params) + logger.info(f"Response from /session/summary: {processed_response}") + return StreamingResponse(response_generator(processed_response.get("summary", ""), sentiment=processed_response.get("sentiment", "")), media_type="text/event-stream") + + else: + raise ValueError("Wrong API type provided. 'create_session', 'end_session', 'generate', or 'summary'") + + except httpx.ReadTimeout as e: + logger.error(f"HTTP Read Timeout: {e}") + raise HTTPException(status_code=504, detail="Upstream server timeout. Please try again later.") + except httpx.RequestError as e: + # This will catch other request-related errors like connection issues + logger.error(f"Request Error: {e}") + raise HTTPException(status_code=502, detail="Error communicating with the upstream server.") + except asyncio.CancelledError as e: + logger.error("Response generation was cancelled. Details: {e}") + raise HTTPException(status_code=500, detail=f"Server interruption before response completion: {e}") + except Exception as e: + logger.error("Internal server error. Details: {e}") + raise HTTPException(status_code=500, detail=f"Internal Server Error: {e}") diff --git a/src/api_gateway/requirements.txt b/src/api_gateway/requirements.txt new file mode 100644 index 0000000..9adfd06 --- /dev/null +++ b/src/api_gateway/requirements.txt @@ -0,0 +1,6 @@ +prometheus_client==0.21.0 +fastapi==0.115.2 +uvicorn[standard]==0.27.1 +starlette==0.40.0 +bleach==6.1.0 +httpx==0.27.2 \ No newline at end of file diff --git a/src/common/__init__.py b/src/common/__init__.py new file mode 100644 index 0000000..a08b2c2 --- /dev/null +++ b/src/common/__init__.py @@ -0,0 +1,14 @@ +# SPDX-FileCopyrightText: Copyright (c) 2024 NVIDIA CORPORATION & AFFILIATES. All rights reserved. +# SPDX-License-Identifier: Apache-2.0 +# +# Licensed under the Apache License, Version 2.0 (the "License"); +# you may not use this file except in compliance with the License. +# You may obtain a copy of the License at +# +# http://www.apache.org/licenses/LICENSE-2.0 +# +# Unless required by applicable law or agreed to in writing, software +# distributed under the License is distributed on an "AS IS" BASIS, +# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +# See the License for the specific language governing permissions and +# limitations under the License. diff --git a/src/common/configuration.py b/src/common/configuration.py new file mode 100644 index 0000000..e18e67d --- /dev/null +++ b/src/common/configuration.py @@ -0,0 +1,331 @@ +# SPDX-FileCopyrightText: Copyright (c) 2024 NVIDIA CORPORATION & AFFILIATES. All rights reserved. +# SPDX-License-Identifier: Apache-2.0 +# +# Licensed under the Apache License, Version 2.0 (the "License"); +# you may not use this file except in compliance with the License. +# You may obtain a copy of the License at +# +# http://www.apache.org/licenses/LICENSE-2.0 +# +# Unless required by applicable law or agreed to in writing, software +# distributed under the License is distributed on an "AS IS" BASIS, +# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +# See the License for the specific language governing permissions and +# limitations under the License. + +"""The definition of the application configuration.""" +from src.common.configuration_wizard import ConfigWizard, configclass, configfield + + +@configclass +class VectorStoreConfig(ConfigWizard): + """Configuration class for the Vector Store connection. + + :cvar name: Name of vector store + :cvar url: URL of Vector Store + """ + + name: str = configfield( + "name", + default="milvus", # supports pgvector, milvus + help_txt="The name of vector store", + ) + url: str = configfield( + "url", + default="http://milvus:19530", # for pgvector `pgvector:5432` + help_txt="The host of the machine running Vector Store DB", + ) + nlist: int = configfield( + "nlist", + default=64, # IVF Flat milvus + help_txt="Number of cluster units", + ) + nprobe: int = configfield( + "nprobe", + default=16, # IVF Flat milvus + help_txt="Number of units to query", + ) + +@configclass +class DatabaseConfig(ConfigWizard): + """Configuration class for the Database connection. + + :cvar name: Name of Database + :cvar url: URL of Database + :cvar config: config shared to database + """ + + from dataclasses import field + name: str = configfield( + "name", + default="postgres", # supports redis, postgres + help_txt="The name of database", + ) + url: str = configfield( + "url", + default="postgres:5432", # for redis `redis:6379` + help_txt="The host of the machine running database", + ) + config: str = configfield( + "config", + default=field(default_factory=""), + help_txt="Any configuration needs to be shared can be shared as dict", + ) + +@configclass +class CheckpointerConfig(ConfigWizard): + """Configuration class for the Database connection. + + :cvar name: Name of checkpointer database + :cvar url: URL of checkpointer database + :cvar config: config shared to database + """ + + from dataclasses import field + name: str = configfield( + "name", + default="postgres", # supports inmemory, postgres + help_txt="The name of database", + ) + url: str = configfield( + "url", + default="postgres:5432", # for redis `redis:6379` + help_txt="The host of the machine running database", + ) + config: str = configfield( + "config", + default=field(default_factory=""), + help_txt="Any configuration needs to be shared can be shared as dict", + ) + +@configclass +class CacheConfig(ConfigWizard): + """Configuration class for the Vector Store connection. + + :cvar name: Name of Cache + :cvar url: URL of Cache + :cvar config: config shared to Cache + """ + + from dataclasses import field + name: str = configfield( + "name", + default="redis", # supports redis + help_txt="The name of vector store", + ) + url: str = configfield( + "url", + default="redis:6379", # for redis `redis:6379` + help_txt="The host of the machine running cache", + ) + config: str = configfield( + "config", + default=field(default_factory=""), + help_txt="Any configuration needs to be shared can be shared as dict", + ) + +@configclass +class LLMConfig(ConfigWizard): + """Configuration class for the llm connection. + + :cvar server_url: The location of the llm server hosting the model. + :cvar model_name: The name of the hosted model. + """ + + server_url: str = configfield( + "server_url", + default="", + help_txt="The location of the Triton server hosting the llm model.", + ) + model_name: str = configfield( + "model_name", + default="ensemble", + help_txt="The name of the hosted model.", + ) + model_engine: str = configfield( + "model_engine", + default="nvidia-ai-endpoints", + help_txt="The server type of the hosted model. Allowed values are nvidia-ai-endpoints", + ) + model_name_pandas_ai: str = configfield( + "model_name_pandas_ai", + default="ai-mixtral-8x7b-instruct", + help_txt="The name of the ai catalog model to be used with PandasAI agent", + ) + +@configclass +class TextSplitterConfig(ConfigWizard): + """Configuration class for the Text Splitter. + + :cvar chunk_size: Chunk size for text splitter. Tokens per chunk in token-based splitters. + :cvar chunk_overlap: Text overlap in text splitter. + """ + + model_name: str = configfield( + "model_name", + default="Snowflake/snowflake-arctic-embed-l", + help_txt="The name of Sentence Transformer model used for SentenceTransformer TextSplitter.", + ) + chunk_size: int = configfield( + "chunk_size", + default=510, + help_txt="Chunk size for text splitting.", + ) + chunk_overlap: int = configfield( + "chunk_overlap", + default=200, + help_txt="Overlapping text length for splitting.", + ) + + +@configclass +class EmbeddingConfig(ConfigWizard): + """Configuration class for the Embeddings. + + :cvar model_name: The name of the huggingface embedding model. + """ + + model_name: str = configfield( + "model_name", + default="snowflake/arctic-embed-l", + help_txt="The name of huggingface embedding model.", + ) + model_engine: str = configfield( + "model_engine", + default="nvidia-ai-endpoints", + help_txt="The server type of the hosted model. Allowed values are hugginface", + ) + dimensions: int = configfield( + "dimensions", + default=1024, + help_txt="The required dimensions of the embedding model. Currently utilized for vector DB indexing.", + ) + server_url: str = configfield( + "server_url", + default="", + help_txt="The url of the server hosting nemo embedding model", + ) + +@configclass +class RankingConfig(ConfigWizard): + """Configuration class for the Re-ranking. + + :cvar model_name: The name of the Ranking model. + """ + + model_name: str = configfield( + "model_name", + default="nv-rerank-qa-mistral-4b:1", + help_txt="The name of Ranking model.", + ) + model_engine: str = configfield( + "model_engine", + default="nvidia-ai-endpoints", + help_txt="The server type of the hosted model. Allowed values are nvidia-ai-endpoints", + ) + server_url: str = configfield( + "server_url", + default="", + help_txt="The url of the server hosting nemo Ranking model", + ) + +@configclass +class RetrieverConfig(ConfigWizard): + """Configuration class for the Retrieval pipeline. + + :cvar top_k: Number of relevant results to retrieve. + :cvar score_threshold: The minimum confidence score for the retrieved values to be considered. + """ + + top_k: int = configfield( + "top_k", + default=4, + help_txt="Number of relevant results to retrieve", + ) + score_threshold: float = configfield( + "score_threshold", + default=0.25, + help_txt="The minimum confidence score for the retrieved values to be considered", + ) + nr_url: str = configfield( + "nr_url", + default='http://retrieval-ms:8000', + help_txt="The nemo retriever microservice url", + ) + nr_pipeline: str = configfield( + "nr_pipeline", + default='ranked_hybrid', + help_txt="The name of the nemo retriever pipeline one of ranked_hybrid or hybrid", + ) + + +@configclass +class AppConfig(ConfigWizard): + """Configuration class for the application. + + :cvar vector_store: The configuration of the vector db connection. + :type vector_store: VectorStoreConfig + :cvar llm: The configuration of the backend llm server. + :type llm: LLMConfig + :cvar text_splitter: The configuration for text splitter + :type text_splitter: TextSplitterConfig + :cvar embeddings: The configuration for huggingface embeddings + :type embeddings: EmbeddingConfig + :cvar prompts: The Prompts template for RAG and Chat + :type prompts: PromptsConfig + """ + + vector_store: VectorStoreConfig = configfield( + "vector_store", + env=False, + help_txt="The configuration of the vector db connection.", + default=VectorStoreConfig(), + ) + database: DatabaseConfig = configfield( + "database", + env=False, + help_txt="The configuration of the database connection.", + default=DatabaseConfig(), + ) + checkpointer: CheckpointerConfig = configfield( + "checkpointer", + env=False, + help_txt="The configuration of the checkpointer.", + default=CheckpointerConfig(), + ) + cache: CacheConfig = configfield( + "cache", + env=False, + help_txt="The configuration of the cache connection.", + default=CacheConfig(), + ) + llm: LLMConfig = configfield( + "llm", + env=False, + help_txt="The configuration for the server hosting the Large Language Models.", + default=LLMConfig(), + ) + text_splitter: TextSplitterConfig = configfield( + "text_splitter", + env=False, + help_txt="The configuration for text splitter.", + default=TextSplitterConfig(), + ) + embeddings: EmbeddingConfig = configfield( + "embeddings", + env=False, + help_txt="The configuration of embedding model.", + default=EmbeddingConfig(), + ) + ranking: RankingConfig = configfield( + "ranking", + env=False, + help_txt="The configuration of ranking model.", + default=RankingConfig(), + ) + retriever: RetrieverConfig = configfield( + "retriever", + env=False, + help_txt="The configuration of the retriever pipeline.", + default=RetrieverConfig(), + ) \ No newline at end of file diff --git a/src/common/configuration_wizard.py b/src/common/configuration_wizard.py new file mode 100644 index 0000000..e390506 --- /dev/null +++ b/src/common/configuration_wizard.py @@ -0,0 +1,411 @@ +# SPDX-FileCopyrightText: Copyright (c) 2024 NVIDIA CORPORATION & AFFILIATES. All rights reserved. +# SPDX-License-Identifier: Apache-2.0 +# +# Licensed under the Apache License, Version 2.0 (the "License"); +# you may not use this file except in compliance with the License. +# You may obtain a copy of the License at +# +# http://www.apache.org/licenses/LICENSE-2.0 +# +# Unless required by applicable law or agreed to in writing, software +# distributed under the License is distributed on an "AS IS" BASIS, +# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +# See the License for the specific language governing permissions and +# limitations under the License. + +"""A module containing utilities for defining application configuration. + +This module provides a configuration wizard class that can read configuration data from YAML, JSON, and environment +variables. The configuration wizard is based heavily off of the JSON and YAML wizards from the `dataclass-wizard` +Python package. That package is in-turn based heavily off of the built-in `dataclass` module. + +This module adds Environment Variable parsing to config file reading. +""" +# pylint: disable=too-many-lines; this file is meant to be portable between projects so everything is put into one file + +import json +import logging +import os +from dataclasses import _MISSING_TYPE, dataclass +from typing import Any, Callable, Dict, List, Optional, TextIO, Tuple, Union + +import yaml +from dataclass_wizard import ( + JSONWizard, + LoadMeta, + YAMLWizard, + errors, + fromdict, + json_field, +) +from dataclass_wizard.models import JSONField +from dataclass_wizard.utils.string_conv import to_camel_case + +configclass = dataclass(frozen=True) +ENV_BASE = "APP" +_LOGGER = logging.getLogger(__name__) + + +def configfield( + name: str, *, env: bool = True, help_txt: str = "", **kwargs: Any +) -> JSONField: + """Create a data class field with the specified name in JSON format. + + :param name: The name of the field. + :type name: str + :param env: Whether this field should be configurable from an environment variable. + :type env: bool + :param help_txt: The description of this field that is used in help docs. + :type help_txt: str + :param **kwargs: Optional keyword arguments to customize the JSON field. More information here: + https://dataclass-wizard.readthedocs.io/en/latest/dataclass_wizard.html#dataclass_wizard.json_field + :type **kwargs: Any + :returns: A JSONField instance with the specified name and optional parameters. + :rtype: JSONField + + :raises TypeError: If the provided name is not a string. + """ + # sanitize specified name + if not isinstance(name, str): + raise TypeError("Provided name must be a string.") + json_name = to_camel_case(name) + + # update metadata + meta = kwargs.get("metadata", {}) + meta["env"] = env + meta["help"] = help_txt + kwargs["metadata"] = meta + + # create the data class field + field = json_field(json_name, **kwargs) + return field + + +class _Color: + """A collection of colors used when writing output to the shell.""" + + # pylint: disable=too-few-public-methods; this class does not require methods. + + PURPLE = "\033[95m" + BLUE = "\033[94m" + GREEN = "\033[92m" + YELLOW = "\033[93m" + RED = "\033[91m" + BOLD = "\033[1m" + UNDERLINE = "\033[4m" + END = "\033[0m" + + +class ConfigWizard(JSONWizard, YAMLWizard): # type: ignore[misc] # dataclass-wizard doesn't provide stubs + """A configuration wizard class that can read configuration data from YAML, JSON, and environment variables.""" + + # pylint: disable=arguments-differ,arguments-renamed; this class intentionally reduces arguments for some methods. + + @classmethod + def print_help( + cls, + help_printer: Callable[[str], Any], + *, + env_parent: Optional[str] = None, + json_parent: Optional[Tuple[str, ...]] = None, + ) -> None: + """Print the help documentation for the application configuration with the provided `write` function. + + :param help_printer: The `write` function that will be used to output the data. + :param help_printer: Callable[[str], None] + :param env_parent: The name of the parent environment variable. Leave blank, used for recursion. + :type env_parent: Optional[str] + :param json_parent: The name of the parent JSON key. Leave blank, used for recursion. + :type json_parent: Optional[Tuple[str, ...]] + :returns: A list of tuples with one item per configuration value. Each item will have the environment variable + and a tuple to the path in configuration. + :rtype: List[Tuple[str, Tuple[str, ...]]] + """ + if not env_parent: + env_parent = "" + help_printer("---\n") + if not json_parent: + json_parent = () + + for ( + _, + val, + ) in ( + cls.__dataclass_fields__.items() # pylint: disable=no-member; false positive + ): # pylint: disable=no-member; member is added by dataclass. + jsonname = val.json.keys[0] + envname = jsonname.upper() + full_envname = f"{ENV_BASE}{env_parent}_{envname}" + is_embedded_config = hasattr(val.type, "envvars") + + # print the help data + indent = len(json_parent) * 2 + if is_embedded_config: + default = "" + elif not isinstance(val.default_factory, _MISSING_TYPE): + default = val.default_factory() + elif isinstance(val.default, _MISSING_TYPE): + default = "NO-DEFAULT-VALUE" + else: + default = val.default + help_printer( + f"{_Color.BOLD}{' ' * indent}{jsonname}:{_Color.END} {default}\n" + ) + + # print comments + if is_embedded_config: + indent += 2 + if val.metadata.get("help"): + help_printer(f"{' ' * indent}# {val.metadata['help']}\n") + if not is_embedded_config: + typestr = getattr(val.type, "__name__", None) or str(val.type).replace( + "typing.", "" + ) + help_printer(f"{' ' * indent}# Type: {typestr}\n") + if val.metadata.get("env", True): + help_printer(f"{' ' * indent}# ENV Variable: {full_envname}\n") + # if not is_embedded_config: + help_printer("\n") + + if is_embedded_config: + new_env_parent = f"{env_parent}_{envname}" + new_json_parent = json_parent + (jsonname,) + val.type.print_help( + help_printer, env_parent=new_env_parent, json_parent=new_json_parent + ) + + help_printer("\n") + + @classmethod + def envvars( + cls, + env_parent: Optional[str] = None, + json_parent: Optional[Tuple[str, ...]] = None, + ) -> List[Tuple[str, Tuple[str, ...], type]]: + """Calculate valid environment variables and their config structure location. + + :param env_parent: The name of the parent environment variable. + :type env_parent: Optional[str] + :param json_parent: The name of the parent JSON key. + :type json_parent: Optional[Tuple[str, ...]] + :returns: A list of tuples with one item per configuration value. Each item will have the environment variable, + a tuple to the path in configuration, and they type of the value. + :rtype: List[Tuple[str, Tuple[str, ...], type]] + """ + if not env_parent: + env_parent = "" + if not json_parent: + json_parent = () + output = [] + + for ( + _, + val, + ) in ( + cls.__dataclass_fields__.items() # pylint: disable=no-member; false positive + ): # pylint: disable=no-member; member is added by dataclass. + jsonname = val.json.keys[0] + envname = jsonname.upper() + full_envname = f"{ENV_BASE}{env_parent}_{envname}" + is_embedded_config = hasattr(val.type, "envvars") + + # add entry to output list + if is_embedded_config: + new_env_parent = f"{env_parent}_{envname}" + new_json_parent = json_parent + (jsonname,) + output += val.type.envvars( + env_parent=new_env_parent, json_parent=new_json_parent + ) + elif val.metadata.get("env", True): + output += [(full_envname, json_parent + (jsonname,), val.type)] + + return output + + @classmethod + def from_dict(cls, data: Dict[str, Any]) -> "ConfigWizard": + """Create a ConfigWizard instance from a dictionary. + + :param data: The dictionary containing the configuration data. + :type data: Dict[str, Any] + :returns: A ConfigWizard instance created from the input dictionary. + :rtype: ConfigWizard + + :raises RuntimeError: If the configuration data is not a dictionary. + """ + # sanitize data + if not data: + data = {} + if not isinstance(data, dict): + raise RuntimeError("Configuration data is not a dictionary.") + + # parse env variables + for envvar in cls.envvars(): + var_name, conf_path, var_type = envvar + var_value = os.environ.get(var_name) + if var_value: + var_value = try_json_load(var_value) + update_dict(data, conf_path, var_value) + _LOGGER.debug( + "Found EnvVar Config - %s:%s = %s", + var_name, + str(var_type), + repr(var_value), + ) + + LoadMeta(key_transform="CAMEL").bind_to(cls) + return fromdict(cls, data) # type: ignore[no-any-return] # dataclass-wizard doesn't provide stubs + + @classmethod + def from_file(cls, filepath: str) -> Optional["ConfigWizard"]: + """Load the application configuration from the specified file. + + The file must be either in JSON or YAML format. + + :returns: The fully processed configuration file contents. If the file was unreadable, None will be returned. + :rtype: Optional["ConfigWizard"] + """ + # open the file + try: + # pylint: disable-next=consider-using-with; using a with would make exception handling even more ugly + file = open(filepath, encoding="utf-8") + except FileNotFoundError: + _LOGGER.error("The configuration file cannot be found.") + file = None + except PermissionError: + _LOGGER.error( + "Permission denied when trying to read the configuration file." + ) + file = None + if not file: + return None + + # read the file + try: + data = read_json_or_yaml(file) + except ValueError as err: + _LOGGER.error( + "Configuration file must be valid JSON or YAML. The following errors occured:\n%s", + str(err), + ) + data = None + config = None + finally: + file.close() + + # parse the file + if data: + try: + config = cls.from_dict(data) + except errors.MissingFields as err: + _LOGGER.error( + "Configuration is missing required fields: \n%s", str(err) + ) + config = None + except errors.ParseError as err: + _LOGGER.error("Invalid configuration value provided:\n%s", str(err)) + config = None + else: + config = cls.from_dict({}) + + return config + + +def read_json_or_yaml(stream: TextIO) -> Dict[str, Any]: + """Read a file without knowing if it is JSON or YAML formatted. + + The file will first be assumed to be JSON formatted. If this fails, an attempt to parse the file with the YAML + parser will be made. If both of these fail, an exception will be raised that contains the exception strings returned + by both the parsers. + + :param stream: An IO stream that allows seeking. + :type stream: typing.TextIO + :returns: The parsed file contents. + :rtype: typing.Dict[str, typing.Any]: + :raises ValueError: If the IO stream is not seekable or if the file doesn't appear to be JSON or YAML formatted. + """ + exceptions: Dict[str, Union[None, ValueError, yaml.error.YAMLError]] = { + "JSON": None, + "YAML": None, + } + data: Dict[str, Any] + + # ensure we can rewind the file + if not stream.seekable(): + raise ValueError("The provided stream must be seekable.") + + # attempt to read json + try: + data = json.loads(stream.read()) + except ValueError as err: + exceptions["JSON"] = err + else: + return data + finally: + stream.seek(0) + + # attempt to read yaml + try: + data = yaml.safe_load(stream.read()) + except (yaml.error.YAMLError, ValueError) as err: + exceptions["YAML"] = err + else: + return data + + # neither json nor yaml + err_msg = "\n\n".join( + [key + " Parser Errors:\n" + str(val) for key, val in exceptions.items()] + ) + raise ValueError(err_msg) + + +def try_json_load(value: str) -> Any: + """Try parsing the value as JSON and silently ignore errors. + + :param value: The value on which a JSON load should be attempted. + :type value: str + :returns: Either the parsed JSON or the provided value. + :rtype: typing.Any + """ + try: + return json.loads(value) + except json.JSONDecodeError: + return value + + +def update_dict( + data: Dict[str, Any], + path: Tuple[str, ...], + value: Any, + overwrite: bool = False, +) -> None: + """Update a dictionary with a new value at a given path. + + :param data: The dictionary to be updated. + :type data: Dict[str, Any] + :param path: The path to the key that should be updated. + :type path: Tuple[str, ...] + :param value: The new value to be set at the specified path. + :type value: Any + :param overwrite: If True, overwrite the existing value. Otherwise, don't update if the key already exists. + :type overwrite: bool + :returns: None + """ + end = len(path) + target = data + for idx, key in enumerate(path, 1): + # on the last field in path, update the dict if necessary + if idx == end: + if overwrite or not target.get(key): + target[key] = value + return + + # verify the next hop exists + if not target.get(key): + target[key] = {} + + # if the next hop is not a dict, exit + if not isinstance(target.get(key), dict): + return + + # get next hop + target = target.get(key) # type: ignore[assignment] # type has already been enforced. diff --git a/src/common/utils.py b/src/common/utils.py new file mode 100644 index 0000000..7b6969c --- /dev/null +++ b/src/common/utils.py @@ -0,0 +1,362 @@ +# SPDX-FileCopyrightText: Copyright (c) 2024 NVIDIA CORPORATION & AFFILIATES. All rights reserved. +# SPDX-License-Identifier: Apache-2.0 +# +# Licensed under the Apache License, Version 2.0 (the "License"); +# you may not use this file except in compliance with the License. +# You may obtain a copy of the License at +# +# http://www.apache.org/licenses/LICENSE-2.0 +# +# Unless required by applicable law or agreed to in writing, software +# distributed under the License is distributed on an "AS IS" BASIS, +# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +# See the License for the specific language governing permissions and +# limitations under the License. + +"""Utility functions used across different modules of NIM Blueprints.""" +import os +import yaml +import logging +from pathlib import Path +from functools import lru_cache, wraps +from urllib.parse import urlparse +from typing import TYPE_CHECKING, Callable, List, Dict + +logger = logging.getLogger(__name__) + +try: + import torch +except Exception as e: + logger.warning(f"Optional module torch not installed.") + +try: + from langchain.text_splitter import SentenceTransformersTokenTextSplitter +except Exception as e: + logger.warning(f"Optional langchain module not installed for SentenceTransformersTokenTextSplitter.") + +try: + from langchain_core.vectorstores import VectorStore +except Exception as e: + logger.warning(f"Optional Langchain module langchain_core not installed.") + +try: + from langchain_nvidia_ai_endpoints import ChatNVIDIA, NVIDIAEmbeddings, NVIDIARerank +except Exception as e: + logger.error(f"Optional langchain API Catalog connector langchain_nvidia_ai_endpoints not installed.") + +try: + from langchain_community.vectorstores import PGVector + from langchain_community.vectorstores import Milvus + from langchain_community.docstore.in_memory import InMemoryDocstore + from langchain_community.embeddings import HuggingFaceEmbeddings + from langchain_community.vectorstores import FAISS +except Exception as e: + logger.warning(f"Optional Langchain module langchain_community not installed.") + +try: + from faiss import IndexFlatL2 +except Exception as e: + logger.warning(f"Optional faissDB not installed.") + + +from langchain_core.embeddings import Embeddings +from langchain_core.documents.compressor import BaseDocumentCompressor +from langchain_core.language_models.chat_models import SimpleChatModel +from langchain.llms.base import LLM +from src.common import configuration + +if TYPE_CHECKING: + from src.common.configuration_wizard import ConfigWizard + +DEFAULT_MAX_CONTEXT = 1500 + +def utils_cache(func: Callable) -> Callable: + """Use this to convert unhashable args to hashable ones""" + @wraps(func) + def wrapper(*args, **kwargs): + # Convert unhashable args to hashable ones + args_hashable = tuple(tuple(arg) if isinstance(arg, (list, dict, set)) else arg for arg in args) + kwargs_hashable = {key: tuple(value) if isinstance(value, (list, dict, set)) else value for key, value in kwargs.items()} + return func(*args_hashable, **kwargs_hashable) + return wrapper + + +@lru_cache +def get_config() -> "ConfigWizard": + """Parse the application configuration.""" + config_file = os.environ.get("APP_CONFIG_FILE", "/dev/null") + config = configuration.AppConfig.from_file(config_file) + if config: + return config + raise RuntimeError("Unable to find configuration.") + + +@lru_cache +def get_prompts() -> Dict: + """Retrieves prompt configurations from YAML file and return a dict. + """ + + # default config taking from prompt.yaml + default_config_path = os.path.join("./", os.environ.get("EXAMPLE_PATH"), "prompt.yaml") + default_config = {} + if Path(default_config_path).exists(): + with open(default_config_path, 'r') as file: + logger.info(f"Using prompts config file from: {default_config_path}") + default_config = yaml.safe_load(file) + + config_file = os.environ.get("PROMPT_CONFIG_FILE", "/prompt.yaml") + + config = {} + if Path(config_file).exists(): + with open(config_file, 'r') as file: + logger.info(f"Using prompts config file from: {config_file}") + config = yaml.safe_load(file) + + config = _combine_dicts(default_config, config) + return config + + + +def create_vectorstore_langchain(document_embedder, collection_name: str = "") -> VectorStore: + """Create the vector db index for langchain.""" + + config = get_config() + + if config.vector_store.name == "faiss": + vectorstore = FAISS(document_embedder, IndexFlatL2(config.embeddings.dimensions), InMemoryDocstore(), {}) + elif config.vector_store.name == "pgvector": + db_name = os.getenv('POSTGRES_DB', None) + if not collection_name: + collection_name = os.getenv('COLLECTION_NAME', "vector_db") + logger.info(f"Using PGVector collection: {collection_name}") + connection_string = f"postgresql://{os.getenv('POSTGRES_USER', '')}:{os.getenv('POSTGRES_PASSWORD', '')}@{config.vector_store.url}/{db_name}" + vectorstore = PGVector( + collection_name=collection_name, + connection_string=connection_string, + embedding_function=document_embedder, + ) + elif config.vector_store.name == "milvus": + if not collection_name: + collection_name = os.getenv('COLLECTION_NAME', "vector_db") + logger.info(f"Using milvus collection: {collection_name}") + url = urlparse(config.vector_store.url) + vectorstore = Milvus( + document_embedder, + connection_args={"host": url.hostname, "port": url.port}, + collection_name=collection_name, + index_params={"index_type": "GPU_IVF_FLAT", "metric_type": "L2", "nlist": config.vector_store.nlist}, + search_params={"nprobe": config.vector_store.nprobe}, + auto_id = True + ) + else: + raise ValueError(f"{config.vector_store.name} vector database is not supported") + logger.info("Vector store created and saved.") + return vectorstore + + +def get_vectorstore(vectorstore, document_embedder) -> VectorStore: + """ + Send a vectorstore object. + If a Vectorstore object already exists, the function returns that object. + Otherwise, it creates a new Vectorstore object and returns it. + """ + if vectorstore is None: + return create_vectorstore_langchain(document_embedder) + return vectorstore + +@utils_cache +@lru_cache() +def get_llm(**kwargs) -> LLM | SimpleChatModel: + """Create the LLM connection.""" + settings = get_config() + + logger.info(f"Using {settings.llm.model_engine} as model engine for llm. Model name: {settings.llm.model_name}") + if settings.llm.model_engine == "nvidia-ai-endpoints": + unused_params = [key for key in kwargs.keys() if key not in ['temperature', 'top_p', 'max_tokens']] + if unused_params: + logger.warning(f"The following parameters from kwargs are not supported: {unused_params} for {settings.llm.model_engine}") + if settings.llm.server_url: + logger.info(f"Using llm model {settings.llm.model_name} hosted at {settings.llm.server_url}") + return ChatNVIDIA(base_url=f"http://{settings.llm.server_url}/v1", + model=settings.llm.model_name, + temperature = kwargs.get('temperature', None), + top_p = kwargs.get('top_p', None), + max_tokens = kwargs.get('max_tokens', None)) + else: + logger.info(f"Using llm model {settings.llm.model_name} from api catalog") + return ChatNVIDIA(model=settings.llm.model_name, + temperature = kwargs.get('temperature', None), + top_p = kwargs.get('top_p', None), + max_tokens = kwargs.get('max_tokens', None)) + else: + raise RuntimeError("Unable to find any supported Large Language Model server. Supported engine name is nvidia-ai-endpoints.") + + +@lru_cache +def get_embedding_model() -> Embeddings: + """Create the embedding model.""" + model_kwargs = {"device": "cpu"} + if torch.cuda.is_available(): + model_kwargs["device"] = "cuda:0" + + encode_kwargs = {"normalize_embeddings": False} + settings = get_config() + + logger.info(f"Using {settings.embeddings.model_engine} as model engine and {settings.embeddings.model_name} and model for embeddings") + if settings.embeddings.model_engine == "huggingface": + hf_embeddings = HuggingFaceEmbeddings( + model_name=settings.embeddings.model_name, + model_kwargs=model_kwargs, + encode_kwargs=encode_kwargs, + ) + # Load in a specific embedding model + return hf_embeddings + elif settings.embeddings.model_engine == "nvidia-ai-endpoints": + if settings.embeddings.server_url: + logger.info(f"Using embedding model {settings.embeddings.model_name} hosted at {settings.embeddings.server_url}") + return NVIDIAEmbeddings(base_url=f"http://{settings.embeddings.server_url}/v1", model=settings.embeddings.model_name, truncate="END") + else: + logger.info(f"Using embedding model {settings.embeddings.model_name} hosted at api catalog") + return NVIDIAEmbeddings(model=settings.embeddings.model_name, truncate="END") + else: + raise RuntimeError("Unable to find any supported embedding model. Supported engine is huggingface and nvidia-ai-endpoints.") + +@lru_cache +def get_ranking_model() -> BaseDocumentCompressor: + """Create the ranking model. + + Returns: + BaseDocumentCompressor: Base class for document compressors. + """ + + settings = get_config() + + try: + if settings.ranking.model_engine == "nvidia-ai-endpoints": + if settings.ranking.server_url: + logger.info(f"Using ranking model hosted at {settings.ranking.server_url}") + return NVIDIARerank( + base_url=f"http://{settings.ranking.server_url}/v1", top_n=settings.retriever.top_k, truncate="END" + ) + elif settings.ranking.model_name: + logger.info(f"Using ranking model {settings.ranking.model_name} hosted at api catalog") + return NVIDIARerank(model=settings.ranking.model_name, top_n=settings.retriever.top_k, truncate="END") + else: + logger.warning("Unable to find any supported ranking model. Supported engine is nvidia-ai-endpoints.") + except Exception as e: + logger.error(f"An error occurred while initializing ranking_model: {e}") + return None + + +def get_text_splitter() -> SentenceTransformersTokenTextSplitter: + """Return the token text splitter instance from langchain.""" + + if get_config().text_splitter.model_name: + embedding_model_name = get_config().text_splitter.model_name + + return SentenceTransformersTokenTextSplitter( + model_name=embedding_model_name, + tokens_per_chunk=get_config().text_splitter.chunk_size - 2, + chunk_overlap=get_config().text_splitter.chunk_overlap, + ) + + +def get_docs_vectorstore_langchain(vectorstore: VectorStore) -> List[str]: + """Retrieves filenames stored in the vector store implemented in LangChain.""" + + settings = get_config() + try: + # No API availbe in LangChain for listing the docs, thus usig its private _dict + extract_filename = lambda metadata : os.path.splitext(os.path.basename(metadata['source']))[0] + if settings.vector_store.name == "faiss": + in_memory_docstore = vectorstore.docstore._dict + filenames = [extract_filename(doc.metadata) for doc in in_memory_docstore.values()] + filenames = list(set(filenames)) + return filenames + elif settings.vector_store.name == "pgvector": + # No API availbe in LangChain for listing the docs, thus usig its private _make_session + with vectorstore._make_session() as session: + embedding_doc_store = session.query(vectorstore.EmbeddingStore.custom_id, vectorstore.EmbeddingStore.document, vectorstore.EmbeddingStore.cmetadata).all() + filenames = set([extract_filename(metadata) for _, _, metadata in embedding_doc_store if metadata]) + return filenames + elif settings.vector_store.name == "milvus": + # Getting all the ID's > 0 + if vectorstore.col: + milvus_data = vectorstore.col.query(expr="pk >= 0", output_fields=["pk","source", "text"]) + filenames = set([extract_filename(metadata) for metadata in milvus_data]) + return filenames + except Exception as e: + logger.error(f"Error occurred while retrieving documents: {e}") + return [] + +def del_docs_vectorstore_langchain(vectorstore: VectorStore, filenames: List[str]) -> bool: + """Delete documents from the vector index implemented in LangChain.""" + + settings = get_config() + try: + # No other API availbe in LangChain for listing the docs, thus usig its private _dict + extract_filename = lambda metadata : os.path.splitext(os.path.basename(metadata['source']))[0] + if settings.vector_store.name == "faiss": + in_memory_docstore = vectorstore.docstore._dict + for filename in filenames: + ids_list = [doc_id for doc_id, doc_data in in_memory_docstore.items() if extract_filename(doc_data.metadata) == filename] + if not len(ids_list): + logger.info("File does not exist in the vectorstore") + return False + vectorstore.delete(ids_list) + logger.info(f"Deleted documents with filenames {filename}") + elif settings.vector_store.name == "pgvector": + with vectorstore._make_session() as session: + collection = vectorstore.get_collection(session) + filter_by = vectorstore.EmbeddingStore.collection_id == collection.uuid + embedding_doc_store = session.query(vectorstore.EmbeddingStore.custom_id, vectorstore.EmbeddingStore.document, vectorstore.EmbeddingStore.cmetadata).filter(filter_by).all() + for filename in filenames: + ids_list = [doc_id for doc_id, doc_data, metadata in embedding_doc_store if extract_filename(metadata) == filename] + if not len(ids_list): + logger.info("File does not exist in the vectorstore") + return False + vectorstore.delete(ids_list) + logger.info(f"Deleted documents with filenames {filename}") + elif settings.vector_store.name == "milvus": + # Getting all the ID's > 0 + milvus_data = vectorstore.col.query(expr="pk >= 0", output_fields=["pk","source", "text"]) + for filename in filenames: + ids_list = [metadata["pk"] for metadata in milvus_data if extract_filename(metadata) == filename] + if not len(ids_list): + logger.info("File does not exist in the vectorstore") + return False + vectorstore.col.delete(f"pk in {ids_list}") + logger.info(f"Deleted documents with filenames {filename}") + return True + except Exception as e: + logger.error(f"Error occurred while deleting documents: {e}") + return False + return True + +def _combine_dicts(dict_a, dict_b): + """Combines two dictionaries recursively, prioritizing values from dict_b. + + Args: + dict_a: The first dictionary. + dict_b: The second dictionary. + + Returns: + A new dictionary with combined key-value pairs. + """ + + combined_dict = dict_a.copy() # Start with a copy of dict_a + + for key, value_b in dict_b.items(): + if key in combined_dict: + value_a = combined_dict[key] + # Remove the special handling for "command" + if isinstance(value_a, dict) and isinstance(value_b, dict): + combined_dict[key] = _combine_dicts(value_a, value_b) + # Otherwise, replace the value from A with the value from B + else: + combined_dict[key] = value_b + else: + # Add any key not present in A + combined_dict[key] = value_b + + return combined_dict diff --git a/src/ingest_service/Dockerfile b/src/ingest_service/Dockerfile new file mode 100644 index 0000000..acfab50 --- /dev/null +++ b/src/ingest_service/Dockerfile @@ -0,0 +1,45 @@ +ARG BASE_IMAGE_URL=nvcr.io/nvidia/base/ubuntu +ARG BASE_IMAGE_TAG=22.04_20240212 + +FROM ${BASE_IMAGE_URL}:${BASE_IMAGE_TAG} + +ENV PYTHONDONTWRITEBYTECODE=1 +ENV DEBIAN_FRONTEND noninteractive + +# Install required ubuntu packages for setting up python 3.10 +RUN apt update && \ + apt install -y curl software-properties-common && \ + add-apt-repository ppa:deadsnakes/ppa && \ + apt update && apt install -y python3.10 python3.10-dev python3.10-distutils wget && \ + apt-get clean + +# Install pip3 for python3.10 +RUN curl -sS https://bootstrap.pypa.io/get-pip.py | python3.10 + +RUN rm -rf /var/lib/apt/lists/* + +# Download the sources of apt packages within the container for standard legal compliance +RUN sed -i 's/# deb-src/deb-src/g' /etc/apt/sources.list +RUN apt update +# xz-utils is needed to pull the source and unpack them correctly +RUN apt install xz-utils -y +RUN mkdir -p /legal/source +WORKDIR /legal/source +# Read installed packages, strip all but the package names, pipe to 'apt source' to download respective packages +RUN apt list --installed | grep -i installed | sed 's|\(.*\)/.*|\1|' | xargs apt source --download-only +# The source is saved in directories as well as tarballs in the current dir +RUN rm xz-utils* +COPY LICENSE-3rd-party.txt /legal/ + +# COPY the dataset and script within the container +COPY ./data /opt/data +COPY ./src/ingest_service /opt/ + +# Uninstall build packages - We are keeping this since we need them for initcontainer in ingest client in kubernetes +# RUN apt autoremove -y software-properties-common + +# Install the ingestion script dependencies within the containers +RUN pip3 install --no-cache-dir -r /opt/requirements.txt + +WORKDIR /opt +RUN bash data/download.sh data/list_manuals.txt \ No newline at end of file diff --git a/src/ingest_service/docker-compose.yaml b/src/ingest_service/docker-compose.yaml new file mode 100644 index 0000000..23220df --- /dev/null +++ b/src/ingest_service/docker-compose.yaml @@ -0,0 +1,14 @@ +services: + ingest-client: + container_name: ingest-client + image: aiva-customer-service-ingest-client:1.0.0 + build: + context: ../../ + dockerfile: ./src/ingest_service/Dockerfile + command: > + /bin/sh -c "python3 import_csv_to_sql.py --host postgres --port 5432 && + python3 ingest_doc.py --host unstructured-retriever --port 8081" + +networks: + default: + name: nvidia-rag \ No newline at end of file diff --git a/src/ingest_service/import_csv_to_sql.py b/src/ingest_service/import_csv_to_sql.py new file mode 100644 index 0000000..d87f09e --- /dev/null +++ b/src/ingest_service/import_csv_to_sql.py @@ -0,0 +1,127 @@ +# SPDX-FileCopyrightText: Copyright (c) 2024 NVIDIA CORPORATION & AFFILIATES. All rights reserved. +# SPDX-License-Identifier: Apache-2.0 +# +# Licensed under the Apache License, Version 2.0 (the "License"); +# you may not use this file except in compliance with the License. +# You may obtain a copy of the License at +# +# http://www.apache.org/licenses/LICENSE-2.0 +# +# Unless required by applicable law or agreed to in writing, software +# distributed under the License is distributed on an "AS IS" BASIS, +# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +# See the License for the specific language governing permissions and +# limitations under the License. + +import csv +import re +import psycopg2 +from datetime import datetime + +import argparse + +# Set up the argument parser +parser = argparse.ArgumentParser(description='Database connection parameters.') +parser.add_argument('--dbname', type=str, default='customer_data', help='Database name') +parser.add_argument('--user', type=str, default='postgres', help='Database user') +parser.add_argument('--password', type=str, default='password', help='Database password') +parser.add_argument('--host', type=str, default='localhost', help='Database host') +parser.add_argument('--port', type=str, default='5432', help='Database port') + +# Parse the arguments +args = parser.parse_args() + +# Database connection parameters +db_params = { + 'dbname': args.dbname, + 'user': args.user, + 'password': args.password, + 'host': args.host, + 'port': args.port +} + +# CSV file path +csv_file_path = './data/orders.csv' + +# Connect to the database +conn = psycopg2.connect(**db_params) +cur = conn.cursor() + +# Drop the table if it exists +drop_table_query = ''' +DROP TABLE IF EXISTS customer_data; +''' + +# Create the table if it doesn't exist +create_table_query = ''' +CREATE TABLE IF NOT EXISTS customer_data ( + customer_id INTEGER NOT NULL, + order_id INTEGER NOT NULL, + product_name VARCHAR(255) NOT NULL, + product_description VARCHAR NOT NULL, + order_date DATE NOT NULL, + quantity INTEGER NOT NULL, + order_amount DECIMAL(10, 2) NOT NULL, + order_status VARCHAR(50), + return_status VARCHAR(50), + return_start_date DATE, + return_received_date DATE, + return_completed_date DATE, + return_reason VARCHAR(255), + notes TEXT, + PRIMARY KEY (customer_id, order_id) +); +''' +cur.execute(drop_table_query) +cur.execute(create_table_query) + +# Open the CSV file and insert data +with open(csv_file_path, 'r') as f: + reader = csv.reader(f) + next(reader) # Skip the header row + + for row in reader: + # Access columns by index as per the provided structure + order_id = int(row[1]) # OrderID + customer_id = int(row[0]) # CID (Customer ID) + + # Correcting the order date to include time + order_date = datetime.strptime(row[4], "%Y-%m-%dT%H:%M:%S") # OrderDate with time + + quantity = int(row[5]) # Quantity + + # Handle optional date fields with time parsing + return_start_date = datetime.strptime(row[9], "%Y-%m-%dT%H:%M:%S") if row[9] else None # ReturnStartDate + return_received_date = datetime.strptime(row[10],"%Y-%m-%dT%H:%M:%S") if row[10] else None # ReturnReceivedDate + return_completed_date = datetime.strptime(row[11], "%Y-%m-%dT%H:%M:%S") if row[11] else None # ReturnCompletedDate + + # Clean product name + product_name = re.sub(r'[®™]', '', row[2]) # ProductName + + product_description = re.sub(r'[®™]', '', row[3]) + # OrderAmount as float + order_amount = float(row[6].replace(',', '')) + + # Insert data into the database + cur.execute( + ''' + INSERT INTO customer_data ( + customer_id, order_id, product_name, product_description, order_date, quantity, order_amount, + order_status, return_status, return_start_date, return_received_date, + return_completed_date, return_reason, notes + ) VALUES (%s, %s, %s, %s, %s, %s, %s, %s, %s, %s, %s, %s, %s, %s) + ''', + (customer_id, order_id, product_name, product_description, order_date, quantity, order_amount, + row[7], # OrderStatus + row[8], # ReturnStatus + return_start_date, return_received_date, return_completed_date, + row[12], # ReturnReason + row[13]) # Notes + ) + +# Commit the changes and close the connection +conn.commit() +cur.close() +conn.close() + +print("CSV Data imported successfully!") diff --git a/src/ingest_service/ingest_doc.py b/src/ingest_service/ingest_doc.py new file mode 100644 index 0000000..f7ac527 --- /dev/null +++ b/src/ingest_service/ingest_doc.py @@ -0,0 +1,134 @@ +# SPDX-FileCopyrightText: Copyright (c) 2024 NVIDIA CORPORATION & AFFILIATES. All rights reserved. +# SPDX-License-Identifier: Apache-2.0 +# +# Licensed under the Apache License, Version 2.0 (the "License"); +# you may not use this file except in compliance with the License. +# You may obtain a copy of the License at +# +# http://www.apache.org/licenses/LICENSE-2.0 +# +# Unless required by applicable law or agreed to in writing, software +# distributed under the License is distributed on an "AS IS" BASIS, +# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +# See the License for the specific language governing permissions and +# limitations under the License. + +import requests +import os +import re +from concurrent.futures import ThreadPoolExecutor, as_completed +import pandas as pd +import argparse + +# Function to create a valid filename +def create_valid_filename(s): + # Remove invalid characters and replace spaces with underscores + s = re.sub(r'[^\w\-_\. ]', '', s) + return s.replace(' ', '_') + + +def csv_to_txt(csv_file="./data/gear-store.csv"): + df = pd.read_csv(csv_file) + os.makedirs('./data/product', exist_ok=True) + # Iterate through each row in the DataFrame + for index, row in df.iterrows(): + # Create filename using name, category, and subcategory + filename = f"{create_valid_filename(row['name'])}_{create_valid_filename(row['category'])}_{create_valid_filename(row['subcategory'])}.txt" + + print(f"Creating file {filename}, current index {index}") + # Full path for the file + filepath = os.path.join('./data/product', filename) + + # Create the content for the file + content = f"Name: {row['name']}\n" + content += f"Category: {row['category']}\n" + content += f"Subcategory: {row['subcategory']}\n" + content += f"Price: ${row['price']}\n" + content += f"Description: {row['description']}\n" + + # Write the content to the file + with open(filepath, 'w', encoding='utf-8') as file: + file.write(content) + + print(f"Created {len(df)} files in ./data/product") + +def get_health(url: str): + health_url = f'{url}/health' + headers = { + 'accept': 'application/json' + } + response = requests.get(health_url, headers=headers) + return response.status_code + +def ingest_manuals( url: str, directory_path='./data/manuals_pdf'): + document_url = f'{url}/documents' + for filename in os.listdir(directory_path): + # Check if the file is a PDF + if filename.endswith('.pdf'): + file_path = os.path.join(directory_path, filename) + + # Open the file in binary mode and send it in a POST request + with open(file_path, 'rb') as file: + files = {'file': file} + response = requests.post(document_url, files=files) + + # Print the response from the server + print(f'Uploaded {filename}: {response.status_code}') + +def ingest_faqs(url: str, filename = "./data/FAQ.pdf"): + document_url = f'{url}/documents' + with open(filename, 'rb') as file: + files = {'file': file} + try: + response = requests.post(document_url, files=files) + print(f'Uploaded {filename}: {response.status_code}') + return response.status_code == 200 + except requests.exceptions.RequestException as e: + print(f"Request failed for {filename}: {e}") + return False + + +#Skipping get the list of documents + +def ingest_csvs(url: str, directory_path='./data/product',max_workers = 5): + filepaths = [os.path.join(directory_path, filename) for filename in os.listdir(directory_path) if filename.endswith(".txt")] + successfully_ingested = [] + failed_ingestion = [] + with ThreadPoolExecutor(max_workers=max_workers) as executor: + future_to_file = {executor.submit(ingest_faqs, url, filepath): filepath for filepath in filepaths} + + for future in as_completed(future_to_file): + filepath = future_to_file[future] + try: + if future.result(): + print(f"Successfully Ingested {os.path.basename(filepath)}") + successfully_ingested.append(filepath) + else: + print(f"Failed to Ingest {os.path.basename(filepath)}") + failed_ingestion.append(filepath) + except Exception as e: + print(f"Exception occurred while ingesting {os.path.basename(filepath)}: {e}") + failed_ingestion.append(filepath) + + print(f"Total files successfully ingested: {len(successfully_ingested)}") + print(f"Total files failed ingestion: {len(failed_ingestion)}") + +#Skipping Document delete + +if __name__ == "__main__": + # Set up the argument parser + parser = argparse.ArgumentParser(description='Database connection parameters.') + parser.add_argument('--host', type=str, default='localhost', help='Database host') + parser.add_argument('--port', type=str, default='8086', help='Database port') + args = parser.parse_args() + + url = f'http://{args.host}:{args.port}' + + health_code = get_health(url) + + print(health_code) + + ingest_manuals(url=url) + ingest_faqs(url=url) + csv_to_txt() + ingest_csvs(url=url) diff --git a/src/ingest_service/proxy_server.py b/src/ingest_service/proxy_server.py new file mode 100644 index 0000000..cebcb5b --- /dev/null +++ b/src/ingest_service/proxy_server.py @@ -0,0 +1,58 @@ +# SPDX-FileCopyrightText: Copyright (c) 2024 NVIDIA CORPORATION & AFFILIATES. All rights reserved. +# SPDX-License-Identifier: Apache-2.0 +# +# Licensed under the Apache License, Version 2.0 (the "License"); +# you may not use this file except in compliance with the License. +# You may obtain a copy of the License at +# +# http://www.apache.org/licenses/LICENSE-2.0 +# +# Unless required by applicable law or agreed to in writing, software +# distributed under the License is distributed on an "AS IS" BASIS, +# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +# See the License for the specific language governing permissions and +# limitations under the License. + +""" This module is just a proxy server which calls agent container's health API """ + +import os +import logging +from fastapi import FastAPI +from pydantic import BaseModel, Field + +logging.basicConfig(level=os.environ.get("LOGLEVEL", "INFO").upper()) +logger = logging.getLogger(__name__) + +# create the FastAPI server +app = FastAPI() + + +class HealthResponse(BaseModel): + """Health check response""" + + message: str = Field(max_length=4096, pattern=r"[\s\S]*", default="") + + +@app.get( + "/health", + response_model=HealthResponse, + responses={ + 500: { + "description": "Internal Server Error", + "content": { + "application/json": { + "example": {"detail": "Internal server error occurred"} + } + }, + } + }, +) +def health_check(): + """ + Perform a Health Check + + Returns 200 when service is up. This does not check the health of downstream services. + """ + + response_message = "Service is up." + return HealthResponse(message=response_message) diff --git a/src/ingest_service/requirements.txt b/src/ingest_service/requirements.txt new file mode 100644 index 0000000..b17c620 --- /dev/null +++ b/src/ingest_service/requirements.txt @@ -0,0 +1,6 @@ +psycopg2-binary==2.9.10 +pandas==2.2.3 +requests==2.31.0 +fastapi==0.115.2 +uvicorn[standard]==0.27.1 +starlette==0.40.0 \ No newline at end of file diff --git a/src/retrievers/Dockerfile b/src/retrievers/Dockerfile new file mode 100644 index 0000000..8de44cb --- /dev/null +++ b/src/retrievers/Dockerfile @@ -0,0 +1,69 @@ +ARG BASE_IMAGE_URL=nvcr.io/nvidia/base/ubuntu +ARG BASE_IMAGE_TAG=22.04_20240212 + +FROM ${BASE_IMAGE_URL}:${BASE_IMAGE_TAG} as license_base + +ENV PYTHONDONTWRITEBYTECODE=1 +ENV DEBIAN_FRONTEND noninteractive + +# Install required ubuntu packages for setting up python 3.10 +RUN apt update && \ + apt install -y curl software-properties-common libgl1 libglib2.0-0 && \ + add-apt-repository ppa:deadsnakes/ppa && \ + apt update && apt install -y python3.10 && \ + apt-get clean + +# Install pip for python3.10 +RUN curl -sS https://bootstrap.pypa.io/get-pip.py | python3.10 + +RUN rm -rf /var/lib/apt/lists/* + +# Uninstall build packages +RUN apt autoremove -y curl software-properties-common + +# Download the sources of apt packages within the container for standard legal compliance +RUN sed -i 's/# deb-src/deb-src/g' /etc/apt/sources.list +RUN apt update +# xz-utils is needed to pull the source and unpack them correctly +RUN apt install xz-utils -y +RUN mkdir -p /legal/source +WORKDIR /legal/source +# Read installed packages, strip all but the package names, pipe to 'apt source' to download respective packages +RUN apt list --installed | grep -i installed | sed 's|\(.*\)/.*|\1|' | xargs apt source --download-only +# The source is saved in directories as well as tarballs in the current dir +RUN rm xz-utils* +COPY LICENSE-3rd-party.txt /legal/ + +# Install any example specific dependency if available +ARG EXAMPLE_PATH +COPY ${EXAMPLE_PATH} /opt/${EXAMPLE_PATH} +RUN if [ -f "/opt/${EXAMPLE_PATH}/requirements.txt" ] ; then \ + pip3 install --no-cache-dir -r /opt/${EXAMPLE_PATH}/requirements.txt ; else \ + echo "Skipping example dependency installation, since requirements.txt was not found" ; \ + fi + +RUN if [ "${EXAMPLE_PATH}" = "src/retrievers/unstructured_data" ]; then \ + mkdir -p /tmp-data/nltk_data/ && \ + chmod -R 777 /tmp-data && \ + chown -R 1000:1000 /tmp-data && \ + export NLTK_DATA=/tmp-data/nltk_data/ && \ + export HF_HOME=/tmp-data && \ + python3.10 -m nltk.downloader averaged_perceptron_tagger && \ + python3.10 -m nltk.downloader averaged_perceptron_tagger_eng && \ + python3.10 -m nltk.downloader stopwords && \ + python3.10 -m nltk.downloader punkt && \ + python3.10 -m nltk.downloader punkt_tab && \ + python3.10 -c "from sentence_transformers import SentenceTransformer; model = SentenceTransformer('Snowflake/snowflake-arctic-embed-l'); model.save('/tmp-data')" \ +; fi + +# export inside the above block is not working +ENV NLTK_DATA=/tmp-data/nltk_data/ +ENV HF_HOME=/tmp-data + +# Copy required common modules +COPY src/common /opt/src/common +COPY src/retrievers/server.py /opt/src/retrievers/ +COPY src/retrievers/base.py /opt/src/retrievers/ + +WORKDIR /opt +ENTRYPOINT ["uvicorn", "src.retrievers.server:app"] diff --git a/src/retrievers/base.py b/src/retrievers/base.py new file mode 100644 index 0000000..02f8bc4 --- /dev/null +++ b/src/retrievers/base.py @@ -0,0 +1,37 @@ +# SPDX-FileCopyrightText: Copyright (c) 2024 NVIDIA CORPORATION & AFFILIATES. All rights reserved. +# SPDX-License-Identifier: Apache-2.0 +# +# Licensed under the Apache License, Version 2.0 (the "License"); +# you may not use this file except in compliance with the License. +# You may obtain a copy of the License at +# +# http://www.apache.org/licenses/LICENSE-2.0 +# +# Unless required by applicable law or agreed to in writing, software +# distributed under the License is distributed on an "AS IS" BASIS, +# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +# See the License for the specific language governing permissions and +# limitations under the License. + +"""Base interface that all Retriever examples should implement.""" + +from abc import ABC, abstractmethod +from typing import List, Dict, Any + +class BaseExample(ABC): + + @abstractmethod + def document_search(self, content: str, num_docs: int) -> List[Dict[str, Any]]: + pass + + @abstractmethod + def get_documents(self) -> List[str]: + pass + + @abstractmethod + def delete_documents(self, filenames: List[str]) -> bool: + pass + + @abstractmethod + def ingest_docs(self, data_dir: str, filename: str) -> None: + pass \ No newline at end of file diff --git a/src/retrievers/server.py b/src/retrievers/server.py new file mode 100644 index 0000000..6e863e7 --- /dev/null +++ b/src/retrievers/server.py @@ -0,0 +1,283 @@ +# SPDX-FileCopyrightText: Copyright (c) 2024 NVIDIA CORPORATION & AFFILIATES. All rights reserved. +# SPDX-License-Identifier: Apache-2.0 +# +# Licensed under the Apache License, Version 2.0 (the "License"); +# you may not use this file except in compliance with the License. +# You may obtain a copy of the License at +# +# http://www.apache.org/licenses/LICENSE-2.0 +# +# Unless required by applicable law or agreed to in writing, software +# distributed under the License is distributed on an "AS IS" BASIS, +# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +# See the License for the specific language governing permissions and +# limitations under the License. + +"""The definition of the Retrievers FASTAPI server.""" + +import os +import shutil +import logging +from pathlib import Path +from typing import Any, Dict, List, Optional +import importlib +from inspect import getmembers, isclass +from fastapi import FastAPI, File, UploadFile, Request +from fastapi.encoders import jsonable_encoder +from fastapi.exceptions import RequestValidationError +from fastapi.responses import JSONResponse +from fastapi.middleware.cors import CORSMiddleware +from starlette.status import HTTP_422_UNPROCESSABLE_ENTITY +from pydantic import BaseModel, Field, constr + +logging.basicConfig(level=os.environ.get('LOGLEVEL', 'INFO').upper()) +logger = logging.getLogger(__name__) + +tags_metadata = [ + { + "name": "Health", + "description": "APIs for checking and monitoring server liveliness and readiness.", + }, + {"name": "Core", "description": "Core APIs for ingestion and searching."}, + {"name": "Management", "description": "APIs for deleting and listing ingested files."}, +] + +# create the FastAPI server +app = FastAPI(title="Retriever API's for AI Virtual Assistant for Customer Service", + description="This API schema describes all the retriever endpoints exposed for the AI Virtual Assistant for Customer Service NIM Blueprint", + version="1.0.0", + docs_url="/docs", + redoc_url="/redoc", + openapi_tags=tags_metadata, +) + +# Allow access in browser from RAG UI and Storybook (development) +origins = [ + "*" +] +app.add_middleware( + CORSMiddleware, + allow_origins=origins, + allow_credentials=False, + allow_methods=["*"], + allow_headers=["*"], +) + +EXAMPLE_DIR = "./" + +class DocumentSearch(BaseModel): + """Definition of the DocumentSearch API data type.""" + + query: str = Field(description="The content or keywords to search for within documents.", max_length=131072, pattern=r'[\s\S]*', default="") + top_k: int = Field(description="The maximum number of documents to return in the response.", default=4, ge=0, le=25, format="int64") + user_id: Optional[str] = Field(description="An optional unique identifier for the customer.", default=None) + conv_history: Optional[List[Dict[str, str]]] = Field(description="An optional conversation history for the customer.", default=[]) + +class DocumentChunk(BaseModel): + """Represents a chunk of a document.""" + content: str = Field(description="The content of the document chunk.", max_length=131072, pattern=r'[\s\S]*', default="") + filename: str = Field(description="The name of the file the chunk belongs to.", max_length=4096, pattern=r'[\s\S]*', default="") + score: float = Field(..., description="The relevance score of the chunk.") + +class DocumentSearchResponse(BaseModel): + """Represents a response from a document search.""" + chunks: List[DocumentChunk] = Field(..., description="List of document chunks.", max_items=256) + +class DocumentsResponse(BaseModel): + """Represents the response containing a list of documents.""" + documents: List[constr(max_length=131072, pattern=r'[\s\S]*')] = Field(description="List of filenames.", max_items=1000000, default=[]) + +class HealthResponse(BaseModel): + message: str = Field(max_length=4096, pattern=r'[\s\S]*', default="") + +@app.on_event("startup") +def import_example() -> None: + """ + Import the example class from the specified example file. + The example directory is expected to have a python file where the example class is defined. + """ + + file_location = os.path.join(EXAMPLE_DIR, os.environ.get("EXAMPLE_PATH", "./")) + + for root, dirs, files in os.walk(file_location): + for file in files: + if not file.endswith(".py"): + continue + + # Import the specified file dynamically + spec = importlib.util.spec_from_file_location(name="example", location=os.path.join(root, file)) + module = importlib.util.module_from_spec(spec) + spec.loader.exec_module(module) + + # Scan each class in the file to find one with the 3 implemented methods: ingest_docs, rag_chain and llm_chain + for name, _ in getmembers(module, isclass): + try: + cls = getattr(module, name) + if set(["ingest_docs"]).issubset(set(dir(cls))): + if name == "BaseExample": + continue + example = cls() + app.example = cls + return + except: + raise ValueError(f"Class {name} is not implemented and could not be instantiated.") + + raise NotImplementedError(f"Could not find a valid example class in {file_location}") + +@app.exception_handler(RequestValidationError) +async def request_validation_exception_handler( + request: Request, exc: RequestValidationError +) -> JSONResponse: + return JSONResponse( + status_code=HTTP_422_UNPROCESSABLE_ENTITY, + content={"detail": jsonable_encoder(exc.errors(), exclude={"input"})}) + + +@app.get("/health", tags=["Health"], response_model=HealthResponse, responses={ + 500: { + "description": "Internal Server Error", + "content": { + "application/json": { + "example": {"detail": "Internal server error occurred"} + } + } + } +}) +def health_check(): + """ + Perform a Health Check + + Returns 200 when service is up. This does not check the health of downstream services. + """ + + response_message = "Service is up." + return HealthResponse(message=response_message) + + +@app.post("/documents", tags=["Core"], responses={ + 500: { + "description": "Internal Server Error", + "content": { + "application/json": { + "example": {"detail": "Internal server error occurred"} + } + } + } +}) +async def upload_document(request: Request, file: UploadFile = File(...)) -> JSONResponse: + """Upload a document to the vector store.""" + + if not file.filename: + return JSONResponse(content={"message": "No files provided"}, status_code=200) + + try: + upload_folder = "/tmp-data/uploaded_files" + upload_file = os.path.basename(file.filename) + if not upload_file: + raise RuntimeError("Error parsing uploaded filename.") + file_path = os.path.join(upload_folder, upload_file) + uploads_dir = Path(upload_folder) + uploads_dir.mkdir(parents=True, exist_ok=True) + + with open(file_path, "wb") as f: + shutil.copyfileobj(file.file, f) + + app.example().ingest_docs(file_path, upload_file) + + return JSONResponse( + content={"message": "File uploaded successfully"}, status_code=200 + ) + + except Exception as e: + logger.error("Error from POST /documents endpoint. Ingestion of file: " + file.filename + " failed with error: " + str(e)) + return JSONResponse( + content={"message": str(e)}, status_code=500 + ) + + +@app.post("/search", tags=["Core"], response_model=DocumentSearchResponse, responses={ + 500: { + "description": "Internal Server Error", + "content": { + "application/json": { + "example": {"detail": "Internal server error occurred"} + } + } + } +}) +async def document_search(request: Request, data: DocumentSearch) -> Dict[str, List[Dict[str, Any]]]: + """Search for the most relevant documents for the given search parameters.""" + + try: + example = app.example() + if hasattr(example, "document_search") and callable(example.document_search): + # This is needed as structured_rag needs user_id aka user + if data.user_id: + search_result = example.document_search(data.query, data.top_k, data.user_id, data.conv_history) + else: + search_result = example.document_search(data.query, data.top_k, data.conv_history) + chunks = [] + for entry in search_result: + content = entry.get("content", "") # Default to empty string if "content" key doesn't exist + source = entry.get("source", "") # Default to empty string if "source" key doesn't exist + score = entry.get("score", 0.0) # Default to 0.0 if "score" key doesn't exist + chunk = DocumentChunk(content=content, filename=source, document_id="", score=score) + chunks.append(chunk) + return DocumentSearchResponse(chunks=chunks) + raise NotImplementedError("Example class has not implemented the document_search method.") + + except Exception as e: + logger.error(f"Error from POST /search endpoint. Error details: {e}") + return JSONResponse(content={"message": "Error occurred while searching documents."}, status_code=500) + + +@app.get("/documents", tags=["Management"], response_model=DocumentsResponse, responses={ + 500: { + "description": "Internal Server Error", + "content": { + "application/json": { + "example": {"detail": "Internal server error occurred"} + } + } + } +}) +async def get_documents(request: Request) -> DocumentsResponse: + """List available documents.""" + try: + example = app.example() + if hasattr(example, "get_documents") and callable(example.get_documents): + documents = example.get_documents() + return DocumentsResponse(documents=documents) + else: + raise NotImplementedError("Example class has not implemented the get_documents method.") + + except Exception as e: + logger.error(f"Error from GET /documents endpoint. Error details: {e}") + return JSONResponse(content={"message": "Error occurred while fetching documents."}, status_code=500) + + +@app.delete("/documents", tags=["Management"], responses={ + 500: { + "description": "Internal Server Error", + "content": { + "application/json": { + "example": {"detail": "Internal server error occurred"} + } + } + } +}) +async def delete_document(request: Request, filename: str) -> JSONResponse: + """Delete a document.""" + try: + example = app.example() + if hasattr(example, "delete_documents") and callable(example.delete_documents): + status = example.delete_documents([filename]) + if not status: + raise Exception(f"Error in deleting document {filename}") + return JSONResponse(content={"message": f"Document {filename} deleted successfully"}, status_code=200) + + raise NotImplementedError("Example class has not implemented the delete_document method.") + + except Exception as e: + logger.error(f"Error from DELETE /documents endpoint. Error details: {e}") + return JSONResponse(content={"message": f"Error deleting document {filename}"}, status_code=500) diff --git a/src/retrievers/structured_data/__init__.py b/src/retrievers/structured_data/__init__.py new file mode 100644 index 0000000..a08b2c2 --- /dev/null +++ b/src/retrievers/structured_data/__init__.py @@ -0,0 +1,14 @@ +# SPDX-FileCopyrightText: Copyright (c) 2024 NVIDIA CORPORATION & AFFILIATES. All rights reserved. +# SPDX-License-Identifier: Apache-2.0 +# +# Licensed under the Apache License, Version 2.0 (the "License"); +# you may not use this file except in compliance with the License. +# You may obtain a copy of the License at +# +# http://www.apache.org/licenses/LICENSE-2.0 +# +# Unless required by applicable law or agreed to in writing, software +# distributed under the License is distributed on an "AS IS" BASIS, +# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +# See the License for the specific language governing permissions and +# limitations under the License. diff --git a/src/retrievers/structured_data/chains.py b/src/retrievers/structured_data/chains.py new file mode 100644 index 0000000..f89d8c4 --- /dev/null +++ b/src/retrievers/structured_data/chains.py @@ -0,0 +1,122 @@ +# SPDX-FileCopyrightText: Copyright (c) 2024 NVIDIA CORPORATION & AFFILIATES. All rights reserved. +# SPDX-License-Identifier: Apache-2.0 +# +# Licensed under the Apache License, Version 2.0 (the "License"); +# you may not use this file except in compliance with the License. +# You may obtain a copy of the License at +# +# http://www.apache.org/licenses/LICENSE-2.0 +# +# Unless required by applicable law or agreed to in writing, software +# distributed under the License is distributed on an "AS IS" BASIS, +# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +# See the License for the specific language governing permissions and +# limitations under the License. + +""" Retriever pipeline for extracting data from structured information""" +import logging +from typing import Any, Dict, List + +from pandasai import Agent as PandasAI_Agent +from pandasai.responses.response_parser import ResponseParser +from langchain.prompts import ( + ChatPromptTemplate, + HumanMessagePromptTemplate, + SystemMessagePromptTemplate, +) +from src.retrievers.structured_data.connector import get_postgres_connector +from src.retrievers.base import BaseExample +from src.common.utils import get_config, get_prompts +from src.retrievers.structured_data.pandasai.llms.nv_aiplay import NVIDIA as PandasAI_NVIDIA + +logger = logging.getLogger(__name__) +settings = get_config() + + +class PandasDataFrame(ResponseParser): + """Returns Pandas Dataframe instead of SmartDataFrame""" + + def __init__(self, context) -> None: + super().__init__(context) + + def format_dataframe(self, result): + return result["value"] + + +class CSVChatbot(BaseExample): + """RAG example showcasing CSV parsing using Pandas AI Agent""" + + def ingest_docs(self, filepath: str, filename: str): + """Ingest documents to the VectorDB.""" + + raise NotImplementedError("Canonical RAG only supports document retrieval") + + def document_search(self, content: str, num_docs: int, user_id: str = None, conv_history: Dict[str, str] = {}) -> List[Dict[str, Any]]: + """Execute a Document Search.""" + + logger.info("Using document_search to fetch response from database as text") + postgres_connector = None # Initialize connector + + try: + logger.info("Using document_search to fetch response from database as text") + if user_id: + postgres_connector = get_postgres_connector(user_id) + else: + logger.warning("Enter a proper User ID") + return [{"content": "No response generated, make to give a proper User ID."}] + + # TODO: Pass conv history to the LLM + llm_data_retrieval = PandasAI_NVIDIA(temperature=0.2, model=settings.llm.model_name_pandas_ai) + + config_data_retrieval = {"llm": llm_data_retrieval, "response_parser": PandasDataFrame, "max_retries": 1, "enable_cache": False} + agent_data_retrieval = PandasAI_Agent([postgres_connector], config=config_data_retrieval, memory_size=20) + + prompt_config = get_prompts().get("prompts") + + data_retrieval_prompt = ChatPromptTemplate( + messages=[ + SystemMessagePromptTemplate.from_template(prompt_config.get("data_retrieval_template", [])), + HumanMessagePromptTemplate.from_template("{query}"), + ], + input_variables=["description", "instructions", "query"], + ) + + + chat_prompt = data_retrieval_prompt.format_prompt( + description=prompt_config.get("dataframe_prompts").get("customer_data").get("description"), + instructions=prompt_config.get("dataframe_prompts").get("customer_data").get("instructions"), + query=content, + ).to_string() + + result_df = agent_data_retrieval.chat( + chat_prompt + ) + logger.info("Result Data Frame: %s", result_df) + if not result_df: + logger.warning("Retrieval failed to get any relevant context") + return [{"content": "No response generated from LLM, make sure your query is relavent to the ingested document."}] + + result_df = str(result_df) + return [{"content": result_df}] + except Exception as e: + logger.error("An error occurred during document search: %s", str(e)) + raise # Re-raise the exception after logging + + finally: + if postgres_connector: + postgres_connector._connection._dbapi_connection.close() + postgres_connector._connection.close() + postgres_connector._engine.dispose() + import gc + gc.collect() + logger.info("Postgres connector deleted.") + + def get_documents(self) -> List[str]: + """Retrieves filenames stored in the vector store.""" + logger.error("get_documents not implemented") + return True + + def delete_documents(self, filenames: List[str]): + """Delete documents from the vector index.""" + logger.error("delete_documents not implemented") + return True diff --git a/src/retrievers/structured_data/connector.py b/src/retrievers/structured_data/connector.py new file mode 100644 index 0000000..e6029ef --- /dev/null +++ b/src/retrievers/structured_data/connector.py @@ -0,0 +1,43 @@ +# SPDX-FileCopyrightText: Copyright (c) 2024 NVIDIA CORPORATION & AFFILIATES. All rights reserved. +# SPDX-License-Identifier: Apache-2.0 +# +# Licensed under the Apache License, Version 2.0 (the "License"); +# you may not use this file except in compliance with the License. +# You may obtain a copy of the License at +# +# http://www.apache.org/licenses/LICENSE-2.0 +# +# Unless required by applicable law or agreed to in writing, software +# distributed under the License is distributed on an "AS IS" BASIS, +# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +# See the License for the specific language governing permissions and +# limitations under the License. + +import os +from urllib.parse import urlparse +from src.common.utils import get_config +from pandasai.connectors import PostgreSQLConnector + +def get_postgres_connector(customer_id: str) -> PostgreSQLConnector: + + app_database_url = get_config().database.url + + # Parse the URL + parsed_url = urlparse(f"//{app_database_url}", scheme='postgres') + + # Extract host and port + host = parsed_url.hostname + port = parsed_url.port + + config = { + "host": host, + "port": port, + "database": os.getenv('POSTGRES_DB', None), + "username": os.getenv('POSTGRES_USER', None), + "password": os.getenv('POSTGRES_PASSWORD', None), + "table": "customer_data", + "where": [ + ["customer_id", "=", customer_id], + ], + } + return PostgreSQLConnector(config=config) \ No newline at end of file diff --git a/src/retrievers/structured_data/pandasai/llms/__init__.py b/src/retrievers/structured_data/pandasai/llms/__init__.py new file mode 100644 index 0000000..a08b2c2 --- /dev/null +++ b/src/retrievers/structured_data/pandasai/llms/__init__.py @@ -0,0 +1,14 @@ +# SPDX-FileCopyrightText: Copyright (c) 2024 NVIDIA CORPORATION & AFFILIATES. All rights reserved. +# SPDX-License-Identifier: Apache-2.0 +# +# Licensed under the Apache License, Version 2.0 (the "License"); +# you may not use this file except in compliance with the License. +# You may obtain a copy of the License at +# +# http://www.apache.org/licenses/LICENSE-2.0 +# +# Unless required by applicable law or agreed to in writing, software +# distributed under the License is distributed on an "AS IS" BASIS, +# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +# See the License for the specific language governing permissions and +# limitations under the License. diff --git a/src/retrievers/structured_data/pandasai/llms/nv_aiplay.py b/src/retrievers/structured_data/pandasai/llms/nv_aiplay.py new file mode 100644 index 0000000..5e5781c --- /dev/null +++ b/src/retrievers/structured_data/pandasai/llms/nv_aiplay.py @@ -0,0 +1,111 @@ +# SPDX-FileCopyrightText: Copyright (c) 2024 NVIDIA CORPORATION & AFFILIATES. All rights reserved. +# SPDX-License-Identifier: Apache-2.0 +# +# Licensed under the Apache License, Version 2.0 (the "License"); +# you may not use this file except in compliance with the License. +# You may obtain a copy of the License at +# +# http://www.apache.org/licenses/LICENSE-2.0 +# +# Unless required by applicable law or agreed to in writing, software +# distributed under the License is distributed on an "AS IS" BASIS, +# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +# See the License for the specific language governing permissions and +# limitations under the License. + +"""A wrapper on PandasAI base LLM class to use NVIDIA Foundational Models in PandasAI Agents""" + +import logging +from typing import Any, Dict, Optional + +from langchain_nvidia_ai_endpoints import ChatNVIDIA +from pandasai.llm.base import LLM +from pandasai.pipelines.pipeline_context import PipelineContext +from pandasai.prompts.base import BasePrompt + +from src.common.utils import get_config + +logger = logging.getLogger(__name__) + + +class NVIDIA(LLM): + """ + A wrapper class on PandasAI base LLM class to NVIDIA Foundational Models. + """ + + temperature: Optional[float] = 0.1 + max_tokens: Optional[int] = 1000 + top_p: Optional[float] = 1 + model: Optional[str] = "llama2_13b" + + _chat_model: "ChatNVIDIA" = None + + def __init__(self, **kwargs): + self._set_params(**kwargs) + settings = get_config() + if settings.llm.server_url: + logger.info(f"Using llm model {settings.llm.model_name} hosted at {settings.llm.server_url} in PandasAI") + # self._chat_model = ChatNVIDIA(**self._default_params).mode( + # "nim", base_url=f"http://{settings.llm.server_url}/v1" + # ) + if 'model' in self._default_params: del self._default_params['model'] + self._chat_model = ChatNVIDIA(base_url=f"http://{settings.llm.server_url}/v1", + **self._default_params) + else: + logger.info(f"Using llm model {settings.llm.model_name} from api catalog in PandasAI") + self._chat_model = ChatNVIDIA(**self._default_params) + self._prompt = "" + + @property + def _default_params(self) -> Dict[str, Any]: + """Get the default parameters for calling NVIDIA Foundational LLMs.""" + params: Dict[str, Any] = { + "model": self.model, + "temperature": self.temperature, + "top_p": self.top_p, + "max_tokens": self.max_tokens, + } + + return params + + @property + def type(self) -> str: + return "nvidia-foundational-llm" + + def _set_params(self, **kwargs): + """ + Set Parameters + Args: + **kwargs: ["model","temperature","max_tokens", + "top_p"] + + Returns: + None. + """ + + valid_params = [ + "model", + "temperature", + "max_tokens", + "top_p", + ] + for key, value in kwargs.items(): + if key in valid_params: + setattr(self, key, value) + + def call(self, instruction: BasePrompt, context: PipelineContext = None) -> str: + """ + Call the NVIDIA Foundational LLMs. + Args: + instruction (BasePrompt): A prompt object with instruction for LLM. + suffix (str): A string representing the suffix to be truncated + from the generated response. + + Returns + str: LLM response. + + """ + + self._prompt = instruction.to_string() + response = self._chat_model.invoke(self._prompt) + return response.content diff --git a/src/retrievers/structured_data/prompt.yaml b/src/retrievers/structured_data/prompt.yaml new file mode 100644 index 0000000..cd406aa --- /dev/null +++ b/src/retrievers/structured_data/prompt.yaml @@ -0,0 +1,25 @@ +prompts: + + data_retrieval_template: | + You are an expert data retrieval agent who writes functional python code and utilzes Pandas library in python for data retrieval. + + Provide a functional and accurate code based on the provided pandas dataframe for the user's query. + + Your job is to write python code that uses Pandas library for extracting and processing information based on the given Pandas dataframe. + + The data you are provided contains information about: {description} + + These are some instructions which must be followed while generating the code, all instructions start with a hifen(-): + - dfs is a list containing df a pandas dataframe. Always use the first entry from the list like df = dfs[0]. + {instructions} + + dataframe_prompts: + customer_data: + description: | + This data frame tracks customer orders, including product details, order quantity, and order amount. + It also includes delivery status, return status, and relevant dates for returns, along with reasons and notes for any issues. + The data provides a snapshot of order and return processes for a single customer. + instructions: | + - Provide meaningful error messages in the format {"error": "some message"} if the user queries do not match any records or if an invalid input is given. + For example, respond with {"error": "No records found for the specified criteria."} when applicable. + diff --git a/src/retrievers/structured_data/requirements.txt b/src/retrievers/structured_data/requirements.txt new file mode 100644 index 0000000..995ebb4 --- /dev/null +++ b/src/retrievers/structured_data/requirements.txt @@ -0,0 +1,11 @@ +fastapi==0.115.2 +uvicorn[standard]==0.27.1 +starlette==0.40.0 +python-multipart==0.0.9 +langchain==0.2.16 +langchain-nvidia-ai-endpoints==0.2.2 +dataclass-wizard==0.22.3 +pandas==1.5.3 +pandasai==2.2.14 +numexpr==2.9.0 +psycopg2-binary==2.9.9 \ No newline at end of file diff --git a/src/retrievers/unstructured_data/chains.py b/src/retrievers/unstructured_data/chains.py new file mode 100644 index 0000000..af0e01a --- /dev/null +++ b/src/retrievers/unstructured_data/chains.py @@ -0,0 +1,206 @@ +# SPDX-FileCopyrightText: Copyright (c) 2024 NVIDIA CORPORATION & AFFILIATES. All rights reserved. +# SPDX-License-Identifier: Apache-2.0 +# +# Licensed under the Apache License, Version 2.0 (the "License"); +# you may not use this file except in compliance with the License. +# You may obtain a copy of the License at +# +# http://www.apache.org/licenses/LICENSE-2.0 +# +# Unless required by applicable law or agreed to in writing, software +# distributed under the License is distributed on an "AS IS" BASIS, +# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +# See the License for the specific language governing permissions and +# limitations under the License. + +import logging +import os +from typing import Any, Dict, List +from traceback import print_exc + +from langchain_community.document_loaders import UnstructuredFileLoader +from langchain_core.runnables import RunnablePassthrough, RunnableAssign +from langchain_core.prompts.chat import ChatPromptTemplate +from langchain_core.prompts import MessagesPlaceholder +from pydantic import BaseModel, Field + +from src.retrievers.base import BaseExample +from src.common.utils import ( + create_vectorstore_langchain, + del_docs_vectorstore_langchain, + get_config, + get_docs_vectorstore_langchain, + get_embedding_model, + get_prompts, + get_llm, + get_text_splitter, + get_vectorstore, + get_ranking_model +) + +logger = logging.getLogger(__name__) +document_embedder = get_embedding_model() +text_splitter = None +settings = get_config() +prompts = get_prompts() +vector_db_top_k = int(os.environ.get(f"VECTOR_DB_TOPK", 40)) + +try: + vectorstore = create_vectorstore_langchain(document_embedder=document_embedder) +except Exception as e: + vectorstore = None + logger.info(f"Unable to connect to vector store during initialization: {e}") + + +class UnstructuredRetriever(BaseExample): + def ingest_docs(self, filepath: str, filename: str) -> None: + """Ingests documents to the VectorDB. + It's called when the POST endpoint of `/documents` API is invoked. + + Args: + filepath (str): The path to the document file. + filename (str): The name of the document file. + + Raises: + ValueError: If there's an error during document ingestion or the file format is not supported. + """ + if not filename.endswith((".txt", ".pdf", ".md")): + raise ValueError(f"{filename} is not a valid Text, PDF or Markdown file") + try: + # Load raw documents from the directory + _path = filepath + raw_documents = UnstructuredFileLoader(_path).load() + + if raw_documents: + global text_splitter + # Get text splitter instance, it is selected based on environment variable APP_TEXTSPLITTER_MODELNAME + # tokenizer dimension of text splitter should be same as embedding model + if not text_splitter: + text_splitter = get_text_splitter() + + # split documents based on configuration provided + documents = text_splitter.split_documents(raw_documents) + vs = get_vectorstore(vectorstore, document_embedder) + # ingest documents into vectorstore + vs.add_documents(documents) + else: + logger.warning("No documents available to process!") + except Exception as e: + logger.error(f"Failed to ingest document due to exception {e}") + raise ValueError("Failed to upload document. Please upload an unstructured text document.") + + + def document_search(self, content: str, num_docs: int, conv_history: Dict[str, str] = {}) -> List[Dict[str, Any]]: + """Search for the most relevant documents for the given search parameters. + It's called when the `/search` API is invoked. + + Args: + content (str): Query to be searched from vectorstore. + num_docs (int): Number of similar docs to be retrieved from vectorstore. + """ + + logger.info(f"Searching relevant document for the query: {content}") + + try: + vs = get_vectorstore(vectorstore, document_embedder) + if vs == None: + logger.error(f"Vector store not initialized properly. Please check if the vector db is up and running") + raise ValueError() + + docs = [] + ranker = get_ranking_model() + top_k = vector_db_top_k if ranker else num_docs + logger.info(f"Setting top k as: {top_k}.") + retriever = vs.as_retriever(search_kwargs={"k": top_k}) # milvus does not support similarily threshold + + # Invoke query rewriting to decontextualize the query before sending to retriever pipeline if conv history is passed + if conv_history: + class Question(BaseModel): + question: str = Field(..., description="A standalone question which can be understood without the chat history") + + parsed_conv_history = [(msg.get("role"), msg.get("content")) for msg in conv_history] + default_llm_kwargs = {"temperature": 0.2, "top_p": 0.7, "max_tokens": 1024} + llm = get_llm(**default_llm_kwargs) + llm = llm.with_structured_output(Question) + query_rewriter_prompt = prompts.get("query_rewriting") + contextualize_q_prompt = ChatPromptTemplate.from_messages( + [("system", query_rewriter_prompt), MessagesPlaceholder("chat_history"), ("human", "{input}"),] + ) + q_prompt = contextualize_q_prompt | llm + logger.info(f"Query rewriter prompt: {contextualize_q_prompt}") + response = q_prompt.invoke({"input": content, "chat_history": parsed_conv_history}) + content = response.question + logger.info(f"Rewritten Query: {content}") + if content.replace('"', "'") == "''" or len(content) == 0: + return [] + + if ranker: + logger.info(f"Narrowing the collection from {top_k} results and further narrowing it to {num_docs} with the reranker for rag chain.") + # Update number of document to be retriever by ranker + ranker.top_n = num_docs + + context_reranker = RunnableAssign({"context": lambda input: ranker.compress_documents(query=input['question'], documents=input['context'])}) + + retriever = {"context": retriever, "question": RunnablePassthrough()} | context_reranker + docs = retriever.invoke(content) + resp = [] + for doc in docs.get("context"): + resp.append( + { + "source": os.path.basename(doc.metadata.get("source", "")), + "content": doc.page_content, + "score": doc.metadata.get("relevance_score", 0) + } + ) + return resp + else: + docs = retriever.invoke(content) + resp = [] + for doc in docs: + resp.append( + { + "source": os.path.basename(doc.metadata.get("source", "")), + "content": doc.page_content, + "score": doc.metadata.get("relevance_score", 0) + } + ) + return resp + + except Exception as e: + logger.warning(f"Failed to generate response due to exception {e}") + print_exc() + + return [] + + + def get_documents(self) -> List[str]: + """Retrieves filenames stored in the vector store. + It's called when the GET endpoint of `/documents` API is invoked. + + Returns: + List[str]: List of filenames ingested in vectorstore. + """ + try: + vs = get_vectorstore(vectorstore, document_embedder) + if vs: + return get_docs_vectorstore_langchain(vs) + except Exception as e: + logger.error(f"Vectorstore not initialized. Error details: {e}") + return [] + + + def delete_documents(self, filenames: List[str]) -> bool: + """Delete documents from the vector index. + It's called when the DELETE endpoint of `/documents` API is invoked. + + Args: + filenames (List[str]): List of filenames to be deleted from vectorstore. + """ + try: + # Get vectorstore instance + vs = get_vectorstore(vectorstore, document_embedder) + if vs: + return del_docs_vectorstore_langchain(vs, filenames) + except Exception as e: + logger.error(f"Vectorstore not initialized. Error details: {e}") + return False diff --git a/src/retrievers/unstructured_data/prompt.yaml b/src/retrievers/unstructured_data/prompt.yaml new file mode 100644 index 0000000..afd3254 --- /dev/null +++ b/src/retrievers/unstructured_data/prompt.yaml @@ -0,0 +1,4 @@ +query_rewriting: | + "Given a chat history and the latest user question which might reference context in the chat history, formulate a standalone question which can be understood without the chat history. + Do NOT answer the question, just reformulate it if needed and otherwise return it as is. + It should strictly be a query not an answer." \ No newline at end of file diff --git a/src/retrievers/unstructured_data/requirements.txt b/src/retrievers/unstructured_data/requirements.txt new file mode 100644 index 0000000..c77baad --- /dev/null +++ b/src/retrievers/unstructured_data/requirements.txt @@ -0,0 +1,11 @@ +fastapi==0.115.2 +uvicorn[standard]==0.27.1 +starlette==0.40.0 +langchain-nvidia-ai-endpoints==0.2.2 +dataclass-wizard==0.22.3 +nltk==3.9.1 +unstructured[all-docs]==0.12.5 +python-multipart==0.0.9 +langchain-community==0.2.17 +pymilvus==2.4.0 +sentence-transformers==3.0.0 \ No newline at end of file

)H53p}%ucKDS>m!Q$i=xCA%T`-Pd+GX_@b=75( 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 b15R`Pr}V?4=s1dwzia8@pE+*M!|DGA4~a0E literal 0 HcmV?d00001 diff --git a/docs/imgs/llama3.1-70b-instruct-model-card.png b/docs/imgs/llama3.1-70b-instruct-model-card.png new file mode 100644 index 0000000000000000000000000000000000000000..507923bc55578990af062ce64caa8451edf150f1 GIT binary patch literal 462396 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

qEU=V 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�B{$z;GoC%r!`$Y;0-mQjs&1*xv` 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 literal 0 HcmV?d00001 diff --git a/docs/imgs/api-catalog-generate-api-key.png b/docs/imgs/api-catalog-generate-api-key.png new file mode 100644 index 0000000000000000000000000000000000000000..c4332dc54d3d76410f3ca3f41d0c3f3d7c1ecaed GIT binary patch literal 29520 zcmXtA1z43?*S*r+-65egNJvT}AfbpL-AISh-6^05Dh;AYgCO1A7+4@F0wUf0@Aq^5 zdFB~sn0wziXUE!WtwXGimMS409UcmWBD|@lbQ^_2r-6TO#=(Mrp3vZ2fjR` zz+VA4)-mwkv=5aH9^P@aedulBVS}=Bado!g^R)7?v2pRVcYU~l-X@Dev7l}$$?N%K z{%!eshvC7?i<1!#pE**rxt3%%G8|l1+{^ZF*R)(SUPy?L+6B`$2~~;PiSPTdjqa)Z z?KwxM_uRLA{ieyzPt31zLWS>ZKT9JA2@7j;3I-0lw9Sq&#k1m4^&CSiA6fF3udkZr zyw2V@X&%ea3=EXP4`acxH0!8N@!b_6AW!iNPqtT0thH(Z<1DM{z0dlplJ>Q?s5-XB;Fs=1s68d+oP%C_ zOZ&;;v9$8{E0dp++gWhJSoX1nsSNCIv8rrpGZy|;c$Lup6=O2Qp|n%*aq`u8(+nH> z>7ACQ3VwIf1C8ULrxdz$g_Jq?hp%3(J>h<&CYBP6^8= zb6;UrNh^yC=X;Ods&-Ah<>;6C_LP)QBgqT@vLHNOj7+~NDfPUKYWT|Q$2ST_4u1wJ zouSKz+l((`;&3ye5en^Q(!M($MdhEV?-Fl+Vd`hRwME!;DXs%~Ih+xD@$z3B$(5K7 ztVgcg)BVd|;76GV%fUzqsoe_!1fV?Ak^ zSih}9**zTLgMB4j(31U2F0E~%v+vqKOhgr>j|qlSQqh{8o?m%>0p*XmcmmPv*q^fl zF;QYq{_Q6xYi;OfO;*R57q;R!@$HSfFGM?7`~8$u9+Hg53uXteDUB^hqHmP8Z7<$Y zFbz|q-wjo|Z~b2|FwK!sU;PxNVchShrXVU?dT6SB+(Oz!yVt_vPU^Bhy{?-=LHlos z0wZO2ZYJh21-a+x8*rDY9{rY*;=rR3^^<1k^-*O@^hlAPXS;1rO`Eb$6GQseE9Kwg zk>pLuT$Sum-ptRRO`5y!(DOnllyP6gErEnies7KLmogS?zam=~j+!|MM3{esU~D{h zYy*y8PS_1wD^;cG8>E!PXpU12HIjds8kj1J8;dxrPSa}C|M;GzZ}l>Fm6(giVz)Sp zTAnP-`Ww6rU5_7&5z8ZWNs*uYOom)BM9`04?^R-Iy?I#M?SND%hEz??94Ga;W)&A* z`fn&3KK*Hd57KmT$-B}k5p%V6busvSOY)_eS#1P={c4;pilg23L#2`M$H=3g9LiUy zG9qEWlf?9*2jjBE8F8ij74){$vaP-MRh>umn}pwQPq0s0vQs5hk_?f=-cxUOYlZ^jXEmu8+76uX8C0?`XNcA~?0Dpz2h*DyCp* zRVzc-^S||vuvKW|Rp+gsb0@pmH2